Unreviewed, rolling out r175690.
https://bugs.webkit.org/show_bug.cgi?id=138460

We are not ready to run layout tests using the network process
yet (Requested by KaL on #webkit).

Reverted changeset:

"[GTK] Run layout tests using the network process"
https://bugs.webkit.org/show_bug.cgi?id=138428
http://trac.webkit.org/changeset/175690

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@175693 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[GTK] Add context menu API to Web Process Extensions
https://bugs.webkit.org/show_bug.cgi?id=138311

Reviewed by Gustavo Noronha Silva.

Source/WebKit2:

Add WebKitWebPage::context-menu signal, similar to the
WebKitWebView one, but that receives a WebKitWebHitTestResult, a
class that extends WebKitTestResult to provide the WebKitDOMNode
from the Web Process Extensions API. This makes WebKitContextMenu,
WebKitContextMenuItem and WebKitTestResult classes shared between
UI and Web Extensions APIs. In addition to be able to customize
the context menu, it also provides API to set user data, as a
GVariant, in the Web Process that is sent to the UI Process.

* PlatformGTK.cmake: Add new files.
* UIProcess/API/gtk/WebKitContextMenu.cpp:
(webkit_context_menu_set_user_data): Add user data to the context
menu as a GVariant.
(webkit_context_menu_get_user_data): Get the user data previously
set with webkit_context_menu_set_user_data() either from the Web
or UI processes.
* UIProcess/API/gtk/WebKitContextMenu.h:
* UIProcess/API/gtk/WebKitContextMenuActions.h:
* UIProcess/API/gtk/WebKitContextMenuClient.cpp:
(getContextMenuFromProposedMenu): Convert the received user data
into a GVariant and pass it to webkitWebViewPopulateContextMenu().
* UIProcess/API/gtk/WebKitContextMenuItem.h:
* UIProcess/API/gtk/WebKitForwardDeclarations.h:
* UIProcess/API/gtk/WebKitHitTestResult.h:
* UIProcess/API/gtk/WebKitWebView.cpp:
(webkitWebViewPopulateContextMenu): Set the user data received
from the Web Process to the WebKitContextMenu before emitting
WebKitWebView::context-menu.
* UIProcess/API/gtk/WebKitWebViewPrivate.h:
* UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: Add new section for WebKitWebHitTestResult.
* UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new symbols.
* UIProcess/API/gtk/docs/webkit2gtk.types: Add webkit_web_hit_test_result_get_type.
* WebProcess/InjectedBundle/API/gtk/WebKitWebHitTestResult.cpp: Added.
(webkitWebHitTestResultGetProperty): Add getter for node property.
(webkitWebHitTestResultSetProperty): Add setter for node property.
(webkit_web_hit_test_result_class_init): Add node property.
(webkitWebHitTestResultCreate): Create a new
WebKitWebHitTestResult for the given InjectedBundleHitTestResult.
(webkit_web_hit_test_result_get_node): Return the WebKitDOMNode.
* WebProcess/InjectedBundle/API/gtk/WebKitWebHitTestResult.h: Added.
* WebProcess/InjectedBundle/API/gtk/WebKitWebHitTestResultPrivate.h: Added.
* WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:
(getContextMenuFromDefaultMenu): Build a WebKitContextMenu and
WebKitWebHitTestResult and emit WebKitWebPage::context-menu signal.
(webkit_web_page_class_init): Add WebKitWebPage::context-menu signal.
(webkitWebPageCreate): Add implementation for getContextMenuFromDefaultMenu.
* WebProcess/InjectedBundle/API/gtk/webkit-web-extension.h:

Tools:

Add tests cases for WebKitWebPage::context-menu signal.

* TestWebKitAPI/Tests/WebKit2Gtk/TestContextMenu.cpp:
(testContextMenuWebExtensionMenu):
(testContextMenuWebExtensionNode):
(beforeAll):
* TestWebKitAPI/Tests/WebKit2Gtk/WebExtensionTest.cpp:
(serializeContextMenu):
(serializeNode):
(contextMenuCallback):
(pageCreatedCallback):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@175694 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Update testharness.js to the latest version
https://bugs.webkit.org/show_bug.cgi?id=138446

Reviewed by Ryosuke Niwa.

The only change I've made from upstream is to set output to false by
default.

* resources/testharness.js:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@175695 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[GTK] [Stable] webkitgtk 2.6.1 fails to load flashplugin
https://bugs.webkit.org/show_bug.cgi?id=137849

Reviewed by Carlos Garcia Campos.

NPPVpluginNeedsXEmbed is a boolean value, so it should normally
use an NPBool (1 byte). However some plugins (the Flash player in
particular) are using an int instead, so we have to do it as well
else we'll end up corrupting the stack.

* WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:
(WebKit::NetscapePlugin::platformPostInitialize):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@175696 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Use lambda functions in DocumentOrderedMap
https://bugs.webkit.org/show_bug.cgi?id=138376

Reviewed by Darin Adler.

Use lambda functions in DocumentOrderedMap instead of separate named
functions.

No new tests, no behavior change.

* dom/DocumentOrderedMap.cpp:
(WebCore::DocumentOrderedMap::get):
(WebCore::DocumentOrderedMap::getElementById):
(WebCore::DocumentOrderedMap::getElementByName):
(WebCore::DocumentOrderedMap::getElementByMapName):
(WebCore::DocumentOrderedMap::getElementByLowercasedMapName):
(WebCore::DocumentOrderedMap::getElementByLowercasedUsemap):
(WebCore::DocumentOrderedMap::getElementByLabelForAttribute):
(WebCore::DocumentOrderedMap::getElementByWindowNamedItem):
(WebCore::DocumentOrderedMap::getElementByDocumentNamedItem):
(WebCore::DocumentOrderedMap::getAllElementsById):
(WebCore::keyMatchesId): Deleted.
(WebCore::keyMatchesName): Deleted.
(WebCore::keyMatchesMapName): Deleted.
(WebCore::keyMatchesLowercasedMapName): Deleted.
(WebCore::keyMatchesLowercasedUsemap): Deleted.
(WebCore::keyMatchesLabelForAttribute): Deleted.
(WebCore::keyMatchesWindowNamedItem): Deleted.
(WebCore::keyMatchesDocumentNamedItem): Deleted.
* dom/DocumentOrderedMap.h:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@175697 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[iOS] WebProcess needs to take a background task assertion to prevent being killed
for "suspended with locked system files"
https://bugs.webkit.org/show_bug.cgi?id=138155
<rdar://problem/17939303>

Reviewed by Anders Carlsson.

Mitigates an issue where the WebProcess may be killed when suspended holding locked files
by allowing the WebProcess to notify the UIProcess when it is holding such files so that
both can continue to run for a period of time after the UIProcess transitions to the
background. In particular, the WebProcess notifies the UIProcess that it is holding- or
relinquished- a locked file when it begins and ends a sequence of SQLite transactions,
respectively.

* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::disconnect): Relinquish an existing background task assertion
when the WebProcess disconnects. Among other situations, the WebProcess may disconnect as
a result of being suspended holding locked files even when the UIProcess requested a
background task assertion (i.e. it may have exceeded its background time limit).
(WebKit::WebProcessProxy::setIsHoldingLockedFiles): Added. Either acquires a new background
task assertion or relinquishes an existing one.
* UIProcess/WebProcessProxy.h:
* UIProcess/WebProcessProxy.messages.in: Added message SetIsHoldingLockedFiles(bool). The WebProcess
dispatches this message to inform the UIProcess that it is holding- or relinquished- a locked file.
* WebKit2.xcodeproj/project.pbxproj: Added files WebSQLiteDatabaseTracker.{cpp, h}.
* WebProcess/WebCoreSupport/WebSQLiteDatabaseTracker.cpp: Added.
(WebKit::WebSQLiteDatabaseTracker::supplementName): Added.
(WebKit::WebSQLiteDatabaseTracker::WebSQLiteDatabaseTracker): Added.
(WebKit::WebSQLiteDatabaseTracker::initialize): Register to receive SQLiteDatabaseTrackerClient callbacks.
(WebKit::WebSQLiteDatabaseTracker::willBeginFirstTransaction): Inform the HysteresisActivity object on
the main thread that we began a transaction so that it calls WebSQLiteDatabaseTracker::started().
(WebKit::WebSQLiteDatabaseTracker::didFinishLastTransaction): Inform the HysteresisActivity object on
the main thread that we finished a transaction so that it may eventually call WebSQLiteDatabaseTracker::stopped().
(WebKit::WebSQLiteDatabaseTracker::started): Notify the UIProcess that the WebProcess is holding
a locked file.
(WebKit::WebSQLiteDatabaseTracker::stopped): Notify the UIProcess that the WebProcess has
relinquished the locked file.
* WebProcess/WebCoreSupport/WebSQLiteDatabaseTracker.h: Added. We use a HysteresisActivity object
to coalesce SetIsHoldingLockedFiles(false) messages as an optimization to minimize the number of
messages exchanged between the UIProcess and WebProcess when a web page performs SQLite transactions
in batches.
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::WebProcess): Instantiate the supplement WebSQLiteDatabaseTracker when building
for iOS.

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

