| 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..4731c08f9a886163b9ae8e24a0032dfb96d1f6b0 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
|
| @@ -313,7 +313,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);
|
| }
|
|
|
| if (permissionPreferenceKeys.contains(preference.getKey())) {
|
| @@ -496,6 +496,37 @@ public class SingleWebsitePreferences extends PreferenceFragment
|
| }
|
| }
|
|
|
| + /**
|
| + * Updates the subresource filter list preference based on subresource filter activation. This
|
| + * has some custom behavior.
|
| + * 1. If the site is filtering, the permission should show up even if it is set as the default
|
| + * (e.g. |preference| is null).
|
| + * 2. The BLOCK string is custom.
|
| + */
|
| + private void setUpSubresourceFilterPreference(Preference preference) {
|
| + // If the subresource filter is activated, then this site will have resources filtered
|
| + // unless there is an explicit permission disallowing the filtering.
|
| + boolean subresourceFilterActivated = WebsitePreferenceBridge.getSubresourceFilterActivated(
|
| + mSite.getAddress().getOrigin());
|
| + ContentSetting permission = mSite.getSubresourceFilterPermission();
|
| +
|
| + // If |permission| is null, there is no explicit (non-default) permission set for this site.
|
| + // However, if the filtering is activated, we still want to show the permission as BLOCK.
|
| + if (permission == null && !subresourceFilterActivated) {
|
| + setUpListPreference(preference, null);
|
| + return;
|
| + }
|
| + setUpListPreference(preference, permission == null ? ContentSetting.BLOCK : 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.
|
|
|