Fix race between DPI and window size

Because the display scale factor and the window size are sent in two different
IPCs, and because the window size (ViewMsg_Resize) may be delayed (to avoid
spamming the renderer with resize messages while dragging), the renderer can
think it's using a different resolution than it is.

This merges the ViewMsg_ScreenInfoChanged and ViewMsg_Resize messages,
so that the renderer cannot not have a consistent view of the window size and
DPI.

BUG=239624

Review URL: https://chromiumcodereview.appspot.com/16048003

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@202814 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
index d1ece39..d85a131 100644
--- a/content/renderer/render_widget.cc
+++ b/content/renderer/render_widget.cc
@@ -339,7 +339,6 @@
     IPC_MESSAGE_HANDLER(ViewMsg_SmoothScrollCompleted, OnSmoothScrollCompleted)
     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)
 #if defined(OS_ANDROID)
     IPC_MESSAGE_HANDLER(ViewMsg_ImeBatchStateChanged, OnImeBatchStateChanged)
@@ -464,14 +463,13 @@
   CompleteInit();
 }
 
-void RenderWidget::OnResize(const gfx::Size& new_size,
-                            const gfx::Size& physical_backing_size,
-                            float overdraw_bottom_height,
-                            const gfx::Rect& resizer_rect,
-                            bool is_fullscreen) {
-  Resize(new_size, physical_backing_size, overdraw_bottom_height, resizer_rect,
-         is_fullscreen, SEND_RESIZE_ACK);
-  size_browser_expects_ = new_size;
+void RenderWidget::OnResize(const ViewMsg_Resize_Params& params) {
+  screen_info_ = params.screen_info;
+  SetDeviceScaleFactor(screen_info_.deviceScaleFactor);
+  Resize(params.new_size, params.physical_backing_size,
+         params.overdraw_bottom_height, params.resizer_rect,
+         params.is_fullscreen, SEND_RESIZE_ACK);
+  size_browser_expects_ = params.new_size;
 }
 
 void RenderWidget::OnChangeResizeRect(const gfx::Rect& resizer_rect) {
@@ -1953,12 +1951,6 @@
   webwidget_->setTextDirection(direction);
 }
 
-void RenderWidget::OnScreenInfoChanged(
-    const WebKit::WebScreenInfo& screen_info) {
-  screen_info_ = screen_info;
-  SetDeviceScaleFactor(screen_info.deviceScaleFactor);
-}
-
 void RenderWidget::OnUpdateScreenRects(const gfx::Rect& view_screen_rect,
                                        const gfx::Rect& window_screen_rect) {
   view_screen_rect_ = view_screen_rect;