[ASan] Disable JSStack::sanitizeStack() to avoid false-positive stack-buffer-overflow errors
<http://webkit.org/b/128819>

Reviewed by Filip Pizlo.

* interpreter/JSStack.cpp:
(JSC::JSStack::sanitizeStack): When building with the clang
address sanitizer, don't sanitize the stack since it will
trigger false-positive stack-buffer-overflow errors.  Disabling
this only results in a performance penalty, not a correctness
penalty.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164102 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[CSS Regions] visibility: hidden on a region should hide its content
https://bugs.webkit.org/show_bug.cgi?id=128814

Reviewed by Mihnea Ovidenie.

Source/WebCore:

The patch properly checks that the content of a region layer should be painted before actually
calling the paint function (for example, when visibility: hidden is specified on a region, its
content should be hidden).

Test: fast/regions/visibility-hidden.html

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::paintLayerContents):

LayoutTests:

Add a test that verifies visibility: hidden on a region hides the content of
the flow thread.

* fast/regions/visibility-hidden-expected.html: Added.
* fast/regions/visibility-hidden.html: Added.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164103 268f45cc-cd09-0410-ab3c-d52691b4dbfc
ASSERTION FAILED: comparePositions(newEnd, newStart) >= 0 in WebCore::ApplyStyleCommand::updateStartEnd
https://bugs.webkit.org/show_bug.cgi?id=121791

Patch by Renata Hodovan <rhodovan.u-szeged@partner.samsung.com> on 2014-02-14
Reviewed by Darin Adler.

Source/WebCore:

If WebCore::ApplyStyleCommand::applyBlockStyle() creates a TextIterator for a range
that has an element with ReplacedElement rendering object, then a ',' is emitted in the
constructor of TextIterator. Due to this comma the end of the run range can be at the
wrong position, what makes the assertion fire. This situation can be handled the same
way in TextIterator::rangeFromLocationAndLength() as we do in case of the emitted '\n's.

Test: editing/execCommand/remove-formatting-from-iframe-in-button.html

* editing/TextIterator.cpp:
(WebCore::TextIterator::rangeFromLocationAndLength):

LayoutTests:

* editing/execCommand/remove-formatting-from-iframe-in-button-expected.txt: Added.
* editing/execCommand/remove-formatting-from-iframe-in-button.html: Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164104 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Create some latched scrolling tests.
https://bugs.webkit.org/show_bug.cgi?id=127606
<rdar://problem/15911348>

Reviewed by Simon Fraser.

Tools: 

* DumpRenderTree/mac/EventSendingController.mm:
(+[EventSendingController isSelectorExcludedFromWebScript:]): Update to recognize
the new "mouseScrollByX:andY:withWheel:andMomentumPhases:" selector.
(+[EventSendingController webScriptNameForSelector:]): Ditto.
(-[EventSendingController mouseScrollByX:andY:withWheel:andMomentumPhases:]): Implement
the new wheel event sender.
* WebKitTestRunner/EventSenderProxy.h:
* WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl: Add declaration
of new mouseScrollByWithWheelAndMomentumPhases method.
* WebKitTestRunner/InjectedBundle/EventSendingController.cpp:
(WTR::EventSendingController::mouseScrollByWithWheelAndMomentumPhases): Added
* WebKitTestRunner/InjectedBundle/EventSendingController.h:
* WebKitTestRunner/InjectedBundle/ios/EventSenderProxyIOS.mm:
(WTR::EventSenderProxy::mouseScrollByWithWheelAndMomentumPhases): Add stub for iOS.
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::didReceiveMessageFromInjectedBundle): Handle the new
mouseScrollByWithWheelAndMomentumPhases message.
(WTR::TestController::didReceiveSynchronousMessageFromInjectedBundle): Handle the
new mouseScrollByWithWheelAndMomentumPhases.
* WebKitTestRunner/efl/EventSenderProxyEfl.cpp:
(WTR::EventSenderProxy::mouseScrollByWithWheelAndMomentumPhases): Provide stub that
relays to the standard mouse wheel handler.
* WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:
(WTR::EventSenderProxy::mouseScrollByWithWheelAndMomentumPhases): Ditto.
* WebKitTestRunner/mac/EventSenderProxy.mm:
(WTR::EventSenderProxy::mouseScrollByWithWheelAndMomentumPhases): Provide implementation
of mouse wheel gesture method.

