Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1289)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleWebsitePreferences.java

Issue 2888473003: [subresource_filter] Site Details UI for default state (Closed)
Patch Set: raymes review: remove some strings Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleWebsitePreferences.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleWebsitePreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleWebsitePreferences.java
index 5c660be98775f72527417ead0ab6daca461a93d8..9d9722ca6ddf34a9c050ed4c3e9dbff27c49b997 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleWebsitePreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleWebsitePreferences.java
@@ -64,6 +64,8 @@ public class SingleWebsitePreferences extends PreferenceFragment
public static final String PREF_OS_PERMISSIONS_WARNING_EXTRA = "os_permissions_warning_extra";
public static final String PREF_OS_PERMISSIONS_WARNING_DIVIDER =
"os_permissions_warning_divider";
+ public static final String PREF_EXTRA_INFO = "website_settings_extra_info";
+ public static final String PREF_EXTRA_INFO_DIVIDER = "website_settings_extra_info_divider";
Finnur 2017/05/23 15:37:13 These key names are a bit generic, as if to suppor
Charlie Harrison 2017/05/23 17:12:19 Renamed to subresource_filter_permission_extra_inf
// Actions at the top (if adding new, see hasUsagePreferences below):
public static final String PREF_CLEAR_DATA = "clear_data";
// Buttons:
@@ -269,6 +271,11 @@ public class SingleWebsitePreferences extends PreferenceFragment
private void displaySitePermissions() {
addPreferencesFromResource(R.xml.single_website_preferences);
+ // This boolean controls how the subresource filter list preference behaves, as well as
+ // gating the extra info header for subresource filtering.
Finnur 2017/05/23 15:37:13 nit: "gating a header" is language that I (as a no
Charlie Harrison 2017/05/23 17:12:19 I tried to rephrase the comment.
+ boolean subresourceFilterActivated = WebsitePreferenceBridge.getSubresourceFilterActivated(
+ mSite.getAddress().getOrigin());
+
Set<String> permissionPreferenceKeys =
new HashSet<>(Arrays.asList(PERMISSION_PREFERENCE_KEYS));
int maxPermissionOrder = 0;
@@ -313,7 +320,7 @@ public class SingleWebsitePreferences extends PreferenceFragment
} else if (PREF_PROTECTED_MEDIA_IDENTIFIER_PERMISSION.equals(preference.getKey())) {
setUpListPreference(preference, mSite.getProtectedMediaIdentifierPermission());
} else if (PREF_SUBRESOURCE_FILTER_PERMISSION.equals(preference.getKey())) {
- setUpListPreference(preference, mSite.getSubresourceFilterPermission());
+ setUpSubresourceFilterPreference(preference, subresourceFilterActivated);
}
if (permissionPreferenceKeys.contains(preference.getKey())) {
@@ -358,6 +365,18 @@ public class SingleWebsitePreferences extends PreferenceFragment
}
}
+ // The subresource filter permission includes a header with some additional information, if
+ // it is being displayed on a site that is activated.
+ Preference extraInfo = preferenceScreen.findPreference(PREF_EXTRA_INFO);
+ Preference extraInfoDivider = preferenceScreen.findPreference(PREF_EXTRA_INFO_DIVIDER);
+ if (getPreferenceScreen().findPreference(PREF_SUBRESOURCE_FILTER_PERMISSION) != null
+ && subresourceFilterActivated) {
+ extraInfo.setTitle(R.string.subresource_filter_permission_extra_info);
+ } else {
+ getPreferenceScreen().removePreference(extraInfo);
+ getPreferenceScreen().removePreference(extraInfoDivider);
+ }
+
// Remove categories if no sub-items.
if (!hasUsagePreferences()) {
Preference heading = preferenceScreen.findPreference(PREF_USAGE);
@@ -496,6 +515,38 @@ public class SingleWebsitePreferences extends PreferenceFragment
}
}
+ private void setUpSubresourceFilterPreference(Preference preference, boolean activated) {
Finnur 2017/05/23 15:37:13 This function has some non-obvious functionality t
Charlie Harrison 2017/05/23 17:12:19 Added a comment.
+ ContentSetting permission = mSite.getSubresourceFilterPermission();
+
+ // The subresource filter permission shows sometimes even if there is no permission set.
Finnur 2017/05/23 15:37:13 I don't understand this comment, nor it's placemen
Charlie Harrison 2017/05/23 17:12:19 It's describing how the implementation works. I've
+ if (permission == null) {
+ // If there is activation, we want the setting to show BLOCK by default. Set an explicit
+ // exception on the website that isn't backed by an explicit content setting. Note that
+ // this will never trigger an actual update to content settings, as those go through
+ // setSubresourceFilterPermission.
+ if (activated) {
+ permission = ContentSetting.BLOCK;
+ String origin = mSite.getAddress().getOrigin();
+ mSite.setSubresourceFilterException(new ContentSettingException(
+ ContentSettingsType.CONTENT_SETTINGS_TYPE_SUBRESOURCE_FILTER, origin,
+ permission, ""));
Finnur 2017/05/23 15:37:13 This feels a bit hacky... I'm a little concerned t
Charlie Harrison 2017/05/23 17:12:19 Is is necessary due to how we've implemented setSu
Finnur 2017/05/24 10:37:22 If the problem you are facing is only while changi
Charlie Harrison 2017/05/25 15:57:19 Yeah that works for me. Done.
+ } else {
+ setUpListPreference(preference, null);
+ return;
+ }
+ }
+ assert permission != null;
+ setUpListPreference(preference, permission);
+
+ // The subresource filter permission has a custom BLOCK string.
+ ListPreference listPreference = (ListPreference) preference;
+ Resources res = getResources();
+ listPreference.setEntries(
+ new String[] {res.getString(R.string.website_settings_permissions_allow),
+ res.getString(R.string.subresource_filter_permission_block)});
+ listPreference.setValueIndex(permission == ContentSetting.ALLOW ? 0 : 1);
+ }
+
/**
* Returns true if the current host matches the default search engine host and location for the
* default search engine is being granted via x-geo.

Powered by Google App Engine
This is Rietveld 408576698