summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoralexmos <alexmos@chromium.org>2014-09-25 16:15:40 -0700
committerCommit bot <commit-bot@chromium.org>2014-09-25 23:15:59 +0000
commit05334c25134091e0bb662dd4793d63ed655b9b07 (patch)
treec373742739e63cb5655c30c48cb265ec241c8354
parent5cbb7d7a2ce034432b7d56f5940009bc75c337d4 (diff)
downloadchromium_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.cc23
-rw-r--r--content/renderer/render_frame_impl.h2
-rw-r--r--content/renderer/render_frame_proxy.cc7
-rw-r--r--content/renderer/render_frame_proxy.h3
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);