LayoutTests: 

Add a series of tests to cover desired behavior with wheel events (including momentum).
This behavior is specific to the Mac platform, so is limited to the platform/mac and
platform/mac-wk2 directories.

* platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-div-expected.txt: Added.
* platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-div-with-handler-expected.txt: Added.
* platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-div-with-handler.html: Added.
* platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-div.html: Added.
* platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-mainframe-expected.txt: Added.
* platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-mainframe-with-handler-expected.txt: Added.
* platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-mainframe-with-handler.html: Added.
* platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-mainframe.html: Added.
* platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-iframe-expected.txt: Added.
* platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-iframe-with-handler-expected.txt: Added.
* platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-iframe-with-handler.html: Added.
* platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-iframe.html: Added.
* platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-mainframe-expected.txt: Added.
* platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-mainframe-with-handler-expected.txt: Added.
* platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-mainframe-with-handler.html: Added.
* platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-mainframe.html: Added.
* platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-mainframe-expected.txt: Added.
* platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-mainframe-with-handler-expected.txt: Added.
* platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-mainframe-with-handler.html: Added.
* platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-mainframe.html: Added.
* platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-select-expected.txt: Added.
* platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-select-with-handler-expected.txt: Added.
* platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-select-with-handler.html: Added.
* platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-select.html: Added.
* platform/mac/fast/scrolling: Added.
* platform/mac/fast/scrolling/scroll-div-latched-div-expected.txt: Added.
* platform/mac/fast/scrolling/scroll-div-latched-div.html: Added.
* platform/mac/fast/scrolling/scroll-div-latched-mainframe-expected.txt: Added.
* platform/mac/fast/scrolling/scroll-div-latched-mainframe.html: Added.
* platform/mac/fast/scrolling/scroll-iframe-latched-iframe-expected.txt: Added.
* platform/mac/fast/scrolling/scroll-iframe-latched-iframe.html: Added.
* platform/mac/fast/scrolling/scroll-iframe-latched-mainframe-expected.txt: Added.
* platform/mac/fast/scrolling/scroll-iframe-latched-mainframe.html: Added.
* platform/mac/fast/scrolling/scroll-select-latched-mainframe-expected.txt: Added.
* platform/mac/fast/scrolling/scroll-select-latched-mainframe.html: Added.
* platform/mac/fast/scrolling/scroll-select-latched-select-expected.txt: Added.
* platform/mac/fast/scrolling/scroll-select-latched-select.html: Added.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164105 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Use AtomicString arguments in TrackPrivateBaseClient callbacks
https://bugs.webkit.org/show_bug.cgi?id=128765

Reviewed by Eric Carlson.

No new tests because this doesn't change functionality.

* html/track/AudioTrack.cpp:
(WebCore::AudioTrack::idChanged):
(WebCore::AudioTrack::labelChanged):
(WebCore::AudioTrack::languageChanged):
* html/track/AudioTrack.h:
* html/track/InbandTextTrack.cpp:
(WebCore::InbandTextTrack::InbandTextTrack):
(WebCore::InbandTextTrack::idChanged):
(WebCore::InbandTextTrack::labelChanged):
(WebCore::InbandTextTrack::languageChanged):
* html/track/InbandTextTrack.h:
* html/track/VideoTrack.cpp:
(WebCore::VideoTrack::idChanged):
(WebCore::VideoTrack::labelChanged):
(WebCore::VideoTrack::languageChanged):
* html/track/VideoTrack.h:
* platform/graphics/TrackPrivateBase.h:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164106 268f45cc-cd09-0410-ab3c-d52691b4dbfc
AX: WebKit needs heuristics to differentiate lists used for layout from semantic data lists, similar to the heuristics for layout tables versus data tables.
https://bugs.webkit.org/show_bug.cgi?id=122320

