[UI-side compositing] Fix copying animations between layers, and pausing them
https://bugs.webkit.org/show_bug.cgi?id=132943
<rdar://problem/16906369&16906541>

Reviewed by Tim Horton.

Source/WebCore:

Pass the animation key back to animationStarted(), though this isn't used
when animations are running in-process.

* platform/graphics/ca/PlatformCALayer.h:
* platform/graphics/ca/mac/PlatformCALayerMac.h:
* platform/graphics/ca/mac/PlatformCALayerMac.mm:
(-[WebAnimationDelegate animationDidStart:]):
(PlatformCALayerMac::animationStarted):
* platform/graphics/ca/win/PlatformCALayerWin.cpp:
(PlatformCALayerWin::animationStarted):
* platform/graphics/ca/win/PlatformCALayerWin.h:

Source/WebKit2:

Fix PlatformCAAnimationRemote to support animation copying, and to record
the beginTime for implicitly started animations. This fixes animation pausing,
and copying of animations between layers when they go between tiled and non-tiled.

This requires sending the animation key back through animationDidStart() so that
we can record this beginTime on the PlatformCAAnimationRemote in the web process.
This path doesn't set the "hasExplicitBeginTime" flag.

PlatformCAAnimationRemote also now stores a hash of active animations, so that
it can implement animationForKey(), and record the beginTime.

* UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.h:
* UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm:
(WebKit::RemoteLayerTreeDrawingAreaProxy::acceleratedAnimationDidStart):
* UIProcess/mac/RemoteLayerTreeHost.h:
* UIProcess/mac/RemoteLayerTreeHost.mm:
(WebKit::RemoteLayerTreeHost::animationDidStart): Grovel for the key for this
animation; sadly CA doesn't give us an easier way.
* WebProcess/WebPage/DrawingArea.h:
(WebKit::DrawingArea::acceleratedAnimationDidStart):
* WebProcess/WebPage/DrawingArea.messages.in:
* WebProcess/WebPage/mac/PlatformCAAnimationRemote.h:
* WebProcess/WebPage/mac/PlatformCAAnimationRemote.mm:
(-[WKAnimationDelegate animationDidStart:]):
(WebKit::PlatformCAAnimationRemote::copy):
(WebKit::PlatformCAAnimationRemote::copyTimingFunctionFrom):
(WebKit::PlatformCAAnimationRemote::copyFromValueFrom):
(WebKit::PlatformCAAnimationRemote::copyToValueFrom):
(WebKit::PlatformCAAnimationRemote::copyValuesFrom):
(WebKit::PlatformCAAnimationRemote::copyKeyTimesFrom):
(WebKit::PlatformCAAnimationRemote::copyTimingFunctionsFrom):
(WebKit::addAnimationToLayer):
* WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
(WebKit::PlatformCALayerRemote::addAnimationForKey):
(WebKit::PlatformCALayerRemote::removeAnimationForKey):
(WebKit::PlatformCALayerRemote::animationForKey):
(WebKit::PlatformCALayerRemote::animationStarted):
* WebProcess/WebPage/mac/PlatformCALayerRemote.h:
* WebProcess/WebPage/mac/RemoteLayerTreeContext.h:
* WebProcess/WebPage/mac/RemoteLayerTreeContext.mm:
(WebKit::RemoteLayerTreeContext::animationDidStart):
* WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h:
* WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
(WebKit::RemoteLayerTreeDrawingArea::acceleratedAnimationDidStart):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@168901 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Move subframe name getter lookup later in JSDOMWindow::getOwnPropertySlot
https://bugs.webkit.org/show_bug.cgi?id=132922

Reviewed by Geoffrey Garen.

Source/WebCore:
No new tests.

In JSDOMWindow::getOwnPropertySlot, we currently look for the property on the JSDOMWindow,
then we search the window's subframes for name getters, then we look in the window's prototype
chain. Apparently we were doing the lookup in this order to be compatible with Mozilla, but
Mozilla no longer implements this behavior. Instead, they do the lookup on the prototype before
looking for subframe name getters. We should change this to match Mozilla. This has the convenient
side effect of allowing us to cache lookups in the window's prototype chain.

* bindings/js/JSDOMWindowCustom.cpp:
(WebCore::JSDOMWindow::getOwnPropertySlot):

LayoutTests:
In JSDOMWindow::getOwnPropertySlot, we currently look for the property on the JSDOMWindow,
then we search the window's subframes for name getters, then we look in the window's prototype
chain. Apparently we were doing the lookup in this order to be compatible with Mozilla, but
Mozilla no longer implements this behavior. Instead, they do the lookup on the prototype before
looking for subframe name getters. We should change this to match Mozilla. This has the convenient
side effect of allowing us to cache lookups in the window's prototype chain.

* fast/dom/Window/window-function-frame-getter-precedence-expected.txt: Rebaseline to account
for change in behavior.
* fast/dom/Window/window-function-frame-getter-precedence.html:
* http/tests/security/document-all-expected.txt: Rebaseline due to the presenece of a security check
that was previously not done with the old behavior.
* http/tests/security/window-named-proto-expected.txt: Ditto.
* http/tests/security/window-named-valueOf-expected.txt: Ditto.
* http/tests/security/xss-DENIED-window-name-alert.html: Changed test so it actually tests named getters.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@168902 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Add pointer lock to features without enabling it.
https://bugs.webkit.org/show_bug.cgi?id=132961

Patch by Alex Christensen <achristensen@webkit.org> on 2014-05-15
Reviewed by Sam Weinig.

* Configurations/FeatureDefines.xcconfig:
Added ENABLE_POINTER_LOCK to list of features.

Source/WebCore:
* WebCore.exp.in:
Added linker symbols which differ with pointer lock enabled.
* WebCore.xcodeproj/project.pbxproj:
Added PointerLockController.cpp to build.

Source/WebKit/mac:
* WebView/WebPDFView.mm:
(-[WebPDFView PDFViewWillClickOnLink:withURL:]):
Added extra parameters needed when pointer lock is enabled.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@168903 268f45cc-cd09-0410-ab3c-d52691b4dbfc
WebKit2 View Gestures (Zoom): Document size changes during zoom gesture cause erratic scrolling
https://bugs.webkit.org/show_bug.cgi?id=132944
<rdar://problem/15769454>

Reviewed by Simon Fraser.

* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
(WebKit::TiledCoreAnimationDrawingArea::flushLayers):
If a layer flush occurs and we have an active transient zoom,
re-apply the transient zoom to the relevant platform layers, because
WebCore might have overwritten the relevant layer properties.

(WebKit::TiledCoreAnimationDrawingArea::applyTransientZoomToPage):
Reset m_transientZoomScale before flushLayers() so that we don't
re-apply the transient zoom when we're actually trying to commit it.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@168904 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Unreviewed, rolling out r168899.
https://bugs.webkit.org/show_bug.cgi?id=132965

Broke some compositing regions tests on Mavericks (Requested
by mihnea___ on #webkit).

Reverted changeset:

"[CSS Regions] Reduce the RenderRegion invasiveness in
rendering code"
https://bugs.webkit.org/show_bug.cgi?id=132121
http://trac.webkit.org/changeset/168899

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@168905 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Fix a logging typo in copy-webkitlibraries-to-product-directory

Reviewed by Dean Jackson.

* Scripts/copy-webkitlibraries-to-product-directory:


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