* WebProcess/Plugins/PluginController.h:



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@175699 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Use std::unique_ptr for TileController
https://bugs.webkit.org/show_bug.cgi?id=138429

Reviewed by Anders Carlsson.

Source/WebCore:

* WebCore.exp.in:
* platform/graphics/ca/TileController.cpp:
(WebCore::TileController::create): Deleted.
* platform/graphics/ca/TileController.h:
* platform/graphics/ca/mac/WebTiledBackingLayer.h:
* platform/graphics/ca/mac/WebTiledBackingLayer.mm:
(-[WebTiledBackingLayer createTileController:]):
* platform/graphics/ca/win/PlatformCALayerWinInternal.cpp:
(PlatformCALayerWinInternal::createTileController):
* platform/graphics/ca/win/PlatformCALayerWinInternal.h:

Source/WebKit2:

* WebProcess/WebPage/mac/PlatformCALayerRemoteTiledBacking.cpp:
(WebKit::PlatformCALayerRemoteTiledBacking::PlatformCALayerRemoteTiledBacking):
* WebProcess/WebPage/mac/PlatformCALayerRemoteTiledBacking.h:



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@175700 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Prefer link action menus over images
https://bugs.webkit.org/show_bug.cgi?id=138461
<rdar://problem/18768377>

Reviewed by Anders Carlsson.

