Make page popups work under OOPIF
The following changes were needed for select menu popups to work from
an out of process iframe:
- the ShowWidget message has to be processed by the inactive subframe
RenderViewHostImpl
- the view_screen_rect on the OOPIF RenderWidget must get updated
properly, reflecting the location and size of the OOPIF on the screen
- ChromeClient::viewportToScreen in Blink has to become frame specific,
since it needs to use the Widget associated with the local roo
BUG=554119
CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_site_isolation
Review URL: https://codereview.chromium.org/1814863002
Cr-Commit-Position: refs/heads/master@{#382209}
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index 0a748f1..95eba77b 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -2226,8 +2226,10 @@
}
void WebContentsImpl::SendScreenRects() {
- RenderWidgetHostImpl::From(GetRenderViewHost()->GetWidget())
- ->SendScreenRects();
+ for (FrameTreeNode* node : frame_tree_.Nodes()) {
+ if (node->current_frame_host()->GetRenderWidgetHost())
+ node->current_frame_host()->GetRenderWidgetHost()->SendScreenRects();
+ }
RenderWidgetHostViewBase* rwhv =
static_cast<RenderWidgetHostViewBase*>(GetRenderWidgetHostView());