Chromium Code Reviews| Index: chrome/browser/ui/toolbar/toolbar_model_impl.cc |
| diff --git a/chrome/browser/ui/toolbar/toolbar_model_impl.cc b/chrome/browser/ui/toolbar/toolbar_model_impl.cc |
| index 50df4f2e268ce70cf1ae3ba36a9ec5fd7632466f..e46fb0f747bce525847396a7f9ad54e02d5575f7 100644 |
| --- a/chrome/browser/ui/toolbar/toolbar_model_impl.cc |
| +++ b/chrome/browser/ui/toolbar/toolbar_model_impl.cc |
| @@ -51,6 +51,7 @@ ToolbarModelImpl::ToolbarModelImpl(ToolbarModelDelegate* delegate) |
| ToolbarModelImpl::~ToolbarModelImpl() { |
| } |
| +// static |
| ToolbarModel::SecurityLevel ToolbarModelImpl::GetSecurityLevelForWebContents( |
| content::WebContents* web_contents) { |
| if (!web_contents) |
| @@ -94,6 +95,22 @@ ToolbarModel::SecurityLevel ToolbarModelImpl::GetSecurityLevelForWebContents( |
| } |
| } |
| +// static |
| +base::string16 ToolbarModelImpl::GetEVCertName( |
| + const net::X509Certificate& cert) { |
| + // EV are required to have an organization name and country. |
| + if (cert.subject().organization_names.empty() || |
| + cert.subject().country_name.empty()) { |
| + NOTREACHED(); |
|
Peter Kasting
2014/05/09 20:35:40
Nit: This violates the Chrome style guide rule abo
macourteau
2014/05/09 20:53:23
Isn't the behavior of the two DCHECK's different t
Peter Kasting
2014/05/09 21:15:47
NOTREACHED/DCHECK is an assertion that the check i
macourteau
2014/05/09 22:23:51
SGTM. Done.
|
| + return base::string16(); |
| + } |
| + |
| + return l10n_util::GetStringFUTF16( |
| + IDS_SECURE_CONNECTION_EV, |
| + base::UTF8ToUTF16(cert.subject().organization_names[0]), |
| + base::UTF8ToUTF16(cert.subject().country_name)); |
| +} |
| + |
| // ToolbarModelImpl Implementation. |
| base::string16 ToolbarModelImpl::GetText() const { |
| base::string16 search_terms(GetSearchTerms(false)); |
| @@ -154,77 +171,11 @@ GURL ToolbarModelImpl::GetURL() const { |
| return GURL(content::kAboutBlankURL); |
| } |
| -bool ToolbarModelImpl::WouldOmitURLDueToOriginChip() const { |
| - const char kInterstitialShownKey[] = "interstitial_shown"; |
| - |
| - // When users type URLs and hit enter, continue to show those URLs until |
| - // the navigation commits or an interstitial is shown, because having the |
| - // omnibox clear immediately feels like the input was ignored. |
| - NavigationController* navigation_controller = GetNavigationController(); |
| - if (navigation_controller) { |
| - NavigationEntry* pending_entry = navigation_controller->GetPendingEntry(); |
| - if (pending_entry) { |
| - const NavigationEntry* visible_entry = |
| - navigation_controller->GetVisibleEntry(); |
| - base::string16 unused; |
| - // Keep track that we've shown the origin chip on an interstitial so it |
| - // can be shown even after the interstitial was dismissed, to avoid |
| - // showing the chip, removing it and then showing it again. |
| - if (visible_entry && |
| - visible_entry->GetPageType() == content::PAGE_TYPE_INTERSTITIAL && |
| - !pending_entry->GetExtraData(kInterstitialShownKey, &unused)) |
| - pending_entry->SetExtraData(kInterstitialShownKey, base::string16()); |
| - const content::PageTransition transition_type = |
| - pending_entry->GetTransitionType(); |
| - if ((transition_type & content::PAGE_TRANSITION_TYPED) != 0 && |
| - !pending_entry->GetExtraData(kInterstitialShownKey, &unused)) |
| - return false; |
| - } |
| - } |
| - |
| - bool should_display_origin_chip = |
| - chrome::ShouldDisplayOriginChip() || chrome::ShouldDisplayOriginChipV2(); |
| - return should_display_origin_chip && delegate_->InTabbedBrowser() && |
| - ShouldDisplayURL() && url_replacement_enabled(); |
| -} |
| - |
| bool ToolbarModelImpl::WouldPerformSearchTermReplacement( |
| bool ignore_editing) const { |
| return !GetSearchTerms(ignore_editing).empty(); |
| } |
| -bool ToolbarModelImpl::ShouldDisplayURL() const { |
| - // Note: The order here is important. |
| - // - The WebUI test must come before the extension scheme test because there |
| - // can be WebUIs that have extension schemes (e.g. the bookmark manager). In |
| - // that case, we should prefer what the WebUI instance says. |
| - // - The view-source test must come before the NTP test because of the case |
| - // of view-source:chrome://newtab, which should display its URL despite what |
| - // chrome://newtab says. |
| - NavigationController* controller = GetNavigationController(); |
| - NavigationEntry* entry = controller ? controller->GetVisibleEntry() : NULL; |
| - if (entry) { |
| - if (entry->IsViewSourceMode() || |
| - entry->GetPageType() == content::PAGE_TYPE_INTERSTITIAL) { |
| - return true; |
| - } |
| - |
| - GURL url = entry->GetURL(); |
| - GURL virtual_url = entry->GetVirtualURL(); |
| - if (url.SchemeIs(content::kChromeUIScheme) || |
| - virtual_url.SchemeIs(content::kChromeUIScheme)) { |
| - if (!url.SchemeIs(content::kChromeUIScheme)) |
| - url = virtual_url; |
| - return url.host() != chrome::kChromeUINewTabHost; |
| - } |
| - } |
| - |
| - if (chrome::IsInstantNTP(delegate_->GetActiveWebContents())) |
| - return false; |
| - |
| - return true; |
| -} |
| - |
| ToolbarModel::SecurityLevel ToolbarModelImpl::GetSecurityLevel( |
| bool ignore_editing) const { |
| // When editing, assume no security style. |
| @@ -273,20 +224,70 @@ base::string16 ToolbarModelImpl::GetEVCertName() const { |
| return GetEVCertName(*cert.get()); |
| } |
| -// static |
| -base::string16 ToolbarModelImpl::GetEVCertName( |
| - const net::X509Certificate& cert) { |
| - // EV are required to have an organization name and country. |
| - if (cert.subject().organization_names.empty() || |
| - cert.subject().country_name.empty()) { |
| - NOTREACHED(); |
| - return base::string16(); |
| +bool ToolbarModelImpl::ShouldDisplayURL() const { |
| + // Note: The order here is important. |
| + // - The WebUI test must come before the extension scheme test because there |
| + // can be WebUIs that have extension schemes (e.g. the bookmark manager). In |
| + // that case, we should prefer what the WebUI instance says. |
| + // - The view-source test must come before the NTP test because of the case |
| + // of view-source:chrome://newtab, which should display its URL despite what |
| + // chrome://newtab says. |
| + NavigationController* controller = GetNavigationController(); |
| + NavigationEntry* entry = controller ? controller->GetVisibleEntry() : NULL; |
| + if (entry) { |
| + if (entry->IsViewSourceMode() || |
| + entry->GetPageType() == content::PAGE_TYPE_INTERSTITIAL) { |
| + return true; |
| + } |
| + |
| + GURL url = entry->GetURL(); |
| + GURL virtual_url = entry->GetVirtualURL(); |
| + if (url.SchemeIs(content::kChromeUIScheme) || |
| + virtual_url.SchemeIs(content::kChromeUIScheme)) { |
| + if (!url.SchemeIs(content::kChromeUIScheme)) |
| + url = virtual_url; |
| + return url.host() != chrome::kChromeUINewTabHost; |
| + } |
| } |
| - return l10n_util::GetStringFUTF16( |
| - IDS_SECURE_CONNECTION_EV, |
| - base::UTF8ToUTF16(cert.subject().organization_names[0]), |
| - base::UTF8ToUTF16(cert.subject().country_name)); |
| + if (chrome::IsInstantNTP(delegate_->GetActiveWebContents())) |
|
Peter Kasting
2014/05/09 20:35:40
Nit: Just:
return !chrome::IsInstantNTP(delegat
macourteau
2014/05/09 20:53:23
Done.
|
| + return false; |
| + |
| + return true; |
| +} |
| + |
| +bool ToolbarModelImpl::WouldOmitURLDueToOriginChip() const { |
| + const char kInterstitialShownKey[] = "interstitial_shown"; |
| + |
| + // When users type URLs and hit enter, continue to show those URLs until |
| + // the navigation commits or an interstitial is shown, because having the |
| + // omnibox clear immediately feels like the input was ignored. |
| + NavigationController* navigation_controller = GetNavigationController(); |
| + if (navigation_controller) { |
| + NavigationEntry* pending_entry = navigation_controller->GetPendingEntry(); |
| + if (pending_entry) { |
| + const NavigationEntry* visible_entry = |
| + navigation_controller->GetVisibleEntry(); |
| + base::string16 unused; |
| + // Keep track that we've shown the origin chip on an interstitial so it |
| + // can be shown even after the interstitial was dismissed, to avoid |
| + // showing the chip, removing it and then showing it again. |
| + if (visible_entry && |
| + visible_entry->GetPageType() == content::PAGE_TYPE_INTERSTITIAL && |
| + !pending_entry->GetExtraData(kInterstitialShownKey, &unused)) |
| + pending_entry->SetExtraData(kInterstitialShownKey, base::string16()); |
| + const content::PageTransition transition_type = |
| + pending_entry->GetTransitionType(); |
| + if ((transition_type & content::PAGE_TRANSITION_TYPED) != 0 && |
| + !pending_entry->GetExtraData(kInterstitialShownKey, &unused)) |
| + return false; |
| + } |
| + } |
| + |
| + bool should_display_origin_chip = |
| + chrome::ShouldDisplayOriginChip() || chrome::ShouldDisplayOriginChipV2(); |
| + return should_display_origin_chip && delegate_->InTabbedBrowser() && |
| + ShouldDisplayURL() && url_replacement_enabled(); |
| } |
| NavigationController* ToolbarModelImpl::GetNavigationController() const { |