Reviewed by Mario Sanchez Prada.

Source/WebCore: 

Many authors use lists for layout, rather than presenting data. Exposing these kinds of lists to accessibility users
makes the web harder to process and listen, while degrading the importance of real lists.

This introduces heuristics to filter out layout lists with the following:
   1. If it's a named list, like ol or aria=list, then it's a list.
     1a. Unless the list has no children, then it's not a list.
   2. If it displays visible list markers, it's a list.
   3. If it does not display list markers and has only one child, it's not a list.
   4. If it does not have any listitem children, it's not a list.
   5. Otherwise it's a list (for now).

Test: accessibility/list-detection.html

* accessibility/AccessibilityList.cpp:
(WebCore::AccessibilityList::determineAccessibilityRole):
(WebCore::AccessibilityList::roleValue):
* accessibility/AccessibilityList.h:

LayoutTests: 

* accessibility/aria-roles.html:
* accessibility/list-detection-expected.txt: Added.
* accessibility/list-detection.html: Added.



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164107 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Unreviewed test correction to get bots green.

* platform/mac/fast/scrolling/scroll-iframe-latched-iframe-expected.txt: Don't
snapshot final pixel location, since these seems to be somewhat dependent
on the test machine.
* platform/mac/fast/scrolling/scroll-iframe-latched-iframe.html: Ditto



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164108 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Add -[WKWebView _handle]
https://bugs.webkit.org/show_bug.cgi?id=128828

Reviewed by Dan Bernstein.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _handle]):
* UIProcess/API/Cocoa/WKWebViewPrivate.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164109 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Give ScrollingTree(State)Nodes a reference to another layer, which is used for moving overflow:scroll contents around
https://bugs.webkit.org/show_bug.cgi?id=128790

Reviewed by Beth Dakin.

Have scrolling tree nodes and state nodes track another layer, the
"scrolled contents layer", for accelerated overflow:scroll.

When making ScrollingTreeScrollingNodes for overflow:scroll, the node's
layer will point to the composited element's primary layer, and its
scrolledContentsLayer to the layer that gets moved around by scrolling.

Do some other cleanup on AsyncScrollingCoordinator, removing
functions that just called through to nodes.

Source/WebCore:

* WebCore.exp.in:
* page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::frameViewLayoutUpdated):
(WebCore::AsyncScrollingCoordinator::frameViewNonFastScrollableRegionChanged):
(WebCore::AsyncScrollingCoordinator::frameViewRootLayerDidChange):
(WebCore::AsyncScrollingCoordinator::updateScrollingNode):
(WebCore::AsyncScrollingCoordinator::updateViewportConstrainedNode):
(WebCore::AsyncScrollingCoordinator::recomputeWheelEventHandlerCountForFrameView):
* page/scrolling/AsyncScrollingCoordinator.h:
* page/scrolling/ScrollingCoordinator.h:
(WebCore::ScrollingCoordinator::updateScrollingNode):
* page/scrolling/ScrollingStateScrollingNode.cpp:
(WebCore::ScrollingStateScrollingNode::ScrollingStateScrollingNode):
(WebCore::ScrollingStateScrollingNode::setScrolledContentsLayer):
(WebCore::ScrollingStateScrollingNode::setCounterScrollingLayer):
(WebCore::ScrollingStateScrollingNode::setHeaderLayer):
(WebCore::ScrollingStateScrollingNode::setFooterLayer):
* page/scrolling/ScrollingStateScrollingNode.h:
* page/scrolling/ios/ScrollingTreeScrollingNodeIOS.h:
* page/scrolling/ios/ScrollingTreeScrollingNodeIOS.mm:
(WebCore::ScrollingTreeScrollingNodeIOS::updateBeforeChildren):
* page/scrolling/mac/ScrollingTreeScrollingNodeMac.h:
* page/scrolling/mac/ScrollingTreeScrollingNodeMac.mm:
(WebCore::ScrollingTreeScrollingNodeMac::updateBeforeChildren):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::fixedRootBackgroundLayerChanged):

