diff options
author | alexmos <alexmos@chromium.org> | 2014-09-25 16:15:40 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-09-25 23:15:59 +0000 |
commit | 05334c25134091e0bb662dd4793d63ed655b9b07 (patch) | |
tree | c373742739e63cb5655c30c48cb265ec241c8354 | |
parent | 5cbb7d7a2ce034432b7d56f5940009bc75c337d4 (diff) | |
download | chromium_src-05334c25134091e0bb662dd4793d63ed655b9b07.zip chromium_src-05334c25134091e0bb662dd4793d63ed655b9b07.tar.gz chromium_src-05334c25134091e0bb662dd4793d63ed655b9b07.tar.bz2 |
Send initializeChildFrame from RenderFrameProxy rather than WebLocalFrame (part 2).
Move initializeChildFrame from RenderFrameImpl to RenderFrameProxy. Replace RenderFrameImpl::OnSwapOut's call to setIsRemote with WebRemoteFrame::initializeFromFrame that was introduced in part 1 of this change (https://codereview.chromium.org/591413004/)
This will be followed by another CL that will remove setIsRemote on the blink side.
BUG=416102
Review URL: https://codereview.chromium.org/592263002
Cr-Commit-Position: refs/heads/master@{#296822}
-rw-r--r-- | content/renderer/render_frame_impl.cc | 23 | ||||
-rw-r--r-- | content/renderer/render_frame_impl.h | 2 | ||||
-rw-r--r-- | content/renderer/render_frame_proxy.cc | 7 | ||||
-rw-r--r-- | content/renderer/render_frame_proxy.h | 3 |
4 files changed, 14 insertions, 21 deletions
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc index a5482c0..fcea3a1 100644 --- a/content/renderer/render_frame_impl.cc +++ b/content/renderer/render_frame_impl.cc @@ -1063,19 +1063,10 @@ void RenderFrameImpl::OnSwapOut(int proxy_routing_id) { // frame? OnStop(); - // Let subframes know that the frame is now rendered remotely, for the - // purposes of compositing and input events. - if (!is_main_frame) { - // TODO(creis): Remove setIsRemote and send initializeChildFrame from the - // RenderFrameProxy, since the RenderFrameHost may be deleted first. In - // the meantime, temporarily set this frame's proxy so that the message - // is sent via RenderFrameProxy. - // See http://crbug.com/416102. - DCHECK(!render_frame_proxy_); - set_render_frame_proxy(proxy); - frame_->setIsRemote(true); - set_render_frame_proxy(NULL); - } + // Transfer settings such as initial drawing parameters to the remote frame + // that will replace this frame. + if (!is_main_frame) + proxy->web_frame()->initializeFromFrame(frame_); // Replace the page with a blank dummy URL. The unload handler will not be // run a second time, thanks to a check in FrameLoader::stopLoading. @@ -3180,12 +3171,6 @@ void RenderFrameImpl::forwardInputEvent(const blink::WebInputEvent* event) { Send(new FrameHostMsg_ForwardInputEvent(routing_id_, event)); } -void RenderFrameImpl::initializeChildFrame(const blink::WebRect& frame_rect, - float scale_factor) { - render_frame_proxy_->Send(new FrameHostMsg_InitializeChildFrame( - routing_id_, frame_rect, scale_factor)); -} - blink::WebScreenOrientationClient* RenderFrameImpl::webScreenOrientationClient() { if (!screen_orientation_dispatcher_) diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h index e80c4af..76a373a 100644 --- a/content/renderer/render_frame_impl.h +++ b/content/renderer/render_frame_impl.h @@ -441,8 +441,6 @@ class CONTENT_EXPORT RenderFrameImpl virtual void didLoseWebGLContext(blink::WebLocalFrame* frame, int arb_robustness_status_code); virtual void forwardInputEvent(const blink::WebInputEvent* event); - virtual void initializeChildFrame(const blink::WebRect& frame_rect, - float scale_factor); virtual blink::WebScreenOrientationClient* webScreenOrientationClient(); virtual bool isControlledByServiceWorker(); virtual void postAccessibilityEvent(const blink::WebAXObject& obj, diff --git a/content/renderer/render_frame_proxy.cc b/content/renderer/render_frame_proxy.cc index ee6d788..caea54d 100644 --- a/content/renderer/render_frame_proxy.cc +++ b/content/renderer/render_frame_proxy.cc @@ -271,4 +271,11 @@ void RenderFrameProxy::postMessageEvent( Send(new ViewHostMsg_RouteMessageEvent(render_view_->GetRoutingID(), params)); } +void RenderFrameProxy::initializeChildFrame( + const blink::WebRect& frame_rect, + float scale_factor) { + Send(new FrameHostMsg_InitializeChildFrame( + routing_id_, frame_rect, scale_factor)); +} + } // namespace diff --git a/content/renderer/render_frame_proxy.h b/content/renderer/render_frame_proxy.h index 495e439..a73a8f2 100644 --- a/content/renderer/render_frame_proxy.h +++ b/content/renderer/render_frame_proxy.h @@ -99,6 +99,9 @@ class CONTENT_EXPORT RenderFrameProxy blink::WebRemoteFrame* targetFrame, blink::WebSecurityOrigin target, blink::WebDOMMessageEvent event); + virtual void initializeChildFrame( + const blink::WebRect& frame_rect, + float scale_factor); private: RenderFrameProxy(int routing_id, int frame_routing_id); |