| 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));
|
| }
|
|
|