| Index: chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePreferences.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePreferences.java
|
| index 9b2ccf8257f231f84b0b4bd985bba0680e08e1d1..99e35ec13f053ff72c1b3cf0fd00887f6b5bcfef 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePreferences.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePreferences.java
|
| @@ -21,6 +21,7 @@ import android.view.MenuItem;
|
| import android.view.inputmethod.EditorInfo;
|
| import android.widget.ListView;
|
| import android.widget.TextView;
|
| +import android.widget.Toast;
|
|
|
| import org.chromium.chrome.R;
|
| import org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference;
|
| @@ -208,6 +209,8 @@ public class WebsitePreferences extends PreferenceFragment
|
| return website.site().getFullscreenPermission() == ContentSetting.ASK;
|
| } else if (mFilter.showGeolocationSites(mCategoryFilter)) {
|
| return website.site().getGeolocationPermission() == ContentSetting.BLOCK;
|
| + } else if (mFilter.showImagesSites(mCategoryFilter)) {
|
| + return website.site().getImagesPermission() == ContentSetting.BLOCK;
|
| } else if (mFilter.showJavaScriptSites(mCategoryFilter)) {
|
| return website.site().getJavaScriptPermission() == ContentSetting.BLOCK;
|
| } else if (mFilter.showPopupSites(mCategoryFilter)) {
|
| @@ -354,20 +357,31 @@ public class WebsitePreferences extends PreferenceFragment
|
| PrefServiceBridge.getInstance().setCameraMicEnabled((boolean) newValue);
|
| } else if (mFilter.showFullscreenSites(mCategoryFilter)) {
|
| PrefServiceBridge.getInstance().setFullscreenAllowed((boolean) newValue);
|
| + } else if (mFilter.showImagesSites(mCategoryFilter)) {
|
| + PrefServiceBridge.getInstance().setImagesEnabled((boolean) newValue);
|
| } else if (mFilter.showJavaScriptSites(mCategoryFilter)) {
|
| PrefServiceBridge.getInstance().setJavaScriptEnabled((boolean) newValue);
|
| + } else if (mFilter.showPopupSites(mCategoryFilter)) {
|
| + PrefServiceBridge.getInstance().setAllowPopupsEnabled((boolean) newValue);
|
| + } else if (mFilter.showPushNotificationsSites(mCategoryFilter)) {
|
| + PrefServiceBridge.getInstance().setPushNotificationsEnabled((boolean) newValue);
|
| + }
|
| +
|
| + // Categories that support adding exceptions also manage the 'Add site' preference.
|
| + if (mFilter.showImagesSites(mCategoryFilter)
|
| + || mFilter.showJavaScriptSites(mCategoryFilter)) {
|
| if ((boolean) newValue) {
|
| Preference addException = getPreferenceScreen().findPreference(
|
| ADD_EXCEPTION_KEY);
|
| - getPreferenceScreen().removePreference(addException);
|
| + if (addException != null) { // Can be null in testing.
|
| + getPreferenceScreen().removePreference(addException);
|
| + }
|
| } else {
|
| getPreferenceScreen().addPreference(
|
| - new AddExceptionPreference(getActivity(), ADD_EXCEPTION_KEY, this));
|
| + new AddExceptionPreference(
|
| + getActivity(), ADD_EXCEPTION_KEY,
|
| + mFilter.toContentSettingsType(mCategoryFilter), this));
|
| }
|
| - } else if (mFilter.showPopupSites(mCategoryFilter)) {
|
| - PrefServiceBridge.getInstance().setAllowPopupsEnabled((boolean) newValue);
|
| - } else if (mFilter.showPushNotificationsSites(mCategoryFilter)) {
|
| - PrefServiceBridge.getInstance().setPushNotificationsEnabled((boolean) newValue);
|
| }
|
|
|
| ChromeSwitchPreference globalToggle = (ChromeSwitchPreference)
|
| @@ -400,7 +414,19 @@ public class WebsitePreferences extends PreferenceFragment
|
| }
|
|
|
| @Override
|
| - public void onSiteAdded() {
|
| + public void onAddSite(String hostname) {
|
| + if (mFilter.showJavaScriptSites(mCategoryFilter)) {
|
| + PrefServiceBridge.getInstance().setJavaScriptAllowed(hostname, true);
|
| + } else if (mFilter.showImagesSites(mCategoryFilter)) {
|
| + PrefServiceBridge.getInstance().setImagesAllowed(hostname, true);
|
| + }
|
| +
|
| + Toast.makeText(getActivity(),
|
| + String.format(getActivity().getString(
|
| + R.string.website_settings_add_site_toast),
|
| + hostname),
|
| + Toast.LENGTH_SHORT).show();
|
| +
|
| getInfoForOrigins();
|
| }
|
|
|
| @@ -416,6 +442,7 @@ public class WebsitePreferences extends PreferenceFragment
|
| if (mFilter.showGeolocationSites(mCategoryFilter)) {
|
| return !prefs.isAllowLocationUserModifiable();
|
| }
|
| + if (mFilter.showImagesSites(mCategoryFilter)) return prefs.imagesManaged();
|
| if (mFilter.showJavaScriptSites(mCategoryFilter)) return prefs.javaScriptManaged();
|
| if (mFilter.showPopupSites(mCategoryFilter)) return prefs.isPopupsManaged();
|
| return false;
|
| @@ -447,10 +474,13 @@ public class WebsitePreferences extends PreferenceFragment
|
|
|
| configureGlobalToggles();
|
|
|
| - if (mFilter.showJavaScriptSites(mCategoryFilter)
|
| - && !PrefServiceBridge.getInstance().javaScriptEnabled()) {
|
| + if ((mFilter.showJavaScriptSites(mCategoryFilter)
|
| + && !PrefServiceBridge.getInstance().javaScriptEnabled())
|
| + || (mFilter.showImagesSites(mCategoryFilter)
|
| + && !PrefServiceBridge.getInstance().imagesEnabled())) {
|
| getPreferenceScreen().addPreference(
|
| - new AddExceptionPreference(getActivity(), ADD_EXCEPTION_KEY, this));
|
| + new AddExceptionPreference(getActivity(), ADD_EXCEPTION_KEY,
|
| + mFilter.toContentSettingsType(mCategoryFilter), this));
|
| }
|
| }
|
|
|
| @@ -534,6 +564,9 @@ public class WebsitePreferences extends PreferenceFragment
|
| } else if (mFilter.showFullscreenSites(mCategoryFilter)) {
|
| globalToggle.setChecked(
|
| PrefServiceBridge.getInstance().isFullscreenAllowed());
|
| + } else if (mFilter.showImagesSites(mCategoryFilter)) {
|
| + globalToggle.setChecked(
|
| + PrefServiceBridge.getInstance().imagesEnabled());
|
| } else if (mFilter.showJavaScriptSites(mCategoryFilter)) {
|
| globalToggle.setChecked(PrefServiceBridge.getInstance().javaScriptEnabled());
|
| } else if (mFilter.showPopupSites(mCategoryFilter)) {
|
|
|