Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3914)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java

Issue 1972963002: Site Settings Android: Move Autoplay and Protected Content to Media menu. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address feedback Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java
index 251d00c670a4ba44f893f63b4692b134096a854d..14b32f48a9536addf1107d1bc300843a9290a7a7 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java
@@ -24,6 +24,11 @@ import java.util.List;
* Microphone, etc. By clicking into one of these categories, the user can see or and modify
* permissions that have been granted to websites, as well as enable or disable permissions
* browser-wide.
+ *
+ * Depending on version and which experiment is running, this class also handles showing the Media
+ * sub-menu, which contains Autoplay and Protected Content. To avoid the Media sub-menu having only
+ * one sub-item, when either Autoplay or Protected Content should not be visible the other is shown
+ * in the main setting instead (as opposed to under Media).
*/
public class SiteSettingsPreferences extends PreferenceFragment
implements OnPreferenceClickListener {
@@ -35,14 +40,23 @@ public class SiteSettingsPreferences extends PreferenceFragment
static final String COOKIES_KEY = "cookies";
static final String FULLSCREEN_KEY = "fullscreen";
static final String JAVASCRIPT_KEY = "javascript";
+ static final String LANGUAGE_KEY = "language";
static final String LOCATION_KEY = "device_location";
+ static final String MEDIA_KEY = "media";
static final String MICROPHONE_KEY = "microphone";
static final String NOTIFICATIONS_KEY = "notifications";
static final String POPUPS_KEY = "popups";
static final String PROTECTED_CONTENT_KEY = "protected_content";
static final String STORAGE_KEY = "use_storage";
- boolean mAutoplayExperimentEnabled = false;
+ // Whether the Autoplay menu is available for display.
+ boolean mAutoplayMenuAvailable = false;
+
+ // Whether the Protected Content menu is available for display.
+ boolean mProtectedContentMenuAvailable = false;
+
+ // Whether this class is handling showing the Media sub-menu (and not the main menu).
+ boolean mMediaSubMenu = false;
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -50,17 +64,21 @@ public class SiteSettingsPreferences extends PreferenceFragment
addPreferencesFromResource(R.xml.site_settings_preferences);
getActivity().setTitle(R.string.prefs_site_settings);
- if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
- getPreferenceScreen().removePreference(findPreference(PROTECTED_CONTENT_KEY));
- }
+ mProtectedContentMenuAvailable = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
String autoplayTrialGroupName =
FieldTrialList.findFullName("MediaElementGestureOverrideExperiment");
- mAutoplayExperimentEnabled = autoplayTrialGroupName.startsWith("Enabled");
- if (!mAutoplayExperimentEnabled) {
- getPreferenceScreen().removePreference(findPreference(AUTOPLAY_KEY));
+ mAutoplayMenuAvailable = autoplayTrialGroupName.startsWith("Enabled");
+
+ String category = "";
+ if (getArguments() != null) {
+ category = getArguments().getString(SingleCategoryPreferences.EXTRA_CATEGORY, "");
+ if (MEDIA_KEY.equals(category)) {
+ mMediaSubMenu = true;
+ }
}
+ configurePreferences();
updatePreferenceStates();
}
@@ -91,26 +109,69 @@ public class SiteSettingsPreferences extends PreferenceFragment
return -1;
}
+ private void configurePreferences() {
+ if (mMediaSubMenu) {
+ // The Media sub-menu only contains Protected Content and Autoplay, so remove all other
+ // menus.
+ getPreferenceScreen().removePreference(findPreference(ALL_SITES_KEY));
+ getPreferenceScreen().removePreference(findPreference(BACKGROUND_SYNC_KEY));
+ getPreferenceScreen().removePreference(findPreference(CAMERA_KEY));
+ getPreferenceScreen().removePreference(findPreference(COOKIES_KEY));
+ getPreferenceScreen().removePreference(findPreference(FULLSCREEN_KEY));
+ getPreferenceScreen().removePreference(findPreference(JAVASCRIPT_KEY));
+ getPreferenceScreen().removePreference(findPreference(LOCATION_KEY));
+ getPreferenceScreen().removePreference(findPreference(MEDIA_KEY));
+ getPreferenceScreen().removePreference(findPreference(MICROPHONE_KEY));
+ getPreferenceScreen().removePreference(findPreference(NOTIFICATIONS_KEY));
+ getPreferenceScreen().removePreference(findPreference(POPUPS_KEY));
+ getPreferenceScreen().removePreference(findPreference(LANGUAGE_KEY));
+ getPreferenceScreen().removePreference(findPreference(STORAGE_KEY));
+ } else {
+ // If both Autoplay and Protected Content menus are available, they'll be tucked under
+ // the Media key. Otherwise, we can remove the Media menu entry.
+ if (!mAutoplayMenuAvailable || !mProtectedContentMenuAvailable) {
+ getPreferenceScreen().removePreference(findPreference(MEDIA_KEY));
+
+ if (!mAutoplayMenuAvailable) {
+ getPreferenceScreen().removePreference(findPreference(AUTOPLAY_KEY));
+ }
+ if (!mProtectedContentMenuAvailable) {
+ getPreferenceScreen().removePreference(findPreference(PROTECTED_CONTENT_KEY));
+ }
+ } else {
+ // These two will be tucked under the Media subkey, so no reason to show them now.
+ getPreferenceScreen().removePreference(findPreference(AUTOPLAY_KEY));
+ getPreferenceScreen().removePreference(findPreference(PROTECTED_CONTENT_KEY));
+ }
+ }
+ }
+
private void updatePreferenceStates() {
PrefServiceBridge prefServiceBridge = PrefServiceBridge.getInstance();
// Preferences that navigate to Website Settings.
List<String> websitePrefs = new ArrayList<String>();
- websitePrefs.add(LOCATION_KEY);
- if (Build.VERSION.SDK_INT >= 19) {
+ if (mMediaSubMenu) {
websitePrefs.add(PROTECTED_CONTENT_KEY);
- }
- if (mAutoplayExperimentEnabled) {
websitePrefs.add(AUTOPLAY_KEY);
+ } else {
+ // When showing the main menu, only one of these two will be visible, at most.
+ if (mProtectedContentMenuAvailable && !mAutoplayMenuAvailable) {
+ websitePrefs.add(PROTECTED_CONTENT_KEY);
+ } else if (mAutoplayMenuAvailable) {
+ websitePrefs.add(AUTOPLAY_KEY);
+ }
+ websitePrefs.add(BACKGROUND_SYNC_KEY);
+ websitePrefs.add(CAMERA_KEY);
+ websitePrefs.add(COOKIES_KEY);
+ websitePrefs.add(FULLSCREEN_KEY);
+ websitePrefs.add(JAVASCRIPT_KEY);
+ websitePrefs.add(LOCATION_KEY);
+ websitePrefs.add(MICROPHONE_KEY);
+ websitePrefs.add(NOTIFICATIONS_KEY);
+ websitePrefs.add(POPUPS_KEY);
}
- websitePrefs.add(BACKGROUND_SYNC_KEY);
- websitePrefs.add(CAMERA_KEY);
- websitePrefs.add(COOKIES_KEY);
- websitePrefs.add(FULLSCREEN_KEY);
- websitePrefs.add(JAVASCRIPT_KEY);
- websitePrefs.add(MICROPHONE_KEY);
- websitePrefs.add(NOTIFICATIONS_KEY);
- websitePrefs.add(POPUPS_KEY);
+
// Initialize the summary and icon for all preferences that have an
// associated content settings entry.
for (String prefName : websitePrefs) {
@@ -156,10 +217,12 @@ public class SiteSettingsPreferences extends PreferenceFragment
}
Preference p = findPreference(ALL_SITES_KEY);
- p.setOnPreferenceClickListener(this);
+ if (p != null) p.setOnPreferenceClickListener(this);
+ p = findPreference(MEDIA_KEY);
+ if (p != null) p.setOnPreferenceClickListener(this);
// TODO(finnur): Re-move this for Storage once it can be moved to the 'Usage' menu.
p = findPreference(STORAGE_KEY);
- p.setOnPreferenceClickListener(this);
+ if (p != null) p.setOnPreferenceClickListener(this);
}
@Override
« no previous file with comments | « chrome/android/java/res/xml/site_settings_preferences.xml ('k') | chrome/android/java/strings/android_chrome_strings.grd » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698