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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/pageinfo/WebsiteSettingsPopup.java

Issue 2682863002: [Android] Explicitly request all needed runtime permissions. (Closed)
Patch Set: 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/pageinfo/WebsiteSettingsPopup.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/pageinfo/WebsiteSettingsPopup.java b/chrome/android/java/src/org/chromium/chrome/browser/pageinfo/WebsiteSettingsPopup.java
index ed201addc0fbdb82dba895dfdf825b1dede017f5..deeee00965494a2f6f07210b08a90ac926c63b53 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/pageinfo/WebsiteSettingsPopup.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/pageinfo/WebsiteSettingsPopup.java
@@ -526,9 +526,15 @@ public class WebsiteSettingsPopup implements OnClickListener {
}
private boolean hasAndroidPermission(int contentSettingType) {
- String androidPermission = PrefServiceBridge.getAndroidPermissionForContentSetting(
+ String[] androidPermissions = PrefServiceBridge.getAndroidPermissionsForContentSetting(
contentSettingType);
- return androidPermission == null || mWindowAndroid.hasPermission(androidPermission);
+ if (androidPermissions == null) return true;
+ for (int i = 0; i < androidPermissions.length; i++) {
+ if (!mWindowAndroid.hasPermission(androidPermissions[i])) {
+ return false;
+ }
+ }
+ return true;
}
/**
@@ -579,7 +585,7 @@ public class WebsiteSettingsPopup implements OnClickListener {
} else if (!hasAndroidPermission(permission.type)) {
warningTextResource = R.string.page_info_android_permission_blocked;
permissionRow.setTag(R.id.permission_type,
- PrefServiceBridge.getAndroidPermissionForContentSetting(permission.type));
+ PrefServiceBridge.getAndroidPermissionsForContentSetting(permission.type));
}
if (warningTextResource != 0) {
@@ -772,20 +778,22 @@ public class WebsiteSettingsPopup implements OnClickListener {
if (intentOverride == null && mWindowAndroid != null) {
// Try and immediately request missing Android permissions where possible.
- final String permissionType = (String) view.getTag(R.id.permission_type);
- if (mWindowAndroid.canRequestPermission(permissionType)) {
- final String[] permissionRequest = new String[] {permissionType};
- mWindowAndroid.requestPermissions(permissionRequest, new PermissionCallback() {
- @Override
- public void onRequestPermissionsResult(
- String[] permissions, int[] grantResults) {
- if (grantResults.length > 0
- && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
- updatePermissionDisplay();
+ final String[] permissionType = (String[]) view.getTag(R.id.permission_type);
+ for (int i = 0; i < permissionType.length; i++) {
+ // If any permissions can be requested, attempt to request them all.
+ if (mWindowAndroid.canRequestPermission(permissionType[i])) {
mlamouri (slow - plz ping) 2017/02/10 14:09:04 for readability, what about an early `continue`? I
Ted C 2017/02/10 17:24:46 Done.
+ mWindowAndroid.requestPermissions(permissionType, new PermissionCallback() {
+ @Override
+ public void onRequestPermissionsResult(
+ String[] permissions, int[] grantResults) {
+ if (grantResults.length > 0
+ && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
mlamouri (slow - plz ping) 2017/02/10 14:09:04 What if there were multiple permissions? Does it s
Ted C 2017/02/10 17:24:46 Nice catch. Since each row can be tied to multipl
+ updatePermissionDisplay();
+ }
}
- }
- });
- return;
+ });
+ return;
+ }
}
}

Powered by Google App Engine
This is Rietveld 408576698