* UIProcess/mac/WKActionMenuController.mm:
(-[WKActionMenuController _defaultMenuItems:]):
Swap the priority of links and images.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@175701 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Null deref in rangeForDictionaryLookupAtHitTestResult on occasion
https://bugs.webkit.org/show_bug.cgi?id=138459
<rdar://problem/18872825>

Reviewed by Andreas Kling.

* WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::rangeForDictionaryLookupAtHitTestResult):
rangeExpandedAroundPositionByCharacters can return null.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@175702 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Only provide a single result to the action menu DDActionContext
https://bugs.webkit.org/show_bug.cgi?id=138469
<rdar://problem/18869036>

Reviewed by Anders Carlsson.

* WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::scanForDataDetectedItems):
Only provide one result; secondary results can be extremely unrelated to
the primary one and confuse Data Detectors further down the line.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@175704 268f45cc-cd09-0410-ab3c-d52691b4dbfc
TextIndicatorWindow's bounce animation is lopsided when indicating two short lines of text
https://bugs.webkit.org/show_bug.cgi?id=138458

Reviewed by Simon Fraser.

Previously, the TextIndicator's frame() covered the entire selection highlight bounds.
This was undesirable in cases where the highlight included areas far outside the
bounds of the selected text, as the TextIndicatorWindow's 'bounce' animation
would be misaligned (centered on the highlight instead of on the text).

* Shared/TextIndicator.cpp:
Get rid of the many-argument TextIndicator::create, because it was only used
internally, and have createWithSelectionInFrame make a ::Data instead.

(WebKit::TextIndicator::createWithSelectionInFrame):
Compute and store the bounding rect of all of the selected text rects, and store
all of the text rects relative to that bounding rect instead of relative to the
selection highlight bounds. We do this because the selection highlight bounds
often includes area which is far outside of the text bounds (in the case of a
selection that spans multiple lines), and causes the text indicator bounce
animation to bounce in a lopsided manner.

