| 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 3dec96e141a1efdbc541fed8ee263bb35a199df9..cd4fdb59d899e1bf27d177abf429ce44cbad55ff 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)) {
|
| @@ -356,20 +359,30 @@ 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,
|
| + getAddExceptionDialogMessage(), this));
|
| }
|
| - } else if (mFilter.showPopupSites(mCategoryFilter)) {
|
| - PrefServiceBridge.getInstance().setAllowPopupsEnabled((boolean) newValue);
|
| - } else if (mFilter.showPushNotificationsSites(mCategoryFilter)) {
|
| - PrefServiceBridge.getInstance().setPushNotificationsEnabled((boolean) newValue);
|
| }
|
|
|
| ChromeSwitchPreference globalToggle = (ChromeSwitchPreference)
|
| @@ -381,6 +394,17 @@ public class WebsitePreferences extends PreferenceFragment
|
| return true;
|
| }
|
|
|
| + private String getAddExceptionDialogMessage() {
|
| + int resource = 0;
|
| + if (mFilter.showJavaScriptSites(mCategoryFilter)) {
|
| + resource = R.string.website_settings_add_site_description_javascript;
|
| + } else if (mFilter.showImagesSites(mCategoryFilter)) {
|
| + resource = R.string.website_settings_add_site_description_images;
|
| + }
|
| + assert resource > 0;
|
| + return getResources().getString(resource);
|
| + }
|
| +
|
| // OnPreferenceClickListener:
|
|
|
| @Override
|
| @@ -402,7 +426,17 @@ public class WebsitePreferences extends PreferenceFragment
|
| }
|
|
|
| @Override
|
| - public void onSiteAdded() {
|
| + public void onAddSite(String hostname) {
|
| + PrefServiceBridge.getInstance().nativeSetContentSettingForPattern(
|
| + mFilter.toContentSettingsType(mCategoryFilter), hostname,
|
| + ContentSetting.ALLOW.toInt());
|
| +
|
| + Toast.makeText(getActivity(),
|
| + String.format(getActivity().getString(
|
| + R.string.website_settings_add_site_toast),
|
| + hostname),
|
| + Toast.LENGTH_SHORT).show();
|
| +
|
| getInfoForOrigins();
|
| }
|
|
|
| @@ -418,6 +452,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;
|
| @@ -449,10 +484,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,
|
| + getAddExceptionDialogMessage(), this));
|
| }
|
| }
|
|
|
| @@ -543,6 +581,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)) {
|
|
|