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());