(WebKit::TextIndicator::TextIndicator):
Adjust to the rename of textRectsInSelectionRectCoordinates -> textRectsInBoundingRectCoordinates.

(WebKit::TextIndicator::frameRect):
Instead of the TextIndicator's frame being the selection highlight bounds,
it is now the bounds of all of the text rects.

(WebKit::TextIndicator::draw):
Translate into the image by the difference between the selection highlight bounds
and the text bounding rect. This is necessary because the content image is still generated
covering the entire selection highlight bounds, but the text rects are in text-rect-bounds coordinates.

(WebKit::TextIndicator::Data::encode):
(WebKit::TextIndicator::Data::decode):
Adjust to the rename of textRectsInSelectionRectCoordinates -> textRectsInBoundingRectCoordinates.
Encode/decode textBoundingRectInWindowCoordinates.

* Shared/TextIndicator.h:
(WebKit::TextIndicator::contentImage): Deleted.
Get rid of an unnecessary getter and constructor.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@175705 268f45cc-cd09-0410-ab3c-d52691b4dbfc
REGRESSION (r174985-174986): Site display disappears 
https://bugs.webkit.org/show_bug.cgi?id=138082

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

In support of the change in WebCore, this adds a new functor class to unwind to our
caller's frame possibly skipping of intermediate C++ frames.

* interpreter/StackVisitor.h:
(JSC::CallerFunctor::CallerFunctor):
(JSC::CallerFunctor::callerFrame):
(JSC::CallerFunctor::operator()):

Source/WebCore:

This effectively reverts to the behavior before r174985 by using the 
lexical global object of the caller's frame to find the active document.
Before r174985, native functions are invoked with the ScopeShain of their
caller.  The lexical global object is accessed from the ScopeChain.

* bindings/js/JSHTMLDocumentCustom.cpp:
(WebCore::JSHTMLDocument::getOwnPropertySlot):
(WebCore::findOwningDocument):
(WebCore::documentWrite):
(WebCore::JSHTMLDocument::write):
(WebCore::JSHTMLDocument::writeln):
* html/HTMLDocument.idl:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@175706 268f45cc-cd09-0410-ab3c-d52691b4dbfc
inspector-protocol/debugger/setPauseOnExceptions-uncaught.html frequently times out on Yosemite
https://bugs.webkit.org/show_bug.cgi?id=138097

* platform/mac-wk2/TestExpectations: Marking it as such.



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@175708 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Preview views often misplaced inside popover
https://bugs.webkit.org/show_bug.cgi?id=138472

Reviewed by Tim Horton.

Source/WebCore:

* WebCore.exp.in:

Source/WebKit2:

This patch makes the popover maintain aspect ratio, and it uses the final scale of 
that popover to scale the preview view as well.

* UIProcess/mac/WKActionMenuController.mm:
(-[WKPagePreviewViewController initWithPageURL:mainViewSize:popoverToViewScale:]):
(-[WKPagePreviewViewController loadView]):
(-[WKActionMenuController _createPreviewPopoverForURL:originRect:]):
(-[WKActionMenuController _targetSize:fitsInAvailableSpace:]):
(-[WKActionMenuController _preferredSizeForPopoverPresentedFromOriginRect:]):
(-[WKPagePreviewViewController initWithPageURL:]): Deleted.



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@175710 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Data detectors popover points at the first line of the detected item
https://bugs.webkit.org/show_bug.cgi?id=138471
<rdar://problem/18893079>

Reviewed by Sam Weinig.

* WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::scanForDataDetectedItems):
Determine the bounding box of all quads of the detected item's text.
This way, the popover will point at the border of the item, instead of
right at the very first line.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@175711 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Give pseudo elements the correct specificity
https://bugs.webkit.org/show_bug.cgi?id=138378

Patch by Benjamin Poulain <bpoulain@apple.com> on 2014-11-06
Reviewed by Dean Jackson.

Source/WebCore:

WebKit had an old silly bug where pseudo elements were given specificity in the class B
instead of the class C.

Now that the inspector shows the specificity, this bug is much more visible which is why
I fix it now.

Test: fast/css/pseudo-element-specificity.html

* css/CSSSelector.cpp:
(WebCore::CSSSelector::specificityForOneSelector):
Give pseudo-elements the right specificity.

