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..1269e54224b9c45e5f93d7e6339e1cb51fa599fe 100644 |
--- a/chrome/common/extensions/permissions/chrome_permission_message_provider.cc |
+++ b/chrome/common/extensions/permissions/chrome_permission_message_provider.cc |
@@ -44,6 +44,12 @@ void SuppressMessage(T& messages, |
} |
} |
+template <typename T> |
+bool ContainBothMessages(T& messages, int first_message, int second_message) { |
meacer
2014/07/07 21:57:32
Does this actually need to be templatized? Looks l
meacer
2014/07/07 21:57:32
Also, ContainBothMessages -> ContainsBothMessages
mhm
2014/07/07 22:33:09
No it doesn't. I just followed the SuppressMessage
mhm
2014/07/07 22:33:09
Done.
|
+ return FindMessageByID(messages, first_message) != messages.end() && |
+ FindMessageByID(messages, second_message) != messages.end(); |
+} |
+ |
} // namespace |
ChromePermissionMessageProvider::ChromePermissionMessageProvider() { |
@@ -111,76 +117,102 @@ 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 |
+ if (ContainBothMessages(messages, |
+ PermissionMessage::kUsb, |
+ PermissionMessage::kBluetooth) && |
+ ContainBothMessages( |
+ messages, PermissionMessage::kUsb, PermissionMessage::kSerial)) { |
meacer
2014/07/07 21:57:32
nit: I think it'll look better if you format this
mhm
2014/07/07 22:33:09
This was done with auto formatting "git cl format"
|
+ if (id == PermissionMessage::kUsb) { |
+ 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 (ContainBothMessages(messages, |
+ PermissionMessage::kUsb, |
+ PermissionMessage::kBluetooth)) { |
+ if (id == PermissionMessage::kUsb) { |
meacer
2014/07/07 21:57:31
You might want to test this logic with multiple "u
mhm
2014/07/07 22:33:09
Done.
|
+ message_strings.push_back(l10n_util::GetStringUTF16( |
+ IDS_EXTENSION_PROMPT_WARNING_USB_BLUETOOTH)); |
+ } |
+ continue; |
+ } |
+ // Access to USB and Serial |
+ if (ContainBothMessages( |
+ 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 (ContainBothMessages(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 (ContainBothMessages( |
+ 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 (ContainBothMessages(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) { |
+ if (ContainBothMessages( |
+ 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 (ContainBothMessages( |
+ 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; |
} |
} |