| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/search/search.h" | 5 #include "chrome/browser/search/search.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/metrics/field_trial.h" | 8 #include "base/metrics/field_trial.h" |
| 9 #include "base/metrics/histogram.h" | 9 #include "base/metrics/histogram.h" |
| 10 #include "base/prefs/pref_service.h" | 10 #include "base/prefs/pref_service.h" |
| (...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 184 TemplateURLRef ref(template_url, i); | 184 TemplateURLRef ref(template_url, i); |
| 185 search_url = TemplateURLRefToGURL(ref, kDisableStartMargin, false, false); | 185 search_url = TemplateURLRefToGURL(ref, kDisableStartMargin, false, false); |
| 186 if (search_url.is_valid() && | 186 if (search_url.is_valid() && |
| 187 search::MatchesOriginAndPath(url, search_url)) | 187 search::MatchesOriginAndPath(url, search_url)) |
| 188 return true; | 188 return true; |
| 189 } | 189 } |
| 190 | 190 |
| 191 return false; | 191 return false; |
| 192 } | 192 } |
| 193 | 193 |
| 194 // Returns true if |contents| is rendered inside the Instant process for | |
| 195 // |profile|. | |
| 196 bool IsRenderedInInstantProcess(const content::WebContents* contents, | |
| 197 Profile* profile) { | |
| 198 const content::RenderProcessHost* process_host = | |
| 199 contents->GetRenderProcessHost(); | |
| 200 if (!process_host) | |
| 201 return false; | |
| 202 | 194 |
| 203 const InstantService* instant_service = | |
| 204 InstantServiceFactory::GetForProfile(profile); | |
| 205 if (!instant_service) | |
| 206 return false; | |
| 207 | |
| 208 return instant_service->IsInstantProcess(process_host->GetID()); | |
| 209 } | |
| 210 | 195 |
| 211 // |url| should either have a secure scheme or have a non-HTTPS base URL that | 196 // |url| should either have a secure scheme or have a non-HTTPS base URL that |
| 212 // the user specified using --google-base-url. (This allows testers to use | 197 // the user specified using --google-base-url. (This allows testers to use |
| 213 // --google-base-url to point at non-HTTPS servers, which eases testing.) | 198 // --google-base-url to point at non-HTTPS servers, which eases testing.) |
| 214 bool IsSuitableURLForInstant(const GURL& url, const TemplateURL* template_url) { | 199 bool IsSuitableURLForInstant(const GURL& url, const TemplateURL* template_url) { |
| 215 return template_url->HasSearchTermsReplacementKey(url) && | 200 return template_url->HasSearchTermsReplacementKey(url) && |
| 216 (url.SchemeIsSecure() || | 201 (url.SchemeIsSecure() || |
| 217 google_util::StartsWithCommandLineGoogleBaseURL(url)); | 202 google_util::StartsWithCommandLineGoogleBaseURL(url)); |
| 218 } | 203 } |
| 219 | 204 |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 325 switch (state) { | 310 switch (state) { |
| 326 case NEW_TAB_URL_VALID: | 311 case NEW_TAB_URL_VALID: |
| 327 // We can use the search provider's page. | 312 // We can use the search provider's page. |
| 328 return NewTabURLDetails(search_provider_url, state); | 313 return NewTabURLDetails(search_provider_url, state); |
| 329 case NEW_TAB_URL_INCOGNITO: | 314 case NEW_TAB_URL_INCOGNITO: |
| 330 // Incognito has its own New Tab. | 315 // Incognito has its own New Tab. |
| 331 return NewTabURLDetails(GURL(), state); | 316 return NewTabURLDetails(GURL(), state); |
| 332 default: | 317 default: |
| 333 // Use the local New Tab otherwise. | 318 // Use the local New Tab otherwise. |
| 334 return NewTabURLDetails(local_url, state); | 319 return NewTabURLDetails(local_url, state); |
| 335 }; | 320 } |
| 336 } | 321 } |
| 337 | 322 |
| 338 GURL url; | 323 GURL url; |
| 339 NewTabURLState state; | 324 NewTabURLState state; |
| 340 }; | 325 }; |
| 341 | 326 |
| 342 } // namespace | 327 } // namespace |
| 343 | 328 |
| 344 // Negative start-margin values prevent the "es_sm" parameter from being used. | 329 // Negative start-margin values prevent the "es_sm" parameter from being used. |
| 345 const int kDisableStartMargin = -1; | 330 const int kDisableStartMargin = -1; |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 454 } | 439 } |
| 455 | 440 |
| 456 bool ShouldAssignURLToInstantRenderer(const GURL& url, Profile* profile) { | 441 bool ShouldAssignURLToInstantRenderer(const GURL& url, Profile* profile) { |
| 457 return url.is_valid() && | 442 return url.is_valid() && |
| 458 profile && | 443 profile && |
| 459 IsInstantExtendedAPIEnabled() && | 444 IsInstantExtendedAPIEnabled() && |
| 460 (url.SchemeIs(chrome::kChromeSearchScheme) || | 445 (url.SchemeIs(chrome::kChromeSearchScheme) || |
| 461 IsInstantURL(url, profile)); | 446 IsInstantURL(url, profile)); |
| 462 } | 447 } |
| 463 | 448 |
| 449 bool IsRenderedInInstantProcess(const content::WebContents* contents, |
| 450 Profile* profile) { |
| 451 const content::RenderProcessHost* process_host = |
| 452 contents->GetRenderProcessHost(); |
| 453 if (!process_host) |
| 454 return false; |
| 455 |
| 456 const InstantService* instant_service = |
| 457 InstantServiceFactory::GetForProfile(profile); |
| 458 if (!instant_service) |
| 459 return false; |
| 460 |
| 461 return instant_service->IsInstantProcess(process_host->GetID()); |
| 462 } |
| 463 |
| 464 bool ShouldUseProcessPerSiteForInstantURL(const GURL& url, Profile* profile) { | 464 bool ShouldUseProcessPerSiteForInstantURL(const GURL& url, Profile* profile) { |
| 465 return ShouldAssignURLToInstantRenderer(url, profile) && | 465 return ShouldAssignURLToInstantRenderer(url, profile) && |
| 466 (url.host() == chrome::kChromeSearchLocalNtpHost || | 466 (url.host() == chrome::kChromeSearchLocalNtpHost || |
| 467 url.host() == chrome::kChromeSearchRemoteNtpHost); | 467 url.host() == chrome::kChromeSearchRemoteNtpHost); |
| 468 } | 468 } |
| 469 | 469 |
| 470 bool IsNTPURL(const GURL& url, Profile* profile) { | 470 bool IsNTPURL(const GURL& url, Profile* profile) { |
| 471 if (!url.is_valid()) | 471 if (!url.is_valid()) |
| 472 return false; | 472 return false; |
| 473 | 473 |
| (...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 843 | 843 |
| 844 // Given a FieldTrialFlags object, returns the boolean value of the provided | 844 // Given a FieldTrialFlags object, returns the boolean value of the provided |
| 845 // flag. | 845 // flag. |
| 846 bool GetBoolValueForFlagWithDefault(const std::string& flag, | 846 bool GetBoolValueForFlagWithDefault(const std::string& flag, |
| 847 bool default_value, | 847 bool default_value, |
| 848 const FieldTrialFlags& flags) { | 848 const FieldTrialFlags& flags) { |
| 849 return !!GetUInt64ValueForFlagWithDefault(flag, default_value ? 1 : 0, flags); | 849 return !!GetUInt64ValueForFlagWithDefault(flag, default_value ? 1 : 0, flags); |
| 850 } | 850 } |
| 851 | 851 |
| 852 } // namespace chrome | 852 } // namespace chrome |
| OLD | NEW |