* Modules/mediacontrols/mediaControlsApple.css:
(video::-webkit-media-controls-volume-slider):
(audio::-webkit-media-controls-volume-slider::-webkit-slider-thumb):
(audio::-webkit-media-controls-volume-slider::-webkit-slider-thumb:active::-webkit-slider-thumb):
(audio::-webkit-media-controls-timeline):
(audio::-webkit-media-controls-timeline::-webkit-slider-thumb):
(audio::-webkit-media-controls-timeline:active::-webkit-slider-thumb,):
(video:-webkit-full-screen::-webkit-media-controls-volume-slider):
(video:-webkit-full-screen::-webkit-media-controls-volume-slider::-webkit-slider-thumb):
* Modules/mediacontrols/mediaControlsBase.css:
(video::-webkit-media-controls-volume-slider):
(audio::-webkit-media-controls-volume-slider::-webkit-slider-thumb):
(audio::-webkit-media-controls-volume-slider::-webkit-slider-thumb:active::-webkit-slider-thumb):
(audio::-webkit-media-controls-timeline):
(audio::-webkit-media-controls-timeline::-webkit-slider-thumb):
(audio::-webkit-media-controls-timeline:active::-webkit-slider-thumb,):
(video:-webkit-full-screen::-webkit-media-controls-volume-slider):
(video:-webkit-full-screen::-webkit-media-controls-volume-slider::-webkit-slider-thumb):
* css/mediaControls.css:
(audio::-webkit-media-controls-volume-slider, video::-webkit-media-controls-volume-slider):
(audio::-webkit-media-controls-volume-slider-mute-button, video::-webkit-media-controls-volume-slider-mute-button):
* css/mediaControlsGtk.css:
(audio::-webkit-media-controls-timeline, video::-webkit-media-controls-timeline):
(audio::-webkit-media-controls-timeline[disabled], video::-webkit-media-controls-timeline[disabled]):
(audio::-webkit-media-controls-volume-slider, video::-webkit-media-controls-volume-slider):
The media controls were relying on the bug to override the style of input[type=range].

Ideally we should either:
-Implement some kind of high level style isolation (e.g. CSS Scoping).
-Fix the media control tree to use regular CSS scoped by a shadow pseudo ID.

Until we have one of those, I just fixed the styling by forcing the properties with lower
specificity with !important. 

LayoutTests:

* fast/css/pseudo-element-specificity-expected.html: Added.
* fast/css/pseudo-element-specificity.html: Added.
Given that all selector affecting the pseudo element were offset by one,
it is impossible to use a pseudo element directly to affect the order, making the bug
hard to test.

What I did here for testing is use the stauration at 255 of any specificity field.
With 255 class + 1 pseudo element, the old code would saturate at (0, 255, 0), while
the fixed code would correctly give (0, 255, 1). By comparing that to a non-saturated
selector, I can show the fix is correct.

* inspector/css/selector-specificity-expected.txt:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@175715 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[filters2] Support for backdrop-filter
https://bugs.webkit.org/show_bug.cgi?id=138384
<rdar://problem/18874494>

Reviewed by Simon Fraser.

Take 2!! Previous patch was rolled out.

Source/WebCore:

Add prototype support for backdrop-filter
http://dev.w3.org/fxtf/filters-2/#BackdropFilterProperty

This adds support for parsing the new CSS property, adding
the value to RenderStyle, noticing that on the layer tree,
and the platform code in GraphicsLayer to render a backdrop
and apply an effect to the result.

Some things are missing:
- animation of the backdrop-filter is not yet supported
- backdrops will not work in cloned layers yet (e.g. reflections)

Tests: css3/filters/backdrop/backdropfilter-property-computed-style.html
       css3/filters/backdrop/backdropfilter-property-parsing-invalid.html
       css3/filters/backdrop/backdropfilter-property-parsing.html
       css3/filters/backdrop/backdropfilter-property.html
       css3/filters/backdrop/effect-hw.html

* WebCore.exp.in: Export the setBackdropFilters method so it can
be used from WebKit.

