Push the screen rect of the page and browser to the renderer to avoid sync IPCs to get this. The old approach doesn't work in Win Aura since the data is only available on the UI thread and we can't make a sync IPC call to it.
This change also removes the last remaining usage of the view HWND. I'll clean that up in a future change to not clutter this one.
Review URL: https://codereview.chromium.org/11364061
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@166446 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
index a974fde1..4ab44bf 100644
--- a/content/renderer/render_widget.cc
+++ b/content/renderer/render_widget.cc
@@ -261,6 +261,7 @@
IPC_MESSAGE_HANDLER(ViewMsg_SetTextDirection, OnSetTextDirection)
IPC_MESSAGE_HANDLER(ViewMsg_Move_ACK, OnRequestMoveAck)
IPC_MESSAGE_HANDLER(ViewMsg_ScreenInfoChanged, OnScreenInfoChanged)
+ IPC_MESSAGE_HANDLER(ViewMsg_UpdateScreenRects, OnUpdateScreenRects)
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
return handled;
@@ -1364,14 +1365,7 @@
if (pending_window_rect_count_)
return pending_window_rect_;
-#if defined(OS_ANDROID)
- // Short circuit of the sync RPC call.
- return gfx::Rect(size_);
-#else
- gfx::Rect rect;
- Send(new ViewHostMsg_GetWindowRect(routing_id_, host_window_, &rect));
- return rect;
-#endif
+ return view_screen_rect_;
}
void RenderWidget::setToolTipText(const WebKit::WebString& text,
@@ -1403,14 +1397,7 @@
return pending_window_rect_;
}
-#if defined(OS_ANDROID)
- // Short circuit of the sync RPC call.
- return gfx::Rect(size_);
-#else
- gfx::Rect rect;
- Send(new ViewHostMsg_GetRootWindowRect(routing_id_, host_window_, &rect));
- return rect;
-#endif
+ return window_screen_rect_;
}
WebRect RenderWidget::windowResizerRect() {
@@ -1623,6 +1610,13 @@
screen_info_ = screen_info;
}
+void RenderWidget::OnUpdateScreenRects(const gfx::Rect& view_screen_rect,
+ const gfx::Rect& window_screen_rect) {
+ view_screen_rect_ = view_screen_rect;
+ window_screen_rect_ = window_screen_rect;
+ Send(new ViewHostMsg_UpdateScreenRects_ACK(routing_id()));
+}
+
webkit::ppapi::PluginInstance* RenderWidget::GetBitmapForOptimizedPluginPaint(
const gfx::Rect& paint_bounds,
TransportDIB** dib,