| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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/ui/page_info/website_settings.h" | 5 #include "chrome/browser/ui/page_info/page_info.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <string> | 10 #include <string> |
| 11 #include <vector> | 11 #include <vector> |
| 12 | 12 |
| 13 #include "base/command_line.h" | 13 #include "base/command_line.h" |
| 14 #include "base/i18n/time_formatting.h" | 14 #include "base/i18n/time_formatting.h" |
| 15 #include "base/macros.h" | 15 #include "base/macros.h" |
| (...skipping 16 matching lines...) Expand all Loading... |
| 32 #include "chrome/browser/history/history_service_factory.h" | 32 #include "chrome/browser/history/history_service_factory.h" |
| 33 #include "chrome/browser/infobars/infobar_service.h" | 33 #include "chrome/browser/infobars/infobar_service.h" |
| 34 #include "chrome/browser/permissions/chooser_context_base.h" | 34 #include "chrome/browser/permissions/chooser_context_base.h" |
| 35 #include "chrome/browser/permissions/permission_manager.h" | 35 #include "chrome/browser/permissions/permission_manager.h" |
| 36 #include "chrome/browser/permissions/permission_result.h" | 36 #include "chrome/browser/permissions/permission_result.h" |
| 37 #include "chrome/browser/permissions/permission_uma_util.h" | 37 #include "chrome/browser/permissions/permission_uma_util.h" |
| 38 #include "chrome/browser/permissions/permission_util.h" | 38 #include "chrome/browser/permissions/permission_util.h" |
| 39 #include "chrome/browser/profiles/profile.h" | 39 #include "chrome/browser/profiles/profile.h" |
| 40 #include "chrome/browser/ssl/chrome_ssl_host_state_delegate.h" | 40 #include "chrome/browser/ssl/chrome_ssl_host_state_delegate.h" |
| 41 #include "chrome/browser/ssl/chrome_ssl_host_state_delegate_factory.h" | 41 #include "chrome/browser/ssl/chrome_ssl_host_state_delegate_factory.h" |
| 42 #include "chrome/browser/ui/page_info/website_settings_ui.h" | 42 #include "chrome/browser/ui/page_info/page_info_ui.h" |
| 43 #include "chrome/browser/usb/usb_chooser_context.h" | 43 #include "chrome/browser/usb/usb_chooser_context.h" |
| 44 #include "chrome/browser/usb/usb_chooser_context_factory.h" | 44 #include "chrome/browser/usb/usb_chooser_context_factory.h" |
| 45 #include "chrome/common/chrome_switches.h" | 45 #include "chrome/common/chrome_switches.h" |
| 46 #include "chrome/common/url_constants.h" | 46 #include "chrome/common/url_constants.h" |
| 47 #include "chrome/grit/chromium_strings.h" | 47 #include "chrome/grit/chromium_strings.h" |
| 48 #include "chrome/grit/generated_resources.h" | 48 #include "chrome/grit/generated_resources.h" |
| 49 #include "chrome/grit/theme_resources.h" | 49 #include "chrome/grit/theme_resources.h" |
| 50 #include "components/content_settings/core/browser/content_settings_utils.h" | 50 #include "components/content_settings/core/browser/content_settings_utils.h" |
| 51 #include "components/content_settings/core/browser/host_content_settings_map.h" | 51 #include "components/content_settings/core/browser/host_content_settings_map.h" |
| 52 #include "components/content_settings/core/common/content_settings.h" | 52 #include "components/content_settings/core/common/content_settings.h" |
| (...skipping 15 matching lines...) Expand all Loading... |
| 68 #include "third_party/boringssl/src/include/openssl/ssl.h" | 68 #include "third_party/boringssl/src/include/openssl/ssl.h" |
| 69 #include "ui/base/l10n/l10n_util.h" | 69 #include "ui/base/l10n/l10n_util.h" |
| 70 | 70 |
| 71 #if defined(OS_CHROMEOS) | 71 #if defined(OS_CHROMEOS) |
| 72 #include "chrome/browser/chromeos/policy/policy_cert_service.h" | 72 #include "chrome/browser/chromeos/policy/policy_cert_service.h" |
| 73 #include "chrome/browser/chromeos/policy/policy_cert_service_factory.h" | 73 #include "chrome/browser/chromeos/policy/policy_cert_service_factory.h" |
| 74 #endif | 74 #endif |
| 75 | 75 |
| 76 #if !defined(OS_ANDROID) | 76 #if !defined(OS_ANDROID) |
| 77 #include "chrome/browser/ui/exclusive_access/exclusive_access_manager.h" | 77 #include "chrome/browser/ui/exclusive_access/exclusive_access_manager.h" |
| 78 #include "chrome/browser/ui/page_info/website_settings_infobar_delegate.h" | 78 #include "chrome/browser/ui/page_info/page_info_infobar_delegate.h" |
| 79 #endif | 79 #endif |
| 80 | 80 |
| 81 using base::ASCIIToUTF16; | 81 using base::ASCIIToUTF16; |
| 82 using base::UTF8ToUTF16; | 82 using base::UTF8ToUTF16; |
| 83 using base::UTF16ToUTF8; | 83 using base::UTF16ToUTF8; |
| 84 using content::BrowserThread; | 84 using content::BrowserThread; |
| 85 | 85 |
| 86 namespace { | 86 namespace { |
| 87 | 87 |
| 88 // Events for UMA. Do not reorder or change! | 88 // Events for UMA. Do not reorder or change! |
| 89 enum SSLCertificateDecisionsDidRevoke { | 89 enum SSLCertificateDecisionsDidRevoke { |
| 90 USER_CERT_DECISIONS_NOT_REVOKED = 0, | 90 USER_CERT_DECISIONS_NOT_REVOKED = 0, |
| 91 USER_CERT_DECISIONS_REVOKED, | 91 USER_CERT_DECISIONS_REVOKED, |
| 92 END_OF_SSL_CERTIFICATE_DECISIONS_DID_REVOKE_ENUM | 92 END_OF_SSL_CERTIFICATE_DECISIONS_DID_REVOKE_ENUM |
| 93 }; | 93 }; |
| 94 | 94 |
| 95 // The list of content settings types to display on the Website Settings UI. THE | 95 // The list of content settings types to display on the Page Info UI. THE |
| 96 // ORDER OF THESE ITEMS IS IMPORTANT. To propose changing it, email | 96 // ORDER OF THESE ITEMS IS IMPORTANT. To propose changing it, email |
| 97 // security-dev@chromium.org. | 97 // security-dev@chromium.org. |
| 98 ContentSettingsType kPermissionType[] = { | 98 ContentSettingsType kPermissionType[] = { |
| 99 CONTENT_SETTINGS_TYPE_GEOLOCATION, | 99 CONTENT_SETTINGS_TYPE_GEOLOCATION, |
| 100 CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, | 100 CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, |
| 101 CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, | 101 CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, |
| 102 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, | 102 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, |
| 103 CONTENT_SETTINGS_TYPE_JAVASCRIPT, | 103 CONTENT_SETTINGS_TYPE_JAVASCRIPT, |
| 104 #if !defined(OS_ANDROID) | 104 #if !defined(OS_ANDROID) |
| 105 CONTENT_SETTINGS_TYPE_PLUGINS, | 105 CONTENT_SETTINGS_TYPE_PLUGINS, |
| 106 CONTENT_SETTINGS_TYPE_IMAGES, | 106 CONTENT_SETTINGS_TYPE_IMAGES, |
| 107 #endif | 107 #endif |
| 108 CONTENT_SETTINGS_TYPE_POPUPS, | 108 CONTENT_SETTINGS_TYPE_POPUPS, |
| 109 CONTENT_SETTINGS_TYPE_BACKGROUND_SYNC, | 109 CONTENT_SETTINGS_TYPE_BACKGROUND_SYNC, |
| 110 CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS, | 110 CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS, |
| 111 CONTENT_SETTINGS_TYPE_AUTOPLAY, | 111 CONTENT_SETTINGS_TYPE_AUTOPLAY, |
| 112 CONTENT_SETTINGS_TYPE_MIDI_SYSEX, | 112 CONTENT_SETTINGS_TYPE_MIDI_SYSEX, |
| 113 }; | 113 }; |
| 114 | 114 |
| 115 // Determines whether to show permission |type| in the Website Settings UI. Only | 115 // Determines whether to show permission |type| in the Page Info UI. Only |
| 116 // applies to permissions listed in |kPermissionType|. | 116 // applies to permissions listed in |kPermissionType|. |
| 117 bool ShouldShowPermission(ContentSettingsType type) { | 117 bool ShouldShowPermission(ContentSettingsType type) { |
| 118 #if !defined(OS_ANDROID) | 118 #if !defined(OS_ANDROID) |
| 119 // Autoplay is Android-only at the moment. | 119 // Autoplay is Android-only at the moment. |
| 120 if (type == CONTENT_SETTINGS_TYPE_AUTOPLAY) | 120 if (type == CONTENT_SETTINGS_TYPE_AUTOPLAY) |
| 121 return false; | 121 return false; |
| 122 #endif | 122 #endif |
| 123 | 123 |
| 124 return true; | 124 return true; |
| 125 } | 125 } |
| (...skipping 30 matching lines...) Expand all Loading... |
| 156 if (net::IsCertStatusError(security_info.cert_status) && | 156 if (net::IsCertStatusError(security_info.cert_status) && |
| 157 !net::IsCertStatusMinorError(security_info.cert_status)) { | 157 !net::IsCertStatusMinorError(security_info.cert_status)) { |
| 158 return; | 158 return; |
| 159 } | 159 } |
| 160 CheckContentStatus(security_info.content_with_cert_errors_status, displayed, | 160 CheckContentStatus(security_info.content_with_cert_errors_status, displayed, |
| 161 ran); | 161 ran); |
| 162 } | 162 } |
| 163 | 163 |
| 164 void GetSiteIdentityByMaliciousContentStatus( | 164 void GetSiteIdentityByMaliciousContentStatus( |
| 165 security_state::MaliciousContentStatus malicious_content_status, | 165 security_state::MaliciousContentStatus malicious_content_status, |
| 166 WebsiteSettings::SiteIdentityStatus* status, | 166 PageInfo::SiteIdentityStatus* status, |
| 167 base::string16* details) { | 167 base::string16* details) { |
| 168 switch (malicious_content_status) { | 168 switch (malicious_content_status) { |
| 169 case security_state::MALICIOUS_CONTENT_STATUS_NONE: | 169 case security_state::MALICIOUS_CONTENT_STATUS_NONE: |
| 170 NOTREACHED(); | 170 NOTREACHED(); |
| 171 break; | 171 break; |
| 172 case security_state::MALICIOUS_CONTENT_STATUS_MALWARE: | 172 case security_state::MALICIOUS_CONTENT_STATUS_MALWARE: |
| 173 *status = WebsiteSettings::SITE_IDENTITY_STATUS_MALWARE; | 173 *status = PageInfo::SITE_IDENTITY_STATUS_MALWARE; |
| 174 *details = l10n_util::GetStringUTF16(IDS_PAGEINFO_MALWARE_DETAILS); | 174 *details = l10n_util::GetStringUTF16(IDS_PAGEINFO_MALWARE_DETAILS); |
| 175 break; | 175 break; |
| 176 case security_state::MALICIOUS_CONTENT_STATUS_SOCIAL_ENGINEERING: | 176 case security_state::MALICIOUS_CONTENT_STATUS_SOCIAL_ENGINEERING: |
| 177 *status = WebsiteSettings::SITE_IDENTITY_STATUS_SOCIAL_ENGINEERING; | 177 *status = PageInfo::SITE_IDENTITY_STATUS_SOCIAL_ENGINEERING; |
| 178 *details = | 178 *details = |
| 179 l10n_util::GetStringUTF16(IDS_PAGEINFO_SOCIAL_ENGINEERING_DETAILS); | 179 l10n_util::GetStringUTF16(IDS_PAGEINFO_SOCIAL_ENGINEERING_DETAILS); |
| 180 break; | 180 break; |
| 181 case security_state::MALICIOUS_CONTENT_STATUS_UNWANTED_SOFTWARE: | 181 case security_state::MALICIOUS_CONTENT_STATUS_UNWANTED_SOFTWARE: |
| 182 *status = WebsiteSettings::SITE_IDENTITY_STATUS_UNWANTED_SOFTWARE; | 182 *status = PageInfo::SITE_IDENTITY_STATUS_UNWANTED_SOFTWARE; |
| 183 *details = | 183 *details = |
| 184 l10n_util::GetStringUTF16(IDS_PAGEINFO_UNWANTED_SOFTWARE_DETAILS); | 184 l10n_util::GetStringUTF16(IDS_PAGEINFO_UNWANTED_SOFTWARE_DETAILS); |
| 185 break; | 185 break; |
| 186 } | 186 } |
| 187 } | 187 } |
| 188 | 188 |
| 189 base::string16 GetSimpleSiteName(const GURL& url) { | 189 base::string16 GetSimpleSiteName(const GURL& url) { |
| 190 return url_formatter::FormatUrlForSecurityDisplay( | 190 return url_formatter::FormatUrlForSecurityDisplay( |
| 191 url, url_formatter::SchemeDisplay::OMIT_HTTP_AND_HTTPS); | 191 url, url_formatter::SchemeDisplay::OMIT_HTTP_AND_HTTPS); |
| 192 } | 192 } |
| 193 | 193 |
| 194 ChooserContextBase* GetUsbChooserContext(Profile* profile) { | 194 ChooserContextBase* GetUsbChooserContext(Profile* profile) { |
| 195 return UsbChooserContextFactory::GetForProfile(profile); | 195 return UsbChooserContextFactory::GetForProfile(profile); |
| 196 } | 196 } |
| 197 | 197 |
| 198 // The list of chooser types that need to display entries in the Website | 198 // The list of chooser types that need to display entries in the Website |
| 199 // Settings UI. THE ORDER OF THESE ITEMS IS IMPORTANT. To propose changing it, | 199 // Settings UI. THE ORDER OF THESE ITEMS IS IMPORTANT. To propose changing it, |
| 200 // email security-dev@chromium.org. | 200 // email security-dev@chromium.org. |
| 201 WebsiteSettings::ChooserUIInfo kChooserUIInfo[] = { | 201 PageInfo::ChooserUIInfo kChooserUIInfo[] = { |
| 202 {CONTENT_SETTINGS_TYPE_USB_CHOOSER_DATA, &GetUsbChooserContext, | 202 {CONTENT_SETTINGS_TYPE_USB_CHOOSER_DATA, &GetUsbChooserContext, |
| 203 IDR_BLOCKED_USB, IDR_ALLOWED_USB, IDS_WEBSITE_SETTINGS_USB_DEVICE_LABEL, | 203 IDR_BLOCKED_USB, IDR_ALLOWED_USB, IDS_PAGE_INFO_USB_DEVICE_LABEL, |
| 204 IDS_WEBSITE_SETTINGS_DELETE_USB_DEVICE, "name"}, | 204 IDS_PAGE_INFO_DELETE_USB_DEVICE, "name"}, |
| 205 }; | 205 }; |
| 206 | 206 |
| 207 } // namespace | 207 } // namespace |
| 208 | 208 |
| 209 WebsiteSettings::WebsiteSettings( | 209 PageInfo::PageInfo(PageInfoUI* ui, |
| 210 WebsiteSettingsUI* ui, | 210 Profile* profile, |
| 211 Profile* profile, | 211 TabSpecificContentSettings* tab_specific_content_settings, |
| 212 TabSpecificContentSettings* tab_specific_content_settings, | 212 content::WebContents* web_contents, |
| 213 content::WebContents* web_contents, | 213 const GURL& url, |
| 214 const GURL& url, | 214 const security_state::SecurityInfo& security_info) |
| 215 const security_state::SecurityInfo& security_info) | |
| 216 : TabSpecificContentSettings::SiteDataObserver( | 215 : TabSpecificContentSettings::SiteDataObserver( |
| 217 tab_specific_content_settings), | 216 tab_specific_content_settings), |
| 218 content::WebContentsObserver(web_contents), | 217 content::WebContentsObserver(web_contents), |
| 219 ui_(ui), | 218 ui_(ui), |
| 220 show_info_bar_(false), | 219 show_info_bar_(false), |
| 221 site_url_(url), | 220 site_url_(url), |
| 222 site_identity_status_(SITE_IDENTITY_STATUS_UNKNOWN), | 221 site_identity_status_(SITE_IDENTITY_STATUS_UNKNOWN), |
| 223 site_connection_status_(SITE_CONNECTION_STATUS_UNKNOWN), | 222 site_connection_status_(SITE_CONNECTION_STATUS_UNKNOWN), |
| 224 show_ssl_decision_revoke_button_(false), | 223 show_ssl_decision_revoke_button_(false), |
| 225 content_settings_(HostContentSettingsMapFactory::GetForProfile(profile)), | 224 content_settings_(HostContentSettingsMapFactory::GetForProfile(profile)), |
| 226 chrome_ssl_host_state_delegate_( | 225 chrome_ssl_host_state_delegate_( |
| 227 ChromeSSLHostStateDelegateFactory::GetForProfile(profile)), | 226 ChromeSSLHostStateDelegateFactory::GetForProfile(profile)), |
| 228 did_revoke_user_ssl_decisions_(false), | 227 did_revoke_user_ssl_decisions_(false), |
| 229 profile_(profile), | 228 profile_(profile), |
| 230 security_level_(security_state::NONE) { | 229 security_level_(security_state::NONE) { |
| 231 Init(url, security_info); | 230 Init(url, security_info); |
| 232 | 231 |
| 233 PresentSitePermissions(); | 232 PresentSitePermissions(); |
| 234 PresentSiteData(); | 233 PresentSiteData(); |
| 235 PresentSiteIdentity(); | 234 PresentSiteIdentity(); |
| 236 | 235 |
| 237 // Every time the Website Settings UI is opened a |WebsiteSettings| object is | 236 // Every time the Page Info UI is opened a |PageInfo| object is |
| 238 // created. So this counts how ofter the Website Settings UI is opened. | 237 // created. So this counts how ofter the Page Info UI is opened. |
| 239 RecordWebsiteSettingsAction(WEBSITE_SETTINGS_OPENED); | 238 RecordPageInfoAction(PAGE_INFO_OPENED); |
| 240 } | 239 } |
| 241 | 240 |
| 242 WebsiteSettings::~WebsiteSettings() {} | 241 PageInfo::~PageInfo() {} |
| 243 | 242 |
| 244 void WebsiteSettings::RecordWebsiteSettingsAction( | 243 void PageInfo::RecordPageInfoAction(PageInfoAction action) { |
| 245 WebsiteSettingsAction action) { | 244 UMA_HISTOGRAM_ENUMERATION("WebsiteSettings.Action", action, PAGE_INFO_COUNT); |
| 246 UMA_HISTOGRAM_ENUMERATION("WebsiteSettings.Action", action, | |
| 247 WEBSITE_SETTINGS_COUNT); | |
| 248 | 245 |
| 249 std::string histogram_name; | 246 std::string histogram_name; |
| 250 | 247 |
| 251 if (site_url_.SchemeIsCryptographic()) { | 248 if (site_url_.SchemeIsCryptographic()) { |
| 252 if (security_level_ == security_state::SECURE || | 249 if (security_level_ == security_state::SECURE || |
| 253 security_level_ == security_state::EV_SECURE) { | 250 security_level_ == security_state::EV_SECURE) { |
| 254 UMA_HISTOGRAM_ENUMERATION("Security.PageInfo.Action.HttpsUrl.Valid", | 251 UMA_HISTOGRAM_ENUMERATION("Security.PageInfo.Action.HttpsUrl.Valid", |
| 255 action, WEBSITE_SETTINGS_COUNT); | 252 action, PAGE_INFO_COUNT); |
| 256 } else if (security_level_ == security_state::NONE) { | 253 } else if (security_level_ == security_state::NONE) { |
| 257 UMA_HISTOGRAM_ENUMERATION("Security.PageInfo.Action.HttpsUrl.Downgraded", | 254 UMA_HISTOGRAM_ENUMERATION("Security.PageInfo.Action.HttpsUrl.Downgraded", |
| 258 action, WEBSITE_SETTINGS_COUNT); | 255 action, PAGE_INFO_COUNT); |
| 259 } else if (security_level_ == security_state::DANGEROUS) { | 256 } else if (security_level_ == security_state::DANGEROUS) { |
| 260 UMA_HISTOGRAM_ENUMERATION("Security.PageInfo.Action.HttpsUrl.Dangerous", | 257 UMA_HISTOGRAM_ENUMERATION("Security.PageInfo.Action.HttpsUrl.Dangerous", |
| 261 action, WEBSITE_SETTINGS_COUNT); | 258 action, PAGE_INFO_COUNT); |
| 262 } | 259 } |
| 263 return; | 260 return; |
| 264 } | 261 } |
| 265 | 262 |
| 266 if (security_level_ == security_state::HTTP_SHOW_WARNING) { | 263 if (security_level_ == security_state::HTTP_SHOW_WARNING) { |
| 267 UMA_HISTOGRAM_ENUMERATION("Security.PageInfo.Action.HttpUrl.Warning", | 264 UMA_HISTOGRAM_ENUMERATION("Security.PageInfo.Action.HttpUrl.Warning", |
| 268 action, WEBSITE_SETTINGS_COUNT); | 265 action, PAGE_INFO_COUNT); |
| 269 } else if (security_level_ == security_state::DANGEROUS) { | 266 } else if (security_level_ == security_state::DANGEROUS) { |
| 270 UMA_HISTOGRAM_ENUMERATION("Security.PageInfo.Action.HttpUrl.Dangerous", | 267 UMA_HISTOGRAM_ENUMERATION("Security.PageInfo.Action.HttpUrl.Dangerous", |
| 271 action, WEBSITE_SETTINGS_COUNT); | 268 action, PAGE_INFO_COUNT); |
| 272 } else { | 269 } else { |
| 273 UMA_HISTOGRAM_ENUMERATION("Security.PageInfo.Action.HttpUrl.Neutral", | 270 UMA_HISTOGRAM_ENUMERATION("Security.PageInfo.Action.HttpUrl.Neutral", |
| 274 action, WEBSITE_SETTINGS_COUNT); | 271 action, PAGE_INFO_COUNT); |
| 275 } | 272 } |
| 276 } | 273 } |
| 277 | 274 |
| 278 void WebsiteSettings::OnSitePermissionChanged(ContentSettingsType type, | 275 void PageInfo::OnSitePermissionChanged(ContentSettingsType type, |
| 279 ContentSetting setting) { | 276 ContentSetting setting) { |
| 280 // Count how often a permission for a specific content type is changed using | 277 // Count how often a permission for a specific content type is changed using |
| 281 // the Website Settings UI. | 278 // the Page Info UI. |
| 282 size_t num_values; | 279 size_t num_values; |
| 283 int histogram_value = ContentSettingTypeToHistogramValue(type, &num_values); | 280 int histogram_value = ContentSettingTypeToHistogramValue(type, &num_values); |
| 284 UMA_HISTOGRAM_ENUMERATION("WebsiteSettings.OriginInfo.PermissionChanged", | 281 UMA_HISTOGRAM_ENUMERATION("WebsiteSettings.OriginInfo.PermissionChanged", |
| 285 histogram_value, num_values); | 282 histogram_value, num_values); |
| 286 | 283 |
| 287 if (setting == ContentSetting::CONTENT_SETTING_ALLOW) { | 284 if (setting == ContentSetting::CONTENT_SETTING_ALLOW) { |
| 288 UMA_HISTOGRAM_ENUMERATION( | 285 UMA_HISTOGRAM_ENUMERATION( |
| 289 "WebsiteSettings.OriginInfo.PermissionChanged.Allowed", histogram_value, | 286 "WebsiteSettings.OriginInfo.PermissionChanged.Allowed", histogram_value, |
| 290 num_values); | 287 num_values); |
| 291 | 288 |
| 292 if (type == CONTENT_SETTINGS_TYPE_PLUGINS) { | 289 if (type == CONTENT_SETTINGS_TYPE_PLUGINS) { |
| 293 rappor::SampleDomainAndRegistryFromGURL( | 290 rappor::SampleDomainAndRegistryFromGURL( |
| 294 g_browser_process->rappor_service(), | 291 g_browser_process->rappor_service(), |
| 295 "ContentSettings.Plugins.AddedAllowException", site_url_); | 292 "ContentSettings.Plugins.AddedAllowException", site_url_); |
| 296 } | 293 } |
| 297 } else if (setting == ContentSetting::CONTENT_SETTING_BLOCK) { | 294 } else if (setting == ContentSetting::CONTENT_SETTING_BLOCK) { |
| 298 UMA_HISTOGRAM_ENUMERATION( | 295 UMA_HISTOGRAM_ENUMERATION( |
| 299 "WebsiteSettings.OriginInfo.PermissionChanged.Blocked", histogram_value, | 296 "WebsiteSettings.OriginInfo.PermissionChanged.Blocked", histogram_value, |
| 300 num_values); | 297 num_values); |
| 301 } | 298 } |
| 302 | 299 |
| 303 // This is technically redundant given the histogram above, but putting the | 300 // This is technically redundant given the histogram above, but putting the |
| 304 // total count of permission changes in another histogram makes it easier to | 301 // total count of permission changes in another histogram makes it easier to |
| 305 // compare it against other kinds of actions in WebsiteSettings[PopupView]. | 302 // compare it against other kinds of actions in PageInfo[PopupView]. |
| 306 RecordWebsiteSettingsAction(WEBSITE_SETTINGS_CHANGED_PERMISSION); | 303 RecordPageInfoAction(PAGE_INFO_CHANGED_PERMISSION); |
| 307 | 304 |
| 308 PermissionUtil::ScopedRevocationReporter scoped_revocation_reporter( | 305 PermissionUtil::ScopedRevocationReporter scoped_revocation_reporter( |
| 309 this->profile_, this->site_url_, this->site_url_, type, | 306 this->profile_, this->site_url_, this->site_url_, type, |
| 310 PermissionSourceUI::OIB); | 307 PermissionSourceUI::OIB); |
| 311 | 308 |
| 312 content_settings_->SetNarrowestContentSetting(site_url_, site_url_, type, | 309 content_settings_->SetNarrowestContentSetting(site_url_, site_url_, type, |
| 313 setting); | 310 setting); |
| 314 | 311 |
| 315 show_info_bar_ = true; | 312 show_info_bar_ = true; |
| 316 | 313 |
| 317 // Refresh the UI to reflect the new setting. | 314 // Refresh the UI to reflect the new setting. |
| 318 PresentSitePermissions(); | 315 PresentSitePermissions(); |
| 319 } | 316 } |
| 320 | 317 |
| 321 void WebsiteSettings::OnSiteChosenObjectDeleted( | 318 void PageInfo::OnSiteChosenObjectDeleted(const ChooserUIInfo& ui_info, |
| 322 const ChooserUIInfo& ui_info, | 319 const base::DictionaryValue& object) { |
| 323 const base::DictionaryValue& object) { | |
| 324 // TODO(reillyg): Create metrics for revocations. crbug.com/556845 | 320 // TODO(reillyg): Create metrics for revocations. crbug.com/556845 |
| 325 ChooserContextBase* context = ui_info.get_context(profile_); | 321 ChooserContextBase* context = ui_info.get_context(profile_); |
| 326 const GURL origin = site_url_.GetOrigin(); | 322 const GURL origin = site_url_.GetOrigin(); |
| 327 context->RevokeObjectPermission(origin, origin, object); | 323 context->RevokeObjectPermission(origin, origin, object); |
| 328 | 324 |
| 329 show_info_bar_ = true; | 325 show_info_bar_ = true; |
| 330 | 326 |
| 331 // Refresh the UI to reflect the changed settings. | 327 // Refresh the UI to reflect the changed settings. |
| 332 PresentSitePermissions(); | 328 PresentSitePermissions(); |
| 333 } | 329 } |
| 334 | 330 |
| 335 void WebsiteSettings::OnSiteDataAccessed() { | 331 void PageInfo::OnSiteDataAccessed() { |
| 336 PresentSiteData(); | 332 PresentSiteData(); |
| 337 } | 333 } |
| 338 | 334 |
| 339 void WebsiteSettings::OnUIClosing() { | 335 void PageInfo::OnUIClosing() { |
| 340 #if defined(OS_ANDROID) | 336 #if defined(OS_ANDROID) |
| 341 NOTREACHED(); | 337 NOTREACHED(); |
| 342 #else | 338 #else |
| 343 if (show_info_bar_ && web_contents() && !web_contents()->IsBeingDestroyed()) { | 339 if (show_info_bar_ && web_contents() && !web_contents()->IsBeingDestroyed()) { |
| 344 InfoBarService* infobar_service = | 340 InfoBarService* infobar_service = |
| 345 InfoBarService::FromWebContents(web_contents()); | 341 InfoBarService::FromWebContents(web_contents()); |
| 346 if (infobar_service) | 342 if (infobar_service) |
| 347 WebsiteSettingsInfoBarDelegate::Create(infobar_service); | 343 PageInfoInfoBarDelegate::Create(infobar_service); |
| 348 } | 344 } |
| 349 | 345 |
| 350 SSLCertificateDecisionsDidRevoke user_decision = | 346 SSLCertificateDecisionsDidRevoke user_decision = |
| 351 did_revoke_user_ssl_decisions_ ? USER_CERT_DECISIONS_REVOKED | 347 did_revoke_user_ssl_decisions_ ? USER_CERT_DECISIONS_REVOKED |
| 352 : USER_CERT_DECISIONS_NOT_REVOKED; | 348 : USER_CERT_DECISIONS_NOT_REVOKED; |
| 353 | 349 |
| 354 UMA_HISTOGRAM_ENUMERATION("interstitial.ssl.did_user_revoke_decisions", | 350 UMA_HISTOGRAM_ENUMERATION("interstitial.ssl.did_user_revoke_decisions", |
| 355 user_decision, | 351 user_decision, |
| 356 END_OF_SSL_CERTIFICATE_DECISIONS_DID_REVOKE_ENUM); | 352 END_OF_SSL_CERTIFICATE_DECISIONS_DID_REVOKE_ENUM); |
| 357 #endif | 353 #endif |
| 358 } | 354 } |
| 359 | 355 |
| 360 void WebsiteSettings::OnRevokeSSLErrorBypassButtonPressed() { | 356 void PageInfo::OnRevokeSSLErrorBypassButtonPressed() { |
| 361 DCHECK(chrome_ssl_host_state_delegate_); | 357 DCHECK(chrome_ssl_host_state_delegate_); |
| 362 chrome_ssl_host_state_delegate_->RevokeUserAllowExceptionsHard( | 358 chrome_ssl_host_state_delegate_->RevokeUserAllowExceptionsHard( |
| 363 site_url().host()); | 359 site_url().host()); |
| 364 did_revoke_user_ssl_decisions_ = true; | 360 did_revoke_user_ssl_decisions_ = true; |
| 365 } | 361 } |
| 366 | 362 |
| 367 void WebsiteSettings::Init(const GURL& url, | 363 void PageInfo::Init(const GURL& url, |
| 368 const security_state::SecurityInfo& security_info) { | 364 const security_state::SecurityInfo& security_info) { |
| 369 #if !defined(OS_ANDROID) && !defined(OS_IOS) | 365 #if !defined(OS_ANDROID) && !defined(OS_IOS) |
| 370 // On desktop, internal URLs aren't handled by this class. Instead, a | 366 // On desktop, internal URLs aren't handled by this class. Instead, a |
| 371 // custom and simpler popup is shown. | 367 // custom and simpler popup is shown. |
| 372 DCHECK(!url.SchemeIs(content::kChromeUIScheme) && | 368 DCHECK(!url.SchemeIs(content::kChromeUIScheme) && |
| 373 !url.SchemeIs(content::kChromeDevToolsScheme) && | 369 !url.SchemeIs(content::kChromeDevToolsScheme) && |
| 374 !url.SchemeIs(content::kViewSourceScheme) && | 370 !url.SchemeIs(content::kViewSourceScheme) && |
| 375 !url.SchemeIs(content_settings::kExtensionScheme)); | 371 !url.SchemeIs(content_settings::kExtensionScheme)); |
| 376 #endif | 372 #endif |
| 377 | 373 |
| 378 bool isChromeUINativeScheme = false; | 374 bool isChromeUINativeScheme = false; |
| (...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 628 // Check if a user decision has been made to allow or deny certificates with | 624 // Check if a user decision has been made to allow or deny certificates with |
| 629 // errors on this site. | 625 // errors on this site. |
| 630 ChromeSSLHostStateDelegate* delegate = | 626 ChromeSSLHostStateDelegate* delegate = |
| 631 ChromeSSLHostStateDelegateFactory::GetForProfile(profile_); | 627 ChromeSSLHostStateDelegateFactory::GetForProfile(profile_); |
| 632 DCHECK(delegate); | 628 DCHECK(delegate); |
| 633 // Only show an SSL decision revoke button if the user has chosen to bypass | 629 // Only show an SSL decision revoke button if the user has chosen to bypass |
| 634 // SSL host errors for this host in the past. | 630 // SSL host errors for this host in the past. |
| 635 show_ssl_decision_revoke_button_ = delegate->HasAllowException(url.host()); | 631 show_ssl_decision_revoke_button_ = delegate->HasAllowException(url.host()); |
| 636 } | 632 } |
| 637 | 633 |
| 638 void WebsiteSettings::PresentSitePermissions() { | 634 void PageInfo::PresentSitePermissions() { |
| 639 PermissionInfoList permission_info_list; | 635 PermissionInfoList permission_info_list; |
| 640 ChosenObjectInfoList chosen_object_info_list; | 636 ChosenObjectInfoList chosen_object_info_list; |
| 641 | 637 |
| 642 WebsiteSettingsUI::PermissionInfo permission_info; | 638 PageInfoUI::PermissionInfo permission_info; |
| 643 for (size_t i = 0; i < arraysize(kPermissionType); ++i) { | 639 for (size_t i = 0; i < arraysize(kPermissionType); ++i) { |
| 644 permission_info.type = kPermissionType[i]; | 640 permission_info.type = kPermissionType[i]; |
| 645 | 641 |
| 646 if (!ShouldShowPermission(permission_info.type)) | 642 if (!ShouldShowPermission(permission_info.type)) |
| 647 continue; | 643 continue; |
| 648 | 644 |
| 649 content_settings::SettingInfo info; | 645 content_settings::SettingInfo info; |
| 650 std::unique_ptr<base::Value> value = content_settings_->GetWebsiteSetting( | 646 std::unique_ptr<base::Value> value = content_settings_->GetWebsiteSetting( |
| 651 site_url_, site_url_, permission_info.type, std::string(), &info); | 647 site_url_, site_url_, permission_info.type, std::string(), &info); |
| 652 DCHECK(value.get()); | 648 DCHECK(value.get()); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 694 | 690 |
| 695 permission_info_list.push_back(permission_info); | 691 permission_info_list.push_back(permission_info); |
| 696 } | 692 } |
| 697 | 693 |
| 698 for (const ChooserUIInfo& ui_info : kChooserUIInfo) { | 694 for (const ChooserUIInfo& ui_info : kChooserUIInfo) { |
| 699 ChooserContextBase* context = ui_info.get_context(profile_); | 695 ChooserContextBase* context = ui_info.get_context(profile_); |
| 700 const GURL origin = site_url_.GetOrigin(); | 696 const GURL origin = site_url_.GetOrigin(); |
| 701 auto chosen_objects = context->GetGrantedObjects(origin, origin); | 697 auto chosen_objects = context->GetGrantedObjects(origin, origin); |
| 702 for (std::unique_ptr<base::DictionaryValue>& object : chosen_objects) { | 698 for (std::unique_ptr<base::DictionaryValue>& object : chosen_objects) { |
| 703 chosen_object_info_list.push_back( | 699 chosen_object_info_list.push_back( |
| 704 base::MakeUnique<WebsiteSettingsUI::ChosenObjectInfo>( | 700 base::MakeUnique<PageInfoUI::ChosenObjectInfo>(ui_info, |
| 705 ui_info, std::move(object))); | 701 std::move(object))); |
| 706 } | 702 } |
| 707 } | 703 } |
| 708 | 704 |
| 709 ui_->SetPermissionInfo(permission_info_list, | 705 ui_->SetPermissionInfo(permission_info_list, |
| 710 std::move(chosen_object_info_list)); | 706 std::move(chosen_object_info_list)); |
| 711 } | 707 } |
| 712 | 708 |
| 713 void WebsiteSettings::PresentSiteData() { | 709 void PageInfo::PresentSiteData() { |
| 714 CookieInfoList cookie_info_list; | 710 CookieInfoList cookie_info_list; |
| 715 const LocalSharedObjectsContainer& allowed_objects = | 711 const LocalSharedObjectsContainer& allowed_objects = |
| 716 tab_specific_content_settings()->allowed_local_shared_objects(); | 712 tab_specific_content_settings()->allowed_local_shared_objects(); |
| 717 const LocalSharedObjectsContainer& blocked_objects = | 713 const LocalSharedObjectsContainer& blocked_objects = |
| 718 tab_specific_content_settings()->blocked_local_shared_objects(); | 714 tab_specific_content_settings()->blocked_local_shared_objects(); |
| 719 | 715 |
| 720 // Add first party cookie and site data counts. | 716 // Add first party cookie and site data counts. |
| 721 WebsiteSettingsUI::CookieInfo cookie_info; | 717 PageInfoUI::CookieInfo cookie_info; |
| 722 cookie_info.allowed = allowed_objects.GetObjectCountForDomain(site_url_); | 718 cookie_info.allowed = allowed_objects.GetObjectCountForDomain(site_url_); |
| 723 cookie_info.blocked = blocked_objects.GetObjectCountForDomain(site_url_); | 719 cookie_info.blocked = blocked_objects.GetObjectCountForDomain(site_url_); |
| 724 cookie_info.is_first_party = true; | 720 cookie_info.is_first_party = true; |
| 725 cookie_info_list.push_back(cookie_info); | 721 cookie_info_list.push_back(cookie_info); |
| 726 | 722 |
| 727 // Add third party cookie counts. | 723 // Add third party cookie counts. |
| 728 cookie_info.allowed = allowed_objects.GetObjectCount() - cookie_info.allowed; | 724 cookie_info.allowed = allowed_objects.GetObjectCount() - cookie_info.allowed; |
| 729 cookie_info.blocked = blocked_objects.GetObjectCount() - cookie_info.blocked; | 725 cookie_info.blocked = blocked_objects.GetObjectCount() - cookie_info.blocked; |
| 730 cookie_info.is_first_party = false; | 726 cookie_info.is_first_party = false; |
| 731 cookie_info_list.push_back(cookie_info); | 727 cookie_info_list.push_back(cookie_info); |
| 732 | 728 |
| 733 ui_->SetCookieInfo(cookie_info_list); | 729 ui_->SetCookieInfo(cookie_info_list); |
| 734 } | 730 } |
| 735 | 731 |
| 736 void WebsiteSettings::PresentSiteIdentity() { | 732 void PageInfo::PresentSiteIdentity() { |
| 737 // After initialization the status about the site's connection and its | 733 // After initialization the status about the site's connection and its |
| 738 // identity must be available. | 734 // identity must be available. |
| 739 DCHECK_NE(site_identity_status_, SITE_IDENTITY_STATUS_UNKNOWN); | 735 DCHECK_NE(site_identity_status_, SITE_IDENTITY_STATUS_UNKNOWN); |
| 740 DCHECK_NE(site_connection_status_, SITE_CONNECTION_STATUS_UNKNOWN); | 736 DCHECK_NE(site_connection_status_, SITE_CONNECTION_STATUS_UNKNOWN); |
| 741 WebsiteSettingsUI::IdentityInfo info; | 737 PageInfoUI::IdentityInfo info; |
| 742 if (site_identity_status_ == SITE_IDENTITY_STATUS_EV_CERT) | 738 if (site_identity_status_ == SITE_IDENTITY_STATUS_EV_CERT) |
| 743 info.site_identity = UTF16ToUTF8(organization_name()); | 739 info.site_identity = UTF16ToUTF8(organization_name()); |
| 744 else | 740 else |
| 745 info.site_identity = UTF16ToUTF8(GetSimpleSiteName(site_url_)); | 741 info.site_identity = UTF16ToUTF8(GetSimpleSiteName(site_url_)); |
| 746 | 742 |
| 747 info.connection_status = site_connection_status_; | 743 info.connection_status = site_connection_status_; |
| 748 info.connection_status_description = UTF16ToUTF8(site_connection_details_); | 744 info.connection_status_description = UTF16ToUTF8(site_connection_details_); |
| 749 info.identity_status = site_identity_status_; | 745 info.identity_status = site_identity_status_; |
| 750 info.identity_status_description = UTF16ToUTF8(site_identity_details_); | 746 info.identity_status_description = UTF16ToUTF8(site_identity_details_); |
| 751 info.certificate = certificate_; | 747 info.certificate = certificate_; |
| 752 info.show_ssl_decision_revoke_button = show_ssl_decision_revoke_button_; | 748 info.show_ssl_decision_revoke_button = show_ssl_decision_revoke_button_; |
| 753 ui_->SetIdentityInfo(info); | 749 ui_->SetIdentityInfo(info); |
| 754 } | 750 } |
| OLD | NEW |