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

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

Issue 2682863002: [Android] Explicitly request all needed runtime permissions. (Closed)
Patch Set: Rebase Created 3 years, 10 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/PrefServiceBridge.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
index c29e1844476be64302ccd8ca8ed8fabd22861bfa..9ae7199f24bcc8a1f86cc58e22b19dd4b125af21 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
@@ -20,6 +20,7 @@ import org.chromium.chrome.browser.preferences.website.WebsitePreferenceBridge;
import org.chromium.chrome.browser.search_engines.TemplateUrlService;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
/**
@@ -37,7 +38,17 @@ public final class PrefServiceBridge {
private static final String MIGRATION_PREF_KEY = "PrefMigrationVersion";
private static final int MIGRATION_CURRENT_VERSION = 4;
- private static final String HTTPS_SCHEME = "https";
+ /** The android permissions associated with requesting location. */
+ private static final String[] LOCATION_PERMISSIONS = {
+ android.Manifest.permission.ACCESS_FINE_LOCATION,
+ android.Manifest.permission.ACCESS_COARSE_LOCATION};
+ /** The android permissions associated with requesting access to the camera. */
+ private static final String[] CAMERA_PERMISSIONS = {android.Manifest.permission.CAMERA};
+ /** The android permissions associated with requesting access to the microphone. */
+ private static final String[] MICROPHONE_PERMISSIONS = {
+ android.Manifest.permission.RECORD_AUDIO};
+ /** Signifies there are no permissions associated. */
+ private static final String[] EMPTY_PERMISSIONS = {};
// Object to notify when "clear browsing data" completes.
private OnClearBrowsingDataListener mClearBrowsingDataListener;
@@ -238,24 +249,24 @@ public final class PrefServiceBridge {
}
/**
- * Return the android permission string for a given {@link ContentSettingsType}. If there
- * is no corresponding permission, then null will be returned.
+ * Return the list of android permission strings for a given {@link ContentSettingsType}. If
+ * there is no permissions associated with the content setting, then an empty array is returned.
*
* @param contentSettingType The content setting to get the android permission for.
- * @return The android permission for the given content setting.
+ * @return The android permissions for the given content setting.
*/
@CalledByNative
- public static String getAndroidPermissionForContentSetting(int contentSettingType) {
+ public static String[] getAndroidPermissionsForContentSetting(int contentSettingType) {
if (contentSettingType == ContentSettingsType.CONTENT_SETTINGS_TYPE_GEOLOCATION) {
- return android.Manifest.permission.ACCESS_FINE_LOCATION;
+ return Arrays.copyOf(LOCATION_PERMISSIONS, LOCATION_PERMISSIONS.length);
}
if (contentSettingType == ContentSettingsType.CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC) {
- return android.Manifest.permission.RECORD_AUDIO;
+ return Arrays.copyOf(MICROPHONE_PERMISSIONS, MICROPHONE_PERMISSIONS.length);
}
if (contentSettingType == ContentSettingsType.CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA) {
- return android.Manifest.permission.CAMERA;
+ return Arrays.copyOf(CAMERA_PERMISSIONS, CAMERA_PERMISSIONS.length);
}
- return null;
+ return EMPTY_PERMISSIONS;
}
/**

Powered by Google App Engine
This is Rietveld 408576698