| Index: Source/web/WebRemoteFrameImpl.cpp
|
| diff --git a/Source/web/WebRemoteFrameImpl.cpp b/Source/web/WebRemoteFrameImpl.cpp
|
| index cf1a3a37e5b05df9d32fdc9f15e32dcc4e7b462e..7d5d298800d802c12d002babdfbc7d2c67d4172d 100644
|
| --- a/Source/web/WebRemoteFrameImpl.cpp
|
| +++ b/Source/web/WebRemoteFrameImpl.cpp
|
| @@ -7,8 +7,11 @@
|
|
|
| #include "core/frame/FrameOwner.h"
|
| #include "core/frame/RemoteFrame.h"
|
| +#include "core/html/HTMLFrameOwnerElement.h"
|
| #include "core/page/Page.h"
|
| +#include "core/rendering/RenderLayer.h"
|
| #include "public/platform/WebFloatRect.h"
|
| +#include "public/platform/WebLayer.h"
|
| #include "public/platform/WebRect.h"
|
| #include "public/web/WebDocument.h"
|
| #include "public/web/WebPerformance.h"
|
| @@ -158,12 +161,25 @@ WebVector<WebIconURL> WebRemoteFrameImpl::iconURLs(int iconTypesMask) const
|
|
|
| void WebRemoteFrameImpl::setIsRemote(bool)
|
| {
|
| +
|
| ASSERT_NOT_REACHED();
|
| }
|
|
|
| -void WebRemoteFrameImpl::setRemoteWebLayer(WebLayer*)
|
| +void WebRemoteFrameImpl::setRemoteWebLayer(WebLayer* webLayer)
|
| {
|
| - ASSERT_NOT_REACHED();
|
| + if (!frame())
|
| + return;
|
| +
|
| + if (frame()->remotePlatformLayer())
|
| + GraphicsLayer::unregisterContentsLayer(frame()->remotePlatformLayer());
|
| + if (webLayer)
|
| + GraphicsLayer::registerContentsLayer(webLayer);
|
| + frame()->setRemotePlatformLayer(webLayer);
|
| +
|
| + // FIXME: This should be moved to WebRemoteFrame.
|
| + frame()->deprecatedLocalOwner()->setNeedsCompositingUpdate();
|
| + if (RenderPart* renderer = frame()->ownerRenderer())
|
| + renderer->layer()->updateSelfPaintingLayer();
|
| }
|
|
|
| void WebRemoteFrameImpl::setPermissionClient(WebPermissionClient*)
|
| @@ -248,7 +264,7 @@ void WebRemoteFrameImpl::removeChild(WebFrame* frame)
|
|
|
| WebDocument WebRemoteFrameImpl::document() const
|
| {
|
| - ASSERT_NOT_REACHED();
|
| + //ASSERT_NOT_REACHED();
|
| return WebDocument();
|
| }
|
|
|
| @@ -507,12 +523,12 @@ bool WebRemoteFrameImpl::isCommandEnabled(const WebString&) const
|
|
|
| void WebRemoteFrameImpl::enableContinuousSpellChecking(bool)
|
| {
|
| - ASSERT_NOT_REACHED();
|
| + //ASSERT_NOT_REACHED();
|
| }
|
|
|
| bool WebRemoteFrameImpl::isContinuousSpellCheckingEnabled() const
|
| {
|
| - ASSERT_NOT_REACHED();
|
| + //ASSERT_NOT_REACHED();
|
| return false;
|
| }
|
|
|
| @@ -793,16 +809,17 @@ WebLocalFrame* WebRemoteFrameImpl::createLocalChild(const WebString& name, WebFr
|
| // result in the browser observing two navigations to about:blank (one from the initial
|
| // frame creation, and one from swapping it into the remote process). FrameLoader might
|
| // need a special initialization function for this case to avoid that duplicate navigation.
|
| - child->initializeAsChildFrame(frame()->host(), result.storedValue->value.get(), name, AtomicString());
|
| + child->initializeWebCoreFrame(frame()->host(), result.storedValue->value.get(), name, nullAtom);
|
| // Partially related with the above FIXME--the init() call may trigger JS dispatch. However,
|
| // if the parent is remote, it should never be detached synchronously...
|
| ASSERT(child->frame());
|
| return child;
|
| }
|
|
|
| -void WebRemoteFrameImpl::initializeAsMainFrame(Page* page)
|
| +void WebRemoteFrameImpl::initializeWebCoreFrame(FrameHost* host, FrameOwner* owner, const AtomicString& name)
|
| {
|
| - setWebCoreFrame(RemoteFrame::create(&m_frameClient, &page->frameHost(), 0));
|
| + setWebCoreFrame(RemoteFrame::create(&m_frameClient, host, owner));
|
| + m_frame->tree().setName(name, nullAtom);
|
| }
|
|
|
| WebRemoteFrame* WebRemoteFrameImpl::createRemoteChild(const WebString& name, WebFrameClient* client)
|
| @@ -811,9 +828,7 @@ WebRemoteFrame* WebRemoteFrameImpl::createRemoteChild(const WebString& name, Web
|
| HashMap<WebFrame*, OwnPtr<FrameOwner> >::AddResult result =
|
| m_ownersForChildren.add(child, adoptPtr(new PlaceholderFrameOwner));
|
| appendChild(child);
|
| - RefPtr<RemoteFrame> childFrame = RemoteFrame::create(&child->m_frameClient, frame()->host(), result.storedValue->value.get());
|
| - child->setWebCoreFrame(childFrame);
|
| - childFrame->tree().setName(name, AtomicString());
|
| + child->initializeWebCoreFrame(frame()->host(), result.storedValue->value.get(), name);
|
| return child;
|
| }
|
|
|
|
|