Index: chrome/common/extensions/permissions/chrome_permission_message_provider.cc |
diff --git a/chrome/common/extensions/permissions/chrome_permission_message_provider.cc b/chrome/common/extensions/permissions/chrome_permission_message_provider.cc |
index 1dd289a05db7481a6862dfbedf60c5c35e0caf87..da8ce92edfc3954c2829b02500277d0d7cd9cad1 100644 |
--- a/chrome/common/extensions/permissions/chrome_permission_message_provider.cc |
+++ b/chrome/common/extensions/permissions/chrome_permission_message_provider.cc |
@@ -44,6 +44,13 @@ void SuppressMessage(T& messages, |
} |
} |
+bool ContainsBothMessages(PermissionMessages& messages, |
+ int first_message, |
+ int second_message) { |
+ return FindMessageByID(messages, first_message) != messages.end() && |
+ FindMessageByID(messages, second_message) != messages.end(); |
+} |
+ |
} // namespace |
ChromePermissionMessageProvider::ChromePermissionMessageProvider() { |
@@ -111,76 +118,103 @@ std::vector<base::string16> ChromePermissionMessageProvider::GetWarningMessages( |
PermissionMessages messages = |
GetPermissionMessages(permissions, extension_type); |
- bool audio_capture = false; |
- bool video_capture = false; |
- bool media_galleries_read = false; |
- bool media_galleries_copy_to = false; |
- bool media_galleries_delete = false; |
- bool accessibility_read = false; |
- bool accessibility_write = false; |
- for (PermissionMessages::const_iterator i = messages.begin(); |
- i != messages.end(); ++i) { |
- switch (i->id()) { |
- case PermissionMessage::kAudioCapture: |
- audio_capture = true; |
- break; |
- case PermissionMessage::kVideoCapture: |
- video_capture = true; |
- break; |
- case PermissionMessage::kMediaGalleriesAllGalleriesRead: |
- media_galleries_read = true; |
- break; |
- case PermissionMessage::kMediaGalleriesAllGalleriesCopyTo: |
- media_galleries_copy_to = true; |
- break; |
- case PermissionMessage::kMediaGalleriesAllGalleriesDelete: |
- media_galleries_delete = true; |
- break; |
- case PermissionMessage::kAccessibilityFeaturesRead: |
- accessibility_read = true; |
- break; |
- case PermissionMessage::kAccessibilityFeaturesModify: |
- accessibility_write = true; |
- break; |
- default: |
- break; |
- } |
- } |
+ SuppressMessage(messages, |
+ PermissionMessage::kBluetooth, |
+ PermissionMessage::kBluetoothDevices); |
for (PermissionMessages::const_iterator i = messages.begin(); |
i != messages.end(); ++i) { |
int id = i->id(); |
- if (audio_capture && video_capture) { |
- if (id == PermissionMessage::kAudioCapture) { |
- message_strings.push_back(l10n_util::GetStringUTF16( |
- IDS_EXTENSION_PROMPT_WARNING_AUDIO_AND_VIDEO_CAPTURE)); |
+ if (id == PermissionMessage::kUsb || id == PermissionMessage::kBluetooth || |
+ id == PermissionMessage::kSerial) { |
+ // Access to USB, Bluetooth and Serial |
not at google - send to devlin
2014/07/07 23:07:38
these little comments don't add much, it's clear f
mhm
2014/07/07 23:58:32
Done.
|
+ if (ContainsBothMessages(messages, |
+ PermissionMessage::kUsb, |
+ PermissionMessage::kBluetooth) && |
+ ContainsBothMessages(messages, |
not at google - send to devlin
2014/07/07 23:07:38
could you have a method like "ContainsAll" and ove
mhm
2014/07/07 23:58:32
Done.
|
+ PermissionMessage::kUsb, |
+ PermissionMessage::kSerial)) { |
+ if (id == PermissionMessage::kUsb) { |
not at google - send to devlin
2014/07/07 23:07:38
epic nit: can we have these in alphabetic ordering
mhm
2014/07/07 23:58:32
Done.
|
+ message_strings.push_back(l10n_util::GetStringUTF16( |
+ IDS_EXTENSION_PROMPT_WARNING_ALL_DEVICES)); |
+ } |
continue; |
- } else if (id == PermissionMessage::kVideoCapture) { |
- // The combined message will be pushed above. |
+ } |
+ // Access to USB and Bluetooth |
+ if (ContainsBothMessages(messages, |
+ PermissionMessage::kUsb, |
+ PermissionMessage::kBluetooth)) { |
+ if (id == PermissionMessage::kUsb) { |
+ message_strings.push_back(l10n_util::GetStringUTF16( |
+ IDS_EXTENSION_PROMPT_WARNING_USB_BLUETOOTH)); |
+ } |
+ continue; |
+ } |
+ // Access to USB and Serial |
+ if (ContainsBothMessages( |
+ messages, PermissionMessage::kUsb, PermissionMessage::kSerial)) { |
+ if (id == PermissionMessage::kUsb) { |
+ message_strings.push_back(l10n_util::GetStringUTF16( |
+ IDS_EXTENSION_PROMPT_WARNING_USB_SERIAL)); |
+ } |
+ continue; |
+ } |
+ // Access to Bluetooth and Serial |
+ if (ContainsBothMessages(messages, |
+ PermissionMessage::kBluetooth, |
+ PermissionMessage::kSerial)) { |
+ if (id == PermissionMessage::kBluetooth) { |
+ message_strings.push_back(l10n_util::GetStringUTF16( |
+ IDS_EXTENSION_PROMPT_WARNING_BLUETOOTH_SERIAL)); |
+ } |
continue; |
} |
} |
- if (accessibility_read && accessibility_write) { |
- if (id == PermissionMessage::kAccessibilityFeaturesRead) { |
- message_strings.push_back(l10n_util::GetStringUTF16( |
- IDS_EXTENSION_PROMPT_WARNING_ACCESSIBILITY_FEATURES_READ_MODIFY)); |
+ if (id == PermissionMessage::kAccessibilityFeaturesRead || |
+ id == PermissionMessage::kAccessibilityFeaturesModify) { |
+ if (ContainsBothMessages( |
+ messages, |
+ PermissionMessage::kAccessibilityFeaturesRead, |
+ PermissionMessage::kAccessibilityFeaturesModify)) { |
+ if (id == PermissionMessage::kAccessibilityFeaturesRead) { |
+ message_strings.push_back(l10n_util::GetStringUTF16( |
+ IDS_EXTENSION_PROMPT_WARNING_ACCESSIBILITY_FEATURES_READ_MODIFY)); |
+ } |
continue; |
- } else if (id == PermissionMessage::kAccessibilityFeaturesModify) { |
- // The combined message will be pushed above. |
+ } |
+ } |
+ if (id == PermissionMessage::kAudioCapture || |
+ id == PermissionMessage::kVideoCapture) { |
+ if (ContainsBothMessages(messages, |
+ PermissionMessage::kAudioCapture, |
+ PermissionMessage::kVideoCapture)) { |
+ if (id == PermissionMessage::kAudioCapture) { |
+ message_strings.push_back(l10n_util::GetStringUTF16( |
+ IDS_EXTENSION_PROMPT_WARNING_AUDIO_AND_VIDEO_CAPTURE)); |
+ } |
continue; |
} |
} |
- if (media_galleries_read && |
- (media_galleries_copy_to || media_galleries_delete)) { |
- if (id == PermissionMessage::kMediaGalleriesAllGalleriesRead) { |
- int m_id = media_galleries_copy_to ? |
- IDS_EXTENSION_PROMPT_WARNING_MEDIA_GALLERIES_READ_WRITE : |
- IDS_EXTENSION_PROMPT_WARNING_MEDIA_GALLERIES_READ_DELETE; |
- message_strings.push_back(l10n_util::GetStringUTF16(m_id)); |
+ if (id == PermissionMessage::kMediaGalleriesAllGalleriesRead || |
+ id == PermissionMessage::kMediaGalleriesAllGalleriesCopyTo || |
+ id == PermissionMessage::kMediaGalleriesAllGalleriesDelete) { |
not at google - send to devlin
2014/07/07 23:07:38
what about read+copy+delete?
mhm
2014/07/07 23:58:32
The original logic didn't say anything about this
|
+ if (ContainsBothMessages( |
+ messages, |
+ PermissionMessage::kMediaGalleriesAllGalleriesRead, |
+ PermissionMessage::kMediaGalleriesAllGalleriesCopyTo)) { |
+ if (id == PermissionMessage::kMediaGalleriesAllGalleriesRead) { |
+ message_strings.push_back(l10n_util::GetStringUTF16( |
+ IDS_EXTENSION_PROMPT_WARNING_MEDIA_GALLERIES_READ_WRITE)); |
+ } |
continue; |
- } else if (id == PermissionMessage::kMediaGalleriesAllGalleriesCopyTo || |
- id == PermissionMessage::kMediaGalleriesAllGalleriesDelete) { |
- // The combined message will be pushed above. |
+ } else if (ContainsBothMessages( |
not at google - send to devlin
2014/07/07 23:07:38
no else after continue
mhm
2014/07/07 23:58:32
Done.
|
+ messages, |
+ PermissionMessage::kMediaGalleriesAllGalleriesRead, |
+ PermissionMessage::kMediaGalleriesAllGalleriesDelete)) { |
+ if (id == PermissionMessage::kMediaGalleriesAllGalleriesRead) { |
+ message_strings.push_back(l10n_util::GetStringUTF16( |
+ IDS_EXTENSION_PROMPT_WARNING_MEDIA_GALLERIES_READ_DELETE)); |
+ } |
continue; |
} |
} |