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; |
+ } |
} |
} |