| Index: content/browser/loader/cross_site_resource_handler.cc
|
| diff --git a/content/browser/loader/cross_site_resource_handler.cc b/content/browser/loader/cross_site_resource_handler.cc
|
| index b05ac5d8e4f13255d7839e98d88f8312a9af8dd1..0b9e6a77aa1f38a0dd34b668a1681bedc5d9fcbe 100644
|
| --- a/content/browser/loader/cross_site_resource_handler.cc
|
| +++ b/content/browser/loader/cross_site_resource_handler.cc
|
| @@ -86,47 +86,6 @@ void OnCrossSiteResponseHelper(const CrossSiteResponseParams& params) {
|
| }
|
| }
|
|
|
| -// Determines whether a navigation to |dest_url| may be completed using an
|
| -// existing RenderFrameHost, or whether transferring to a new RenderFrameHost
|
| -// backed by a different render process is required. This is a security policy
|
| -// check determined by the current site isolation mode, and must be done
|
| -// before the resource at |dest_url| is delivered to |rfh|.
|
| -//
|
| -// When this function returns true for a subframe, an out-of-process iframe
|
| -// must be created.
|
| -//
|
| -// TODO(nick): Move this function to RFHM.
|
| -bool IsRendererTransferNeededForNavigation(RenderFrameHostImpl* rfh,
|
| - const GURL& dest_url) {
|
| - // A transfer is not needed if the current SiteInstance doesn't yet have a
|
| - // site. This is the case for tests that use NavigateToURL.
|
| - if (!rfh->GetSiteInstance()->HasSite())
|
| - return false;
|
| -
|
| - // For now, GuestViews never transfer on cross-site navigations.
|
| - WebContentsImpl* web_contents =
|
| - static_cast<WebContentsImpl*>(WebContents::FromRenderFrameHost(rfh));
|
| - if (web_contents->GetBrowserPluginGuest())
|
| - return false;
|
| -
|
| - GURL effective_url = SiteInstanceImpl::GetEffectiveURL(
|
| - rfh->GetSiteInstance()->GetBrowserContext(), dest_url);
|
| -
|
| - // TODO(nasko, nick): These following --site-per-process checks are
|
| - // overly simplistic. Update them to match all the cases
|
| - // considered by RenderFrameHostManager::DetermineSiteInstanceForURL.
|
| - if (SiteInstance::IsSameWebSite(rfh->GetSiteInstance()->GetBrowserContext(),
|
| - rfh->GetSiteInstance()->GetSiteURL(),
|
| - dest_url)) {
|
| - return false; // The same site, no transition needed.
|
| - }
|
| -
|
| - // The sites differ. If either one requires a dedicated process,
|
| - // then a transfer is needed.
|
| - return rfh->GetSiteInstance()->RequiresDedicatedProcess() ||
|
| - SiteIsolationPolicy::DoesSiteRequireDedicatedProcess(effective_url);
|
| -}
|
| -
|
| // Returns whether a transfer is needed by doing a check on the UI thread.
|
| CrossSiteResourceHandler::NavigationDecision
|
| CheckNavigationPolicyOnUI(GURL real_url, int process_id, int render_frame_id) {
|
| @@ -140,7 +99,8 @@ CheckNavigationPolicyOnUI(GURL real_url, int process_id, int render_frame_id) {
|
| if (!rfh)
|
| return CrossSiteResourceHandler::NavigationDecision::CANCEL_REQUEST;
|
|
|
| - if (IsRendererTransferNeededForNavigation(rfh, real_url))
|
| + RenderFrameHostManager* manager = rfh->frame_tree_node()->render_manager();
|
| + if (manager->IsRendererTransferNeededForNavigation(rfh, real_url))
|
| return CrossSiteResourceHandler::NavigationDecision::TRANSFER_REQUIRED;
|
| else
|
| return CrossSiteResourceHandler::NavigationDecision::USE_EXISTING_RENDERER;
|
|
|