Revert "Revert "Surface synchronization: Propagate ScreenInfo to OOPIFs/BrowserPlugin""

This reverts commit 28c691b74c89ad3baffcc8f8f67803739f145954.

Reason for revert: I chatted with Xiyuan offline and was able to reproduce the issue locally. I have a fix on top of this. It's easier to review the fix as a diff of this CL so I'm reverting the revert. 

The fix here: https://chromium-review.googlesource.com/c/chromium/src/+/740683

is in review.

Original change's description:
> Revert "Surface synchronization: Propagate ScreenInfo to OOPIFs/BrowserPlugin"
> 
> This reverts commit d31cbe5819368cf4a1070a9ae909dfff3ae93cdd.
> 
> Reason for revert:
> Breaks ChromeOS OOBE prior showing Gaia webview in CrossProcessFrameConnector::OnUpdateResizeParams.
> 
> [11202:11202:1026/151836.701915:VERBOSE1:wizard_controller.cc(484)] Showing login screen.
> [11202:11202:1026/151836.702070:VERBOSE1:login_display_host_impl.cc(755)] Login WebUI >> sign in
> [11202:11202:1026/151836.719557:INFO:signin_screen_handler.cc(1377)] Login WebUI >> active: 1, source: account-picker
> [11202:11202:1026/151836.749530:ERROR:bad_message.cc(23)] Terminating renderer for bad IPC message, reason 182
> [11202:11202:1026/151836.861720:FATAL:login_display_host_impl.cc(1001)] Renderer crash on login window
> 
> [1]: https://cs.chromium.org/chromium/src/content/browser/frame_host/cross_process_frame_connector.cc?rcl=1625766fb87150e4fd80eb95d14c9050e127216b&l=287
> 
> Original change's description:
> > Surface synchronization: Propagate ScreenInfo to OOPIFs/BrowserPlugin
> > 
> > ScreenInfo contains a bunch of parameters that we would like to synchronize
> > across nested clients such as device scale factor and color space.
> > 
> > This CL propagates ScreenInfo from the parent to child OOPIFs/BrowserPlugin
> > guests.
> > 
> > When the parent gets a ScreenInfo object on ViewMsg_Resize, it passes the
> > ScreenInfo along to BrowserPlugins and RenderFrameProxys. Those objects
> > then allocate a new LocalSurfaceId if the ResizeParams have changed and
> > propagate that information down to the child (through the browser).
> > 
> > Bug: 672962
> > Cq-Include-Trybots: master.tryserver.chromium.linux:linux_site_isolation
> > Change-Id: I9d48639c372ade2f94efb291bc102eceb9d42ea0
> > Reviewed-on: https://chromium-review.googlesource.com/733780
> > Commit-Queue: Fady Samuel <[email protected]>
> > Reviewed-by: Antoine Labour <[email protected]>
> > Reviewed-by: Ken Buchanan <[email protected]>
> > Cr-Commit-Position: refs/heads/master@{#511835}
> 
> [email protected],[email protected],[email protected]
> 
> Change-Id: I1bb85d74e53a34b2eff8227e8dd52556f0dd950b
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: 672962
> Cq-Include-Trybots: master.tryserver.chromium.linux:linux_site_isolation
> Reviewed-on: https://chromium-review.googlesource.com/740741
> Reviewed-by: Xiyuan Xia <[email protected]>
> Commit-Queue: Xiyuan Xia <[email protected]>
> Cr-Commit-Position: refs/heads/master@{#511987}

[email protected],[email protected],[email protected],[email protected]

Change-Id: Ic6f33f8844ba2a858fff27300364c1d6f8057382
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 672962
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_site_isolation
Reviewed-on: https://chromium-review.googlesource.com/741246
Reviewed-by: Fady Samuel <[email protected]>
Commit-Queue: Fady Samuel <[email protected]>
Cr-Commit-Position: refs/heads/master@{#512178}
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
index 7d81fb8..355666e 100644
--- a/content/renderer/render_widget.cc
+++ b/content/renderer/render_widget.cc
@@ -43,6 +43,7 @@
 #include "content/public/common/context_menu_params.h"
 #include "content/public/common/drop_data.h"
 #include "content/public/renderer/content_renderer_client.h"
+#include "content/renderer/browser_plugin/browser_plugin_manager.h"
 #include "content/renderer/cursor_utils.h"
 #include "content/renderer/devtools/render_widget_screen_metrics_emulator.h"
 #include "content/renderer/drop_data_builder.h"
@@ -1257,6 +1258,8 @@
       screen_info_.orientation_angle != params.screen_info.orientation_angle ||
       screen_info_.orientation_type != params.screen_info.orientation_type;
 
+  bool screen_info_changed = screen_info_ != params.screen_info;
+
   screen_info_ = params.screen_info;
 
   if (device_scale_factor_ != screen_info_.device_scale_factor) {
@@ -1340,6 +1343,15 @@
   if (orientation_changed)
     OnOrientationChange();
 
+  if (screen_info_changed) {
+    for (auto& observer : render_frame_proxies_)
+      observer.OnScreenInfoChanged(params.screen_info);
+
+    // Notify all BrowserPlugins of the updated ScreenInfo.
+    if (BrowserPluginManager::Get())
+      BrowserPluginManager::Get()->ScreenInfoChanged(params.screen_info);
+  }
+
   // If a resize ack is requested and it isn't set-up, then no more resizes will
   // come in and in general things will go wrong.
   DCHECK(!params.needs_resize_ack || next_paint_is_resize_ack());
@@ -2274,6 +2286,7 @@
       break;
   }
   web_screen_info.orientation_angle = screen_info_.orientation_angle;
+
   return web_screen_info;
 }