Always inline toJS() for NodeList.
<https://webkit.org/b/130974>

This is a pretty cheesy optimization, but it's a 3% progression on
Dromaeo/dom-query.html on my MBP.

Reviewed by Benjamin Poulain.

* WebCore.exp.in:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSNodeListCustom.h: Added.
(WebCore::toJS):
* dom/NodeList.idl:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@166520 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Blind Windows build fix. Check my mangle-fu.

* WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@166521 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[CSS Shapes] Simplify RasterShape implementation
https://bugs.webkit.org/show_bug.cgi?id=130916

Reviewed by Dean Jackson.

Since only floats can specify shape-outside, the RasterShapeIntervals
class only needs to track the first and last above threshold pixel column
(x1 and x2 in the implementation) for each row. Removed code for dealing with
multiple "runs" per row as well as shape-inside internals.

No new tests, since functionality was only removed.

* rendering/shapes/RasterShape.cpp:
(WebCore::RasterShapeIntervals::computeShapeMarginIntervals):
(WebCore::RasterShapeIntervals::initializeBounds):
(WebCore::RasterShapeIntervals::buildBoundsPath):
(WebCore::RasterShape::getExcludedIntervals):
* rendering/shapes/RasterShape.h:
(WebCore::RasterShapeIntervals::RasterShapeIntervals):
(WebCore::RasterShapeIntervals::intervalAt):
(WebCore::RasterShape::RasterShape):
* rendering/shapes/Shape.cpp:
(WebCore::Shape::createRasterShape):
* rendering/shapes/ShapeInterval.h:
(WebCore::ShapeInterval::unite):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@166522 268f45cc-cd09-0410-ab3c-d52691b4dbfc
ThemeMac should use std::array instead of IntSize* for control sizes
https://bugs.webkit.org/show_bug.cgi?id=130985

Reviewed by Darin Adler.

Replace uses of const IntSize* with const std::array<IntSize, 3>
* platform/mac/ThemeMac.mm:
(WebCore::sizeFromNSControlSize):
(WebCore::sizeFromFont):
(WebCore::controlSizeFromPixelSize):
(WebCore::setControlSize):
(WebCore::checkboxSizes):
(WebCore::radioSizes):
(WebCore::buttonSizes):
(WebCore::setUpButtonCell):
(WebCore::stepperSizes):



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@166523 268f45cc-cd09-0410-ab3c-d52691b4dbfc
CSS JIT: clean up the functions ending when generating a checker with context
https://bugs.webkit.org/show_bug.cgi?id=130959

Reviewed by Andreas Kling.

This code got refactored over time and now both branches do the exact same action
on the stack.
This patch removes the stack split and move the stack cleanup in the common ending
just before restoring the callee saved registers.

* cssjit/SelectorCompiler.cpp:
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateSelectorChecker):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@166524 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[CSS Blending] showLayerTree should dump layer's blend mode and isolation properties
https://bugs.webkit.org/show_bug.cgi?id=130922

Patch by Ion Rosca <rosca@adobe.com> on 2014-03-31
Reviewed by Simon Fraser.

Source/WebCore:

This change only updates existing tests involving blending. No new test required,
as there is no new or changed functionality.

* rendering/RenderLayer.h: adding blendMode() getter.
* rendering/RenderTreeAsText.cpp:
(WebCore::write):
adding blendMode property and layer's isolation status (does layer isolate blending descendants or not?).

LayoutTests:

Tests are adapted after adding blending information to RenderTreeAsText.

* platform/mac/css3/compositing/blend-mode-background-expected.txt:
* platform/mac/css3/compositing/blend-mode-isolated-group-1-expected.txt:
* platform/mac/css3/compositing/blend-mode-isolated-group-2-expected.txt:
* platform/mac/css3/compositing/blend-mode-isolated-group-3-expected.txt:
* platform/mac/css3/compositing/blend-mode-layers-expected.txt:
* platform/mac/css3/compositing/blend-mode-reflection-expected.txt:
* platform/mac/css3/compositing/blend-mode-simple-composited-expected.txt:
* platform/mac/css3/compositing/blend-mode-simple-expected.txt:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@166525 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[CSS Blending] Blend mode property is propagated to multiple GraphicLayers
https://bugs.webkit.org/show_bug.cgi?id=130337

Patch by Ion Rosca <rosca@adobe.com> on 2014-03-31
Reviewed by Dean Jackson.

