| 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 e4c7fd7f0eb44e0417a87ccb26a498e45084f89e..9e9b5068fbe3b64d80af1f2e09087774edcdab30 100644
|
| --- a/content/browser/frame_host/render_frame_host_manager.cc
|
| +++ b/content/browser/frame_host/render_frame_host_manager.cc
|
| @@ -218,7 +218,6 @@ RenderFrameHostManager::RenderFrameHostManager(
|
| render_widget_delegate_(render_widget_delegate),
|
| proxy_hosts_(new RenderFrameProxyHostMap(this)),
|
| interstitial_page_(nullptr),
|
| - current_web_ui_is_navigating_(false),
|
| weak_factory_(this) {
|
| DCHECK(frame_tree_node_);
|
| }
|
| @@ -283,21 +282,6 @@ RenderViewHostImpl* RenderFrameHostManager::pending_render_view_host() const {
|
| return pending_render_frame_host_->render_view_host();
|
| }
|
|
|
| -WebUIImpl* RenderFrameHostManager::GetNavigatingWebUI() const {
|
| - if (current_web_ui_is_navigating_)
|
| - return render_frame_host_->web_ui();
|
| -
|
| - if (base::CommandLine::ForCurrentProcess()->HasSwitch(
|
| - switches::kEnableBrowserSideNavigation)) {
|
| - if (speculative_render_frame_host_)
|
| - return speculative_render_frame_host_->web_ui();
|
| - } else {
|
| - if (pending_render_frame_host_)
|
| - return pending_render_frame_host_->web_ui();
|
| - }
|
| - return nullptr;
|
| -}
|
| -
|
| RenderWidgetHostView* RenderFrameHostManager::GetRenderWidgetHostView() const {
|
| if (interstitial_page_)
|
| return interstitial_page_->GetView();
|
| @@ -414,8 +398,8 @@ RenderFrameHostImpl* RenderFrameHostManager::Navigate(
|
| if (!InitRenderView(dest_render_frame_host->render_view_host(), nullptr))
|
| return nullptr;
|
|
|
| - if (GetNavigatingWebUI()) {
|
| - GetNavigatingWebUI()->RenderViewCreated(
|
| + if (dest_render_frame_host->web_ui()) {
|
| + dest_render_frame_host->web_ui()->RenderViewCreated(
|
| dest_render_frame_host->render_view_host());
|
| }
|
|
|
| @@ -669,14 +653,15 @@ void RenderFrameHostManager::CommitPendingIfNecessary(
|
| RenderFrameHostImpl* render_frame_host,
|
| bool was_caused_by_user_gesture) {
|
| if (!pending_render_frame_host_ && !speculative_render_frame_host_) {
|
| - DCHECK(!current_web_ui_is_navigating_ || render_frame_host_->web_ui());
|
|
|
| // We should only hear this from our current renderer.
|
| DCHECK_EQ(render_frame_host_, render_frame_host);
|
|
|
| - // A commit is required if there is a navigating WebUI, even without a
|
| - // pending or speculative RenderFrameHost.
|
| - if (GetNavigatingWebUI())
|
| + // If the current RenderFrameHost has a WebUI it must be committed.
|
| + // Note: if one tries to move same-site commit logic into RenderFrameHost
|
| + // itself, mind that the focus setting logic inside CommitPending also needs
|
| + // to be moved there.
|
| + if (render_frame_host_->web_ui())
|
| CommitPending();
|
| return;
|
| }
|
| @@ -1055,7 +1040,6 @@ RenderFrameHostImpl* RenderFrameHostManager::GetFrameHostForNavigation(
|
| speculative_render_frame_host_->render_view_host());
|
| }
|
| DCHECK(speculative_render_frame_host_);
|
| - DCHECK_EQ(GetNavigatingWebUI(), speculative_render_frame_host_->web_ui());
|
|
|
| navigation_rfh = speculative_render_frame_host_.get();
|
|
|
| @@ -1068,7 +1052,6 @@ RenderFrameHostImpl* RenderFrameHostManager::GetFrameHostForNavigation(
|
| // RFH isn't live.)
|
| CommitPending();
|
| }
|
| - DCHECK(!current_web_ui_is_navigating_);
|
| }
|
| DCHECK(navigation_rfh &&
|
| (navigation_rfh == render_frame_host_.get() ||
|
| @@ -1082,8 +1065,8 @@ RenderFrameHostImpl* RenderFrameHostManager::GetFrameHostForNavigation(
|
| if (!InitRenderView(navigation_rfh->render_view_host(), nullptr))
|
| return nullptr;
|
|
|
| - if (GetNavigatingWebUI()) {
|
| - GetNavigatingWebUI()->RenderViewCreated(
|
| + if (navigation_rfh->web_ui()) {
|
| + navigation_rfh->web_ui()->RenderViewCreated(
|
| navigation_rfh->render_view_host());
|
| }
|
|
|
| @@ -1106,9 +1089,6 @@ RenderFrameHostImpl* RenderFrameHostManager::GetFrameHostForNavigation(
|
| void RenderFrameHostManager::CleanUpNavigation() {
|
| CHECK(base::CommandLine::ForCurrentProcess()->HasSwitch(
|
| switches::kEnableBrowserSideNavigation));
|
| - // TODO(carlosk): the discarding of the current RFH WebUI and the cleanup of
|
| - // the speculative RFH should not always happen together.
|
| - current_web_ui_is_navigating_ = false;
|
| if (speculative_render_frame_host_)
|
| DiscardUnusedFrame(UnsetSpeculativeRenderFrameHost());
|
| }
|
| @@ -1734,7 +1714,6 @@ bool RenderFrameHostManager::CreateSpeculativeRenderFrameHost(
|
| SiteInstance* new_instance) {
|
| CHECK(new_instance);
|
| CHECK_NE(old_instance, new_instance);
|
| - CHECK(!current_web_ui_is_navigating_);
|
|
|
| // The process for the new SiteInstance may (if we're sharing a process with
|
| // another host that already initialized it) or may not (we have our own
|
| @@ -2089,8 +2068,6 @@ void RenderFrameHostManager::CommitPending() {
|
| bool will_focus_location_bar = delegate_->FocusLocationBarByDefault();
|
|
|
| if (!pending_render_frame_host_ && !speculative_render_frame_host_) {
|
| - DCHECK_EQ(current_web_ui_is_navigating_, !!render_frame_host_->web_ui());
|
| - current_web_ui_is_navigating_ = false;
|
| // If there's no pending/speculative RenderFrameHost then the current
|
| // RenderFrameHost is committing.
|
| if (will_focus_location_bar)
|
| @@ -2292,7 +2269,6 @@ RenderFrameHostImpl* RenderFrameHostManager::UpdateStateForNavigate(
|
|
|
| // New SiteInstance: create a pending RFH to navigate.
|
|
|
| - current_web_ui_is_navigating_ = false;
|
| CreatePendingRenderFrameHost(current_instance, new_instance.get());
|
| DCHECK(pending_render_frame_host_);
|
| if (!pending_render_frame_host_)
|
| @@ -2304,9 +2280,6 @@ RenderFrameHostImpl* RenderFrameHostManager::UpdateStateForNavigate(
|
| pending_render_frame_host_->render_view_host());
|
| }
|
|
|
| - // We now have a pending RFH and possibly an associated pending WebUI.
|
| - DCHECK_EQ(GetNavigatingWebUI(), pending_render_frame_host_->web_ui());
|
| -
|
| // Check if our current RFH is live before we set up a transition.
|
| if (!render_frame_host_->IsRenderFrameLive()) {
|
| // The current RFH is not live. There's no reason to sit around with a
|
| @@ -2382,19 +2355,15 @@ void RenderFrameHostManager::UpdateWebUIOnCurrentFrameHost(const GURL& dest_url,
|
| if (changed_web_ui)
|
| CheckWebUITransition(previous_web_ui_type, dest_url, dest_is_restore);
|
|
|
| - // If there is a WebUI in the current RenderFrameHost, it will navigate.
|
| - current_web_ui_is_navigating_ = !!render_frame_host_->web_ui();
|
| - DCHECK_EQ(GetNavigatingWebUI(), render_frame_host_->web_ui());
|
| -
|
| // If the current RenderFrameHost has a WebUI and the associated RenderFrame
|
| // is alive, notify to the WebUI that the RenderView is being created or
|
| // reused depending on whether the WebUI was changed or not.
|
| - if (GetNavigatingWebUI() && render_frame_host_->IsRenderFrameLive()) {
|
| + if (render_frame_host_->web_ui() && render_frame_host_->IsRenderFrameLive()) {
|
| if (changed_web_ui) {
|
| - GetNavigatingWebUI()->RenderViewCreated(
|
| + render_frame_host_->web_ui()->RenderViewCreated(
|
| render_frame_host_->render_view_host());
|
| } else {
|
| - GetNavigatingWebUI()->RenderViewReused(
|
| + render_frame_host_->web_ui()->RenderViewReused(
|
| render_frame_host_->render_view_host(),
|
| frame_tree_node_->IsMainFrame());
|
| }
|
| @@ -2404,7 +2373,6 @@ void RenderFrameHostManager::UpdateWebUIOnCurrentFrameHost(const GURL& dest_url,
|
| void RenderFrameHostManager::CancelPending() {
|
| TRACE_EVENT1("navigation", "RenderFrameHostManager::CancelPending",
|
| "FrameTreeNode id", frame_tree_node_->frame_tree_node_id());
|
| - current_web_ui_is_navigating_ = false;
|
| DiscardUnusedFrame(UnsetPendingRenderFrameHost());
|
| }
|
|
|
| @@ -2417,8 +2385,6 @@ RenderFrameHostManager::UnsetPendingRenderFrameHost() {
|
| pending_render_frame_host.get(),
|
| render_frame_host_.get());
|
|
|
| - current_web_ui_is_navigating_ = false;
|
| -
|
| // We no longer need to prevent the process from exiting.
|
| pending_render_frame_host->GetProcess()->RemovePendingView();
|
|
|
|
|