Source/WebKit2:

* UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.cpp:
(WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164110 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Add -[WKWebView estimatedProgress]
https://bugs.webkit.org/show_bug.cgi?id=128830

Reviewed by Dan Bernstein.

* UIProcess/API/Cocoa/WKWebView.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView estimatedProgress]):
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::willChangeEstimatedProgress):
(WebKit::NavigationState::didChangeEstimatedProgress):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164111 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Stop using PLATFORM(MAC) in WebKit2/PluginProcess except where it means “OS X but not iOS”
https://bugs.webkit.org/show_bug.cgi?id=128802

Reviewed by Darin Adler.

* PluginProcess/PluginControllerProxy.cpp: Changed PLATFORM(MAC) to PLATFORM(COCOA).
(WebKit::PluginControllerProxy::PluginControllerProxy):
(WebKit::PluginControllerProxy::paint):
* PluginProcess/PluginControllerProxy.h: Ditto.
* PluginProcess/PluginControllerProxy.messages.in: Ditto.
* PluginProcess/PluginProcess.cpp:
(WebKit::PluginProcess::PluginProcess): Ditto.
(WebKit::PluginProcess::netscapePluginModule): Added && !PLATFORM(IOS) around Mac-specific
quirk.
(WebKit::PluginProcess::createWebProcessConnection): Changed PLATFORM(MAC) to OS(DARWIN)
around use of Mach-based IPC.
* PluginProcess/PluginProcess.h: Changed PLATFORM(MAC) to PLATFORM(COCOA), and to
USE(APPKIT) around override of stopRunLoop, which is implemented using AppKit.
* PluginProcess/PluginProcess.messages.in: Removed PLATFORM(MAC) guard around
SetProcessSuppressionEnabled. Changed it to PLATFORM(COCOA) around SetQOS.
* PluginProcess/WebProcessConnection.cpp: Changed PLATFORM(MAC) to PLATFORM(COCOA).
(WebKit::WebProcessConnection::createPluginInternal):
(WebKit::WebProcessConnection::createPlugin):



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164112 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Implement text-decoration-skip: auto
https://bugs.webkit.org/show_bug.cgi?id=128786

Reviewed by Dean Jackson.

http://lists.w3.org/Archives/Public/www-style/2014Feb/0485.html
We are updating the initial value of text-decoration-skip to a new value, "auto".
On Mac + iOS, this will have the same behavior as "skip".

Source/WebCore:

Test: fast/css3-text/css3-text-decoration/text-decoration-skip/text-decoration-skip-default.html

* css/CSSComputedStyleDeclaration.cpp:
(WebCore::renderTextDecorationSkipFlagsToCSSValue):
* css/CSSParser.cpp:
(WebCore::CSSParser::parseTextDecorationSkip):
* css/DeprecatedStyleBuilder.cpp:
(WebCore::valueToDecorationSkip):
* rendering/InlineTextBox.cpp:
(WebCore::InlineTextBox::paintDecoration):
* rendering/style/RenderStyle.h:
* rendering/style/RenderStyleConstants.h:

LayoutTests:

* fast/css3-text/css3-text-decoration/text-decoration-skip/text-decoration-skip-default-expected.txt: Added.
* fast/css3-text/css3-text-decoration/text-decoration-skip/text-decoration-skip-default.html: Added.
* fast/css3-text/css3-text-decoration/text-decoration-skip/text-decoration-skip-roundtrip-expected.txt:
* fast/css3-text/css3-text-decoration/text-decoration-skip/text-decoration-skip-roundtrip.html:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164115 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Web Inspector: color wheel should support Retina displays
https://bugs.webkit.org/show_bug.cgi?id=124355

