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

Unified Diff: chrome/browser/permissions/permission_update_infobar_delegate_android.cc

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/browser/permissions/permission_update_infobar_delegate_android.cc
diff --git a/chrome/browser/permissions/permission_update_infobar_delegate_android.cc b/chrome/browser/permissions/permission_update_infobar_delegate_android.cc
index 47fb590c393f5de48f6fa46799597e5cdd370020..032ae0ffa326c715e9328b9fd6713b2625f2612b 100644
--- a/chrome/browser/permissions/permission_update_infobar_delegate_android.cc
+++ b/chrome/browser/permissions/permission_update_infobar_delegate_android.cc
@@ -39,25 +39,26 @@ infobars::InfoBar* PermissionUpdateInfoBarDelegate::Create(
int message_id = IDS_INFOBAR_MISSING_MULTIPLE_PERMISSIONS_TEXT;
for (ContentSettingsType content_settings_type : content_settings_types) {
- std::string android_permission =
- PrefServiceBridge::GetAndroidPermissionForContentSetting(
- content_settings_type);
-
- if (!android_permission.empty() &&
- !window_android->HasPermission(android_permission)) {
- permissions.push_back(android_permission);
-
- if (content_settings_type == CONTENT_SETTINGS_TYPE_GEOLOCATION) {
- message_id = IDS_INFOBAR_MISSING_LOCATION_PERMISSION_TEXT;
- } else if (content_settings_type ==
- CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC) {
- message_id = IDS_INFOBAR_MISSING_MICROPHONE_PERMISSION_TEXT;
- } else if (content_settings_type ==
- CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA) {
- message_id = IDS_INFOBAR_MISSING_CAMERA_PERMISSION_TEXT;
- } else {
- NOTREACHED();
- message_id = IDS_INFOBAR_MISSING_MULTIPLE_PERMISSIONS_TEXT;
+ int previous_size = permissions.size();
+ PrefServiceBridge::GetAndroidPermissionsForContentSetting(
+ content_settings_type, &permissions);
+
+ for (auto it = permissions.begin() + previous_size;
+ it != permissions.end();
+ ++it) {
+ if (!window_android->HasPermission(*it)) {
mlamouri (slow - plz ping) 2017/02/10 14:09:04 style/nit: ``` if (window_android->HasPermission(*
Ted C 2017/02/10 17:24:46 Done.
+ if (content_settings_type == CONTENT_SETTINGS_TYPE_GEOLOCATION) {
+ message_id = IDS_INFOBAR_MISSING_LOCATION_PERMISSION_TEXT;
+ } else if (content_settings_type ==
+ CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC) {
+ message_id = IDS_INFOBAR_MISSING_MICROPHONE_PERMISSION_TEXT;
+ } else if (content_settings_type ==
+ CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA) {
+ message_id = IDS_INFOBAR_MISSING_CAMERA_PERMISSION_TEXT;
+ } else {
+ NOTREACHED();
+ message_id = IDS_INFOBAR_MISSING_MULTIPLE_PERMISSIONS_TEXT;
+ }
mlamouri (slow - plz ping) 2017/02/10 14:09:04 This is a bit confusing: we write a `message_id` b
Ted C 2017/02/10 17:24:46 Definitely right. Moved it around a bit to exit e
}
}
}
@@ -101,13 +102,13 @@ bool PermissionUpdateInfoBarDelegate::ShouldShowPermissionInfobar(
ui::WindowAndroid* window_android = cvc->GetWindowAndroid();
for (ContentSettingsType content_settings_type : content_settings_types) {
- std::string android_permission =
- PrefServiceBridge::GetAndroidPermissionForContentSetting(
- content_settings_type);
+ std::vector<std::string> android_permissions;
+ PrefServiceBridge::GetAndroidPermissionsForContentSetting(
+ content_settings_type, &android_permissions);
- if (!android_permission.empty() &&
- !window_android->HasPermission(android_permission)) {
- return true;
+ for (auto android_permission : android_permissions) {
+ if (!window_android->HasPermission(android_permission))
+ return true;
}
}

Powered by Google App Engine
This is Rietveld 408576698