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

Unified Diff: content/browser/frame_host/render_frame_host_manager.cc

Issue 950223006: Fix RenderFrameHostChanged WebContentsObserver methods (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove leftover log and empty lines Created 5 years, 10 months 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
Index: content/browser/frame_host/render_frame_host_manager.cc
diff --git a/content/browser/frame_host/render_frame_host_manager.cc b/content/browser/frame_host/render_frame_host_manager.cc
index f9e2bf976fcbe85f71d53b78f7fbd8fe5bcf37f9..70bbf11c42fd9de9d4b285cae0552d9639a47f7a 100644
--- a/content/browser/frame_host/render_frame_host_manager.cc
+++ b/content/browser/frame_host/render_frame_host_manager.cc
@@ -109,6 +109,14 @@ void RenderFrameHostManager::Init(BrowserContext* browser_context,
SetRenderFrameHost(CreateRenderFrameHost(site_instance, view_routing_id,
frame_routing_id, flags));
+ // Notify the delegate of the creation of the current RenderFrameHost.
+ // Note: do it only for subframes, as the main frame case is taken care of
Charlie Reis 2015/03/02 18:38:25 "Note: do it" -> "Do this"
nasko 2015/03/02 19:30:53 Done.
+ // by WebContentsImpl::Init.
+ if (!frame_tree_node_->IsMainFrame()) {
+ delegate_->NotifySwappedFromRenderManager(
+ nullptr, render_frame_host_.get(), false);
+ }
+
// Keep track of renderer processes as they start to shut down or are
// crashed/killed.
registrar_.Add(this, NOTIFICATION_RENDERER_PROCESS_CLOSED,
@@ -224,14 +232,18 @@ RenderFrameHostImpl* RenderFrameHostManager::Navigate(
// Now that we've created a new renderer, be sure to hide it if it isn't
// our primary one. Otherwise, we might crash if we try to call Show()
// on it later.
- if (dest_render_frame_host != render_frame_host_ &&
- dest_render_frame_host->GetView()) {
- dest_render_frame_host->GetView()->Hide();
+ if (dest_render_frame_host != render_frame_host_) {
+ if (dest_render_frame_host->GetView())
+ dest_render_frame_host->GetView()->Hide();
} else {
- // Notify here as we won't be calling CommitPending (which does the
- // notify).
- delegate_->NotifySwappedFromRenderManager(
- NULL, render_frame_host_.get(), frame_tree_node_->IsMainFrame());
+ // TODO(nasko): This is a very ugly hack. The Chrome extensions process
+ // manager still uses NotificationService and expects to see a
+ // RenderViewHost changed notification after WebContents and
+ // RenderFrameHostManager are completely initialized. This should be
+ // removed once the process manager moves away from NotificationService.
+ // See https://crbug.com/462682
Charlie Reis 2015/03/02 18:38:25 nit: End with period.
nasko 2015/03/02 19:30:54 Done.
+ delegate_->NotifyMainFrameSwappedFromRenderManager(
+ nullptr, render_frame_host_.get());
}
}

Powered by Google App Engine
This is Rietveld 408576698