Reviewed by Timothy Hatcher.

Take into account the devicePixelRatio in order to draw the color wheel
with as many colors as we can draw with the current DPI and to correctly
convert from page coordinates to canvas coordinates when dealing with
mouse events.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164117 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Make code generation of the unoptimized pseudo classes separate
https://bugs.webkit.org/show_bug.cgi?id=128704

Reviewed by Andreas Kling.

Mapping the unoptimized selectors when generating the code was useful for debugging
but those cases are so common that looping over unoptimizedPseudoCheckers was more
costly than anticipated.

This patch moves the unoptimized pseudo selector in their own array to simplify code generation.

* cssjit/SelectorCompiler.cpp:
(WebCore::SelectorCompiler::addPseudoType):
(WebCore::SelectorCompiler::SelectorCodeGenerator::SelectorCodeGenerator):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementMatching):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164118 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Don't optimize variadic closure calls
https://bugs.webkit.org/show_bug.cgi?id=128835

Source/JavaScriptCore: 

Reviewed by Gavin Barraclough.
        
Read the check that had been in JITStubs.cpp, back in the day. This code came
from the DFG and the DFG didn't need these checks.

* jit/JITOperations.cpp:

LayoutTests: 

Reviewed by Gavin Barraclough.
        
Add a test that covers both the performance and correctness of this case.

* js/regress/script-tests/variadic-closure-call.js: Added.
(foo.bar):
(foo):
* js/regress/variadic-closure-call-expected.txt: Added.
* js/regress/variadic-closure-call.html: Added.



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164119 268f45cc-cd09-0410-ab3c-d52691b4dbfc
<rdar://problem/15994340> WK2: Cannot scroll to the bottom of the page when the keyboard is on the screen
https://bugs.webkit.org/show_bug.cgi?id=128710

Patch by Benjamin Poulain <bpoulain@apple.com> on 2014-02-14
Reviewed by Enrica Casucci.

WKView/WKWebView needs to adapt the UIScrollView insets to leave some space for the keyboard.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView initWithFrame:configuration:]):
(-[WKWebView dealloc]):
(-[WKWebView _keyboardChangedWithInfo:adjustScrollView:]):
(-[WKWebView _keyboardWillChangeFrame:]):
(-[WKWebView _keyboardDidChangeFrame:]):
(-[WKWebView _keyboardWillShow:]):
(-[WKWebView _keyboardWillHide:]):
* UIProcess/API/ios/WKContentView.h:
* UIProcess/API/ios/WKContentView.mm:
(-[WKContentView isAssistingNode]):
* UIProcess/API/ios/WKInteractionView.h:
* UIProcess/API/ios/WKViewIOS.mm:
(-[WKView dealloc]):
(-[WKView _commonInitializationWithContextRef:pageGroupRef:relatedToPage:]):
(-[WKView _keyboardChangedWithInfo:adjustScrollView:]):
(-[WKView _keyboardWillChangeFrame:]):
(-[WKView _keyboardDidChangeFrame:]):
(-[WKView _keyboardWillShow:]):
(-[WKView _keyboardWillHide:]):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164120 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[WK2][iOS] Add WKContentObservation support when dispatching synthetic mouse events
https://bugs.webkit.org/show_bug.cgi?id=128715

Patch by Benjamin Poulain <bpoulain@apple.com> on 2014-02-14
Reviewed by Darin Adler.

* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::handleTap):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164121 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Do not attempt to synchronize attributes when no Simple Selector could match an animatable attribute
https://bugs.webkit.org/show_bug.cgi?id=128728

Reviewed by Andreas Kling.

In most cases, we don't even need to test for the flag animatedSVGAttributesNotDirty.
If the selector filter could never match an animatable attribute, there is no point in testing for one.

