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

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

Issue 1084423002: Split Camera and Mic into two permissions on the Site Details page (under Site Settings). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Polish Created 5 years, 8 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/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 807fb6e23162617af36407926fc5a448efdfd17d..7bd0c9b24e21e008d8ad2fb84065877d49ab75fe 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
@@ -52,33 +52,34 @@ public class SingleWebsitePreferences extends PreferenceFragment
// Buttons:
public static final String PREF_RESET_SITE = "reset_site_button";
// Website permissions (if adding new, see hasPermissionsPreferences and resetSite below):
+ public static final String PREF_CAMERA_CAPTURE_PERMISSION = "video_capture_permission_list";
newt (away) 2015/04/22 17:35:55 s/video/camera, likewise for "voice"
Finnur 2015/04/24 13:51:59 Done.
public static final String PREF_COOKIES_PERMISSION = "cookies_permission_list";
public static final String PREF_FULLSCREEN_PERMISSION = "fullscreen_permission_list";
public static final String PREF_IMAGES_PERMISSION = "images_permission_list";
public static final String PREF_JAVASCRIPT_PERMISSION = "javascript_permission_list";
public static final String PREF_LOCATION_ACCESS = "location_access_list";
+ public static final String PREF_MIC_CAPTURE_PERMISSION = "voice_capture_permission_list";
public static final String PREF_MIDI_SYSEX_PERMISSION = "midi_sysex_permission_list";
public static final String PREF_POPUP_PERMISSION = "popup_permission_list";
public static final String PREF_PROTECTED_MEDIA_IDENTIFIER_PERMISSION =
"protected_media_identifier_permission_list";
public static final String PREF_PUSH_NOTIFICATIONS_PERMISSION =
"push_notifications_list";
- public static final String PREF_VOICE_AND_VIDEO_CAPTURE_PERMISSION =
- "voice_and_video_capture_permission_list";
// All permissions from the permissions preference category must be listed here.
// TODO(mvanouwerkerk): Use this array in more places to reduce verbosity.
private static final String[] PERMISSION_PREFERENCE_KEYS = {
+ PREF_CAMERA_CAPTURE_PERMISSION,
PREF_COOKIES_PERMISSION,
PREF_FULLSCREEN_PERMISSION,
PREF_IMAGES_PERMISSION,
PREF_JAVASCRIPT_PERMISSION,
PREF_LOCATION_ACCESS,
+ PREF_MIC_CAPTURE_PERMISSION,
PREF_MIDI_SYSEX_PERMISSION,
PREF_POPUP_PERMISSION,
PREF_PROTECTED_MEDIA_IDENTIFIER_PERMISSION,
PREF_PUSH_NOTIFICATIONS_PERMISSION,
- PREF_VOICE_AND_VIDEO_CAPTURE_PERMISSION
};
// The website this page is displaying details about.
@@ -259,6 +260,8 @@ public class SingleWebsitePreferences extends PreferenceFragment
}
} else if (PREF_RESET_SITE.equals(preference.getKey())) {
preference.setOnPreferenceClickListener(this);
+ } else if (PREF_CAMERA_CAPTURE_PERMISSION.equals(preference.getKey())) {
+ setUpListPreference(preference, mSite.getCameraCapturePermission());
} else if (PREF_COOKIES_PERMISSION.equals(preference.getKey())) {
setUpListPreference(preference, mSite.getCookiePermission());
} else if (PREF_FULLSCREEN_PERMISSION.equals(preference.getKey())) {
@@ -269,6 +272,8 @@ public class SingleWebsitePreferences extends PreferenceFragment
setUpListPreference(preference, mSite.getJavaScriptPermission());
} else if (PREF_LOCATION_ACCESS.equals(preference.getKey())) {
setUpListPreference(preference, mSite.getGeolocationPermission());
+ } else if (PREF_MIC_CAPTURE_PERMISSION.equals(preference.getKey())) {
+ setUpListPreference(preference, mSite.getMicrophoneCapturePermission());
} else if (PREF_MIDI_SYSEX_PERMISSION.equals(preference.getKey())) {
setUpListPreference(preference, mSite.getMidiPermission());
} else if (PREF_POPUP_PERMISSION.equals(preference.getKey())) {
@@ -277,8 +282,6 @@ public class SingleWebsitePreferences extends PreferenceFragment
setUpListPreference(preference, mSite.getProtectedMediaIdentifierPermission());
} else if (PREF_PUSH_NOTIFICATIONS_PERMISSION.equals(preference.getKey())) {
setUpListPreference(preference, mSite.getPushNotificationPermission());
- } else if (PREF_VOICE_AND_VIDEO_CAPTURE_PERMISSION.equals(preference.getKey())) {
- configureVoiceAndVideoPreference(preference);
}
}
@@ -346,6 +349,8 @@ public class SingleWebsitePreferences extends PreferenceFragment
private int getContentSettingsTypeFromPreferenceKey(String preferenceKey) {
switch (preferenceKey) {
+ case PREF_CAMERA_CAPTURE_PERMISSION:
+ return ContentSettingsType.CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA;
case PREF_COOKIES_PERMISSION:
return ContentSettingsType.CONTENT_SETTINGS_TYPE_COOKIES;
case PREF_FULLSCREEN_PERMISSION:
@@ -356,6 +361,8 @@ public class SingleWebsitePreferences extends PreferenceFragment
return ContentSettingsType.CONTENT_SETTINGS_TYPE_JAVASCRIPT;
case PREF_LOCATION_ACCESS:
return ContentSettingsType.CONTENT_SETTINGS_TYPE_GEOLOCATION;
+ case PREF_MIC_CAPTURE_PERMISSION:
+ return ContentSettingsType.CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC;
case PREF_MIDI_SYSEX_PERMISSION:
return ContentSettingsType.CONTENT_SETTINGS_TYPE_MIDI_SYSEX;
case PREF_POPUP_PERMISSION:
@@ -364,53 +371,11 @@ public class SingleWebsitePreferences extends PreferenceFragment
return ContentSettingsType.CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER;
case PREF_PUSH_NOTIFICATIONS_PERMISSION:
return ContentSettingsType.CONTENT_SETTINGS_TYPE_NOTIFICATIONS;
- case PREF_VOICE_AND_VIDEO_CAPTURE_PERMISSION:
- return ContentSettingsType.CONTENT_SETTINGS_TYPE_MEDIASTREAM;
default:
return 0;
}
}
- /**
- * Based on the type of media allowed or denied for this website, the title and summary
- * of the CheckBoxPreference will change. If this website has no media related permission, then
- * the preference will be removed.
- * @param preference CheckboxPreference whose title and summary will be set.
- */
- private void configureVoiceAndVideoPreference(Preference preference) {
- ContentSetting voice = mSite.getVoiceCapturePermission();
- ContentSetting video = mSite.getVideoCapturePermission();
- if (voice == null && video == null) {
- getPreferenceScreen().removePreference(preference);
- return;
- }
-
- int mediaAccessType = mSite.getMediaAccessType();
- switch (mediaAccessType) {
- case Website.CAMERA_ACCESS_ALLOWED:
- case Website.CAMERA_ACCESS_DENIED:
- preference.setTitle(R.string.video_permission_title);
- break;
- case Website.MICROPHONE_ACCESS_ALLOWED:
- case Website.MICROPHONE_ACCESS_DENIED:
- preference.setTitle(R.string.voice_permission_title);
- break;
- case Website.MICROPHONE_AND_CAMERA_ACCESS_ALLOWED:
- case Website.MICROPHONE_AND_CAMERA_ACCESS_DENIED:
- preference.setTitle(R.string.voice_and_video_permission_title);
- break;
- case Website.INVALID_CAMERA_OR_MICROPHONE_ACCESS:
- default:
- getPreferenceScreen().removePreference(preference);
- }
- setUpListPreference(
- preference, mediaAccessType == Website.CAMERA_ACCESS_ALLOWED
- || mediaAccessType == Website.MICROPHONE_ACCESS_ALLOWED
- || mediaAccessType == Website.MICROPHONE_AND_CAMERA_ACCESS_ALLOWED
- ? ContentSetting.ALLOW :
- ContentSetting.BLOCK);
- }
-
@Override
public void onClick(DialogInterface dialog, int which) {
clearStoredData();
@@ -439,46 +404,13 @@ public class SingleWebsitePreferences extends PreferenceFragment
}
}
- private void setVoiceAndVideoCaptureSetting(ContentSetting value) {
- int mediaAccessType = mSite.getMediaAccessType();
- if (value == ContentSetting.ALLOW) {
- switch (mediaAccessType) {
- case Website.CAMERA_ACCESS_DENIED:
- mSite.setVideoCapturePermission(ContentSetting.ALLOW);
- break;
- case Website.MICROPHONE_ACCESS_DENIED:
- mSite.setVoiceCapturePermission(ContentSetting.ALLOW);
- break;
- case Website.MICROPHONE_AND_CAMERA_ACCESS_DENIED:
- mSite.setVideoCapturePermission(ContentSetting.ALLOW);
- mSite.setVoiceCapturePermission(ContentSetting.ALLOW);
- break;
- default:
- assert false;
- }
- } else {
- switch (mediaAccessType) {
- case Website.CAMERA_ACCESS_ALLOWED:
- mSite.setVideoCapturePermission(ContentSetting.BLOCK);
- break;
- case Website.MICROPHONE_ACCESS_ALLOWED:
- mSite.setVoiceCapturePermission(ContentSetting.BLOCK);
- break;
- case Website.MICROPHONE_AND_CAMERA_ACCESS_ALLOWED:
- mSite.setVideoCapturePermission(ContentSetting.BLOCK);
- mSite.setVoiceCapturePermission(ContentSetting.BLOCK);
- break;
- default:
- assert false;
- }
- }
- }
-
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
ContentSetting permission =
ContentSetting.fromString((String) newValue);
- if (PREF_COOKIES_PERMISSION.equals(preference.getKey())) {
+ if (PREF_CAMERA_CAPTURE_PERMISSION.equals(preference.getKey())) {
+ mSite.setCameraCapturePermission(permission);
+ } else if (PREF_COOKIES_PERMISSION.equals(preference.getKey())) {
mSite.setCookiePermission(permission);
} else if (PREF_FULLSCREEN_PERMISSION.equals(preference.getKey())) {
mSite.setFullscreenPermission(permission);
@@ -488,6 +420,8 @@ public class SingleWebsitePreferences extends PreferenceFragment
mSite.setJavaScriptPermission(permission);
} else if (PREF_LOCATION_ACCESS.equals(preference.getKey())) {
mSite.setGeolocationPermission(permission);
+ } else if (PREF_MIC_CAPTURE_PERMISSION.equals(preference.getKey())) {
+ mSite.setMicrophoneCapturePermission(permission);
} else if (PREF_MIDI_SYSEX_PERMISSION.equals(preference.getKey())) {
mSite.setMidiPermission(permission);
} else if (PREF_POPUP_PERMISSION.equals(preference.getKey())) {
@@ -496,8 +430,6 @@ public class SingleWebsitePreferences extends PreferenceFragment
mSite.setProtectedMediaIdentifierPermission(permission);
} else if (PREF_PUSH_NOTIFICATIONS_PERMISSION.equals(preference.getKey())) {
mSite.setPushNotificationPermission(permission);
- } else if (PREF_VOICE_AND_VIDEO_CAPTURE_PERMISSION.equals(preference.getKey())) {
- setVoiceAndVideoCaptureSetting(permission);
} else {
return true;
}
@@ -536,18 +468,18 @@ public class SingleWebsitePreferences extends PreferenceFragment
}
// Clear the permissions.
+ mSite.setCameraCapturePermission(null);
mSite.setCookiePermission(null);
WebsitePreferenceBridge.nativeClearCookieData(mSite.getAddress().getOrigin());
mSite.setFullscreenPermission(null);
mSite.setGeolocationPermission(null);
mSite.setImagesPermission(null);
mSite.setJavaScriptPermission(null);
+ mSite.setMicrophoneCapturePermission(null);
mSite.setMidiPermission(null);
mSite.setPopupPermission(null);
mSite.setProtectedMediaIdentifierPermission(null);
mSite.setPushNotificationPermission(null);
- mSite.setVideoCapturePermission(null);
- mSite.setVoiceCapturePermission(null);
// Clear the storage and finish the activity if necessary.
if (mSite.getTotalUsage() > 0) {

Powered by Google App Engine
This is Rietveld 408576698