Chromium Code Reviews| 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) { |