* css/CSSComputedStyleDeclaration.cpp: New property name.
(WebCore::isLayoutDependent):
(WebCore::ComputedStyleExtractor::propertyValue): Use the existing valueForFilter method.

* css/CSSParser.cpp:
(WebCore::CSSParser::parseValue): Piggyback on the filter parser.

* css/CSSPropertyNames.in: Add -webkit-backdrop-filter.

* css/StyleResolver.cpp:
(WebCore::StyleResolver::adjustRenderStyle): Add test for backdrop.
(WebCore::StyleResolver::applyProperty): Support new property.

* platform/graphics/GraphicsLayer.h:
(WebCore::GraphicsLayer::needsBackdrop): New method to test for existence of values.
(WebCore::GraphicsLayer::backdropFilters): Keeps the list of filters.
(WebCore::GraphicsLayer::setBackdropFilters):
(WebCore::GraphicsLayer::clearBackdropFilters):

* platform/graphics/ca/GraphicsLayerCA.cpp: This adds a new m_backdropLayer CALayer
that will sit behind the contents layer and provide the element's backdrop.
(WebCore::GraphicsLayerCA::willBeDestroyed):
(WebCore::GraphicsLayerCA::moveOrCopyAnimations):
(WebCore::GraphicsLayerCA::setBackdropFilters): Set a custom appearance so
remote layer hosts will notice the special layer. Also set the actual
layer properties.
(WebCore::GraphicsLayerCA::addAnimation): Remove whitespace.
(WebCore::GraphicsLayerCA::commitLayerChangesBeforeSublayers): Update backdrop if necessary.
(WebCore::GraphicsLayerCA::updateLayerNames): Give the new layer a name.
(WebCore::GraphicsLayerCA::updateSublayerList):
(WebCore::GraphicsLayerCA::updateGeometry): Make the backdrop layer match the contents
layer geometry.
(WebCore::GraphicsLayerCA::updateBackdropFilters): Create the backdrop layer if necessary,
and copy the filter values to any clones.
(WebCore::GraphicsLayerCA::ensureStructuralLayer): We need a structural layer if we
have backdrop filters.
(WebCore::GraphicsLayerCA::structuralLayerPurpose):
(WebCore::GraphicsLayerCA::createAnimationFromKeyframes):
(WebCore::GraphicsLayerCA::swapFromOrToTiledLayer):
* platform/graphics/ca/GraphicsLayerCA.h: New StructuralLayerPurpose, new LayerChangeFlag.

* platform/graphics/ca/PlatformCALayer.h: New LayerType.

* platform/graphics/ca/mac/PlatformCALayerMac.mm: Define CABackdropLayer.
(PlatformCALayerMac::PlatformCALayerMac): Create the correct CALayer type.

* rendering/RenderElement.h:
(WebCore::RenderElement::createsGroup):
(WebCore::RenderElement::hasBackdropFilter): This method is always around, but
only can return true when FILTERS_LEVEL_2 is enabled.

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::paintsWithFilters): Remove an unnecessary comment.
(WebCore::RenderLayer::calculateClipRects):

* rendering/RenderLayer.h: Add hasBackdropFilter.

* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::RenderLayerBacking):
(WebCore::RenderLayerBacking::createPrimaryGraphicsLayer): Update the backdrop filters.
(WebCore::RenderLayerBacking::updateBackdropFilters): Set the filters on the GraphicsLayer.
(WebCore::RenderLayerBacking::updateGeometry):
* rendering/RenderLayerBacking.h:

* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::requiresOwnBackingStore): Needs backingstore if it has a backdrop filter.
(WebCore::RenderLayerCompositor::reasonsForCompositing):
(WebCore::RenderLayerCompositor::requiresCompositingForFilters): Return early if we have
a backdrop filter, because currently we absolutely require compositing.

* rendering/RenderLayerModelObject.cpp:
(WebCore::RenderLayerModelObject::styleWillChange): Add hasBackdropFilter().

* rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::changeRequiresLayout): Check backdrops for change.

