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

Unified Diff: chrome/browser/chrome_content_browser_client.cc

Issue 13877028: Renderer initiated navigations from non instant process should not fall into instant. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixing another recently added test. Created 7 years, 8 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
« no previous file with comments | « chrome/browser/chrome_content_browser_client.h ('k') | chrome/browser/policy/policy_browsertest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/chrome_content_browser_client.cc
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
index a9c255b818839023ea63c7eefa127525cf2e8cb5..fd6b7ea0290c12709eb21a9e2b2407be4ab57292 100644
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -433,37 +433,6 @@ int GetCrashSignalFD(const CommandLine& command_line) {
}
#endif // defined(OS_POSIX) && !defined(OS_MACOSX)
-// Transforms the input |url| into its "effective URL". The returned URL
-// facilitates grouping process-per-site. The |url| is transformed, for
-// example, from
-//
-// https://www.google.com/search?espv=1&q=tractors
-//
-// to the effective URL
-//
-// chrome-search://www.google.com/search?espv=1&q=tractors
-//
-// Notice the scheme change.
-//
-// If the input is already an effective URL then that same URL is returned.
-GURL GetEffectiveURLForInstant(const GURL& url, Profile* profile) {
- CHECK(chrome::ShouldAssignURLToInstantRenderer(url, profile))
- << "Error granting Instant access.";
-
- if (url.SchemeIs(chrome::kChromeSearchScheme))
- return url;
-
- GURL effective_url(url);
-
- // Replace the scheme with "chrome-search:".
- url_canon::Replacements<char> replacements;
- std::string search_scheme(chrome::kChromeSearchScheme);
- replacements.SetScheme(search_scheme.data(),
- url_parse::Component(0, search_scheme.length()));
- effective_url = effective_url.ReplaceComponents(replacements);
- return effective_url;
-}
-
#if !defined(OS_CHROMEOS)
GURL GetEffectiveURLForSignin(const GURL& url) {
CHECK(SigninManager::IsWebBasedSigninFlowURL(url));
@@ -741,17 +710,42 @@ void ChromeContentBrowserClient::RenderProcessHostCreated(
host->Send(new ChromeViewMsg_SetContentSettingRules(rules));
}
+GURL ChromeContentBrowserClient::GetPossiblyPrivilegedURL(
+ content::BrowserContext* browser_context,
+ const GURL& url,
+ bool is_renderer_initiated,
+ content::SiteInstance* current_instance) {
+ Profile* profile = Profile::FromBrowserContext(browser_context);
+ if (!profile)
+ return url;
+
+ // Only return the privileged instant URL if we are entering from a browser-
+ // initiated navigation or if we are already in the instant process.
+ bool is_instant_process = false;
+ int process_id = current_instance->GetProcess()->GetID();
+ InstantService* instant_service =
+ InstantServiceFactory::GetForProfile(profile);
+ if (instant_service)
+ is_instant_process = instant_service->IsInstantProcess(process_id);
+
+ DCHECK_EQ(is_instant_process,
+ chrome::IsPrivilegedURLForInstant(current_instance->GetSiteURL()));
+ if (!is_renderer_initiated || is_instant_process) {
+ // If the input |url| should be assigned to the Instant renderer, make its
+ // privileged URL distinct from other URLs on the search provider's domain.
+ if (chrome::ShouldAssignURLToInstantRenderer(url, profile))
+ return chrome::GetPrivilegedURLForInstant(url, profile);
+ }
+
+ return url;
+}
+
GURL ChromeContentBrowserClient::GetEffectiveURL(
content::BrowserContext* browser_context, const GURL& url) {
Profile* profile = Profile::FromBrowserContext(browser_context);
if (!profile)
return url;
- // If the input |url| should be assigned to the Instant renderer, make its
- // effective URL distinct from other URLs on the search provider's domain.
- if (chrome::ShouldAssignURLToInstantRenderer(url, profile))
- return GetEffectiveURLForInstant(url, profile);
-
#if !defined(OS_CHROMEOS)
// If the input |url| should be assigned to the Signin renderer, make its
// effective URL distinct from other URLs on the signin service's domain.
« no previous file with comments | « chrome/browser/chrome_content_browser_client.h ('k') | chrome/browser/policy/policy_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698