| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/ui/toolbar/toolbar_model.h" | 5 #include "chrome/browser/ui/toolbar/toolbar_model.h" |
| 6 | 6 |
| 7 #include "base/utf_string_conversions.h" | 7 #include "base/utf_string_conversions.h" |
| 8 #include "chrome/browser/autocomplete/autocomplete.h" | 8 #include "chrome/browser/autocomplete/autocomplete.h" |
| 9 #include "chrome/browser/autocomplete/autocomplete_edit.h" | 9 #include "chrome/browser/autocomplete/autocomplete_edit.h" |
| 10 #include "chrome/browser/prefs/pref_service.h" | 10 #include "chrome/browser/prefs/pref_service.h" |
| (...skipping 25 matching lines...) Expand all Loading... |
| 36 // ToolbarModel Implementation. | 36 // ToolbarModel Implementation. |
| 37 string16 ToolbarModel::GetText() const { | 37 string16 ToolbarModel::GetText() const { |
| 38 GURL url(chrome::kAboutBlankURL); | 38 GURL url(chrome::kAboutBlankURL); |
| 39 std::string languages; // Empty if we don't have a |navigation_controller|. | 39 std::string languages; // Empty if we don't have a |navigation_controller|. |
| 40 | 40 |
| 41 NavigationController* navigation_controller = GetNavigationController(); | 41 NavigationController* navigation_controller = GetNavigationController(); |
| 42 if (navigation_controller) { | 42 if (navigation_controller) { |
| 43 Profile* profile = | 43 Profile* profile = |
| 44 Profile::FromBrowserContext(navigation_controller->browser_context()); | 44 Profile::FromBrowserContext(navigation_controller->browser_context()); |
| 45 languages = profile->GetPrefs()->GetString(prefs::kAcceptLanguages); | 45 languages = profile->GetPrefs()->GetString(prefs::kAcceptLanguages); |
| 46 NavigationEntry* entry = navigation_controller->GetActiveEntry(); | 46 NavigationEntry* entry = navigation_controller->GetVisibleEntry(); |
| 47 if (!navigation_controller->tab_contents()->ShouldDisplayURL()) { | 47 if (!navigation_controller->tab_contents()->ShouldDisplayURL()) { |
| 48 // Explicitly hide the URL for this tab. | 48 // Explicitly hide the URL for this tab. |
| 49 url = GURL(); | 49 url = GURL(); |
| 50 } else if (entry) { | 50 } else if (entry) { |
| 51 url = entry->virtual_url(); | 51 url = entry->virtual_url(); |
| 52 } | 52 } |
| 53 } | 53 } |
| 54 if (url.spec().length() > content::kMaxURLDisplayChars) | 54 if (url.spec().length() > content::kMaxURLDisplayChars) |
| 55 url = url.IsStandard() ? url.GetOrigin() : GURL(url.scheme() + ":"); | 55 url = url.IsStandard() ? url.GetOrigin() : GURL(url.scheme() + ":"); |
| 56 // Note that we can't unescape spaces here, because if the user copies this | 56 // Note that we can't unescape spaces here, because if the user copies this |
| 57 // and pastes it into another program, that program may think the URL ends at | 57 // and pastes it into another program, that program may think the URL ends at |
| 58 // the space. | 58 // the space. |
| 59 return AutocompleteInput::FormattedStringWithEquivalentMeaning( | 59 return AutocompleteInput::FormattedStringWithEquivalentMeaning( |
| 60 url, net::FormatUrl(url, languages, net::kFormatUrlOmitAll, | 60 url, net::FormatUrl(url, languages, net::kFormatUrlOmitAll, |
| 61 UnescapeRule::NORMAL, NULL, NULL, NULL)); | 61 UnescapeRule::NORMAL, NULL, NULL, NULL)); |
| 62 } | 62 } |
| 63 | 63 |
| 64 ToolbarModel::SecurityLevel ToolbarModel::GetSecurityLevel() const { | 64 ToolbarModel::SecurityLevel ToolbarModel::GetSecurityLevel() const { |
| 65 if (input_in_progress_) // When editing, assume no security style. | 65 if (input_in_progress_) // When editing, assume no security style. |
| 66 return NONE; | 66 return NONE; |
| 67 | 67 |
| 68 NavigationController* navigation_controller = GetNavigationController(); | 68 NavigationController* navigation_controller = GetNavigationController(); |
| 69 if (!navigation_controller) // We might not have a controller on init. | 69 if (!navigation_controller) // We might not have a controller on init. |
| 70 return NONE; | 70 return NONE; |
| 71 | 71 |
| 72 NavigationEntry* entry = navigation_controller->GetActiveEntry(); | 72 NavigationEntry* entry = navigation_controller->GetVisibleEntry(); |
| 73 if (!entry) | 73 if (!entry) |
| 74 return NONE; | 74 return NONE; |
| 75 | 75 |
| 76 const NavigationEntry::SSLStatus& ssl = entry->ssl(); | 76 const NavigationEntry::SSLStatus& ssl = entry->ssl(); |
| 77 switch (ssl.security_style()) { | 77 switch (ssl.security_style()) { |
| 78 case SECURITY_STYLE_UNKNOWN: | 78 case SECURITY_STYLE_UNKNOWN: |
| 79 case SECURITY_STYLE_UNAUTHENTICATED: | 79 case SECURITY_STYLE_UNAUTHENTICATED: |
| 80 return NONE; | 80 return NONE; |
| 81 | 81 |
| 82 case SECURITY_STYLE_AUTHENTICATION_BROKEN: | 82 case SECURITY_STYLE_AUTHENTICATION_BROKEN: |
| (...skipping 29 matching lines...) Expand all Loading... |
| 112 DCHECK(arraysize(icon_ids) == NUM_SECURITY_LEVELS); | 112 DCHECK(arraysize(icon_ids) == NUM_SECURITY_LEVELS); |
| 113 return icon_ids[GetSecurityLevel()]; | 113 return icon_ids[GetSecurityLevel()]; |
| 114 } | 114 } |
| 115 | 115 |
| 116 string16 ToolbarModel::GetEVCertName() const { | 116 string16 ToolbarModel::GetEVCertName() const { |
| 117 DCHECK_EQ(GetSecurityLevel(), EV_SECURE); | 117 DCHECK_EQ(GetSecurityLevel(), EV_SECURE); |
| 118 scoped_refptr<net::X509Certificate> cert; | 118 scoped_refptr<net::X509Certificate> cert; |
| 119 // Note: Navigation controller and active entry are guaranteed non-NULL or | 119 // Note: Navigation controller and active entry are guaranteed non-NULL or |
| 120 // the security level would be NONE. | 120 // the security level would be NONE. |
| 121 CertStore::GetInstance()->RetrieveCert( | 121 CertStore::GetInstance()->RetrieveCert( |
| 122 GetNavigationController()->GetActiveEntry()->ssl().cert_id(), &cert); | 122 GetNavigationController()->GetVisibleEntry()->ssl().cert_id(), &cert); |
| 123 return GetEVCertName(*cert); | 123 return GetEVCertName(*cert); |
| 124 } | 124 } |
| 125 | 125 |
| 126 // static | 126 // static |
| 127 string16 ToolbarModel::GetEVCertName(const net::X509Certificate& cert) { | 127 string16 ToolbarModel::GetEVCertName(const net::X509Certificate& cert) { |
| 128 // EV are required to have an organization name and country. | 128 // EV are required to have an organization name and country. |
| 129 if (cert.subject().organization_names.empty() || | 129 if (cert.subject().organization_names.empty() || |
| 130 cert.subject().country_name.empty()) { | 130 cert.subject().country_name.empty()) { |
| 131 NOTREACHED(); | 131 NOTREACHED(); |
| 132 return string16(); | 132 return string16(); |
| 133 } | 133 } |
| 134 | 134 |
| 135 return l10n_util::GetStringFUTF16( | 135 return l10n_util::GetStringFUTF16( |
| 136 IDS_SECURE_CONNECTION_EV, | 136 IDS_SECURE_CONNECTION_EV, |
| 137 UTF8ToUTF16(cert.subject().organization_names[0]), | 137 UTF8ToUTF16(cert.subject().organization_names[0]), |
| 138 UTF8ToUTF16(cert.subject().country_name)); | 138 UTF8ToUTF16(cert.subject().country_name)); |
| 139 } | 139 } |
| 140 | 140 |
| 141 NavigationController* ToolbarModel::GetNavigationController() const { | 141 NavigationController* ToolbarModel::GetNavigationController() const { |
| 142 // This |current_tab| can be NULL during the initialization of the | 142 // This |current_tab| can be NULL during the initialization of the |
| 143 // toolbar during window creation (i.e. before any tabs have been added | 143 // toolbar during window creation (i.e. before any tabs have been added |
| 144 // to the window). | 144 // to the window). |
| 145 TabContents* current_tab = browser_->GetSelectedTabContents(); | 145 TabContents* current_tab = browser_->GetSelectedTabContents(); |
| 146 return current_tab ? ¤t_tab->controller() : NULL; | 146 return current_tab ? ¤t_tab->controller() : NULL; |
| 147 } | 147 } |
| OLD | NEW |