Index: content/browser/renderer_host/render_widget_host_impl.cc |
diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc |
index 73652f023e27f3afed577d177ab2df14383d8a33..dd168621d4ccf389242146788fb609cd07b9e8f4 100644 |
--- a/content/browser/renderer_host/render_widget_host_impl.cc |
+++ b/content/browser/renderer_host/render_widget_host_impl.cc |
@@ -147,6 +147,7 @@ RenderWidgetHostImpl::RenderWidgetHostImpl(RenderWidgetHostDelegate* delegate, |
is_accelerated_compositing_active_(false), |
repaint_ack_pending_(false), |
resize_ack_pending_(false), |
+ renderer_screen_info_out_of_date_(false), |
overdraw_bottom_height_(0.f), |
should_auto_resize_(false), |
waiting_for_screen_rects_ack_(false), |
@@ -526,6 +527,7 @@ void RenderWidgetHostImpl::WasResized() { |
bool size_changed = new_size != current_size_; |
bool side_payload_changed = |
+ renderer_screen_info_out_of_date_ || |
old_physical_backing_size != physical_backing_size_ || |
was_fullscreen != is_fullscreen_ || |
old_overdraw_bottom_height != overdraw_bottom_height_; |
@@ -542,12 +544,18 @@ void RenderWidgetHostImpl::WasResized() { |
if (!new_size.IsEmpty() && !physical_backing_size_.IsEmpty() && size_changed) |
resize_ack_pending_ = true; |
- if (!Send(new ViewMsg_Resize(routing_id_, new_size, physical_backing_size_, |
- overdraw_bottom_height_, |
- GetRootWindowResizerRect(), is_fullscreen_))) { |
+ ViewMsg_Resize_Params params; |
+ GetWebScreenInfo(¶ms.screen_info); |
piman
2013/05/25 00:37:25
This could be a bit expensive, like round-tripping
ccameron
2013/05/25 01:53:37
Yes, I was on the fence about this. I didn't initi
|
+ params.new_size = new_size; |
+ params.physical_backing_size = physical_backing_size_; |
+ params.overdraw_bottom_height = overdraw_bottom_height_; |
+ params.resizer_rect = GetRootWindowResizerRect(); |
+ params.is_fullscreen = is_fullscreen_; |
+ if (!Send(new ViewMsg_Resize(routing_id_, params))) { |
resize_ack_pending_ = false; |
} else { |
in_flight_size_ = new_size; |
+ renderer_screen_info_out_of_date_ = false; |
} |
} |
@@ -1333,9 +1341,11 @@ const NativeWebKeyboardEvent* |
} |
void RenderWidgetHostImpl::NotifyScreenInfoChanged() { |
- WebKit::WebScreenInfo screen_info; |
- GetWebScreenInfo(&screen_info); |
- Send(new ViewMsg_ScreenInfoChanged(GetRoutingID(), screen_info)); |
+ // The resize message (which may not happen immediately) will carry with it |
+ // the screen info as well as the new size (if the screen has changed scale |
+ // factor). |
+ renderer_screen_info_out_of_date_ = true; |
+ WasResized(); |
} |
void RenderWidgetHostImpl::GetSnapshotFromRenderer( |