summaryrefslogtreecommitdiffstats
path: root/content
diff options
context:
space:
mode:
authorvarunjain@chromium.org <varunjain@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-06-01 15:39:22 +0000
committervarunjain@chromium.org <varunjain@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-06-01 15:39:22 +0000
commitdfec1959de9bf1fff9a0b16d96cd64947f543d0f (patch)
tree34cc78751bbe0939be805abafef338d02d3a645e /content
parentcf4972a0ff960ea8ce5a90c9a5516d22dcf1525a (diff)
downloadchromium_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.cc1
-rw-r--r--content/browser/renderer_host/render_message_filter.h2
-rw-r--r--content/browser/renderer_host/render_message_filter_win.cc6
-rw-r--r--content/browser/renderer_host/render_view_host_impl.cc14
-rw-r--r--content/browser/renderer_host/render_widget_host_impl.cc9
-rw-r--r--content/browser/renderer_host/render_widget_host_impl.h2
-rw-r--r--content/common/view_messages.h10
-rw-r--r--content/renderer/browser_plugin/browser_plugin_channel_manager.cc1
-rw-r--r--content/renderer/render_thread_impl.cc1
-rw-r--r--content/renderer/render_view_impl.cc8
-rw-r--r--content/renderer/render_view_impl.h2
-rw-r--r--content/renderer/render_widget.cc21
-rw-r--r--content/renderer/render_widget.h7
-rw-r--r--content/renderer/render_widget_fullscreen.cc2
-rw-r--r--content/test/render_view_test.cc2
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(&params.screen_info);
- } else {
- content::RenderWidgetHostViewPort::GetDefaultScreenInfo(
- &params.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();