* cssjit/SelectorCompiler.cpp:
(WebCore::SelectorCompiler::canMatchStyleAttribute):
Skip the second test when the local name is equal to canonicalLocalName. That is the common case.

(WebCore::SelectorCompiler::canMatchAnimatableSVGAttribute):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementAttributesMatching):

* svg/SVGElement.cpp:
(WebCore::addQualifiedName):
(WebCore::SVGElement::animatableAttributeForName):
(WebCore::SVGElement::isAnimatableAttribute):
(WebCore::SVGElement::filterOutAnimatableAttribute):
* svg/SVGElement.h:
* svg/SVGScriptElement.cpp:
(WebCore::SVGScriptElement::filterOutAnimatableAttribute):
* svg/SVGScriptElement.h:
Move the list of animatable attribute to a static function available in Release.
Selector matching is a lot more flexible than normal name matching. Since the local name must
always match, it is used as a key to get the full QualifiedName to compare to the selector.

Separating the list of animatable attributes between Selectors and SVGElement::isAnimatableAttribute
would be error prone. Instead, SVGElement::isAnimatableAttribute() is modified to use
SVGElement::animatableAttributeForName so that the two never get out of sync.

Since SVGScriptElement has one additional restriction to isAnimatableAttribute(), the function
filterOutAnimatableAttribute() is added to remove a qualified name from the complete list of animatable attributes.
This ensure SVGElement::animatableAttributeForName() always has the complete list, and subclasses of SVGElement
can only remove QualifiedNames, not add them.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164123 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Improve the performance on mobile of FTPDirectoryDocument
https://bugs.webkit.org/show_bug.cgi?id=128778

Patch by Benjamin Poulain <bpoulain@apple.com> on 2014-02-14
Reviewed by Antti Koivisto.

Source/WebCore: 

Little cleanup.

* html/FTPDirectoryDocument.cpp:
(WebCore::FTPDirectoryDocumentParser::appendEntry):
(WebCore::FTPDirectoryDocumentParser::createTDForFilename):
(WebCore::processFilesizeString):
(WebCore::wasLastDayOfMonth):
(WebCore::processFileDateString):
(WebCore::FTPDirectoryDocumentParser::parseAndAppendOneLine):
(WebCore::FTPDirectoryDocumentParser::loadDocumentTemplate):
(WebCore::FTPDirectoryDocumentParser::createBasicDocument):

Source/WTF: 

* wtf/text/WTFString.h:
(WTF::String::endsWith): add a missing overload.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164124 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Clean up JSDOMStringMap::deleteProperty
https://bugs.webkit.org/show_bug.cgi?id=128801

Reviewed by Geoffrey Garen.

Follow up on my cleaning of JSDOMStringMapCustom, this time for deletion.

Previously, we would query for the name, then call deleteItem() if the name was
found. Instead, everything is moved to deleteItem which then return if the deletion
is successful or not.

By using convertPropertyNameToAttributeName, we can use Element::hasAttribute() directly
to find if the attribute exists or not. If it exists, we remove it.

Theoretically we could have a single pass over the attributes to find->delete but this
code is not hot enough to justify anything fancy at this point.

Finally, we no longer check for isValidPropertyName() on deletion. JSDOMStringMapCustom
was the last client of DatasetDOMStringMap::deleteItem() and it could not call deleteItem()
with invalid name since the name would have failed DatasetDOMStringMap::contains().
The spec does not specify any name checking either for deletion so we are safe just ignoring
invalid input.

* bindings/js/JSDOMStringMapCustom.cpp:
(WebCore::JSDOMStringMap::deleteProperty):
* dom/DatasetDOMStringMap.cpp:
(WebCore::DatasetDOMStringMap::deleteItem):
* dom/DatasetDOMStringMap.h:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164125 268f45cc-cd09-0410-ab3c-d52691b4dbfc