<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[164890] trunk/Source/WebKit2</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/164890">164890</a></dd>
<dt>Author</dt> <dd>simon.fraser@apple.com</dd>
<dt>Date</dt> <dd>2014-02-28 15:36:02 -0800 (Fri, 28 Feb 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Make UIViews for compositing layers in the UI process on iOS
https://bugs.webkit.org/show_bug.cgi?id=129508

Reviewed by Sam Weinig.

In order to parent UIScrollViews for -webkit-overflow-scrolling:touch,
we need to use UIViews in the compositing layer hierarchy on iOS.

Make much of the code that currently uses CALayers layer-or-view
agnostic by using a typedef LayerOrView.

Fix RemoteLayerTreePropertyApplier to apply properties to UIViews
or CALayers; on iOS, we need both paths because we have to set properties
on CALayer for remotely hosted content.

Add iOS-specific implementation files for RemoteLayerTreeHost and RemoteScrollingCoordinatorProxy,
since these need to see the UIView implementation. WebVideoFullscreenManagerProxy.cpp also needs
to be come a .mm file.

* Shared/mac/RemoteLayerTreePropertyApplier.h:
* Shared/mac/RemoteLayerTreePropertyApplier.mm:
(-[UIView setSubviews:]):
(WebKit::applyPropertiesToLayer):
(WebKit::RemoteLayerTreePropertyApplier::applyProperties):
* UIProcess/Cocoa/LayerRepresentation.h: Copied from Source/WebKit2/Shared/mac/RemoteLayerTreePropertyApplier.h.
(asLayer):
* UIProcess/PageClient.h:
* UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.cpp:
* UIProcess/WebPageProxy.h:
* UIProcess/ios/LayerRepresentation.mm: Copied from Source/WebKit2/Shared/mac/RemoteLayerTreePropertyApplier.h.
(asLayer):
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::setAcceleratedCompositingRootLayer):
(WebKit::PageClientImpl::acceleratedCompositingRootLayer):
* UIProcess/ios/RemoteLayerTreeHostIOS.mm: Added.
(+[WKTransformView layerClass]):
(-[WKRemoteView initWithFrame:contextID:]):
(+[WKRemoteView layerClass]):
(WebKit::RemoteLayerTreeHost::createLayer):
* UIProcess/ios/RemoteScrollingCoordinatorProxyIOS.mm: Added.
(WebKit::layerRepresentationFromLayerOrView):
(WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers):
* UIProcess/ios/WKContentView.h:
* UIProcess/ios/WKContentView.mm:
(-[WKContentView _setAcceleratedCompositingRootView:]):
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::setAcceleratedCompositingRootLayer):
* UIProcess/ios/WebVideoFullscreenManagerProxy.mm: Renamed from Source/WebKit2/UIProcess/ios/WebVideoFullscreenManagerProxy.cpp.
(WebKit::WebVideoFullscreenManagerProxy::create):
(WebKit::WebVideoFullscreenManagerProxy::WebVideoFullscreenManagerProxy):
(WebKit::WebVideoFullscreenManagerProxy::~WebVideoFullscreenManagerProxy):
(WebKit::WebVideoFullscreenManagerProxy::didCommitLayerTree):
(WebKit::WebVideoFullscreenManagerProxy::setVideoLayerID):
(WebKit::WebVideoFullscreenManagerProxy::enterFullscreen):
(WebKit::WebVideoFullscreenManagerProxy::requestExitFullScreen):
(WebKit::WebVideoFullscreenManagerProxy::play):
(WebKit::WebVideoFullscreenManagerProxy::pause):
(WebKit::WebVideoFullscreenManagerProxy::togglePlayState):
(WebKit::WebVideoFullscreenManagerProxy::seekToTime):
(WebKit::WebVideoFullscreenManagerProxy::didExitFullscreen):
* UIProcess/mac/PageClientImpl.h:
* UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm:
(WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):
(WebKit::RemoteLayerTreeDrawingAreaProxy::updateDebugIndicator):
* UIProcess/mac/RemoteLayerTreeHost.h:
(WebKit::RemoteLayerTreeHost::rootLayer):
* UIProcess/mac/RemoteLayerTreeHost.mm:
(WebKit::RemoteLayerTreeHost::updateLayerTree):
(WebKit::RemoteLayerTreeHost::getLayer):
(WebKit::RemoteLayerTreeHost::createLayer):
* UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::setAcceleratedCompositingRootLayer):
(WebKit::WebPageProxy::acceleratedCompositingRootLayer):
* WebKit2.xcodeproj/project.pbxproj:
* WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
(PlatformCALayerRemote::recursiveBuildTransaction):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2SharedmacRemoteLayerTreePropertyApplierh">trunk/Source/WebKit2/Shared/mac/RemoteLayerTreePropertyApplier.h</a></li>
<li><a href="#trunkSourceWebKit2SharedmacRemoteLayerTreePropertyAppliermm">trunk/Source/WebKit2/Shared/mac/RemoteLayerTreePropertyApplier.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessPageClienth">trunk/Source/WebKit2/UIProcess/PageClient.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessScrollingRemoteScrollingCoordinatorProxycpp">trunk/Source/WebKit2/UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxyh">trunk/Source/WebKit2/UIProcess/WebPageProxy.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessiosPageClientImplIOSh">trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessiosPageClientImplIOSmm">trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessiosWKContentViewh">trunk/Source/WebKit2/UIProcess/ios/WKContentView.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessiosWKContentViewmm">trunk/Source/WebKit2/UIProcess/ios/WKContentView.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessiosWebPageProxyIOSmm">trunk/Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessmacPageClientImplh">trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessmacRemoteLayerTreeDrawingAreaProxymm">trunk/Source/WebKit2/UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessmacRemoteLayerTreeHosth">trunk/Source/WebKit2/UIProcess/mac/RemoteLayerTreeHost.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessmacRemoteLayerTreeHostmm">trunk/Source/WebKit2/UIProcess/mac/RemoteLayerTreeHost.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessmacWebPageProxyMacmm">trunk/Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm</a></li>
<li><a href="#trunkSourceWebKit2WebKit2xcodeprojprojectpbxproj">trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPagemacPlatformCALayerRemotecpp">trunk/Source/WebKit2/WebProcess/WebPage/mac/PlatformCALayerRemote.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2UIProcessCocoaLayerRepresentationh">trunk/Source/WebKit2/UIProcess/Cocoa/LayerRepresentation.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessiosLayerRepresentationmm">trunk/Source/WebKit2/UIProcess/ios/LayerRepresentation.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessiosRemoteLayerTreeHostIOSmm">trunk/Source/WebKit2/UIProcess/ios/RemoteLayerTreeHostIOS.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessiosRemoteScrollingCoordinatorProxyIOSmm">trunk/Source/WebKit2/UIProcess/ios/RemoteScrollingCoordinatorProxyIOS.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessiosWebVideoFullscreenManagerProxymm">trunk/Source/WebKit2/UIProcess/ios/WebVideoFullscreenManagerProxy.mm</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2UIProcessiosWebVideoFullscreenManagerProxycpp">trunk/Source/WebKit2/UIProcess/ios/WebVideoFullscreenManagerProxy.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (164889 => 164890)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2014-02-28 23:11:22 UTC (rev 164889)
+++ trunk/Source/WebKit2/ChangeLog        2014-02-28 23:36:02 UTC (rev 164890)
</span><span class="lines">@@ -1,3 +1,83 @@
</span><ins>+2014-02-28  Simon Fraser  &lt;simon.fraser@apple.com&gt;
+
+        Make UIViews for compositing layers in the UI process on iOS
+        https://bugs.webkit.org/show_bug.cgi?id=129508
+
+        Reviewed by Sam Weinig.
+        
+        In order to parent UIScrollViews for -webkit-overflow-scrolling:touch,
+        we need to use UIViews in the compositing layer hierarchy on iOS.
+        
+        Make much of the code that currently uses CALayers layer-or-view
+        agnostic by using a typedef LayerOrView.
+        
+        Fix RemoteLayerTreePropertyApplier to apply properties to UIViews
+        or CALayers; on iOS, we need both paths because we have to set properties
+        on CALayer for remotely hosted content.
+        
+        Add iOS-specific implementation files for RemoteLayerTreeHost and RemoteScrollingCoordinatorProxy,
+        since these need to see the UIView implementation. WebVideoFullscreenManagerProxy.cpp also needs
+        to be come a .mm file.
+
+        * Shared/mac/RemoteLayerTreePropertyApplier.h:
+        * Shared/mac/RemoteLayerTreePropertyApplier.mm:
+        (-[UIView setSubviews:]):
+        (WebKit::applyPropertiesToLayer):
+        (WebKit::RemoteLayerTreePropertyApplier::applyProperties):
+        * UIProcess/Cocoa/LayerRepresentation.h: Copied from Source/WebKit2/Shared/mac/RemoteLayerTreePropertyApplier.h.
+        (asLayer):
+        * UIProcess/PageClient.h:
+        * UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.cpp:
+        * UIProcess/WebPageProxy.h:
+        * UIProcess/ios/LayerRepresentation.mm: Copied from Source/WebKit2/Shared/mac/RemoteLayerTreePropertyApplier.h.
+        (asLayer):
+        * UIProcess/ios/PageClientImplIOS.h:
+        * UIProcess/ios/PageClientImplIOS.mm:
+        (WebKit::PageClientImpl::setAcceleratedCompositingRootLayer):
+        (WebKit::PageClientImpl::acceleratedCompositingRootLayer):
+        * UIProcess/ios/RemoteLayerTreeHostIOS.mm: Added.
+        (+[WKTransformView layerClass]):
+        (-[WKRemoteView initWithFrame:contextID:]):
+        (+[WKRemoteView layerClass]):
+        (WebKit::RemoteLayerTreeHost::createLayer):
+        * UIProcess/ios/RemoteScrollingCoordinatorProxyIOS.mm: Added.
+        (WebKit::layerRepresentationFromLayerOrView):
+        (WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers):
+        * UIProcess/ios/WKContentView.h:
+        * UIProcess/ios/WKContentView.mm:
+        (-[WKContentView _setAcceleratedCompositingRootView:]):
+        * UIProcess/ios/WebPageProxyIOS.mm:
+        (WebKit::WebPageProxy::setAcceleratedCompositingRootLayer):
+        * UIProcess/ios/WebVideoFullscreenManagerProxy.mm: Renamed from Source/WebKit2/UIProcess/ios/WebVideoFullscreenManagerProxy.cpp.
+        (WebKit::WebVideoFullscreenManagerProxy::create):
+        (WebKit::WebVideoFullscreenManagerProxy::WebVideoFullscreenManagerProxy):
+        (WebKit::WebVideoFullscreenManagerProxy::~WebVideoFullscreenManagerProxy):
+        (WebKit::WebVideoFullscreenManagerProxy::didCommitLayerTree):
+        (WebKit::WebVideoFullscreenManagerProxy::setVideoLayerID):
+        (WebKit::WebVideoFullscreenManagerProxy::enterFullscreen):
+        (WebKit::WebVideoFullscreenManagerProxy::requestExitFullScreen):
+        (WebKit::WebVideoFullscreenManagerProxy::play):
+        (WebKit::WebVideoFullscreenManagerProxy::pause):
+        (WebKit::WebVideoFullscreenManagerProxy::togglePlayState):
+        (WebKit::WebVideoFullscreenManagerProxy::seekToTime):
+        (WebKit::WebVideoFullscreenManagerProxy::didExitFullscreen):
+        * UIProcess/mac/PageClientImpl.h:
+        * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm:
+        (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):
+        (WebKit::RemoteLayerTreeDrawingAreaProxy::updateDebugIndicator):
+        * UIProcess/mac/RemoteLayerTreeHost.h:
+        (WebKit::RemoteLayerTreeHost::rootLayer):
+        * UIProcess/mac/RemoteLayerTreeHost.mm:
+        (WebKit::RemoteLayerTreeHost::updateLayerTree):
+        (WebKit::RemoteLayerTreeHost::getLayer):
+        (WebKit::RemoteLayerTreeHost::createLayer):
+        * UIProcess/mac/WebPageProxyMac.mm:
+        (WebKit::WebPageProxy::setAcceleratedCompositingRootLayer):
+        (WebKit::WebPageProxy::acceleratedCompositingRootLayer):
+        * WebKit2.xcodeproj/project.pbxproj:
+        * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
+        (PlatformCALayerRemote::recursiveBuildTransaction):
+
</ins><span class="cx"> 2014-02-28  Anders Carlsson  &lt;andersca@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         WebKit2.TerminateTwice test is failing.
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedmacRemoteLayerTreePropertyApplierh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/mac/RemoteLayerTreePropertyApplier.h (164889 => 164890)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/mac/RemoteLayerTreePropertyApplier.h        2014-02-28 23:11:22 UTC (rev 164889)
+++ trunk/Source/WebKit2/Shared/mac/RemoteLayerTreePropertyApplier.h        2014-02-28 23:36:02 UTC (rev 164890)
</span><span class="lines">@@ -26,6 +26,7 @@
</span><span class="cx"> #ifndef RemoteLayerTreePropertyApplier_h
</span><span class="cx"> #define RemoteLayerTreePropertyApplier_h
</span><span class="cx"> 
</span><ins>+#include &quot;LayerRepresentation.h&quot;
</ins><span class="cx"> #include &quot;RemoteLayerTreeTransaction.h&quot;
</span><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -33,8 +34,11 @@
</span><span class="cx"> 
</span><span class="cx"> class RemoteLayerTreePropertyApplier {
</span><span class="cx"> public:
</span><del>-    typedef HashMap&lt;WebCore::GraphicsLayer::PlatformLayerID, CALayer *&gt; RelatedLayerMap;
-    static void applyPropertiesToLayer(CALayer *, const RemoteLayerTreeTransaction::LayerProperties&amp;, const RelatedLayerMap&amp;);
</del><ins>+    typedef HashMap&lt;WebCore::GraphicsLayer::PlatformLayerID, LayerOrView *&gt; RelatedLayerMap;
+    static void applyProperties(CALayer *, const RemoteLayerTreeTransaction::LayerProperties&amp;, const RelatedLayerMap&amp;);
+#if PLATFORM(IOS)
+    static void applyProperties(UIView *, const RemoteLayerTreeTransaction::LayerProperties&amp;, const RelatedLayerMap&amp;);
+#endif
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedmacRemoteLayerTreePropertyAppliermm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/mac/RemoteLayerTreePropertyApplier.mm (164889 => 164890)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/mac/RemoteLayerTreePropertyApplier.mm        2014-02-28 23:11:22 UTC (rev 164889)
+++ trunk/Source/WebKit2/Shared/mac/RemoteLayerTreePropertyApplier.mm        2014-02-28 23:36:02 UTC (rev 164890)
</span><span class="lines">@@ -30,9 +30,31 @@
</span><span class="cx"> #import &lt;QuartzCore/CALayer.h&gt;
</span><span class="cx"> #import &lt;WebCore/PlatformCAFilters.h&gt;
</span><span class="cx"> #import &lt;WebCore/ScrollbarThemeMac.h&gt;
</span><ins>+#if PLATFORM(IOS)
+#import &lt;UIKit/UIView.h&gt;
+#endif
</ins><span class="cx"> 
</span><span class="cx"> using namespace WebCore;
</span><span class="cx"> 
</span><ins>+#if PLATFORM(IOS)
+@interface UIView (WKUIViewUtilities)
+- (void)_web_setSubviews:(NSArray *)subviews;
+@end
+
+@implementation UIView (WKUIViewUtilities)
+
+- (void)_web_setSubviews:(NSArray *)subviews
+{
+    for (UIView* subview in self.subviews)
+        [subview removeFromSuperview];
+
+    for (UIView* view in subviews)
+        [self addSubview:view];
+}
+
+@end
+#endif
+
</ins><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><span class="cx"> static RetainPtr&lt;CGColorRef&gt; cgColorFromColor(Color color)
</span><span class="lines">@@ -79,7 +101,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void RemoteLayerTreePropertyApplier::applyPropertiesToLayer(CALayer *layer, const RemoteLayerTreeTransaction::LayerProperties&amp; properties, const RelatedLayerMap&amp; relatedLayers)
</del><ins>+static void applyPropertiesToLayer(CALayer *layer, const RemoteLayerTreeTransaction::LayerProperties&amp; properties)
</ins><span class="cx"> {
</span><span class="cx">     if (properties.changedProperties &amp; RemoteLayerTreeTransaction::NameChanged)
</span><span class="cx">         layer.name = properties.name;
</span><span class="lines">@@ -100,13 +122,6 @@
</span><span class="cx">     if (properties.changedProperties &amp; RemoteLayerTreeTransaction::BackgroundColorChanged)
</span><span class="cx">         layer.backgroundColor = cgColorFromColor(properties.backgroundColor).get();
</span><span class="cx"> 
</span><del>-    if (properties.changedProperties &amp; RemoteLayerTreeTransaction::ChildrenChanged) {
-        RetainPtr&lt;NSMutableArray&gt; children = adoptNS([[NSMutableArray alloc] initWithCapacity:properties.children.size()]);
-        for (auto&amp; child : properties.children)
-            [children addObject:relatedLayers.get(child)];
-        layer.sublayers = children.get();
-    }
-
</del><span class="cx">     if (properties.changedProperties &amp; RemoteLayerTreeTransaction::BorderColorChanged)
</span><span class="cx">         layer.borderColor = cgColorFromColor(properties.borderColor).get();
</span><span class="cx"> 
</span><span class="lines">@@ -137,17 +152,6 @@
</span><span class="cx">     if (properties.changedProperties &amp; RemoteLayerTreeTransaction::OpaqueChanged)
</span><span class="cx">         layer.opaque = properties.opaque;
</span><span class="cx"> 
</span><del>-    if (properties.changedProperties &amp; RemoteLayerTreeTransaction::MaskLayerChanged) {
-        if (!properties.maskLayerID)
-            layer.mask = nullptr;
-        else {
-            CALayer *maskLayer = relatedLayers.get(properties.maskLayerID);
-            ASSERT(!maskLayer.superlayer);
-            if (!maskLayer.superlayer)
-                layer.mask = maskLayer;
-        }
-    }
-
</del><span class="cx">     if (properties.changedProperties &amp; RemoteLayerTreeTransaction::ContentsRectChanged)
</span><span class="cx">         layer.contentsRect = properties.contentsRect;
</span><span class="cx"> 
</span><span class="lines">@@ -191,4 +195,63 @@
</span><span class="cx">         updateCustomAppearance(layer, properties.customAppearance);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void RemoteLayerTreePropertyApplier::applyProperties(CALayer *layer, const RemoteLayerTreeTransaction::LayerProperties&amp; properties, const RelatedLayerMap&amp; relatedLayers)
+{
+    applyPropertiesToLayer(layer, properties);
+
+    if (properties.changedProperties &amp; RemoteLayerTreeTransaction::ChildrenChanged) {
+        RetainPtr&lt;NSMutableArray&gt; children = adoptNS([[NSMutableArray alloc] initWithCapacity:properties.children.size()]);
+        for (auto&amp; child : properties.children)
+            [children addObject:relatedLayers.get(child)];
+
+        layer.sublayers = children.get();
+    }
+
+    if (properties.changedProperties &amp; RemoteLayerTreeTransaction::MaskLayerChanged) {
+        if (!properties.maskLayerID)
+            layer.mask = nullptr;
+        else {
+#if PLATFORM(IOS)
+            UIView *maskView = relatedLayers.get(properties.maskLayerID);
+            // FIXME: need to check that the mask view is kept alive.
+            ASSERT(!maskView.layer.superlayer);
+            if (!maskView.layer.superlayer)
+                layer.mask = maskView.layer;
+#else
+            CALayer *maskLayer = relatedLayers.get(properties.maskLayerID);
+            ASSERT(!maskLayer.superlayer);
+            if (!maskLayer.superlayer)
+                layer.mask = maskLayer;
+#endif
+        }
+    }
+}
+
+#if PLATFORM(IOS)
+void RemoteLayerTreePropertyApplier::applyProperties(UIView *view, const RemoteLayerTreeTransaction::LayerProperties&amp; properties, const RelatedLayerMap&amp; relatedLayers)
+{
+    applyPropertiesToLayer(view.layer, properties);
+
+    if (properties.changedProperties &amp; RemoteLayerTreeTransaction::ChildrenChanged) {
+        RetainPtr&lt;NSMutableArray&gt; children = adoptNS([[NSMutableArray alloc] initWithCapacity:properties.children.size()]);
+        for (auto&amp; child : properties.children)
+            [children addObject:relatedLayers.get(child)];
+
+        [view _web_setSubviews:children.get()];
+    }
+
+    if (properties.changedProperties &amp; RemoteLayerTreeTransaction::MaskLayerChanged) {
+        if (!properties.maskLayerID)
+            view.layer.mask = nullptr;
+        else {
+            UIView *maskView = relatedLayers.get(properties.maskLayerID);
+            // FIXME: need to check that the mask view is kept alive.
+            ASSERT(!maskView.layer.superlayer);
+            if (!maskView.layer.superlayer)
+                maskView.layer.mask = maskView.layer;
+        }
+    }
+}
+#endif
+
</ins><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessCocoaLayerRepresentationhfromrev164889trunkSourceWebKit2SharedmacRemoteLayerTreePropertyApplierh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebKit2/UIProcess/Cocoa/LayerRepresentation.h (from rev 164889, trunk/Source/WebKit2/Shared/mac/RemoteLayerTreePropertyApplier.h) (0 => 164890)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/Cocoa/LayerRepresentation.h                                (rev 0)
+++ trunk/Source/WebKit2/UIProcess/Cocoa/LayerRepresentation.h        2014-02-28 23:36:02 UTC (rev 164890)
</span><span class="lines">@@ -0,0 +1,49 @@
</span><ins>+/*
+ * Copyright (C) 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef LayerRepresentation_h
+#define LayerRepresentation_h
+
+#if PLATFORM(IOS)
+
+OBJC_CLASS CALayer;
+OBJC_CLASS UIView;
+typedef UIView LayerOrView;
+
+CALayer *asLayer(LayerOrView *);
+
+#else
+
+OBJC_CLASS CALayer;
+typedef CALayer LayerOrView;
+
+inline CALayer *asLayer(LayerOrView *layer)
+{
+    return layer;
+}
+
+#endif
+
+#endif // LayerRepresentation_h
</ins></span></pre></div>
<a id="trunkSourceWebKit2UIProcessPageClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/PageClient.h (164889 => 164890)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/PageClient.h        2014-02-28 23:11:22 UTC (rev 164889)
+++ trunk/Source/WebKit2/UIProcess/PageClient.h        2014-02-28 23:36:02 UTC (rev 164890)
</span><span class="lines">@@ -175,8 +175,8 @@
</span><span class="cx">     virtual void resetSecureInputState() = 0;
</span><span class="cx">     virtual void notifyInputContextAboutDiscardedComposition() = 0;
</span><span class="cx">     virtual void makeFirstResponder() = 0;
</span><del>-    virtual void setAcceleratedCompositingRootLayer(CALayer *) = 0;
-    virtual CALayer *acceleratedCompositingRootLayer() const = 0;
</del><ins>+    virtual void setAcceleratedCompositingRootLayer(LayerOrView *) = 0;
+    virtual LayerOrView *acceleratedCompositingRootLayer() const = 0;
</ins><span class="cx">     virtual RetainPtr&lt;CGImageRef&gt; takeViewSnapshot() = 0;
</span><span class="cx">     virtual void wheelEventWasNotHandledByWebCore(const NativeWebWheelEvent&amp;) = 0;
</span><span class="cx">     virtual void clearCustomSwipeViews() = 0;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessScrollingRemoteScrollingCoordinatorProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.cpp (164889 => 164890)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.cpp        2014-02-28 23:11:22 UTC (rev 164889)
+++ trunk/Source/WebKit2/UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.cpp        2014-02-28 23:36:02 UTC (rev 164890)
</span><span class="lines">@@ -89,10 +89,10 @@
</span><span class="cx">     m_scrollingTree-&gt;commitNewTreeState(stateTree.release());
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if !PLATFORM(IOS)
</ins><span class="cx"> void RemoteScrollingCoordinatorProxy::connectStateNodeLayers(ScrollingStateTree&amp; stateTree, const RemoteLayerTreeHost&amp; layerTreeHost)
</span><span class="cx"> {
</span><del>-    for (auto&amp; it : stateTree.nodeMap()) {
-        ScrollingStateNode* currNode = it.value;
</del><ins>+    for (auto&amp; currNode : stateTree.nodeMap().values()) {
</ins><span class="cx">         switch (currNode-&gt;nodeType()) {
</span><span class="cx">         case ScrollingNode: {
</span><span class="cx">             ScrollingStateScrollingNode* scrollingStateNode = toScrollingStateScrollingNode(currNode);
</span><span class="lines">@@ -125,6 +125,7 @@
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> }
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx"> bool RemoteScrollingCoordinatorProxy::handleWheelEvent(const PlatformWheelEvent&amp; event)
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (164889 => 164890)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2014-02-28 23:11:22 UTC (rev 164889)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2014-02-28 23:36:02 UTC (rev 164890)
</span><span class="lines">@@ -37,6 +37,7 @@
</span><span class="cx"> #include &quot;EditorState.h&quot;
</span><span class="cx"> #include &quot;GeolocationPermissionRequestManagerProxy.h&quot;
</span><span class="cx"> #include &quot;InteractionInformationAtPosition.h&quot;
</span><ins>+#include &quot;LayerRepresentation.h&quot;
</ins><span class="cx"> #include &quot;LayerTreeContext.h&quot;
</span><span class="cx"> #include &quot;MessageSender.h&quot;
</span><span class="cx"> #include &quot;NotificationPermissionRequestManagerProxy.h&quot;
</span><span class="lines">@@ -94,10 +95,6 @@
</span><span class="cx"> #include &lt;Evas.h&gt;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-#if PLATFORM(COCOA)
-#include &lt;WebCore/PlatformLayer.h&gt;
-#endif
-
</del><span class="cx"> namespace API {
</span><span class="cx"> class LoaderClient;
</span><span class="cx"> class PolicyClient;
</span><span class="lines">@@ -527,8 +524,8 @@
</span><span class="cx">     bool shouldDelayWindowOrderingForEvent(const WebMouseEvent&amp;);
</span><span class="cx">     bool acceptsFirstMouse(int eventNumber, const WebMouseEvent&amp;);
</span><span class="cx"> 
</span><del>-    void setAcceleratedCompositingRootLayer(PlatformLayer* rootLayer);
-    PlatformLayer* acceleratedCompositingRootLayer() const;
</del><ins>+    void setAcceleratedCompositingRootLayer(LayerOrView*);
+    LayerOrView* acceleratedCompositingRootLayer() const;
</ins><span class="cx"> 
</span><span class="cx"> #if USE(APPKIT)
</span><span class="cx">     WKView* wkView() const;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessiosLayerRepresentationmmfromrev164889trunkSourceWebKit2SharedmacRemoteLayerTreePropertyApplierh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebKit2/UIProcess/ios/LayerRepresentation.mm (from rev 164889, trunk/Source/WebKit2/Shared/mac/RemoteLayerTreePropertyApplier.h) (0 => 164890)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/ios/LayerRepresentation.mm                                (rev 0)
+++ trunk/Source/WebKit2/UIProcess/ios/LayerRepresentation.mm        2014-02-28 23:36:02 UTC (rev 164890)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+/*
+ * Copyright (C) 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;config.h&quot;
+#import &quot;LayerRepresentation.h&quot;
+
+#if PLATFORM(IOS)
+#import &lt;UIKit/UIView.h&gt;
+CALayer *asLayer(LayerOrView *view)
+{
+    return view.layer;
+}
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebKit2UIProcessiosPageClientImplIOSh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.h (164889 => 164890)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.h        2014-02-28 23:11:22 UTC (rev 164889)
+++ trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.h        2014-02-28 23:36:02 UTC (rev 164890)
</span><span class="lines">@@ -94,8 +94,8 @@
</span><span class="cx">     virtual void enterAcceleratedCompositingMode(const LayerTreeContext&amp;) override;
</span><span class="cx">     virtual void exitAcceleratedCompositingMode() override;
</span><span class="cx">     virtual void updateAcceleratedCompositingMode(const LayerTreeContext&amp;) override;
</span><del>-    virtual void setAcceleratedCompositingRootLayer(CALayer *) override;
-    virtual CALayer *acceleratedCompositingRootLayer() const override;
</del><ins>+    virtual void setAcceleratedCompositingRootLayer(LayerOrView *) override;
+    virtual LayerOrView *acceleratedCompositingRootLayer() const override;
</ins><span class="cx">     virtual LayerHostingMode viewLayerHostingMode() override { return LayerHostingMode::OutOfProcess; }
</span><span class="cx"> 
</span><span class="cx">     virtual RetainPtr&lt;CGImageRef&gt; takeViewSnapshot() override;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessiosPageClientImplIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.mm (164889 => 164890)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.mm        2014-02-28 23:11:22 UTC (rev 164889)
+++ trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.mm        2014-02-28 23:36:02 UTC (rev 164890)
</span><span class="lines">@@ -313,12 +313,12 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void PageClientImpl::setAcceleratedCompositingRootLayer(CALayer *rootLayer)
</del><ins>+void PageClientImpl::setAcceleratedCompositingRootLayer(LayerOrView *rootLayer)
</ins><span class="cx"> {
</span><del>-    [m_contentView _setAcceleratedCompositingRootLayer:rootLayer];
</del><ins>+    [m_contentView _setAcceleratedCompositingRootView:rootLayer];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-CALayer *PageClientImpl::acceleratedCompositingRootLayer() const
</del><ins>+LayerOrView *PageClientImpl::acceleratedCompositingRootLayer() const
</ins><span class="cx"> {
</span><span class="cx">     notImplemented();
</span><span class="cx">     return nullptr;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessiosRemoteLayerTreeHostIOSmm"></a>
<div class="addfile"><h4>Added: trunk/Source/WebKit2/UIProcess/ios/RemoteLayerTreeHostIOS.mm (0 => 164890)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/ios/RemoteLayerTreeHostIOS.mm                                (rev 0)
+++ trunk/Source/WebKit2/UIProcess/ios/RemoteLayerTreeHostIOS.mm        2014-02-28 23:36:02 UTC (rev 164890)
</span><span class="lines">@@ -0,0 +1,116 @@
</span><ins>+/*
+ * Copyright (C) 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;config.h&quot;
+
+#if PLATFORM(IOS)
+
+#import &quot;RemoteLayerTreeHost.h&quot;
+
+#import &lt;WebCore/WebCoreCALayerExtras.h&gt;
+#import &lt;WebKitSystemInterface.h&gt;
+
+#import &lt;UIKit/UIView.h&gt;
+#import &lt;QuartzCore/QuartzCore.h&gt;
+
+using namespace WebCore;
+
+@interface UIView(WKViewInternals)
+- (void)_createLayerWithFrame:(CGRect)frame;
+@end
+
+@interface CALayer(WKLayerInternal)
+- (void)setContextId:(uint32_t)contextID;
+@end
+
+@interface WKTransformView : UIView
+@end
+
+@implementation WKTransformView
++ (Class)layerClass
+{
+    return [CATransformLayer self];
+}
+@end
+
+@interface WKRemoteView : UIView
+@end
+
+@implementation WKRemoteView
+- (instancetype)initWithFrame:(CGRect)frame contextID:(uint32_t)contextID
+{
+    if ((self = [super initWithFrame:frame])) {
+        [[self layer] setContextId:contextID];
+    }
+    
+    return self;
+}
+
++ (Class)layerClass
+{
+    return NSClassFromString(@&quot;CALayerHost&quot;);
+}
+@end
+
+namespace WebKit {
+
+LayerOrView *RemoteLayerTreeHost::createLayer(const RemoteLayerTreeTransaction::LayerCreationProperties&amp; properties)
+{
+    RetainPtr&lt;LayerOrView&gt;&amp; layerOrView = m_layers.add(properties.layerID, nullptr).iterator-&gt;value;
+
+    ASSERT(!layerOrView);
+
+    switch (properties.type) {
+    case PlatformCALayer::LayerTypeLayer:
+    case PlatformCALayer::LayerTypeWebLayer:
+    case PlatformCALayer::LayerTypeRootLayer:
+    case PlatformCALayer::LayerTypeSimpleLayer:
+    case PlatformCALayer::LayerTypeTiledBackingLayer:
+    case PlatformCALayer::LayerTypePageTiledBackingLayer:
+    case PlatformCALayer::LayerTypeTiledBackingTileLayer:
+        layerOrView = adoptNS([[UIView alloc] initWithFrame:CGRectZero]);
+        break;
+    case PlatformCALayer::LayerTypeTransformLayer:
+        layerOrView = adoptNS([[WKTransformView alloc] initWithFrame:CGRectZero]);
+        break;
+    case PlatformCALayer::LayerTypeCustom:
+        if (!m_isDebugLayerTreeHost)
+            layerOrView = adoptNS([[WKRemoteView alloc] initWithFrame:CGRectZero contextID:properties.hostingContextID]);
+        else
+            layerOrView = adoptNS([[UIView alloc] init]);
+        break;
+    default:
+        ASSERT_NOT_REACHED();
+    }
+
+    // FIXME: Do through the view.
+    [[layerOrView layer] web_disableAllActions];
+
+    return layerOrView.get();
+}
+
+} // namespace WebKit
+
+#endif // PLATFORM(IOS)
</ins></span></pre></div>
<a id="trunkSourceWebKit2UIProcessiosRemoteScrollingCoordinatorProxyIOSmm"></a>
<div class="addfile"><h4>Added: trunk/Source/WebKit2/UIProcess/ios/RemoteScrollingCoordinatorProxyIOS.mm (0 => 164890)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/ios/RemoteScrollingCoordinatorProxyIOS.mm                                (rev 0)
+++ trunk/Source/WebKit2/UIProcess/ios/RemoteScrollingCoordinatorProxyIOS.mm        2014-02-28 23:36:02 UTC (rev 164890)
</span><span class="lines">@@ -0,0 +1,86 @@
</span><ins>+/*
+ * Copyright (C) 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;RemoteScrollingCoordinatorProxy.h&quot;
+
+#if PLATFORM(IOS)
+#if ENABLE(ASYNC_SCROLLING)
+
+#include &quot;LayerRepresentation.h&quot;
+#include &quot;RemoteLayerTreeHost.h&quot;
+#include &lt;WebCore/ScrollingStateTree.h&gt;
+#include &lt;UIKit/UIView.h&gt;
+
+using namespace WebCore;
+
+namespace WebKit {
+
+static LayerRepresentation layerRepresentationFromLayerOrView(LayerOrView *layerOrView)
+{
+    return LayerRepresentation(layerOrView.layer);
+}
+
+void RemoteScrollingCoordinatorProxy::connectStateNodeLayers(ScrollingStateTree&amp; stateTree, const RemoteLayerTreeHost&amp; layerTreeHost)
+{
+    for (auto&amp; currNode : stateTree.nodeMap().values()) {
+        switch (currNode-&gt;nodeType()) {
+        case ScrollingNode: {
+            ScrollingStateScrollingNode* scrollingStateNode = toScrollingStateScrollingNode(currNode);
+            
+            if (scrollingStateNode-&gt;hasChangedProperty(ScrollingStateNode::ScrollLayer))
+                scrollingStateNode-&gt;setLayer(layerRepresentationFromLayerOrView(layerTreeHost.getLayer(scrollingStateNode-&gt;layer())));
+
+            if (scrollingStateNode-&gt;hasChangedProperty(ScrollingStateScrollingNode::ScrolledContentsLayer))
+                scrollingStateNode-&gt;setScrolledContentsLayer(layerRepresentationFromLayerOrView(layerTreeHost.getLayer(scrollingStateNode-&gt;scrolledContentsLayer())));
+
+            if (scrollingStateNode-&gt;hasChangedProperty(ScrollingStateScrollingNode::CounterScrollingLayer))
+                scrollingStateNode-&gt;setCounterScrollingLayer(layerRepresentationFromLayerOrView(layerTreeHost.getLayer(scrollingStateNode-&gt;counterScrollingLayer())));
+
+            // FIXME: we should never have header and footer layers coming from the WebProcess.
+            if (scrollingStateNode-&gt;hasChangedProperty(ScrollingStateScrollingNode::HeaderLayer))
+                scrollingStateNode-&gt;setHeaderLayer(layerRepresentationFromLayerOrView(layerTreeHost.getLayer(scrollingStateNode-&gt;headerLayer())));
+
+            if (scrollingStateNode-&gt;hasChangedProperty(ScrollingStateScrollingNode::FooterLayer))
+                scrollingStateNode-&gt;setFooterLayer(layerRepresentationFromLayerOrView(layerTreeHost.getLayer(scrollingStateNode-&gt;footerLayer())));
+            break;
+        }
+        case FixedNode:
+            if (currNode-&gt;hasChangedProperty(ScrollingStateNode::ScrollLayer))
+                currNode-&gt;setLayer(layerRepresentationFromLayerOrView(layerTreeHost.getLayer(currNode-&gt;layer())));
+            break;
+        case StickyNode:
+            if (currNode-&gt;hasChangedProperty(ScrollingStateNode::ScrollLayer))
+                currNode-&gt;setLayer(layerRepresentationFromLayerOrView(layerTreeHost.getLayer(currNode-&gt;layer())));
+            break;
+        }
+    }
+}
+
+} // namespace WebKit
+
+
+#endif // ENABLE(ASYNC_SCROLLING)
+#endif // PLATFORM(IOS)
</ins></span></pre></div>
<a id="trunkSourceWebKit2UIProcessiosWKContentViewh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/ios/WKContentView.h (164889 => 164890)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/ios/WKContentView.h        2014-02-28 23:11:22 UTC (rev 164889)
+++ trunk/Source/WebKit2/UIProcess/ios/WKContentView.h        2014-02-28 23:36:02 UTC (rev 164890)
</span><span class="lines">@@ -77,7 +77,7 @@
</span><span class="cx"> - (std::unique_ptr&lt;WebKit::DrawingAreaProxy&gt;)_createDrawingAreaProxy;
</span><span class="cx"> - (void)_processDidExit;
</span><span class="cx"> - (void)_didRelaunchProcess;
</span><del>-- (void)_setAcceleratedCompositingRootLayer:(CALayer *)rootLayer;
</del><ins>+- (void)_setAcceleratedCompositingRootView:(UIView *)rootView;
</ins><span class="cx"> 
</span><span class="cx"> - (void)_didCommitLoadForMainFrame;
</span><span class="cx"> - (void)_didCommitLayerTree:(const WebKit::RemoteLayerTreeTransaction&amp;)layerTreeTransaction;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessiosWKContentViewmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/ios/WKContentView.mm (164889 => 164890)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/ios/WKContentView.mm        2014-02-28 23:11:22 UTC (rev 164889)
+++ trunk/Source/WebKit2/UIProcess/ios/WKContentView.mm        2014-02-28 23:36:02 UTC (rev 164890)
</span><span class="lines">@@ -260,9 +260,12 @@
</span><span class="cx">         [_delegate contentView:self didCommitLayerTree:layerTreeTransaction];
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (void)_setAcceleratedCompositingRootLayer:(CALayer *)rootLayer
</del><ins>+- (void)_setAcceleratedCompositingRootView:(UIView *)rootView
</ins><span class="cx"> {
</span><del>-    [[_rootContentView layer] setSublayers:@[rootLayer]];
</del><ins>+    for (UIView* subview in [_rootContentView subviews])
+        [subview removeFromSuperview];
+
+    [_rootContentView addSubview:rootView];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)_decidePolicyForGeolocationRequestFromOrigin:(WebSecurityOrigin&amp;)origin frame:(WebFrameProxy&amp;)frame request:(GeolocationPermissionRequestProxy&amp;)permissionRequest
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessiosWebPageProxyIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm (164889 => 164890)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm        2014-02-28 23:11:22 UTC (rev 164889)
+++ trunk/Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm        2014-02-28 23:36:02 UTC (rev 164890)
</span><span class="lines">@@ -514,7 +514,7 @@
</span><span class="cx">     notImplemented();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebPageProxy::setAcceleratedCompositingRootLayer(PlatformLayer* rootLayer)
</del><ins>+void WebPageProxy::setAcceleratedCompositingRootLayer(LayerOrView* rootLayer)
</ins><span class="cx"> {
</span><span class="cx">     m_pageClient.setAcceleratedCompositingRootLayer(rootLayer);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessiosWebVideoFullscreenManagerProxycpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebKit2/UIProcess/ios/WebVideoFullscreenManagerProxy.cpp (164889 => 164890)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/ios/WebVideoFullscreenManagerProxy.cpp        2014-02-28 23:11:22 UTC (rev 164889)
+++ trunk/Source/WebKit2/UIProcess/ios/WebVideoFullscreenManagerProxy.cpp        2014-02-28 23:36:02 UTC (rev 164890)
</span><span class="lines">@@ -1,115 +0,0 @@
</span><del>-/*
- * Copyright (C) 2014 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include &quot;config.h&quot;
-#include &quot;WebVideoFullscreenManagerProxy.h&quot;
-
-#if PLATFORM(IOS)
-
-#include &quot;DrawingAreaProxy.h&quot;
-#include &quot;RemoteLayerTreeDrawingAreaProxy.h&quot;
-#include &quot;RemoteLayerTreeTransaction.h&quot;
-#include &quot;WebPageProxy.h&quot;
-#include &quot;WebProcessProxy.h&quot;
-#include &quot;WebVideoFullscreenManagerMessages.h&quot;
-#include &quot;WebVideoFullscreenManagerProxyMessages.h&quot;
-
-using namespace WebCore;
-
-namespace WebKit {
-    
-PassRefPtr&lt;WebVideoFullscreenManagerProxy&gt; WebVideoFullscreenManagerProxy::create(WebPageProxy&amp; page)
-{
-    return adoptRef(new WebVideoFullscreenManagerProxy(page));
-}
-
-WebVideoFullscreenManagerProxy::WebVideoFullscreenManagerProxy(WebPageProxy&amp; page)
-    : m_page(&amp;page)
-    , m_enterFullscreenAfterVideoLayerUnparentedTransaction(false)
-    , m_videoLayerID(0)
-{
-    m_page-&gt;process().addMessageReceiver(Messages::WebVideoFullscreenManagerProxy::messageReceiverName(), m_page-&gt;pageID(), *this);
-    setWebVideoFullscreenModel(this);
-}
-
-WebVideoFullscreenManagerProxy::~WebVideoFullscreenManagerProxy()
-{
-    m_page-&gt;process().removeMessageReceiver(Messages::WebVideoFullscreenManagerProxy::messageReceiverName(), m_page-&gt;pageID());
-}
-
-void WebVideoFullscreenManagerProxy::didCommitLayerTree(const RemoteLayerTreeTransaction&amp; layerTreeTransaction)
-{
-    if (m_enterFullscreenAfterVideoLayerUnparentedTransaction &amp;&amp; layerTreeTransaction.isVideoLayerIDPendingFullscreen(m_videoLayerID)) {
-        m_enterFullscreenAfterVideoLayerUnparentedTransaction = false;
-        WebCore::WebVideoFullscreenInterfaceAVKit::enterFullscreen();
-    }
-}
-
-void WebVideoFullscreenManagerProxy::setVideoLayerID(GraphicsLayer::PlatformLayerID videoLayerID)
-{
-    RemoteLayerTreeDrawingAreaProxy* remoteDrawingAreaProxy = toRemoteLayerTreeDrawingAreaProxy(m_page-&gt;drawingArea());
-    setVideoLayer(remoteDrawingAreaProxy-&gt;remoteLayerTreeHost().getLayer(videoLayerID));
-    m_videoLayerID = videoLayerID;
-    m_enterFullscreenAfterVideoLayerUnparentedTransaction = true;
-}
-
-void WebVideoFullscreenManagerProxy::enterFullscreen()
-{
-}
-    
-void WebVideoFullscreenManagerProxy::requestExitFullScreen()
-{
-    m_page-&gt;send(Messages::WebVideoFullscreenManager::RequestExitFullScreen(), m_page-&gt;pageID());
-}
-    
-void WebVideoFullscreenManagerProxy::play()
-{
-    m_page-&gt;send(Messages::WebVideoFullscreenManager::Play(), m_page-&gt;pageID());
-}
-    
-void WebVideoFullscreenManagerProxy::pause()
-{
-    m_page-&gt;send(Messages::WebVideoFullscreenManager::Pause(), m_page-&gt;pageID());
-}
-    
-void WebVideoFullscreenManagerProxy::togglePlayState()
-{
-    m_page-&gt;send(Messages::WebVideoFullscreenManager::TogglePlayState(), m_page-&gt;pageID());
-}
-    
-void WebVideoFullscreenManagerProxy::seekToTime(double time)
-{
-    m_page-&gt;send(Messages::WebVideoFullscreenManager::SeekToTime(time), m_page-&gt;pageID());
-}
-    
-void WebVideoFullscreenManagerProxy::didExitFullscreen()
-{
-    m_page-&gt;send(Messages::WebVideoFullscreenManager::DidExitFullscreen(), m_page-&gt;pageID());
-}
-
-    
-} // namespace WebKit
-
-#endif // PLATFORM(IOS)
</del></span></pre></div>
<a id="trunkSourceWebKit2UIProcessiosWebVideoFullscreenManagerProxymmfromrev164889trunkSourceWebKit2UIProcessiosWebVideoFullscreenManagerProxycpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebKit2/UIProcess/ios/WebVideoFullscreenManagerProxy.mm (from rev 164889, trunk/Source/WebKit2/UIProcess/ios/WebVideoFullscreenManagerProxy.cpp) (0 => 164890)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/ios/WebVideoFullscreenManagerProxy.mm                                (rev 0)
+++ trunk/Source/WebKit2/UIProcess/ios/WebVideoFullscreenManagerProxy.mm        2014-02-28 23:36:02 UTC (rev 164890)
</span><span class="lines">@@ -0,0 +1,118 @@
</span><ins>+/*
+ * Copyright (C) 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;WebVideoFullscreenManagerProxy.h&quot;
+
+#if PLATFORM(IOS)
+
+#include &quot;DrawingAreaProxy.h&quot;
+#include &quot;RemoteLayerTreeDrawingAreaProxy.h&quot;
+#include &quot;RemoteLayerTreeTransaction.h&quot;
+#include &quot;WebPageProxy.h&quot;
+#include &quot;WebProcessProxy.h&quot;
+#include &quot;WebVideoFullscreenManagerMessages.h&quot;
+#include &quot;WebVideoFullscreenManagerProxyMessages.h&quot;
+#include &lt;UIKit/UIView.h&gt;
+
+using namespace WebCore;
+
+namespace WebKit {
+    
+PassRefPtr&lt;WebVideoFullscreenManagerProxy&gt; WebVideoFullscreenManagerProxy::create(WebPageProxy&amp; page)
+{
+    return adoptRef(new WebVideoFullscreenManagerProxy(page));
+}
+
+WebVideoFullscreenManagerProxy::WebVideoFullscreenManagerProxy(WebPageProxy&amp; page)
+    : m_page(&amp;page)
+    , m_enterFullscreenAfterVideoLayerUnparentedTransaction(false)
+    , m_videoLayerID(0)
+{
+    m_page-&gt;process().addMessageReceiver(Messages::WebVideoFullscreenManagerProxy::messageReceiverName(), m_page-&gt;pageID(), *this);
+    setWebVideoFullscreenModel(this);
+}
+
+WebVideoFullscreenManagerProxy::~WebVideoFullscreenManagerProxy()
+{
+    m_page-&gt;process().removeMessageReceiver(Messages::WebVideoFullscreenManagerProxy::messageReceiverName(), m_page-&gt;pageID());
+}
+
+void WebVideoFullscreenManagerProxy::didCommitLayerTree(const RemoteLayerTreeTransaction&amp; layerTreeTransaction)
+{
+    if (m_enterFullscreenAfterVideoLayerUnparentedTransaction &amp;&amp; layerTreeTransaction.isVideoLayerIDPendingFullscreen(m_videoLayerID)) {
+        m_enterFullscreenAfterVideoLayerUnparentedTransaction = false;
+        WebCore::WebVideoFullscreenInterfaceAVKit::enterFullscreen();
+    }
+}
+
+void WebVideoFullscreenManagerProxy::setVideoLayerID(GraphicsLayer::PlatformLayerID videoLayerID)
+{
+    RemoteLayerTreeDrawingAreaProxy* remoteDrawingAreaProxy = toRemoteLayerTreeDrawingAreaProxy(m_page-&gt;drawingArea());
+
+    UIView *videoView = remoteDrawingAreaProxy-&gt;remoteLayerTreeHost().getLayer(videoLayerID);
+    setVideoLayer(videoView.layer);
+    
+    m_videoLayerID = videoLayerID;
+    m_enterFullscreenAfterVideoLayerUnparentedTransaction = true;
+}
+
+void WebVideoFullscreenManagerProxy::enterFullscreen()
+{
+}
+    
+void WebVideoFullscreenManagerProxy::requestExitFullScreen()
+{
+    m_page-&gt;send(Messages::WebVideoFullscreenManager::RequestExitFullScreen(), m_page-&gt;pageID());
+}
+    
+void WebVideoFullscreenManagerProxy::play()
+{
+    m_page-&gt;send(Messages::WebVideoFullscreenManager::Play(), m_page-&gt;pageID());
+}
+    
+void WebVideoFullscreenManagerProxy::pause()
+{
+    m_page-&gt;send(Messages::WebVideoFullscreenManager::Pause(), m_page-&gt;pageID());
+}
+    
+void WebVideoFullscreenManagerProxy::togglePlayState()
+{
+    m_page-&gt;send(Messages::WebVideoFullscreenManager::TogglePlayState(), m_page-&gt;pageID());
+}
+    
+void WebVideoFullscreenManagerProxy::seekToTime(double time)
+{
+    m_page-&gt;send(Messages::WebVideoFullscreenManager::SeekToTime(time), m_page-&gt;pageID());
+}
+    
+void WebVideoFullscreenManagerProxy::didExitFullscreen()
+{
+    m_page-&gt;send(Messages::WebVideoFullscreenManager::DidExitFullscreen(), m_page-&gt;pageID());
+}
+    
+} // namespace WebKit
+
+#endif // PLATFORM(IOS)
</ins></span></pre></div>
<a id="trunkSourceWebKit2UIProcessmacPageClientImplh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.h (164889 => 164890)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.h        2014-02-28 23:11:22 UTC (rev 164889)
+++ trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.h        2014-02-28 23:36:02 UTC (rev 164890)
</span><span class="lines">@@ -71,8 +71,8 @@
</span><span class="cx">     virtual bool isVisuallyIdle();
</span><span class="cx">     virtual LayerHostingMode viewLayerHostingMode() override;
</span><span class="cx">     virtual ColorSpaceData colorSpace() override;
</span><del>-    virtual void setAcceleratedCompositingRootLayer(CALayer *) override;
-    virtual CALayer *acceleratedCompositingRootLayer() const override;
</del><ins>+    virtual void setAcceleratedCompositingRootLayer(LayerOrView *) override;
+    virtual LayerOrView *acceleratedCompositingRootLayer() const override;
</ins><span class="cx"> 
</span><span class="cx">     virtual void processDidExit();
</span><span class="cx">     virtual void pageClosed();
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessmacRemoteLayerTreeDrawingAreaProxymm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm (164889 => 164890)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm        2014-02-28 23:11:22 UTC (rev 164889)
+++ trunk/Source/WebKit2/UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm        2014-02-28 23:36:02 UTC (rev 164890)
</span><span class="lines">@@ -116,7 +116,7 @@
</span><span class="cx">         float scale = indicatorScale(layerTreeTransaction.contentsSize());
</span><span class="cx">         bool rootLayerChanged = m_debugIndicatorLayerTreeHost-&gt;updateLayerTree(layerTreeTransaction, scale);
</span><span class="cx">         updateDebugIndicator(layerTreeTransaction.contentsSize(), rootLayerChanged, scale);
</span><del>-        m_debugIndicatorLayerTreeHost-&gt;rootLayer().name = @&quot;Indicator host root&quot;;
</del><ins>+        asLayer(m_debugIndicatorLayerTreeHost-&gt;rootLayer()).name = @&quot;Indicator host root&quot;;
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -180,7 +180,7 @@
</span><span class="cx"> void RemoteLayerTreeDrawingAreaProxy::updateDebugIndicator(IntSize contentsSize, bool rootLayerChanged, float scale)
</span><span class="cx"> {
</span><span class="cx">     // Make sure we're the last sublayer.
</span><del>-    CALayer *rootLayer = m_remoteLayerTreeHost.rootLayer();
</del><ins>+    CALayer *rootLayer = asLayer(m_remoteLayerTreeHost.rootLayer());
</ins><span class="cx">     [m_tileMapHostLayer removeFromSuperlayer];
</span><span class="cx">     [rootLayer addSublayer:m_tileMapHostLayer.get()];
</span><span class="cx"> 
</span><span class="lines">@@ -193,7 +193,7 @@
</span><span class="cx"> 
</span><span class="cx">     if (rootLayerChanged) {
</span><span class="cx">         [m_tileMapHostLayer setSublayers:@[]];
</span><del>-        [m_tileMapHostLayer addSublayer:m_debugIndicatorLayerTreeHost-&gt;rootLayer()];
</del><ins>+        [m_tileMapHostLayer addSublayer:asLayer(m_debugIndicatorLayerTreeHost-&gt;rootLayer())];
</ins><span class="cx">         [m_tileMapHostLayer addSublayer:m_exposedRectIndicatorLayer.get()];
</span><span class="cx">     }
</span><span class="cx">     
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessmacRemoteLayerTreeHosth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/mac/RemoteLayerTreeHost.h (164889 => 164890)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/mac/RemoteLayerTreeHost.h        2014-02-28 23:11:22 UTC (rev 164889)
+++ trunk/Source/WebKit2/UIProcess/mac/RemoteLayerTreeHost.h        2014-02-28 23:36:02 UTC (rev 164890)
</span><span class="lines">@@ -26,13 +26,12 @@
</span><span class="cx"> #ifndef RemoteLayerTreeHost_h
</span><span class="cx"> #define RemoteLayerTreeHost_h
</span><span class="cx"> 
</span><ins>+#include &quot;LayerRepresentation.h&quot;
</ins><span class="cx"> #include &quot;RemoteLayerTreeTransaction.h&quot;
</span><span class="cx"> #include &lt;WebCore/PlatformCALayer.h&gt;
</span><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="cx"> #include &lt;wtf/RetainPtr.h&gt;
</span><span class="cx"> 
</span><del>-OBJC_CLASS CALayer;
-
</del><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><span class="cx"> class WebPageProxy;
</span><span class="lines">@@ -42,8 +41,8 @@
</span><span class="cx">     explicit RemoteLayerTreeHost();
</span><span class="cx">     virtual ~RemoteLayerTreeHost();
</span><span class="cx"> 
</span><del>-    CALayer *getLayer(WebCore::GraphicsLayer::PlatformLayerID) const;
-    CALayer *rootLayer() const { return m_rootLayer; }
</del><ins>+    LayerOrView *getLayer(WebCore::GraphicsLayer::PlatformLayerID) const;
+    LayerOrView *rootLayer() const { return m_rootLayer; }
</ins><span class="cx"> 
</span><span class="cx">     // Returns true if the root layer changed.
</span><span class="cx">     bool updateLayerTree(const RemoteLayerTreeTransaction&amp;, float indicatorScaleFactor  = 1);
</span><span class="lines">@@ -52,10 +51,10 @@
</span><span class="cx">     bool isDebugLayerTreeHost() const { return m_isDebugLayerTreeHost; }
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    CALayer *createLayer(const RemoteLayerTreeTransaction::LayerCreationProperties&amp;);
</del><ins>+    LayerOrView *createLayer(const RemoteLayerTreeTransaction::LayerCreationProperties&amp;);
</ins><span class="cx"> 
</span><del>-    CALayer *m_rootLayer;
-    HashMap&lt;WebCore::GraphicsLayer::PlatformLayerID, RetainPtr&lt;CALayer&gt;&gt; m_layers;
</del><ins>+    LayerOrView *m_rootLayer;
+    HashMap&lt;WebCore::GraphicsLayer::PlatformLayerID, RetainPtr&lt;LayerOrView&gt;&gt; m_layers;
</ins><span class="cx">     bool m_isDebugLayerTreeHost;
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessmacRemoteLayerTreeHostmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/mac/RemoteLayerTreeHost.mm (164889 => 164890)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/mac/RemoteLayerTreeHost.mm        2014-02-28 23:11:22 UTC (rev 164889)
+++ trunk/Source/WebKit2/UIProcess/mac/RemoteLayerTreeHost.mm        2014-02-28 23:36:02 UTC (rev 164890)
</span><span class="lines">@@ -60,7 +60,7 @@
</span><span class="cx">         createLayer(createdLayer);
</span><span class="cx"> 
</span><span class="cx">     bool rootLayerChanged = false;
</span><del>-    CALayer *rootLayer = getLayer(transaction.rootLayerID());
</del><ins>+    LayerOrView *rootLayer = getLayer(transaction.rootLayerID());
</ins><span class="cx">     if (m_rootLayer != rootLayer) {
</span><span class="cx">         m_rootLayer = rootLayer;
</span><span class="cx">         rootLayerChanged = true;
</span><span class="lines">@@ -70,7 +70,7 @@
</span><span class="cx">         auto layerID = changedLayer.key;
</span><span class="cx">         const RemoteLayerTreeTransaction::LayerProperties&amp; properties = *changedLayer.value;
</span><span class="cx"> 
</span><del>-        CALayer *layer = getLayer(layerID);
</del><ins>+        LayerOrView *layer = getLayer(layerID);
</ins><span class="cx">         ASSERT(layer);
</span><span class="cx"> 
</span><span class="cx">         RemoteLayerTreePropertyApplier::RelatedLayerMap relatedLayers;
</span><span class="lines">@@ -88,9 +88,9 @@
</span><span class="cx">             if (propertiesCopy.changedProperties &amp; RemoteLayerTreeTransaction::BorderWidthChanged)
</span><span class="cx">                 propertiesCopy.borderWidth *= 1 / indicatorScaleFactor;
</span><span class="cx">             
</span><del>-            RemoteLayerTreePropertyApplier::applyPropertiesToLayer(layer, propertiesCopy, relatedLayers);
</del><ins>+            RemoteLayerTreePropertyApplier::applyProperties(layer, propertiesCopy, relatedLayers);
</ins><span class="cx">         } else
</span><del>-            RemoteLayerTreePropertyApplier::applyPropertiesToLayer(layer, properties, relatedLayers);
</del><ins>+            RemoteLayerTreePropertyApplier::applyProperties(layer, properties, relatedLayers);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     for (auto destroyedLayer : transaction.destroyedLayers())
</span><span class="lines">@@ -99,7 +99,7 @@
</span><span class="cx">     return rootLayerChanged;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-CALayer *RemoteLayerTreeHost::getLayer(GraphicsLayer::PlatformLayerID layerID) const
</del><ins>+LayerOrView *RemoteLayerTreeHost::getLayer(GraphicsLayer::PlatformLayerID layerID) const
</ins><span class="cx"> {
</span><span class="cx">     if (!layerID)
</span><span class="cx">         return nil;
</span><span class="lines">@@ -107,7 +107,8 @@
</span><span class="cx">     return m_layers.get(layerID).get();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-CALayer *RemoteLayerTreeHost::createLayer(const RemoteLayerTreeTransaction::LayerCreationProperties&amp; properties)
</del><ins>+#if !PLATFORM(IOS)
+LayerOrView *RemoteLayerTreeHost::createLayer(const RemoteLayerTreeTransaction::LayerCreationProperties&amp; properties)
</ins><span class="cx"> {
</span><span class="cx">     RetainPtr&lt;CALayer&gt;&amp; layer = m_layers.add(properties.layerID, nullptr).iterator-&gt;value;
</span><span class="cx"> 
</span><span class="lines">@@ -140,5 +141,6 @@
</span><span class="cx"> 
</span><span class="cx">     return layer.get();
</span><span class="cx"> }
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessmacWebPageProxyMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm (164889 => 164890)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm        2014-02-28 23:11:22 UTC (rev 164889)
+++ trunk/Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm        2014-02-28 23:36:02 UTC (rev 164890)
</span><span class="lines">@@ -470,12 +470,12 @@
</span><span class="cx">     m_pageClient.intrinsicContentSizeDidChange(intrinsicContentSize);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebPageProxy::setAcceleratedCompositingRootLayer(PlatformLayer* rootLayer)
</del><ins>+void WebPageProxy::setAcceleratedCompositingRootLayer(LayerOrView* rootLayer)
</ins><span class="cx"> {
</span><span class="cx">     m_pageClient.setAcceleratedCompositingRootLayer(rootLayer);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PlatformLayer* WebPageProxy::acceleratedCompositingRootLayer() const
</del><ins>+LayerOrView* WebPageProxy::acceleratedCompositingRootLayer() const
</ins><span class="cx"> {
</span><span class="cx">     return m_pageClient.acceleratedCompositingRootLayer();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKit2WebKit2xcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj (164889 => 164890)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj        2014-02-28 23:11:22 UTC (rev 164889)
+++ trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj        2014-02-28 23:36:02 UTC (rev 164890)
</span><span class="lines">@@ -47,6 +47,10 @@
</span><span class="cx"> /* End PBXAggregateTarget section */
</span><span class="cx"> 
</span><span class="cx"> /* Begin PBXBuildFile section */
</span><ins>+                0F0C365818C051BA00F607D7 /* RemoteLayerTreeHostIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0F0C365718C051BA00F607D7 /* RemoteLayerTreeHostIOS.mm */; };
+                0F0C365A18C0555800F607D7 /* LayerRepresentation.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F0C365918C0555800F607D7 /* LayerRepresentation.h */; };
+                0F0C365C18C05CA100F607D7 /* RemoteScrollingCoordinatorProxyIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0F0C365B18C05CA100F607D7 /* RemoteScrollingCoordinatorProxyIOS.mm */; };
+                0F0C365E18C110A500F607D7 /* LayerRepresentation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0F0C365D18C110A500F607D7 /* LayerRepresentation.mm */; };
</ins><span class="cx">                 0F174AA3142A4CB70039250F /* APIGeometry.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F174AA2142A4CB60039250F /* APIGeometry.h */; };
</span><span class="cx">                 0F174AA7142AAC610039250F /* WKGeometry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F174AA6142AAC610039250F /* WKGeometry.cpp */; };
</span><span class="cx">                 0F594790187B3B3A00437857 /* RemoteScrollingCoordinator.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F59478D187B3B3A00437857 /* RemoteScrollingCoordinator.h */; };
</span><span class="lines">@@ -664,7 +668,7 @@
</span><span class="cx">                 3F87B9BD158940120090FF62 /* WebColorChooser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3F87B9BA15893F630090FF62 /* WebColorChooser.cpp */; };
</span><span class="cx">                 3F87B9BE158940190090FF62 /* WebColorChooser.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F87B9BB15893F630090FF62 /* WebColorChooser.h */; };
</span><span class="cx">                 3F87B9C0158940D80090FF62 /* WebColorPicker.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F87B9BF158940D80090FF62 /* WebColorPicker.h */; };
</span><del>-                3F889D14188778C900FEADAF /* WebVideoFullscreenManagerProxy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3F889D12188778C900FEADAF /* WebVideoFullscreenManagerProxy.cpp */; };
</del><ins>+                3F889D14188778C900FEADAF /* WebVideoFullscreenManagerProxy.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3F889D12188778C900FEADAF /* WebVideoFullscreenManagerProxy.mm */; };
</ins><span class="cx">                 3F889D15188778C900FEADAF /* WebVideoFullscreenManagerProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F889D13188778C900FEADAF /* WebVideoFullscreenManagerProxy.h */; };
</span><span class="cx">                 3F889D171887859300FEADAF /* WebVideoFullscreenManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3F889D0D1887699C00FEADAF /* WebVideoFullscreenManager.cpp */; };
</span><span class="cx">                 4F601432155C5AA2001FBDE0 /* BlockingResponseMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F601430155C5A32001FBDE0 /* BlockingResponseMap.h */; };
</span><span class="lines">@@ -1738,6 +1742,10 @@
</span><span class="cx"> /* Begin PBXFileReference section */
</span><span class="cx">                 0867D6A5FE840307C02AAC07 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = &quot;&lt;absolute&gt;&quot;; };
</span><span class="cx">                 089C1667FE841158C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                0F0C365718C051BA00F607D7 /* RemoteLayerTreeHostIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = RemoteLayerTreeHostIOS.mm; path = ios/RemoteLayerTreeHostIOS.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                0F0C365918C0555800F607D7 /* LayerRepresentation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LayerRepresentation.h; path = UIProcess/Cocoa/LayerRepresentation.h; sourceTree = SOURCE_ROOT; };
+                0F0C365B18C05CA100F607D7 /* RemoteScrollingCoordinatorProxyIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = RemoteScrollingCoordinatorProxyIOS.mm; path = ios/RemoteScrollingCoordinatorProxyIOS.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                0F0C365D18C110A500F607D7 /* LayerRepresentation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = LayerRepresentation.mm; path = ios/LayerRepresentation.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 0F174AA2142A4CB60039250F /* APIGeometry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APIGeometry.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 0F174AA6142AAC610039250F /* WKGeometry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKGeometry.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 0F59478D187B3B3A00437857 /* RemoteScrollingCoordinator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RemoteScrollingCoordinator.h; path = Scrolling/RemoteScrollingCoordinator.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -2418,7 +2426,7 @@
</span><span class="cx">                 3F889D0D1887699C00FEADAF /* WebVideoFullscreenManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebVideoFullscreenManager.cpp; path = ios/WebVideoFullscreenManager.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 3F889D0E1887699C00FEADAF /* WebVideoFullscreenManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebVideoFullscreenManager.h; path = ios/WebVideoFullscreenManager.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 3F889D101887710000FEADAF /* WebVideoFullscreenManager.messages.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = WebVideoFullscreenManager.messages.in; path = ios/WebVideoFullscreenManager.messages.in; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                3F889D12188778C900FEADAF /* WebVideoFullscreenManagerProxy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebVideoFullscreenManagerProxy.cpp; path = ios/WebVideoFullscreenManagerProxy.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><ins>+                3F889D12188778C900FEADAF /* WebVideoFullscreenManagerProxy.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WebVideoFullscreenManagerProxy.mm; path = ios/WebVideoFullscreenManagerProxy.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 3F889D13188778C900FEADAF /* WebVideoFullscreenManagerProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebVideoFullscreenManagerProxy.h; path = ios/WebVideoFullscreenManagerProxy.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 3F889D1618877A2400FEADAF /* WebVideoFullscreenManagerProxy.messages.in */ = {isa = PBXFileReference; lastKnownFileType = text; name = WebVideoFullscreenManagerProxy.messages.in; path = ios/WebVideoFullscreenManagerProxy.messages.in; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 4F601430155C5A32001FBDE0 /* BlockingResponseMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BlockingResponseMap.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -4114,6 +4122,7 @@
</span><span class="cx">                 1ABC3DF21899E415004F0626 /* Cocoa */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><ins>+                                0F0C365918C0555800F607D7 /* LayerRepresentation.h */,
</ins><span class="cx">                                 1A422F8D18B29C6400D8CD96 /* HistoryClient.h */,
</span><span class="cx">                                 1A422F8C18B29C6400D8CD96 /* HistoryClient.mm */,
</span><span class="cx">                                 1ABC3DF41899E437004F0626 /* NavigationState.h */,
</span><span class="lines">@@ -4309,14 +4318,17 @@
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><span class="cx">                                 C54256AE18BEC16100DE4179 /* forms */,
</span><ins>+                                0F0C365D18C110A500F607D7 /* LayerRepresentation.mm */,
</ins><span class="cx">                                 0FCB4E3618BBE044000FCFC9 /* PageClientImplIOS.h */,
</span><span class="cx">                                 0FCB4E3718BBE044000FCFC9 /* PageClientImplIOS.mm */,
</span><ins>+                                0F0C365718C051BA00F607D7 /* RemoteLayerTreeHostIOS.mm */,
+                                0F0C365B18C05CA100F607D7 /* RemoteScrollingCoordinatorProxyIOS.mm */,
</ins><span class="cx">                                 2DA944A91884E9BA00ED86DB /* TextCheckerIOS.mm */,
</span><span class="cx">                                 2DF9593418A42412009785A1 /* ViewGestureControllerIOS.mm */,
</span><span class="cx">                                 2DA944AA1884E9BA00ED86DB /* WebInspectorProxyIOS.mm */,
</span><span class="cx">                                 2DA944AB1884E9BA00ED86DB /* WebPageProxyIOS.mm */,
</span><span class="cx">                                 2DA944AC1884E9BA00ED86DB /* WebProcessProxyIOS.mm */,
</span><del>-                                3F889D12188778C900FEADAF /* WebVideoFullscreenManagerProxy.cpp */,
</del><ins>+                                3F889D12188778C900FEADAF /* WebVideoFullscreenManagerProxy.mm */,
</ins><span class="cx">                                 3F889D13188778C900FEADAF /* WebVideoFullscreenManagerProxy.h */,
</span><span class="cx">                                 3F889D1618877A2400FEADAF /* WebVideoFullscreenManagerProxy.messages.in */,
</span><span class="cx">                                 0FCB4E3818BBE044000FCFC9 /* WKActionSheet.h */,
</span><span class="lines">@@ -6424,6 +6436,7 @@
</span><span class="cx">                                 BC017D2116263308007054F5 /* WKDOMTextIterator.h in Headers */,
</span><span class="cx">                                 37DFA7001810BB92001F4A9F /* WKFoundation.h in Headers */,
</span><span class="cx">                                 1ABC3DF11899C6B6004F0626 /* WKNavigationInternal.h in Headers */,
</span><ins>+                                0F0C365A18C0555800F607D7 /* LayerRepresentation.h in Headers */,
</ins><span class="cx">                                 1F604BA81889FA7400EE0395 /* WKRenderingProgressEvents.h in Headers */,
</span><span class="cx">                                 1A422F8F18B29C6400D8CD96 /* HistoryClient.h in Headers */,
</span><span class="cx">                                 BCBAACEB145225E30053F82F /* WKProcessGroup.h in Headers */,
</span><span class="lines">@@ -8037,6 +8050,7 @@
</span><span class="cx">                                 2DA9449E1884E4F000ED86DB /* NativeWebKeyboardEventIOS.mm in Sources */,
</span><span class="cx">                                 1A0EC604124A9F2C007EF4A5 /* PluginProcessManager.cpp in Sources */,
</span><span class="cx">                                 9F54F8951648AE0F007DF81A /* PluginProcessManagerMac.mm in Sources */,
</span><ins>+                                0F0C365E18C110A500F607D7 /* LayerRepresentation.mm in Sources */,
</ins><span class="cx">                                 1A043CEB124FE38F00FFBFB5 /* PluginProcessMessageReceiver.cpp in Sources */,
</span><span class="cx">                                 1A0EC75F124BC7B2007EF4A5 /* PluginProcessProxy.cpp in Sources */,
</span><span class="cx">                                 1A2D90BB1281C931001EB962 /* PluginProcessProxyMac.mm in Sources */,
</span><span class="lines">@@ -8306,7 +8320,7 @@
</span><span class="cx">                                 33367635130C99B2006C9DE2 /* WebResourceCacheManagerProxy.cpp in Sources */,
</span><span class="cx">                                 33367657130C9ECA006C9DE2 /* WebResourceCacheManagerProxyMessageReceiver.cpp in Sources */,
</span><span class="cx">                                 510AFFB916542048001BA05E /* WebResourceLoader.cpp in Sources */,
</span><del>-                                3F889D14188778C900FEADAF /* WebVideoFullscreenManagerProxy.cpp in Sources */,
</del><ins>+                                3F889D14188778C900FEADAF /* WebVideoFullscreenManagerProxy.mm in Sources */,
</ins><span class="cx">                                 51F060E11654318500F3281B /* WebResourceLoaderMessageReceiver.cpp in Sources */,
</span><span class="cx">                                 2D6B371C18A967AD0042AE80 /* WKThumbnailView.mm in Sources */,
</span><span class="cx">                                 378E1A3D181ED6FF0031007A /* APIObject.mm in Sources */,
</span><span class="lines">@@ -8364,6 +8378,8 @@
</span><span class="cx">                                 BC407628124FF0400068F20A /* WKCertificateInfoMac.mm in Sources */,
</span><span class="cx">                                 515E7727183DD6F60007203F /* AsyncRequest.cpp in Sources */,
</span><span class="cx">                                 BCA284D61492F2C7001F9042 /* WKConnection.mm in Sources */,
</span><ins>+                                0F0C365818C051BA00F607D7 /* RemoteLayerTreeHostIOS.mm in Sources */,
+                                0F0C365C18C05CA100F607D7 /* RemoteScrollingCoordinatorProxyIOS.mm in Sources */,
</ins><span class="cx">                                 BC4A6296147313A0006C681A /* WKConnectionRef.cpp in Sources */,
</span><span class="cx">                                 2D8710161828415D0018FA01 /* PlatformCALayerRemoteCustom.mm in Sources */,
</span><span class="cx">                                 BCB9E24C1120E15C00A137E0 /* WKContext.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPagemacPlatformCALayerRemotecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/mac/PlatformCALayerRemote.cpp (164889 => 164890)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/mac/PlatformCALayerRemote.cpp        2014-02-28 23:11:22 UTC (rev 164889)
+++ trunk/Source/WebKit2/WebProcess/WebPage/mac/PlatformCALayerRemote.cpp        2014-02-28 23:36:02 UTC (rev 164890)
</span><span class="lines">@@ -124,7 +124,7 @@
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         if (m_layerType == LayerTypeCustom) {
</span><del>-            RemoteLayerTreePropertyApplier::applyPropertiesToLayer(platformLayer(), m_properties, RemoteLayerTreePropertyApplier::RelatedLayerMap());
</del><ins>+            RemoteLayerTreePropertyApplier::applyProperties(platformLayer(), m_properties, RemoteLayerTreePropertyApplier::RelatedLayerMap());
</ins><span class="cx">             m_properties.changedProperties = RemoteLayerTreeTransaction::NoChange;
</span><span class="cx">             return;
</span><span class="cx">         }
</span></span></pre>
</div>
</div>

</body>
</html>