* rendering/style/RenderStyle.h: Add the backdropFilter style stuff.
* rendering/style/StyleRareNonInheritedData.cpp:
(WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
(WebCore::StyleRareNonInheritedData::operator==):
(WebCore::StyleRareNonInheritedData::hasBackdropFilters):
* rendering/style/StyleRareNonInheritedData.h:

Source/WebKit2:

* Shared/mac/RemoteLayerBackingStore.mm:
(WebKit::RemoteLayerBackingStore::drawInContext): Handle LayerTypeBackdropLayer in the switch.
* Shared/mac/RemoteLayerTreeTransaction.mm:
(WebKit::RemoteLayerTreeTransaction::description): Describe a backdrop layer.
* UIProcess/ios/RemoteLayerTreeHostIOS.mm:
(+[WKBackdropView layerClass]): Define CABackdropLayer and use it as the class.
(WebKit::RemoteLayerTreeHost::createLayer):
* UIProcess/mac/RemoteLayerTreeHost.mm: Ditto.
(WebKit::RemoteLayerTreeHost::createLayer):

LayoutTests:

Tests for backdrop-filter. These are skipped on non-Apple platforms.

* platform/win/TestExpections: Skip these tests.
* platform/efl/TestExpections:
* platform/gtk/TestExpections:
* platform/mac-mavericks/TestExpectations: Yosemite only.

* css3/filters/backdrop/backdropfilter-property-computed-style-expected.txt: Added.
* css3/filters/backdrop/backdropfilter-property-computed-style.html: Added.
* css3/filters/backdrop/backdropfilter-property-expected.txt: Added.
* css3/filters/backdrop/backdropfilter-property-parsing-expected.txt: Added.
* css3/filters/backdrop/backdropfilter-property-parsing-invalid-expected.txt: Added.
* css3/filters/backdrop/backdropfilter-property-parsing-invalid.html: Added.
* css3/filters/backdrop/backdropfilter-property-parsing.html: Added.
* css3/filters/backdrop/backdropfilter-property.html: Added.
* css3/filters/backdrop/effect-hw-expected.html: Added.
* css3/filters/backdrop/effect-hw.html: Added.
* css3/filters/backdrop/script-tests/backdropfilter-property-computed-style.js: Added.
(testComputedFilterRule):
* css3/filters/backdrop/script-tests/backdropfilter-property-parsing-invalid.js: Added.
(testInvalidFilterRule):
* css3/filters/backdrop/script-tests/backdropfilter-property-parsing.js: Added.
(jsWrapperClass):
(shouldBeType):
(testFilterRule):
* css3/filters/backdrop/script-tests/backdropfilter-property.js: Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@175716 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Remove code that prepends a leading 'r' to the first argument of _run_git_svn_find_rev
https://bugs.webkit.org/show_bug.cgi?id=138475

Reviewed by Ryosuke Niwa.

The change in https://trac.webkit.org/175603 introduced broke compatibility with svn_revision_from_git_commit.
This patch reverts the part of that change that broke compatibility. In addition, this patch adds a comment to
explain that SVN revisions require a leading 'r', moves an existing comment to a more appropriate location and
renames the positional argument to better reflect that it can represent either an SVN revision or a Git tree-ish.

* Scripts/webkitpy/common/checkout/scm/git.py:
(Git._run_git_svn_find_rev):
Add comment mentioning that svn_revisions need to begin with 'r'.
Move comment (explaining that git svn find-rev exits with code 0 when no match is found) to a more appropriate location.
Rename the argument 'revision' to 'revision_or_treeish' to reflect the dual form that argument can take.
Remove code that coerced the revision/treeish into a string and prepended an 'r'.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@175717 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Don't send identifierForInitialRequest callback method for request with DoNotSendCallbacks option.
https://bugs.webkit.org/show_bug.cgi?id=138473

The iOS specific code that sets up a valid m_identifier is not needed any more, since this
will be done later in ResourceLoader::willSendRequest. This also matches the behavior that
we don't call assignIdentifierToInitialRequest callback method if the reqeust has
DoNotSendCallbacks option.

Patch by Yongjun Zhang <yongjun_zhang@apple.com> on 2014-11-06
Reviewed by Pratik Solanki.

* loader/ResourceLoader.cpp:
(WebCore::ResourceLoader::willSendRequest): Remove iOS specific block for setting up a valid
    m_identifier. In iOS, also make sure we still bail out if the resource loader was stopped
    in assignIdentifierToInitialRequest callback by a client.

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