diff options
author | varunjain@chromium.org <varunjain@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-01 15:39:22 +0000 |
---|---|---|
committer | varunjain@chromium.org <varunjain@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-01 15:39:22 +0000 |
commit | dfec1959de9bf1fff9a0b16d96cd64947f543d0f (patch) | |
tree | 34cc78751bbe0939be805abafef338d02d3a645e /content | |
parent | cf4972a0ff960ea8ce5a90c9a5516d22dcf1525a (diff) | |
download | chromium_src-dfec1959de9bf1fff9a0b16d96cd64947f543d0f.zip chromium_src-dfec1959de9bf1fff9a0b16d96cd64947f543d0f.tar.gz chromium_src-dfec1959de9bf1fff9a0b16d96cd64947f543d0f.tar.bz2 |
Revert 124453 - WebWidgetClient::screenInfo() no longer does a synchronous IPC.
Instead it grabs the necessary info from a cached WebScreenInfo factory.
BUG=111401,126586
TEST=Manually
Review URL: http://codereview.chromium.org/9302022
TBR=fsamuel@chromium.org,jam@chromium.org
Review URL: https://chromiumcodereview.appspot.com/10441101
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@140030 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
-rw-r--r-- | content/browser/renderer_host/render_message_filter.cc | 1 | ||||
-rw-r--r-- | content/browser/renderer_host/render_message_filter.h | 2 | ||||
-rw-r--r-- | content/browser/renderer_host/render_message_filter_win.cc | 6 | ||||
-rw-r--r-- | content/browser/renderer_host/render_view_host_impl.cc | 14 | ||||
-rw-r--r-- | content/browser/renderer_host/render_widget_host_impl.cc | 9 | ||||
-rw-r--r-- | content/browser/renderer_host/render_widget_host_impl.h | 2 | ||||
-rw-r--r-- | content/common/view_messages.h | 10 | ||||
-rw-r--r-- | content/renderer/browser_plugin/browser_plugin_channel_manager.cc | 1 | ||||
-rw-r--r-- | content/renderer/render_thread_impl.cc | 1 | ||||
-rw-r--r-- | content/renderer/render_view_impl.cc | 8 | ||||
-rw-r--r-- | content/renderer/render_view_impl.h | 2 | ||||
-rw-r--r-- | content/renderer/render_widget.cc | 21 | ||||
-rw-r--r-- | content/renderer/render_widget.h | 7 | ||||
-rw-r--r-- | content/renderer/render_widget_fullscreen.cc | 2 | ||||
-rw-r--r-- | content/test/render_view_test.cc | 2 |
15 files changed, 46 insertions, 42 deletions
diff --git a/content/browser/renderer_host/render_message_filter.cc b/content/browser/renderer_host/render_message_filter.cc index b345caa..1abd8ab 100644 --- a/content/browser/renderer_host/render_message_filter.cc +++ b/content/browser/renderer_host/render_message_filter.cc @@ -340,6 +340,7 @@ bool RenderMessageFilter::OnMessageReceived(const IPC::Message& message, // On Windows, we handle these on the IO thread to avoid a deadlock with // plugins. On non-Windows systems, we need to handle them on the UI // thread. + IPC_MESSAGE_HANDLER(ViewHostMsg_GetScreenInfo, OnGetScreenInfo) IPC_MESSAGE_HANDLER(ViewHostMsg_GetWindowRect, OnGetWindowRect) IPC_MESSAGE_HANDLER(ViewHostMsg_GetRootWindowRect, OnGetRootWindowRect) #endif diff --git a/content/browser/renderer_host/render_message_filter.h b/content/browser/renderer_host/render_message_filter.h index ab54ac3..d2386e7 100644 --- a/content/browser/renderer_host/render_message_filter.h +++ b/content/browser/renderer_host/render_message_filter.h @@ -144,6 +144,8 @@ class RenderMessageFilter : public content::BrowserMessageFilter { #if defined(OS_WIN) && !defined(USE_AURA) // On Windows, we handle these on the IO thread to avoid a deadlock with // plugins. On non-Windows systems, we need to handle them on the UI thread. + void OnGetScreenInfo(gfx::NativeViewId window, + WebKit::WebScreenInfo* results); void OnGetWindowRect(gfx::NativeViewId window, gfx::Rect* rect); void OnGetRootWindowRect(gfx::NativeViewId window, gfx::Rect* rect); #endif diff --git a/content/browser/renderer_host/render_message_filter_win.cc b/content/browser/renderer_host/render_message_filter_win.cc index 9b58562..a469875 100644 --- a/content/browser/renderer_host/render_message_filter_win.cc +++ b/content/browser/renderer_host/render_message_filter_win.cc @@ -49,3 +49,9 @@ void RenderMessageFilter::OnGetRootWindowRect(gfx::NativeViewId window_id, *rect = GetVisibleWindowRect(GetAncestor(gfx::NativeViewFromId(window_id), GA_ROOT)); } + +void RenderMessageFilter::OnGetScreenInfo(gfx::NativeViewId view, + WebKit::WebScreenInfo* results) { + *results = + WebKit::WebScreenInfoFactory::screenInfo(gfx::NativeViewFromId(view)); +} diff --git a/content/browser/renderer_host/render_view_host_impl.cc b/content/browser/renderer_host/render_view_host_impl.cc index a2b1c3d..f16e38a 100644 --- a/content/browser/renderer_host/render_view_host_impl.cc +++ b/content/browser/renderer_host/render_view_host_impl.cc @@ -64,7 +64,6 @@ #if defined(OS_WIN) #include "base/win/windows_version.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/win/WebScreenInfoFactory.h" #elif defined(OS_MACOSX) #include "content/browser/renderer_host/popup_menu_helper_mac.h" #endif @@ -249,19 +248,6 @@ bool RenderViewHostImpl::CreateRenderView( params.opener_route_id = opener_route_id; params.swapped_out = is_swapped_out_; params.next_page_id = next_page_id; -#if defined(OS_POSIX) || defined(USE_AURA) - if (GetView()) { - static_cast<content::RenderWidgetHostViewPort*>( - GetView())->GetScreenInfo(¶ms.screen_info); - } else { - content::RenderWidgetHostViewPort::GetDefaultScreenInfo( - ¶ms.screen_info); - } -#else - params.screen_info = - WebKit::WebScreenInfoFactory::screenInfo( - gfx::NativeViewFromId(GetNativeViewId())); -#endif params.embedder_channel_name = embedder_channel_name; params.embedder_container_id = embedder_container_id; params.accessibility_mode = diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc index 02875f6..04ee30d 100644 --- a/content/browser/renderer_host/render_widget_host_impl.cc +++ b/content/browser/renderer_host/render_widget_host_impl.cc @@ -281,6 +281,7 @@ bool RenderWidgetHostImpl::OnMessageReceived(const IPC::Message &msg) { IPC_MESSAGE_HANDLER(ViewHostMsg_LockMouse, OnMsgLockMouse) IPC_MESSAGE_HANDLER(ViewHostMsg_UnlockMouse, OnMsgUnlockMouse) #if defined(OS_POSIX) || defined(USE_AURA) + IPC_MESSAGE_HANDLER(ViewHostMsg_GetScreenInfo, OnMsgGetScreenInfo) IPC_MESSAGE_HANDLER(ViewHostMsg_GetWindowRect, OnMsgGetWindowRect) IPC_MESSAGE_HANDLER(ViewHostMsg_GetRootWindowRect, OnMsgGetRootWindowRect) #endif @@ -1506,6 +1507,14 @@ void RenderWidgetHostImpl::OnMsgUnlockMouse() { } #if defined(OS_POSIX) || defined(USE_AURA) +void RenderWidgetHostImpl::OnMsgGetScreenInfo(gfx::NativeViewId window_id, + WebKit::WebScreenInfo* results) { + if (view_) + view_->GetScreenInfo(results); + else + RenderWidgetHostViewPort::GetDefaultScreenInfo(results); +} + void RenderWidgetHostImpl::OnMsgGetWindowRect(gfx::NativeViewId window_id, gfx::Rect* results) { if (view_) diff --git a/content/browser/renderer_host/render_widget_host_impl.h b/content/browser/renderer_host/render_widget_host_impl.h index 368fc68..5a3e0f7 100644 --- a/content/browser/renderer_host/render_widget_host_impl.h +++ b/content/browser/renderer_host/render_widget_host_impl.h @@ -488,6 +488,8 @@ class CONTENT_EXPORT RenderWidgetHostImpl : virtual public RenderWidgetHost, void OnMsgUnlockMouse(); #if defined(OS_POSIX) || defined(USE_AURA) + void OnMsgGetScreenInfo(gfx::NativeViewId view, + WebKit::WebScreenInfo* results); void OnMsgGetWindowRect(gfx::NativeViewId window_id, gfx::Rect* results); void OnMsgGetRootWindowRect(gfx::NativeViewId window_id, gfx::Rect* results); #endif diff --git a/content/common/view_messages.h b/content/common/view_messages.h index 0870e02..346295a 100644 --- a/content/common/view_messages.h +++ b/content/common/view_messages.h @@ -681,9 +681,6 @@ IPC_STRUCT_BEGIN(ViewMsg_New_Params) // to a view and are only updated by the renderer after this initial value. IPC_STRUCT_MEMBER(int32, next_page_id) - // The properties of the screen associated with the view. - IPC_STRUCT_MEMBER(WebKit::WebScreenInfo, screen_info) - // The name of the channel with which a guest talks to its embedder. // If this newly created RenderView has no embedder this string will be // empty. @@ -1763,6 +1760,13 @@ IPC_SYNC_MESSAGE_CONTROL1_3(ViewHostMsg_LoadFont, uint32 /* font id */) #endif +// Returns WebScreenInfo corresponding to the view. +// TODO(shess): Provide a mapping from reply_msg->routing_id() to +// HWND so that we can eliminate the NativeViewId parameter. +IPC_SYNC_MESSAGE_ROUTED1_1(ViewHostMsg_GetScreenInfo, + gfx::NativeViewId /* view */, + WebKit::WebScreenInfo /* results */) + // Send the tooltip text for the current mouse position to the browser. IPC_MESSAGE_ROUTED2(ViewHostMsg_SetTooltipText, string16 /* tooltip text string */, diff --git a/content/renderer/browser_plugin/browser_plugin_channel_manager.cc b/content/renderer/browser_plugin/browser_plugin_channel_manager.cc index 678af1c..b4f5c03 100644 --- a/content/renderer/browser_plugin/browser_plugin_channel_manager.cc +++ b/content/renderer/browser_plugin/browser_plugin_channel_manager.cc @@ -60,7 +60,6 @@ void BrowserPluginChannelManager::CreateRenderView( false, params.swapped_out, params.next_page_id, - params.screen_info, channel, params.accessibility_mode); ReportChannelToEmbedder(render_view, diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc index 3f6756a..04a97b2 100644 --- a/content/renderer/render_thread_impl.cc +++ b/content/renderer/render_thread_impl.cc @@ -894,7 +894,6 @@ void RenderThreadImpl::OnCreateNewView(const ViewMsg_New_Params& params) { false, params.swapped_out, params.next_page_id, - params.screen_info, NULL, params.accessibility_mode); } diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc index 060eb19..c3add15 100644 --- a/content/renderer/render_view_impl.cc +++ b/content/renderer/render_view_impl.cc @@ -500,10 +500,9 @@ RenderViewImpl::RenderViewImpl( bool is_renderer_created, bool swapped_out, int32 next_page_id, - const WebKit::WebScreenInfo& screen_info, content::GuestToEmbedderChannel* guest_to_embedder_channel, AccessibilityMode accessibility_mode) - : RenderWidget(WebKit::WebPopupTypeNone, screen_info, swapped_out), + : RenderWidget(WebKit::WebPopupTypeNone, swapped_out), webkit_preferences_(webkit_prefs), send_content_state_immediately_(false), enabled_bindings_(0), @@ -722,7 +721,6 @@ RenderViewImpl* RenderViewImpl::Create( bool is_renderer_created, bool swapped_out, int32 next_page_id, - const WebKit::WebScreenInfo& screen_info, content::GuestToEmbedderChannel* guest_to_embedder_channel, AccessibilityMode accessibility_mode) { DCHECK(routing_id != MSG_ROUTING_NONE); @@ -739,7 +737,6 @@ RenderViewImpl* RenderViewImpl::Create( is_renderer_created, swapped_out, next_page_id, - screen_info, guest_to_embedder_channel, accessibility_mode); } @@ -1640,7 +1637,6 @@ WebView* RenderViewImpl::createView( true, false, 1, - screen_info_, guest_to_embedder_channel_, accessibility_mode_); view->opened_by_user_gesture_ = params.user_gesture; @@ -1663,7 +1659,7 @@ WebView* RenderViewImpl::createView( WebWidget* RenderViewImpl::createPopupMenu(WebKit::WebPopupType popup_type) { RenderWidget* widget = - RenderWidget::Create(routing_id_, popup_type, screen_info_); + RenderWidget::Create(routing_id_, popup_type); return widget->webwidget(); } diff --git a/content/renderer/render_view_impl.h b/content/renderer/render_view_impl.h index 9d8fdb7..a06451c 100644 --- a/content/renderer/render_view_impl.h +++ b/content/renderer/render_view_impl.h @@ -209,7 +209,6 @@ class RenderViewImpl : public RenderWidget, bool is_renderer_created, bool swapped_out, int32 next_page_id, - const WebKit::WebScreenInfo& screen_info, content::GuestToEmbedderChannel* guest_to_embedder_channel, AccessibilityMode accessibility_mode); @@ -805,7 +804,6 @@ class RenderViewImpl : public RenderWidget, bool is_renderer_created, bool swapped_out, int32 next_page_id, - const WebKit::WebScreenInfo& screen_info, content::GuestToEmbedderChannel* guest_to_embedder_channel, AccessibilityMode accessibility_mode); diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc index 14b716e..0fa18e0 100644 --- a/content/renderer/render_widget.cc +++ b/content/renderer/render_widget.cc @@ -72,7 +72,6 @@ using WebKit::WebWidget; using content::RenderThread; RenderWidget::RenderWidget(WebKit::WebPopupType popup_type, - const WebKit::WebScreenInfo& screen_info, bool swapped_out) : routing_id_(MSG_ROUTING_NONE), surface_id_(0), @@ -104,7 +103,6 @@ RenderWidget::RenderWidget(WebKit::WebPopupType popup_type, is_accelerated_compositing_active_(false), animation_update_pending_(false), invalidation_task_posted_(false), - screen_info_(screen_info), invert_(false) { if (!swapped_out) RenderProcess::current()->AddRefProcess(); @@ -127,11 +125,10 @@ RenderWidget::~RenderWidget() { // static RenderWidget* RenderWidget::Create(int32 opener_id, - WebKit::WebPopupType popup_type, - const WebKit::WebScreenInfo& screen_info) { + WebKit::WebPopupType popup_type) { DCHECK(opener_id != MSG_ROUTING_NONE); scoped_refptr<RenderWidget> widget( - new RenderWidget(popup_type, screen_info, false)); + new RenderWidget(popup_type, false)); widget->Init(opener_id); // adds reference return widget; } @@ -1666,7 +1663,19 @@ bool RenderWidget::CanComposeInline() { } WebScreenInfo RenderWidget::screenInfo() { - return screen_info_; + WebScreenInfo results; + if (host_window_set_) + Send(new ViewHostMsg_GetScreenInfo(routing_id_, host_window_, &results)); + else { + DLOG(WARNING) << "Unable to retrieve screen information, no host window"; +#if defined(USE_AURA) + // TODO(backer): Remove this a temporary workaround for crbug.com/111929 + // once we get a proper fix. + results.availableRect.width = 1000; + results.availableRect.height = 1000; +#endif + } + return results; } void RenderWidget::resetInputMethod() { diff --git a/content/renderer/render_widget.h b/content/renderer/render_widget.h index ef49c15..d0c263e 100644 --- a/content/renderer/render_widget.h +++ b/content/renderer/render_widget.h @@ -77,8 +77,7 @@ class CONTENT_EXPORT RenderWidget // Creates a new RenderWidget. The opener_id is the routing ID of the // RenderView that this widget lives inside. static RenderWidget* Create(int32 opener_id, - WebKit::WebPopupType popup_type, - const WebKit::WebScreenInfo& screen_info); + WebKit::WebPopupType popup_type); // Creates a WebWidget based on the popup type. static WebKit::WebWidget* CreateWebWidget(RenderWidget* render_widget); @@ -167,7 +166,6 @@ class CONTENT_EXPORT RenderWidget }; RenderWidget(WebKit::WebPopupType popup_type, - const WebKit::WebScreenInfo& screen_info, bool swapped_out); virtual ~RenderWidget(); @@ -517,9 +515,6 @@ class CONTENT_EXPORT RenderWidget // case NULL is added to the queue. std::deque<ViewHostMsg_UpdateRect*> updates_pending_swap_; - // Properties of the screen hosting this RenderWidget instance. - WebKit::WebScreenInfo screen_info_; - // Set to true if we should invert all pixels. bool invert_; diff --git a/content/renderer/render_widget_fullscreen.cc b/content/renderer/render_widget_fullscreen.cc index dfb5c13..cdfddf3 100644 --- a/content/renderer/render_widget_fullscreen.cc +++ b/content/renderer/render_widget_fullscreen.cc @@ -31,7 +31,7 @@ void RenderWidgetFullscreen::show(WebKit::WebNavigationPolicy) { } RenderWidgetFullscreen::RenderWidgetFullscreen() - : RenderWidget(WebKit::WebPopupTypeNone, WebKit::WebScreenInfo(), false) { + : RenderWidget(WebKit::WebPopupTypeNone, false) { } RenderWidgetFullscreen::~RenderWidgetFullscreen() {} diff --git a/content/test/render_view_test.cc b/content/test/render_view_test.cc index 66b590d..76e2c0e 100644 --- a/content/test/render_view_test.cc +++ b/content/test/render_view_test.cc @@ -15,7 +15,6 @@ #include "third_party/WebKit/Source/WebKit/chromium/public/WebHistoryItem.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebInputEvent.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebKit.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebScreenInfo.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebScriptController.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebScriptSource.h" #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebURLRequest.h" @@ -179,7 +178,6 @@ void RenderViewTest::SetUp() { false, false, 1, - WebKit::WebScreenInfo(), NULL, AccessibilityModeOff); view->AddRef(); |