Chromium Code Reviews| 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; |
| + } |
| } |
| } |