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;
}