Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/permissions/AndroidPermissionRequester.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/permissions/AndroidPermissionRequester.java b/chrome/android/java/src/org/chromium/chrome/browser/permissions/AndroidPermissionRequester.java |
| index a153cb4a9c5754a0a040808175a3042acbdc44f9..304bf593a90327c79655d64163eeeaf4e71cb193 100644 |
| --- a/chrome/android/java/src/org/chromium/chrome/browser/permissions/AndroidPermissionRequester.java |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/permissions/AndroidPermissionRequester.java |
| @@ -20,6 +20,7 @@ import org.chromium.ui.base.WindowAndroid; |
| import org.chromium.ui.base.WindowAndroid.PermissionCallback; |
| import java.util.ArrayList; |
| +import java.util.Arrays; |
| import java.util.Collections; |
| import java.util.HashSet; |
| import java.util.List; |
| @@ -84,7 +85,26 @@ public class AndroidPermissionRequester { |
| return R.string.infobar_missing_camera_permission_text; |
| } |
| assert false : "Unexpected content setting type received: " + contentSettingsType; |
| - return R.string.infobar_missing_multiple_permissions_text; |
| + return -1; |
| + } |
| + |
| + private static int updateDeniedPermissionResourceId(int currentDeniedStringId, int deniedCount, |
| + SparseArray<String[]> contentSettingsTypesToPermissionsMap, String permission) { |
| + if (deniedCount > 1) { |
| + int newDeniedStringId = |
| + getDeniedPermissionResourceId(contentSettingsTypesToPermissionsMap, permission); |
| + if (newDeniedStringId == currentDeniedStringId) return currentDeniedStringId; |
| + |
| + Set<Integer> ids = |
| + new HashSet<Integer>(Arrays.asList(currentDeniedStringId, newDeniedStringId)); |
| + if (ids.contains(R.string.infobar_missing_camera_permission_text) |
| + && ids.contains(R.string.infobar_missing_microphone_permission_text)) { |
| + return R.string.infobar_missing_microphone_camera_permissions_text; |
| + } |
| + assert false : "Unexpected combination of content settings types."; |
| + return -1; |
| + } |
| + return getDeniedPermissionResourceId(contentSettingsTypesToPermissionsMap, permission); |
|
raymes
2017/05/14 23:22:24
A few optional suggestions:
private static int up
benwells
2017/05/16 15:21:30
I've checked for ==1 first. I need to keep the che
raymes
2017/05/17 01:21:43
It's not important :) I think it just comes down t
|
| } |
| /** |
| @@ -106,20 +126,15 @@ public class AndroidPermissionRequester { |
| PermissionCallback callback = new PermissionCallback() { |
| @Override |
| - public void onRequestPermissionsResult( |
| - String[] permissions, int[] grantResults) { |
| + public void onRequestPermissionsResult(String[] permissions, int[] grantResults) { |
| int deniedCount = 0; |
| int requestableCount = 0; |
| - int deniedStringId = R.string.infobar_missing_multiple_permissions_text; |
| + int deniedStringId = -1; |
| for (int i = 0; i < grantResults.length; i++) { |
| if (grantResults[i] == PackageManager.PERMISSION_DENIED) { |
| deniedCount++; |
| - if (deniedCount > 1) { |
| - deniedStringId = R.string.infobar_missing_multiple_permissions_text; |
| - } else { |
| - deniedStringId = getDeniedPermissionResourceId( |
| - contentSettingsTypesToPermissionsMap, permissions[i]); |
| - } |
| + deniedStringId = updateDeniedPermissionResourceId(deniedStringId, |
| + deniedCount, contentSettingsTypesToPermissionsMap, permissions[i]); |
| if (windowAndroid.canRequestPermission(permissions[i])) { |
| requestableCount++; |
| @@ -128,7 +143,8 @@ public class AndroidPermissionRequester { |
| } |
| Activity activity = windowAndroid.getActivity().get(); |
| - if (deniedCount > 0 && requestableCount > 0 && activity != null) { |
| + if (deniedCount > 0 && deniedStringId != -1 && requestableCount > 0 |
|
raymes
2017/05/14 23:22:24
Could this happen?
benwells
2017/05/16 15:21:30
Could this if be true? Or could deniedStringId ==
raymes
2017/05/17 01:21:43
Sorry I should have been more clear :) I was only
|
| + && activity != null) { |
| View view = activity.getLayoutInflater().inflate( |
| R.layout.update_permissions_dialog, null); |
| TextView dialogText = (TextView) view.findViewById(R.id.text); |