| 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..2af62989a3e4be4ec89087e5fef12bcac697334f 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
|
| }
|
| }
|
|
|
| + private void setUpSubresourceFilterPreference(Preference preference) {
|
| + // The setting shows up even in the default state if the site is activated.
|
| + ContentSetting permission = mSite.getSubresourceFilterPermission();
|
| + boolean activated = WebsitePreferenceBridge.getSubresourceFilterActivated(
|
| + mSite.getAddress().getOrigin());
|
| + // Default behavior without activation.
|
| + if (!activated && permission == null) {
|
| + setUpListPreference(preference, permission);
|
| + return;
|
| + }
|
| +
|
| + // Default behavior with activation is to show BLOCK.
|
| + if (permission == null) {
|
| + permission = ContentSetting.BLOCK;
|
| + // TODO(csharrison): This is a bit of a hack, should potentially use a custom class
|
| + // instead of a fake exception.
|
| + String origin = mSite.getAddress().getOrigin();
|
| + mSite.setSubresourceFilterException(new ContentSettingException(
|
| + ContentSettingsType.CONTENT_SETTINGS_TYPE_SUBRESOURCE_FILTER, origin,
|
| + permission, ""));
|
| + }
|
| + setUpListPreference(preference, permission);
|
| +
|
| + // The list preference needs to be custom to allow for custom behavior / strings depending
|
| + // on the activation state.
|
| + SubresourceFilterListPreference listPreference =
|
| + (SubresourceFilterListPreference) preference;
|
| + listPreference.setShouldUseActiveStrings(activated);
|
| + 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.
|
|
|