Source/WebCore:

Resets the blend mode for graphicsLayer when it has an ancestorClippingLayer.

Test: css3/compositing/blend-mode-ancestor-clipping-layer.html

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::updateBlendMode):
(WebCore::RenderLayer::calculateClipRects):
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateBlendMode):
* rendering/RenderLayerBacking.h:

LayoutTests:

* css3/compositing/blend-mode-ancestor-clipping-layer-expected.txt: Added.
* css3/compositing/blend-mode-ancestor-clipping-layer.html: Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@166526 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Allocate IOSurfaces with the same cache mode that CoreAnimation uses
https://bugs.webkit.org/show_bug.cgi?id=130982

Reviewed by Simon Fraser.

* platform/graphics/cocoa/IOSurface.mm:
(IOSurface::IOSurface):
CA uses kIOMapWriteCombineCache for IOSurfaces allocated on iOS.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@166527 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Small adjustments to WebCore::IOSurface
https://bugs.webkit.org/show_bug.cgi?id=130981

Reviewed by Simon Fraser.

* WebCore.exp.in:
Export some more things.

* platform/graphics/cocoa/IOSurface.h:
createImage() can't be const because it calls ensurePlatformContext().

* platform/graphics/cocoa/IOSurface.mm:
(IOSurface::createImage):
We should be able to create an image even if the CGContext has been cleared (or never created).

(IOSurface::isInUse):
Rename inUse() to isInUse().

(IOSurface::clearGraphicsContext):
Add clearGraphicsContext().


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@166528 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Rename TileCache to LegacyTileCache
https://bugs.webkit.org/show_bug.cgi?id=130986

Reviewed by Simon Fraser.

../WebCore: 

Rename iOS WebKit1 tile cache classes to reflect its status.
This also frees some good type names.

TileCache -> LegacyTileCache
TileGrid -> LegacyTileGrid
TileGridTile -> LegacyTileGridTile
etc.

../WebKit/mac: 

* WebView/WebView.mm:
(+[WebView drainLayerPool]):
(+[WebView _setTileCacheLayerPoolCapacity:]):



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@166529 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Reduced Latched Scroll Test Flakiness
https://bugs.webkit.org/show_bug.cgi?id=130983

Reviewed by Darin Adler.

Tools: 

* DumpRenderTree/mac/DumpRenderTree.mm:
(setDefaultsToConsistentValuesForTesting): Test user should have 'high resolution' scrolling.
* DumpRenderTree/mac/EventSendingController.mm:
(-[EventSendingController mouseScrollByX:andY:withWheel:andMomentumPhases:]): Generate mouse wheel events
with high resolution flags turned on.
* WebKitTestRunner/mac/EventSenderProxy.mm:
(WTR::EventSenderProxy::mouseScrollByWithWheelAndMomentumPhases): Ditto.

LayoutTests: 

Rebaseline test output for 'hasPreciseScrollingDeltas' behavior.

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


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@166530 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[iOS WK2] Hook up scroll events for accelerated overflow:scroll
https://bugs.webkit.org/show_bug.cgi?id=130976

Source/WebCore:

Reviewed by Tim Horton.

When an accelerated overflow:scroll is scrolled in the UI process,
tell the WebProcess that the scroll happened to update RenderLayer
state and fire events.

In the WebProcess, RemoteScrollingCoordinator gets a message from the
UI process and calls AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll().
Fixed that function to handle scrolling nodes other than the root, which
required storing a map of ScrollingNodeID->RenderLayer* on RenderLayerCompositor,
accessible through FrameView::scrollableAreaForScrollLayerID().

