Index: chrome/browser/renderer_host/render_widget_host.cc |
diff --git a/chrome/browser/renderer_host/render_widget_host.cc b/chrome/browser/renderer_host/render_widget_host.cc |
index 88c8c51a36b1b008648640ac84a9de3f0cb32704..648188143c482b19e62c5633b36dcec44c051b4d 100644 |
--- a/chrome/browser/renderer_host/render_widget_host.cc |
+++ b/chrome/browser/renderer_host/render_widget_host.cc |
@@ -24,6 +24,11 @@ |
#include "chrome/app/chrome_dll_resource.h" |
#endif // defined(OS_WIN) |
+#if defined (OS_MACOSX) |
+#include "webkit/api/public/WebScreenInfo.h" |
+#include "webkit/api/public/mac/WebScreenInfoFactory.h" |
+#endif |
+ |
using base::Time; |
using base::TimeDelta; |
using base::TimeTicks; |
@@ -33,6 +38,11 @@ using WebKit::WebKeyboardEvent; |
using WebKit::WebMouseEvent; |
using WebKit::WebMouseWheelEvent; |
+#if defined (OS_MACOSX) |
+using WebKit::WebScreenInfo; |
+using WebKit::WebScreenInfoFactory; |
+#endif |
+ |
// How long to (synchronously) wait for the renderer to respond with a |
// PaintRect message, when our backing-store is invalid, before giving up and |
// returning a null or incorrectly sized backing-store from GetBackingStore. |
@@ -119,12 +129,16 @@ IPC_DEFINE_MESSAGE_MAP(RenderWidgetHost) |
IPC_MESSAGE_HANDLER(ViewHostMsg_Blur, OnMsgBlur) |
IPC_MESSAGE_HANDLER(ViewHostMsg_SetCursor, OnMsgSetCursor) |
IPC_MESSAGE_HANDLER(ViewHostMsg_ImeUpdateStatus, OnMsgImeUpdateStatus) |
- IPC_MESSAGE_HANDLER_GENERIC(ViewHostMsg_ShowPopup, OnMsgShowPopup(msg)) |
#if defined(OS_LINUX) |
IPC_MESSAGE_HANDLER(ViewHostMsg_CreatePluginContainer, |
OnMsgCreatePluginContainer) |
IPC_MESSAGE_HANDLER(ViewHostMsg_DestroyPluginContainer, |
OnMsgDestroyPluginContainer) |
+#elif defined(OS_MACOSX) |
+ IPC_MESSAGE_HANDLER_GENERIC(ViewHostMsg_ShowPopup, OnMsgShowPopup(msg)) |
+ IPC_MESSAGE_HANDLER(ViewHostMsg_GetScreenInfo, OnMsgGetScreenInfo) |
+ IPC_MESSAGE_HANDLER(ViewHostMsg_GetWindowRect, OnMsgGetWindowRect) |
+ IPC_MESSAGE_HANDLER(ViewHostMsg_GetRootWindowRect, OnMsgGetRootWindowRect) |
#endif |
IPC_MESSAGE_UNHANDLED_ERROR() |
IPC_END_MESSAGE_MAP() |
@@ -737,8 +751,18 @@ void RenderWidgetHost::OnMsgImeUpdateStatus(int control, |
} |
} |
+#if defined(OS_LINUX) |
+void RenderWidgetHost::OnMsgCreatePluginContainer( |
+ gfx::PluginWindowHandle *container) { |
+ *container = view_->CreatePluginContainer(); |
+} |
+ |
+void RenderWidgetHost::OnMsgDestroyPluginContainer( |
+ gfx::PluginWindowHandle container) { |
+ view_->DestroyPluginContainer(container); |
+} |
+#elif defined(OS_MACOSX) |
void RenderWidgetHost::OnMsgShowPopup(const IPC::Message& message) { |
-#if defined(OS_MACOSX) |
void* iter = NULL; |
ViewHostMsg_ShowPopup_Params validated_params; |
if (!IPC::ParamTraits<ViewHostMsg_ShowPopup_Params>::Read(&message, &iter, |
@@ -749,20 +773,26 @@ void RenderWidgetHost::OnMsgShowPopup(const IPC::Message& message) { |
validated_params.item_height, |
validated_params.selected_item, |
validated_params.popup_items); |
-#else // OS_WIN || OS_LINUX |
- NOTREACHED(); |
-#endif |
} |
-#if defined(OS_LINUX) |
-void RenderWidgetHost::OnMsgCreatePluginContainer( |
- gfx::PluginWindowHandle *container) { |
- *container = view_->CreatePluginContainer(); |
+void RenderWidgetHost::OnMsgGetScreenInfo(gfx::NativeViewId view, |
+ WebScreenInfo* results) { |
+ gfx::NativeView native_view = view_ ? view_->GetNativeView() : NULL; |
+ *results = WebScreenInfoFactory::screenInfo(native_view); |
} |
-void RenderWidgetHost::OnMsgDestroyPluginContainer( |
- gfx::PluginWindowHandle container) { |
- view_->DestroyPluginContainer(container); |
+void RenderWidgetHost::OnMsgGetWindowRect(gfx::NativeViewId window_id, |
+ gfx::Rect* results) { |
+ if (view_) { |
+ *results = view_->GetWindowRect(); |
+ } |
+} |
+ |
+void RenderWidgetHost::OnMsgGetRootWindowRect(gfx::NativeViewId window_id, |
+ gfx::Rect* results) { |
+ if (view_) { |
+ *results = view_->GetRootWindowRect(); |
+ } |
} |
#endif |