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

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

Issue 2002633002: PlzNavigate: fix issue preventing navigations to WebUIs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Getting the StoragePartition from NavigationRequest Created 4 years, 7 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 60be8217a562339ebdfb4827bf32c39beb0d5d00..7539474ebd76710dc6cdbc9a895920832cc50ba1 100644
--- a/content/browser/frame_host/render_frame_host_manager.cc
+++ b/content/browser/frame_host/render_frame_host_manager.cc
@@ -735,17 +735,13 @@ void RenderFrameHostManager::ClearWebUIInstances() {
void RenderFrameHostManager::DidCreateNavigationRequest(
NavigationRequest* request) {
CHECK(IsBrowserSideNavigationEnabled());
- RenderFrameHostImpl* dest_rfh = GetFrameHostForNavigation(*request);
+ RenderFrameHostImpl* dest_rfh = GetFrameHostForNavigation(request);
DCHECK(dest_rfh);
- request->set_associated_site_instance_type(
- dest_rfh == render_frame_host_.get()
- ? NavigationRequest::AssociatedSiteInstanceType::CURRENT
- : NavigationRequest::AssociatedSiteInstanceType::SPECULATIVE);
Charlie Reis 2016/05/23 17:26:40 Just curious, what was the reason this needed to b
clamy 2016/05/24 11:18:32 Yes this was a TODO to move it to GetFrameHostForN
}
// PlzNavigate
RenderFrameHostImpl* RenderFrameHostManager::GetFrameHostForNavigation(
- const NavigationRequest& request) {
+ NavigationRequest* request) {
CHECK(IsBrowserSideNavigationEnabled());
SiteInstance* current_site_instance = render_frame_host_->GetSiteInstance();
@@ -756,11 +752,11 @@ RenderFrameHostImpl* RenderFrameHostManager::GetFrameHostForNavigation(
: nullptr;
scoped_refptr<SiteInstance> dest_site_instance = GetSiteInstanceForNavigation(
- request.common_params().url, request.source_site_instance(),
- request.dest_site_instance(), candidate_site_instance,
- request.common_params().transition,
- request.restore_type() != NavigationEntryImpl::RESTORE_NONE,
- request.is_view_source());
+ request->common_params().url, request->source_site_instance(),
+ request->dest_site_instance(), candidate_site_instance,
+ request->common_params().transition,
+ request->restore_type() != NavigationEntryImpl::RESTORE_NONE,
+ request->is_view_source());
// The appropriate RenderFrameHost to commit the navigation.
RenderFrameHostImpl* navigation_rfh = nullptr;
@@ -781,18 +777,18 @@ RenderFrameHostImpl* RenderFrameHostManager::GetFrameHostForNavigation(
// go cross-process. Check it first.
bool can_renderer_initiate_transfer =
render_frame_host_->IsRenderFrameLive() &&
- ShouldMakeNetworkRequestForURL(request.common_params().url) &&
+ ShouldMakeNetworkRequestForURL(request->common_params().url) &&
IsRendererTransferNeededForNavigation(render_frame_host_.get(),
- request.common_params().url);
+ request->common_params().url);
no_renderer_swap |=
- !request.browser_initiated() && !can_renderer_initiate_transfer;
+ !request->browser_initiated() && !can_renderer_initiate_transfer;
} else {
// Subframe navigations will use the current renderer, unless specifically
// allowed to swap processes.
- no_renderer_swap |= !CanSubframeSwapProcess(request.common_params().url,
- request.source_site_instance(),
- request.dest_site_instance());
+ no_renderer_swap |= !CanSubframeSwapProcess(request->common_params().url,
+ request->source_site_instance(),
+ request->dest_site_instance());
}
if (no_renderer_swap) {
@@ -805,8 +801,8 @@ RenderFrameHostImpl* RenderFrameHostManager::GetFrameHostForNavigation(
if (speculative_render_frame_host_)
DiscardUnusedFrame(UnsetSpeculativeRenderFrameHost());
- UpdatePendingWebUIOnCurrentFrameHost(request.common_params().url,
- request.bindings());
+ UpdatePendingWebUIOnCurrentFrameHost(request->common_params().url,
+ request->bindings());
navigation_rfh = render_frame_host_.get();
@@ -832,7 +828,7 @@ RenderFrameHostImpl* RenderFrameHostManager::GetFrameHostForNavigation(
DCHECK(speculative_render_frame_host_);
bool changed_web_ui = speculative_render_frame_host_->UpdatePendingWebUI(
- request.common_params().url, request.bindings());
+ request->common_params().url, request->bindings());
speculative_render_frame_host_->CommitPendingWebUI();
DCHECK_EQ(GetNavigatingWebUI(), speculative_render_frame_host_->web_ui());
notify_webui_of_rv_creation =
@@ -891,6 +887,11 @@ RenderFrameHostImpl* RenderFrameHostManager::GetFrameHostForNavigation(
if (notify_webui_of_rv_creation && GetNavigatingWebUI())
GetNavigatingWebUI()->RenderViewCreated(navigation_rfh->render_view_host());
+ request->set_associated_site_instance_type(
+ navigation_rfh == render_frame_host_.get()
+ ? NavigationRequest::AssociatedSiteInstanceType::CURRENT
+ : NavigationRequest::AssociatedSiteInstanceType::SPECULATIVE);
+
return navigation_rfh;
}

Powered by Google App Engine
This is Rietveld 408576698