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 71ba98d0deddaa05c8dacdbf623757e40df2f55a..b21b0bcaccb205007ed6d38a5f8cc4712c602d0c 100644 |
--- a/chrome/browser/ui/toolbar/toolbar_model_impl.cc |
+++ b/chrome/browser/ui/toolbar/toolbar_model_impl.cc |
@@ -7,23 +7,13 @@ |
#include "base/strings/utf_string_conversions.h" |
#include "base/time/time.h" |
#include "build/build_config.h" |
-#include "chrome/browser/search/search.h" |
-#include "chrome/browser/ssl/chrome_security_state_model_client.h" |
#include "chrome/browser/ui/toolbar/toolbar_model_delegate.h" |
-#include "chrome/common/url_constants.h" |
#include "chrome/grit/generated_resources.h" |
#include "components/google/core/browser/google_util.h" |
#include "components/prefs/pref_service.h" |
#include "components/security_state/security_state_model.h" |
#include "components/url_formatter/elide_url.h" |
#include "components/url_formatter/url_formatter.h" |
-#include "content/public/browser/cert_store.h" |
-#include "content/public/browser/navigation_controller.h" |
-#include "content/public/browser/navigation_entry.h" |
-#include "content/public/browser/web_contents.h" |
-#include "content/public/browser/web_ui.h" |
-#include "content/public/common/content_constants.h" |
-#include "content/public/common/ssl_status.h" |
#include "grit/components_scaled_resources.h" |
#include "net/cert/cert_status_flags.h" |
#include "net/cert/x509_certificate.h" |
@@ -32,14 +22,11 @@ |
#include "ui/gfx/text_elider.h" |
#include "ui/gfx/vector_icons_public.h" |
-using content::NavigationController; |
-using content::NavigationEntry; |
-using content::WebContents; |
using security_state::SecurityStateModel; |
-ToolbarModelImpl::ToolbarModelImpl(ToolbarModelDelegate* delegate) |
- : delegate_(delegate) { |
-} |
+ToolbarModelImpl::ToolbarModelImpl(ToolbarModelDelegate* delegate, |
+ size_t max_url_display_chars) |
+ : delegate_(delegate), max_url_display_chars_(max_url_display_chars) {} |
ToolbarModelImpl::~ToolbarModelImpl() { |
} |
@@ -66,7 +53,7 @@ base::string16 ToolbarModelImpl::GetFormattedURL(size_t* prefix_end) const { |
url, url_formatter::FormatUrl( |
url, languages, url_formatter::kFormatUrlOmitAll, |
net::UnescapeRule::NORMAL, nullptr, prefix_end, nullptr)); |
- if (formatted_text.length() <= content::kMaxURLDisplayChars) |
+ if (formatted_text.length() <= max_url_display_chars_) |
return formatted_text; |
// Truncating the URL breaks editing and then pressing enter, but hopefully |
@@ -74,7 +61,7 @@ base::string16 ToolbarModelImpl::GetFormattedURL(size_t* prefix_end) const { |
// a real problem, we could perhaps try to keep some sort of different "elided |
// visible URL" where editing affects and reloads the "real underlying URL", |
// but this seems very tricky for little gain. |
- return gfx::TruncateString(formatted_text, content::kMaxURLDisplayChars - 1, |
+ return gfx::TruncateString(formatted_text, max_url_display_chars_ - 1, |
gfx::CHARACTER_BREAK) + |
gfx::kEllipsisUTF16; |
} |
@@ -100,14 +87,8 @@ base::string16 ToolbarModelImpl::GetCorpusNameForMobile() const { |
} |
GURL ToolbarModelImpl::GetURL() const { |
- const NavigationController* navigation_controller = GetNavigationController(); |
- if (navigation_controller) { |
- const NavigationEntry* entry = navigation_controller->GetVisibleEntry(); |
- if (entry) |
- return ShouldDisplayURL() ? entry->GetVirtualURL() : GURL(); |
- } |
- |
- return GURL(url::kAboutBlankURL); |
+ GURL url; |
+ return delegate_->GetURL(&url) ? url : GURL(url::kAboutBlankURL); |
} |
bool ToolbarModelImpl::WouldPerformSearchTermReplacement( |
@@ -117,18 +98,10 @@ bool ToolbarModelImpl::WouldPerformSearchTermReplacement( |
SecurityStateModel::SecurityLevel ToolbarModelImpl::GetSecurityLevel( |
bool ignore_editing) const { |
- const content::WebContents* web_contents = delegate_->GetActiveWebContents(); |
- // If there is no active WebContents (which can happen during toolbar |
- // initialization), assume no security style. |
- if (!web_contents) |
- return SecurityStateModel::NONE; |
- const ChromeSecurityStateModelClient* model_client = |
- ChromeSecurityStateModelClient::FromWebContents(web_contents); |
- |
// When editing, assume no security style. |
return (input_in_progress() && !ignore_editing) |
? SecurityStateModel::NONE |
- : model_client->GetSecurityInfo().security_level; |
+ : delegate_->GetSecurityLevel(); |
} |
int ToolbarModelImpl::GetIcon() const { |
@@ -177,11 +150,9 @@ base::string16 ToolbarModelImpl::GetEVCertName() const { |
if (GetSecurityLevel(false) != SecurityStateModel::EV_SECURE) |
return base::string16(); |
- // Note: Navigation controller and active entry are guaranteed non-NULL or |
- // the security level would be NONE. |
- scoped_refptr<net::X509Certificate> cert; |
- content::CertStore::GetInstance()->RetrieveCert( |
- GetNavigationController()->GetVisibleEntry()->GetSSL().cert_id, &cert); |
+ // Note: cert is guaranteed non-NULL or the security level would be NONE. |
+ scoped_refptr<net::X509Certificate> cert = delegate_->GetCertificate(); |
+ DCHECK(cert.get()); |
// EV are required to have an organization name and country. |
DCHECK(!cert->subject().organization_names.empty()); |
@@ -193,77 +164,12 @@ base::string16 ToolbarModelImpl::GetEVCertName() const { |
} |
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 !search::IsInstantNTP(delegate_->GetActiveWebContents()); |
-} |
- |
-NavigationController* ToolbarModelImpl::GetNavigationController() const { |
- // This |current_tab| can be NULL during the initialization of the |
- // toolbar during window creation (i.e. before any tabs have been added |
- // to the window). |
- WebContents* current_tab = delegate_->GetActiveWebContents(); |
- return current_tab ? ¤t_tab->GetController() : NULL; |
+ return delegate_->ShouldDisplayURL(); |
} |
base::string16 ToolbarModelImpl::GetSearchTerms(bool ignore_editing) const { |
if (!url_replacement_enabled() || (input_in_progress() && !ignore_editing)) |
return base::string16(); |
- const WebContents* web_contents = delegate_->GetActiveWebContents(); |
- base::string16 search_terms(search::GetSearchTerms(web_contents)); |
- if (search_terms.empty()) { |
- // We mainly do this to enforce the subsequent DCHECK. |
- return base::string16(); |
- } |
- |
- // If the page is still loading and the security style is unknown, consider |
- // the page secure. Without this, after the user hit enter on some search |
- // terms, the omnibox would change to displaying the loading URL before |
- // changing back to the search terms once they could be extracted, thus |
- // causing annoying flicker. |
- DCHECK(web_contents); |
- const NavigationController& nav_controller = web_contents->GetController(); |
- const NavigationEntry* entry = nav_controller.GetVisibleEntry(); |
- if ((entry != nav_controller.GetLastCommittedEntry()) && |
- (entry->GetSSL().security_style == content::SECURITY_STYLE_UNKNOWN)) |
- return search_terms; |
- |
- // If the URL is using a Google base URL specified via the command line, we |
- // bypass the security check below. |
- if (entry && |
- google_util::StartsWithCommandLineGoogleBaseURL(entry->GetVirtualURL())) |
- return search_terms; |
- |
- // Otherwise, extract search terms for HTTPS pages that do not have a security |
- // error. |
- SecurityStateModel::SecurityLevel security_level = |
- GetSecurityLevel(ignore_editing); |
- return ((security_level == SecurityStateModel::NONE) || |
- (security_level == SecurityStateModel::SECURITY_ERROR)) |
- ? base::string16() |
- : search_terms; |
+ return delegate_->GetSearchTerms(GetSecurityLevel(ignore_editing)); |
} |