Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(600)

Unified Diff: content/browser/web_contents/web_contents_impl.cc

Issue 1426403006: Reland #1 of: Move WebUI ownership from the RenderFrameHostManager to the RenderFrameHost. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address CR comments. Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/web_contents/web_contents_impl.h ('k') | content/browser/webui/web_ui_impl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/web_contents/web_contents_impl.cc
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index fdd38e2540374d9c049cd2b5289c77cfacd2dc6a..f7adc26453c33eac9b8c575c80a96287a5813cf1 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -424,6 +424,9 @@ WebContentsImpl::~WebContentsImpl() {
frame_tree_.ForEach(
base::Bind(&RenderFrameHostManager::ClearRFHsPendingShutdown));
+ // Destroy all WebUI instances.
+ frame_tree_.ForEach(base::Bind(&RenderFrameHostManager::ClearWebUIInstances));
+
ClearAllPowerSaveBlockers();
for (std::set<RenderWidgetHostImpl*>::iterator iter =
@@ -846,12 +849,13 @@ WebUI* WebContentsImpl::CreateSubframeWebUI(const GURL& url,
}
WebUI* WebContentsImpl::GetWebUI() const {
- return GetRenderManager()->web_ui() ? GetRenderManager()->web_ui()
- : GetRenderManager()->pending_web_ui();
+ WebUI* commited_web_ui = GetCommittedWebUI();
+ return commited_web_ui ? commited_web_ui
+ : GetRenderManager()->GetNavigatingWebUI();
}
WebUI* WebContentsImpl::GetCommittedWebUI() const {
- return GetRenderManager()->web_ui();
+ return frame_tree_.root()->current_frame_host()->web_ui();
}
void WebContentsImpl::SetUserAgentOverride(const std::string& override) {
@@ -918,8 +922,12 @@ const base::string16& WebContentsImpl::GetTitle() const {
if (entry) {
return entry->GetTitleForDisplay(accept_languages);
}
- WebUI* our_web_ui = GetRenderManager()->pending_web_ui() ?
- GetRenderManager()->pending_web_ui() : GetRenderManager()->web_ui();
+
+ WebUI* navigating_web_ui = GetRenderManager()->GetNavigatingWebUI();
+ WebUI* our_web_ui = navigating_web_ui
+ ? navigating_web_ui
+ : GetRenderManager()->current_frame_host()->web_ui();
+
if (our_web_ui) {
// Don't override the title in view source mode.
entry = controller_.GetVisibleEntry();
@@ -3854,18 +3862,6 @@ void WebContentsImpl::RenderViewCreated(RenderViewHost* render_view_host) {
Source<WebContents>(this),
Details<RenderViewHost>(render_view_host));
- // When we're creating views, we're still doing initial setup, so we always
- // use the pending Web UI rather than any possibly existing committed one.
- if (GetRenderManager()->pending_web_ui())
- GetRenderManager()->pending_web_ui()->RenderViewCreated(render_view_host);
-
- if (base::CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kEnableBrowserSideNavigation) &&
- GetRenderManager()->speculative_web_ui()) {
- GetRenderManager()->speculative_web_ui()->RenderViewCreated(
- render_view_host);
- }
-
NavigationEntry* entry = controller_.GetPendingEntry();
if (entry && entry->IsViewSourceMode()) {
// Put the renderer in view source mode.
@@ -4280,7 +4276,7 @@ int WebContentsImpl::CreateSwappedOutRenderView(
GetRenderManager()->CreateRenderFrameProxy(instance);
} else {
GetRenderManager()->CreateRenderFrame(
- instance, nullptr, CREATE_RF_SWAPPED_OUT | CREATE_RF_HIDDEN,
+ instance, CREATE_RF_SWAPPED_OUT | CREATE_RF_HIDDEN,
&render_view_routing_id);
}
return render_view_routing_id;
@@ -4454,7 +4450,7 @@ NavigationControllerImpl& WebContentsImpl::GetControllerForRenderManager() {
return GetController();
}
-scoped_ptr<WebUIImpl> WebContentsImpl::CreateWebUIForRenderManager(
+scoped_ptr<WebUIImpl> WebContentsImpl::CreateWebUIForRenderFrameHost(
const GURL& url) {
return scoped_ptr<WebUIImpl>(static_cast<WebUIImpl*>(CreateWebUI(
url, std::string())));
« no previous file with comments | « content/browser/web_contents/web_contents_impl.h ('k') | content/browser/webui/web_ui_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698