Chromium Code Reviews| 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..187501e033c1e421ebad14f0740a279e84e24b90 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,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) |
| @@ -379,6 +392,16 @@ 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); |
| + } |
|
newt (away)
2015/04/10 18:46:49
newline
Finnur
2015/04/13 12:59:32
Done.
|
| // OnPreferenceClickListener: |
| @Override |
| @@ -400,7 +423,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(); |
| } |
| @@ -416,6 +449,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 +481,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)); |
| } |
| } |
| @@ -534,6 +571,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)) { |