* WebCore.exp.in:
* page/FrameView.cpp:
(WebCore::FrameView::scrollableAreaForScrollLayerID):
* page/FrameView.h:
* page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll): Handle
overflow as well as main frame scrolling nodes.
* page/scrolling/ScrollingTree.cpp:
(WebCore::ScrollingTree::viewportChangedViaDelegatedScrolling): Use isScrollingNode().
(WebCore::ScrollingTree::scrollPositionChangedViaDelegatedScrolling): When an overflow
scroll node was scrolled externally, we have to update layers in decendant nodes,
and then call scrollingTreeNodeDidScroll() which tells the ScrollingCoordinator that
we scrolled.
* page/scrolling/ScrollingTree.h: Try to reduce confusion between the roles played
by these various functions, some of which happen in the UI process with UI-side
compositing.
* page/scrolling/ScrollingTreeScrollingNode.h:
* page/scrolling/ios/ScrollingTreeScrollingNodeIOS.h: Need some functions to be
callable by subclasses.
* page/scrolling/ios/ScrollingTreeScrollingNodeIOS.mm:
(WebCore::ScrollingTreeScrollingNodeIOS::updateLayersAfterDelegatedScroll):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::updateScrollCoordinatedLayer): Add
scrolling layers to the m_scrollingNodeToLayerMap
(WebCore::RenderLayerCompositor::detachScrollCoordinatedLayer): Remove
layer from the m_scrollingNodeToLayerMap.
(WebCore::RenderLayerCompositor::scrollableAreaForScrollLayerID):
* rendering/RenderLayerCompositor.h:

Source/WebKit2:

Reviewed by Tim Horton.

When an accelerated overflow:scroll is scrolled in the UI process,
tell the WebProcess that the scroll happened to update RenderLayer
state and fire events.

Add a WKOverflowScrollViewDelegate which is set as the delegate of
UIScrollViews, owned by ScrollingTreeOverflowScrollingNodeIOS, and propagates
-scrollViewDidScroll: messages to ScrollingTree::scrollPositionChangedViaDelegatedScrolling(),
which updates child layers and then, via RemoteScrollingTree::scrollingTreeNodeDidScroll,
tells the RemoteScrollingCoordinator which sends a message to the WebProcess.

* UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.cpp:
(WebKit::RemoteScrollingCoordinatorProxy::scrollingTreeNodeDidScroll): Name change
to try to reduce confusion.
(WebKit::RemoteScrollingCoordinatorProxy::scrollPositionChanged): Deleted.
* UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.h:
* UIProcess/Scrolling/RemoteScrollingTree.cpp:
(WebKit::RemoteScrollingTree::scrollingTreeNodeDidScroll):
* UIProcess/Scrolling/RemoteScrollingTree.h:
* UIProcess/Scrolling/ios/ScrollingTreeOverflowScrollingNodeIOS.h:
* UIProcess/Scrolling/ios/ScrollingTreeOverflowScrollingNodeIOS.mm:
(-[WKOverflowScrollViewDelegate initWithScrollingTreeNode:WebKit::]):
(-[WKOverflowScrollViewDelegate scrollViewDidScroll:]):
(-[WKOverflowScrollViewDelegate scrollViewWillBeginDragging:]):
(-[WKOverflowScrollViewDelegate scrollViewDidEndDragging:willDecelerate:]):
(-[WKOverflowScrollViewDelegate scrollViewDidEndScrollingAnimation:]):
(WebKit::ScrollingTreeOverflowScrollingNodeIOS::~ScrollingTreeOverflowScrollingNodeIOS):
(WebKit::ScrollingTreeOverflowScrollingNodeIOS::updateBeforeChildren):
(WebKit::ScrollingTreeOverflowScrollingNodeIOS::updateAfterChildren):
(WebKit::ScrollingTreeOverflowScrollingNodeIOS::scrollViewDidScroll):
* WebProcess/Scrolling/RemoteScrollingCoordinator.mm:
(WebKit::RemoteScrollingCoordinator::scrollPositionChangedForNode): No need for
rounding.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@166531 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Add variant of phone number parsing that use DocumentMarker in the current selection
<rdar://problem/16379566> and https://bugs.webkit.org/show_bug.cgi?id=130917

Reviewed by Darin Adler.

* dom/DocumentMarker.h:
(WebCore::DocumentMarker::AllMarkers::AllMarkers): Add a new TelephoneNumber document marker type.

* editing/Editor.cpp:
(WebCore::Editor::respondToChangedSelection):
(WebCore::Editor::scanSelectionForTelephoneNumbers): TextIterate over the selected range looking for numbers.
(WebCore::Editor::scanRangeForTelephoneNumbers): Scan the given range for a telephone number,
  adding the DocumentMarker to any that are found.
(WebCore::Editor::clearDataDetectedTelephoneNumbers):
* editing/Editor.h:

* html/parser/HTMLTreeBuilder.cpp:
(WebCore::HTMLTreeBuilder::processCharacterBufferForInBody): Only linkify on iOS.

