Refactor handling of WebUI objects in the navigation code.

WebUI handling in the navigation code is more complex than necessary at
this point in time. The navigation model has changed to require each
WebUI to be isolated from the rest in r681094, which means we no
longer need the concept of pending WebUI on the RenderFrameHost.

This CL also removes the restriction of WebUIs being created only for
main frames, enabling support for site isolated WebUIs in subframes.

Bug: 557116, 713313, 1002276, 1005506
Change-Id: I996550c6611f5d327d87189dbb88ff657bdc709c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1853865
Commit-Queue: Nasko Oskov <[email protected]>
Reviewed-by: Alex Moshchuk <[email protected]>
Reviewed-by: dstockwell <[email protected]>
Reviewed-by: Giovanni Ortuño Urquidi <[email protected]>
Reviewed-by: Demetrios Papadopoulos <[email protected]>
Cr-Commit-Position: refs/heads/master@{#710179}
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index 6bab924..3ba2396 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -1253,9 +1253,14 @@
 }
 
 WebUI* WebContentsImpl::GetWebUI() {
-  WebUI* commited_web_ui = GetCommittedWebUI();
-  return commited_web_ui ? commited_web_ui
-                         : GetRenderManager()->GetNavigatingWebUI();
+  WebUI* committed_web_ui = GetCommittedWebUI();
+  if (committed_web_ui)
+    return committed_web_ui;
+
+  if (GetRenderManager()->speculative_frame_host())
+    return GetRenderManager()->speculative_frame_host()->web_ui();
+
+  return nullptr;
 }
 
 WebUI* WebContentsImpl::GetCommittedWebUI() {
@@ -1339,11 +1344,10 @@
     return entry->GetTitleForDisplay();
   }
 
-  WebUI* navigating_web_ui = GetRenderManager()->GetNavigatingWebUI();
-  WebUI* our_web_ui = navigating_web_ui
-                          ? navigating_web_ui
-                          : GetRenderManager()->current_frame_host()->web_ui();
-
+  WebUI* our_web_ui =
+      GetRenderManager()->speculative_frame_host()
+          ? GetRenderManager()->speculative_frame_host()->web_ui()
+          : GetRenderManager()->current_frame_host()->web_ui();
   if (our_web_ui) {
     // Don't override the title in view source mode.
     entry = controller_.GetVisibleEntry();