Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "config.h" | 5 #include "config.h" |
| 6 #include "core/frame/RemoteFrame.h" | 6 #include "core/frame/RemoteFrame.h" |
| 7 | 7 |
| 8 #include "bindings/core/v8/WindowProxyManager.h" | 8 #include "bindings/core/v8/WindowProxyManager.h" |
| 9 #include "core/dom/RemoteSecurityContext.h" | 9 #include "core/dom/RemoteSecurityContext.h" |
| 10 #include "core/frame/RemoteDOMWindow.h" | 10 #include "core/frame/RemoteDOMWindow.h" |
| 11 #include "core/frame/RemoteFrameClient.h" | 11 #include "core/frame/RemoteFrameClient.h" |
| 12 #include "core/frame/RemoteFrameView.h" | 12 #include "core/frame/RemoteFrameView.h" |
| 13 #include "core/html/HTMLFrameOwnerElement.h" | 13 #include "core/html/HTMLFrameOwnerElement.h" |
| 14 #include "core/rendering/RenderLayer.h" | |
| 15 #include "core/rendering/RenderPart.h" | |
| 16 #include "platform/graphics/GraphicsLayer.h" | |
| 14 #include "platform/weborigin/SecurityPolicy.h" | 17 #include "platform/weborigin/SecurityPolicy.h" |
| 18 #include "public/platform/WebLayer.h" | |
| 15 | 19 |
| 16 namespace blink { | 20 namespace blink { |
| 17 | 21 |
| 18 inline RemoteFrame::RemoteFrame(RemoteFrameClient* client, FrameHost* host, Fram eOwner* owner) | 22 inline RemoteFrame::RemoteFrame(RemoteFrameClient* client, FrameHost* host, Fram eOwner* owner) |
| 19 : Frame(client, host, owner) | 23 : Frame(client, host, owner) |
| 20 , m_securityContext(RemoteSecurityContext::create()) | 24 , m_securityContext(RemoteSecurityContext::create()) |
| 21 , m_domWindow(RemoteDOMWindow::create(*this)) | 25 , m_domWindow(RemoteDOMWindow::create(*this)) |
| 22 , m_windowProxyManager(WindowProxyManager::create(*this)) | 26 , m_windowProxyManager(WindowProxyManager::create(*this)) |
| 27 , m_remotePlatformLayer(nullptr) | |
| 23 { | 28 { |
| 24 } | 29 } |
| 25 | 30 |
| 26 PassRefPtrWillBeRawPtr<RemoteFrame> RemoteFrame::create(RemoteFrameClient* clien t, FrameHost* host, FrameOwner* owner) | 31 PassRefPtrWillBeRawPtr<RemoteFrame> RemoteFrame::create(RemoteFrameClient* clien t, FrameHost* host, FrameOwner* owner) |
| 27 { | 32 { |
| 28 return adoptRefWillBeNoop(new RemoteFrame(client, host, owner)); | 33 return adoptRefWillBeNoop(new RemoteFrame(client, host, owner)); |
| 29 } | 34 } |
| 30 | 35 |
| 31 RemoteFrame::~RemoteFrame() | 36 RemoteFrame::~RemoteFrame() |
| 32 { | 37 { |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 72 return; | 77 return; |
| 73 m_windowProxyManager->clearForClose(); | 78 m_windowProxyManager->clearForClose(); |
| 74 Frame::detach(); | 79 Frame::detach(); |
| 75 } | 80 } |
| 76 | 81 |
| 77 RemoteSecurityContext* RemoteFrame::securityContext() const | 82 RemoteSecurityContext* RemoteFrame::securityContext() const |
| 78 { | 83 { |
| 79 return m_securityContext.get(); | 84 return m_securityContext.get(); |
| 80 } | 85 } |
| 81 | 86 |
| 87 void RemoteFrame::disconnectOwnerElement() | |
| 88 { | |
| 89 if (owner() && owner()->isLocal()) | |
|
dcheng
2015/02/03 22:08:37
Why do we do this work here instead of, say, Remot
lfg
2015/02/03 22:54:50
It needs to run on both WebFrame::swap(), as well
dcheng
2015/02/04 00:02:23
Can we add a comment to this effect? It's not imme
| |
| 90 setRemotePlatformLayer(nullptr); | |
| 91 Frame::disconnectOwnerElement(); | |
| 92 } | |
| 93 | |
| 82 void RemoteFrame::forwardInputEvent(Event* event) | 94 void RemoteFrame::forwardInputEvent(Event* event) |
| 83 { | 95 { |
| 84 remoteFrameClient()->forwardInputEvent(event); | 96 remoteFrameClient()->forwardInputEvent(event); |
| 85 } | 97 } |
| 86 | 98 |
| 87 void RemoteFrame::setView(PassRefPtrWillBeRawPtr<RemoteFrameView> view) | 99 void RemoteFrame::setView(PassRefPtrWillBeRawPtr<RemoteFrameView> view) |
| 88 { | 100 { |
| 89 // Oilpan: as RemoteFrameView performs no finalization actions, | 101 // Oilpan: as RemoteFrameView performs no finalization actions, |
| 90 // no explicit dispose() of it needed here. (cf. FrameView::dispose().) | 102 // no explicit dispose() of it needed here. (cf. FrameView::dispose().) |
| 91 m_view = view; | 103 m_view = view; |
| 92 } | 104 } |
| 93 | 105 |
| 94 void RemoteFrame::createView() | 106 void RemoteFrame::createView() |
| 95 { | 107 { |
| 96 RefPtrWillBeRawPtr<RemoteFrameView> view = RemoteFrameView::create(this); | 108 RefPtrWillBeRawPtr<RemoteFrameView> view = RemoteFrameView::create(this); |
| 97 setView(view); | 109 setView(view); |
| 98 | 110 |
| 99 if (ownerRenderer()) { | 111 if (ownerRenderer()) { |
| 100 HTMLFrameOwnerElement* owner = deprecatedLocalOwner(); | 112 HTMLFrameOwnerElement* owner = deprecatedLocalOwner(); |
| 101 ASSERT(owner); | 113 ASSERT(owner); |
| 102 owner->setWidget(view); | 114 owner->setWidget(view); |
| 103 } | 115 } |
| 104 } | 116 } |
| 105 | 117 |
| 106 RemoteFrameClient* RemoteFrame::remoteFrameClient() const | 118 RemoteFrameClient* RemoteFrame::remoteFrameClient() const |
| 107 { | 119 { |
| 108 return static_cast<RemoteFrameClient*>(client()); | 120 return static_cast<RemoteFrameClient*>(client()); |
| 109 } | 121 } |
| 110 | 122 |
| 123 void RemoteFrame::setRemotePlatformLayer(WebLayer* layer) | |
| 124 { | |
| 125 if (m_remotePlatformLayer) | |
| 126 GraphicsLayer::unregisterContentsLayer(m_remotePlatformLayer); | |
| 127 m_remotePlatformLayer = layer; | |
| 128 if (m_remotePlatformLayer) | |
| 129 GraphicsLayer::registerContentsLayer(layer); | |
| 130 | |
| 131 ASSERT(owner()); | |
| 132 toHTMLFrameOwnerElement(owner())->setNeedsCompositingUpdate(); | |
| 133 if (RenderPart* renderer = ownerRenderer()) | |
| 134 renderer->layer()->updateSelfPaintingLayer(); | |
| 135 } | |
| 136 | |
| 111 } // namespace blink | 137 } // namespace blink |
| OLD | NEW |