* rendering/InlineTextBox.cpp:
(WebCore::InlineTextBox::paintTelephoneNumberMarker): Placeholder UI while the feature is developed.
(WebCore::InlineTextBox::paintDocumentMarkers):
* rendering/InlineTextBox.h:

* testing/Internals.cpp:
(WebCore::markerTypesFrom):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@166532 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Unreviewed. iOS build fix after r166532. Add missing comma.

* dom/DocumentMarker.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@166533 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Fix iOS build.

* page/scrolling/ios/ScrollingTreeScrollingNodeIOS.mm:
(WebCore::ScrollingTreeScrollingNodeIOS::updateLayersAfterDelegatedScroll):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@166534 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Remove WEB_ANIMATIONS
https://bugs.webkit.org/show_bug.cgi?id=130989

Reviewed by Simon Fraser.

Remove this feature flag until we plan to implement.

Source/JavaScriptCore:

* Configurations/FeatureDefines.xcconfig:

Source/WebCore:

* Configurations/FeatureDefines.xcconfig:

Source/WebKit/mac:

* Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

* Configurations/FeatureDefines.xcconfig:

Source/WTF:

* wtf/FeatureDefines.h:

Tools:

* Scripts/webkitperl/FeatureList.pm:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@166535 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Unreviewed test fix after r166530.

After switching to high-resolution continuous scroll output, forgot to update one test case.

* fast/events/platform-wheelevent-in-scrolling-div-expected.txt:
* fast/events/platform-wheelevent-in-scrolling-div.html:



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@166536 268f45cc-cd09-0410-ab3c-d52691b4dbfc
CSS JIT: compile the first-child pseudo class
https://bugs.webkit.org/show_bug.cgi?id=130954

Reviewed by Andreas Kling.

* css/ElementRuleCollector.cpp:
(WebCore::ElementRuleCollector::collectMatchingRules):
The compiler use the context's style directly when resolving style. An error introduced
in the rule collector would cause a crash in the compiled code which would be hard to debug.
Add an assertion early in the stack to catch errors where it is easier to debug them.

* css/StyleResolver.cpp:
(WebCore::StyleResolver::State::initForStyleResolve):
* cssjit/SelectorCompiler.cpp:
(WebCore::SelectorCompiler::addPseudoType):
(WebCore::SelectorCompiler::SelectorCodeGenerator::SelectorCodeGenerator):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateWalkToPreviousAdjacentElement):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateWalkToPreviousAdjacent):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateDirectAdjacentTreeWalker):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateIndirectAdjacentTreeWalker):
Refactor those to be able to reuse the code getting a sibling element preceding the current element.

(WebCore::SelectorCompiler::SelectorCodeGenerator::jumpIfNotResolvingStyle):
Extract the code checking the current mode from SelectorCodeGenerator::markParentElementIfResolvingStyle()
in a separate function. This will be useful for all the pseudo class with marking.

(WebCore::SelectorCompiler::SelectorCodeGenerator::markParentElementIfResolvingStyle):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementMatching):
(WebCore::SelectorCompiler::setFirstChildState):
This is the slow path for when the first-child pseudo class is on a fragment that is not
the rightmost.
The reason to use a slow path is accessing renderStyle() is not trivial and this case isn't not
as common. We should improve this later.

(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsFirstChild):
This is just implementing the test for first-child plus the tree marking. Nothing fancy,
this is basically the same thing as SelectorChecker.

* dom/Element.cpp:
(WebCore::Element::setChildrenAffectedByFirstChildRules):
* dom/Element.h:
C++ fallback to set the flag, to be improved later with the other flags.

* rendering/style/RenderStyle.h:
I accidentaly put noninheritedFlagsMemoryOffset() as private in the RenderStyle refactoring.

Also update the flags accessor to make them easier to work with from the compiler. In particular,
setFirstChildStateFlags() sets both isUnique and firstChild. Currently the JIT does not need to access
the value so individual flags are made private.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@166537 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Remove the trigger for webkit1 tests on the gtk-linux-64-release bot
https://bugs.webkit.org/show_bug.cgi?id=130987

r166427 removed the WebKit1 GTK+ bots, so we don't longer need to
trigger the webkit1 bot tests on the gtk-linux-64-release bot.

Patch by Carlos Alberto Lopez Perez <clopez@igalia.com> on 2014-03-31
Reviewed by Martin Robinson.

* BuildSlaveSupport/build.webkit.org-config/config.json:

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