Index: chrome/browser/ui/page_info/page_info.cc |
diff --git a/chrome/browser/ui/page_info/page_info.cc b/chrome/browser/ui/page_info/page_info.cc |
index 96f733646d997cee7b05de6b1f25696b304ab74d..b5a07be5ce56da7f421b2ec0e497eed2301603db 100644 |
--- a/chrome/browser/ui/page_info/page_info.cc |
+++ b/chrome/browser/ui/page_info/page_info.cc |
@@ -92,8 +92,8 @@ enum SSLCertificateDecisionsDidRevoke { |
}; |
// The list of content settings types to display on the Page Info UI. THE |
-// ORDER OF THESE ITEMS IS IMPORTANT. To propose changing it, email |
-// security-dev@chromium.org. |
+// ORDER OF THESE ITEMS IS IMPORTANT and comes from https://crbug.com/610358. To |
+// propose changing it, email security-dev@chromium.org. |
ContentSettingsType kPermissionType[] = { |
CONTENT_SETTINGS_TYPE_GEOLOCATION, |
CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, |
@@ -105,16 +105,18 @@ ContentSettingsType kPermissionType[] = { |
CONTENT_SETTINGS_TYPE_IMAGES, |
#endif |
CONTENT_SETTINGS_TYPE_POPUPS, |
+ CONTENT_SETTINGS_TYPE_SUBRESOURCE_FILTER, |
CONTENT_SETTINGS_TYPE_BACKGROUND_SYNC, |
CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS, |
CONTENT_SETTINGS_TYPE_AUTOPLAY, |
CONTENT_SETTINGS_TYPE_MIDI_SYSEX, |
- CONTENT_SETTINGS_TYPE_SUBRESOURCE_FILTER, |
}; |
// Determines whether to show permission |type| in the Page Info UI. Only |
// applies to permissions listed in |kPermissionType|. |
-bool ShouldShowPermission(ContentSettingsType type) { |
+bool ShouldShowPermission(ContentSettingsType type, |
+ const GURL& site_url, |
+ HostContentSettingsMap* content_settings) { |
#if !defined(OS_ANDROID) |
// Autoplay is Android-only at the moment. |
if (type == CONTENT_SETTINGS_TYPE_AUTOPLAY) |
@@ -122,8 +124,16 @@ bool ShouldShowPermission(ContentSettingsType type) { |
#endif |
if (type == CONTENT_SETTINGS_TYPE_SUBRESOURCE_FILTER) { |
- return base::FeatureList::IsEnabled( |
- subresource_filter::kSafeBrowsingSubresourceFilterExperimentalUI); |
+ if (!base::FeatureList::IsEnabled( |
+ subresource_filter::kSafeBrowsingSubresourceFilterExperimentalUI)) { |
+ return false; |
+ } |
+ |
+ // The setting for subresource filtering should not show up if the site is |
+ // not activated, both on android and desktop platforms. |
+ return content_settings->GetWebsiteSetting( |
+ site_url, GURL(), CONTENT_SETTINGS_TYPE_SUBRESOURCE_FILTER_DATA, |
+ std::string(), nullptr) != nullptr; |
} |
return true; |
@@ -665,8 +675,10 @@ void PageInfo::PresentSitePermissions() { |
for (size_t i = 0; i < arraysize(kPermissionType); ++i) { |
permission_info.type = kPermissionType[i]; |
- if (!ShouldShowPermission(permission_info.type)) |
+ if (!ShouldShowPermission(permission_info.type, site_url_, |
+ content_settings_)) { |
continue; |
+ } |
content_settings::SettingInfo info; |
std::unique_ptr<base::Value> value = content_settings_->GetWebsiteSetting( |