Chromium Code Reviews| 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..85975940fc1e50073f35458a87d49e09633139a9 100644 |
| --- a/chrome/common/extensions/permissions/chrome_permission_message_provider.cc |
| +++ b/chrome/common/extensions/permissions/chrome_permission_message_provider.cc |
| @@ -44,6 +44,16 @@ void SuppressMessage(T& messages, |
| } |
| } |
| +template <typename T> |
| +bool CombineMessage(T& messages, int first_message, int second_message) { |
|
meacer
2014/07/03 01:04:11
This needs a better name. Maybe ContainsMessages?
mhm
2014/07/07 21:19:38
Done.
|
| + typename T::iterator first = FindMessageByID(messages, first_message); |
| + typename T::iterator second = FindMessageByID(messages, second_message); |
| + if (first != messages.end() && second != messages.end()) { |
|
meacer
2014/07/03 01:04:11
Cleaner:
return first != messages.end() && second
mhm
2014/07/07 21:19:38
Done.
|
| + return true; |
| + } |
| + return false; |
| +} |
| + |
| } // namespace |
| ChromePermissionMessageProvider::ChromePermissionMessageProvider() { |
| @@ -111,78 +121,104 @@ 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; |
| - } |
| + // Warning for Hid always include warning for USB and/or Bluetooth |
| + // access permission. |
| + SuppressMessage(messages, |
| + PermissionMessage::kHid, |
| + PermissionMessage::kUsb); |
| + SuppressMessage(messages, |
| + PermissionMessage::kBluetooth, |
| + PermissionMessage::kBluetoothDevices); |
| + SuppressMessage(messages, |
| + PermissionMessage::kHid, |
| + PermissionMessage::kBluetooth); |
| + |
| + // Replace USB and Bluetooth with HID. |
| + if (CombineMessage( |
| + messages, PermissionMessage::kUsb, PermissionMessage::kBluetooth)) { |
|
meacer
2014/07/03 01:04:11
As I mentioned on the previous comment on IDS_EXTE
mhm
2014/07/07 21:19:38
Done.
|
| + messages.push_back(PermissionMessage( |
| + PermissionMessage::kHid, |
| + l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_HID))); |
| + messages.erase(FindMessageByID(messages, PermissionMessage::kUsb)); |
| + messages.erase(FindMessageByID(messages, PermissionMessage::kBluetooth)); |
| } |
| + bool media_galleries_read_copy_to = |
|
meacer
2014/07/03 01:04:11
I would just put these inside the if condition whe
mhm
2014/07/07 21:19:38
Done.
|
| + CombineMessage(messages, |
| + PermissionMessage::kMediaGalleriesAllGalleriesRead, |
| + PermissionMessage::kMediaGalleriesAllGalleriesCopyTo); |
| + bool media_galleries_read_delete = |
|
meacer
2014/07/03 01:04:11
Same as media_galleries_copy_to
mhm
2014/07/07 21:19:38
Done.
|
| + CombineMessage(messages, |
| + PermissionMessage::kMediaGalleriesAllGalleriesRead, |
| + PermissionMessage::kMediaGalleriesAllGalleriesDelete); |
| for (PermissionMessages::const_iterator i = messages.begin(); |
| i != messages.end(); ++i) { |
| int id = i->id(); |
| - if (audio_capture && video_capture) { |
| - if (id == PermissionMessage::kAudioCapture) { |
| + if ((id == PermissionMessage::kHid || id == PermissionMessage::kSerial) && |
| + CombineMessage( |
| + messages, PermissionMessage::kHid, PermissionMessage::kSerial)) { |
| + if (id == PermissionMessage::kHid) { |
| + message_strings.push_back( |
| + l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_DEVICES)); |
| + } |
| + continue; |
| + } |
| + if ((id == PermissionMessage::kUsb || id == PermissionMessage::kSerial) && |
| + CombineMessage( |
| + messages, PermissionMessage::kUsb, PermissionMessage::kSerial)) { |
| + if (id == PermissionMessage::kUsb) { |
|
meacer
2014/07/03 01:04:11
This seems cleaner:
if (id == kUsb && ContainsMes
mhm
2014/07/07 21:19:38
The issue is that we also need to have a continue
|
| + message_strings.push_back( |
| + l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_USB_SERIAL)); |
| + } |
| + continue; |
| + } |
| + if ((id == PermissionMessage::kBluetooth || |
| + id == PermissionMessage::kSerial) && |
| + CombineMessage(messages, |
| + PermissionMessage::kBluetooth, |
| + PermissionMessage::kSerial)) { |
| + if (id == PermissionMessage::kBluetooth) { |
|
meacer
2014/07/03 01:04:11
Same as above, you could just check for kBluetooth
mhm
2014/07/07 21:19:39
Done.
|
| message_strings.push_back(l10n_util::GetStringUTF16( |
| - IDS_EXTENSION_PROMPT_WARNING_AUDIO_AND_VIDEO_CAPTURE)); |
| - continue; |
| - } else if (id == PermissionMessage::kVideoCapture) { |
| - // The combined message will be pushed above. |
| - continue; |
| + IDS_EXTENSION_PROMPT_WARNING_BLUETOOTH_SERIAL)); |
| } |
| + continue; |
| } |
| - if (accessibility_read && accessibility_write) { |
| + if ((id == PermissionMessage::kAccessibilityFeaturesRead || |
| + id == PermissionMessage::kAccessibilityFeaturesModify) && |
| + CombineMessage(messages, |
| + PermissionMessage::kAccessibilityFeaturesRead, |
| + PermissionMessage::kAccessibilityFeaturesModify)) { |
| if (id == PermissionMessage::kAccessibilityFeaturesRead) { |
| message_strings.push_back(l10n_util::GetStringUTF16( |
| IDS_EXTENSION_PROMPT_WARNING_ACCESSIBILITY_FEATURES_READ_MODIFY)); |
|
meacer
2014/07/03 01:04:11
Same:
if (id == Read && CombineMessage(messages,
mhm
2014/07/07 21:19:38
Done.
|
| - continue; |
| - } else if (id == PermissionMessage::kAccessibilityFeaturesModify) { |
| - // The combined message will be pushed above. |
| - continue; |
| } |
| + continue; |
| } |
| - if (media_galleries_read && |
| - (media_galleries_copy_to || media_galleries_delete)) { |
| + if ((id == PermissionMessage::kAudioCapture || |
| + id == PermissionMessage::kVideoCapture) && |
| + CombineMessage(messages, |
| + PermissionMessage::kAudioCapture, |
| + PermissionMessage::kVideoCapture)) { |
| + if (id == PermissionMessage::kAudioCapture) { |
|
meacer
2014/07/03 01:04:11
Ditto.
mhm
2014/07/07 21:19:38
Done.
|
| + message_strings.push_back(l10n_util::GetStringUTF16( |
| + IDS_EXTENSION_PROMPT_WARNING_AUDIO_AND_VIDEO_CAPTURE)); |
| + } |
| + continue; |
| + } |
| + if ((id == PermissionMessage::kMediaGalleriesAllGalleriesRead || |
| + id == PermissionMessage::kMediaGalleriesAllGalleriesCopyTo || |
| + id == PermissionMessage::kMediaGalleriesAllGalleriesDelete) && |
| + (media_galleries_read_delete || media_galleries_read_copy_to)) { |
| if (id == PermissionMessage::kMediaGalleriesAllGalleriesRead) { |
|
meacer
2014/07/03 01:04:11
Looks like this is always false, right?
id can on
meacer
2014/07/03 01:09:59
Never mind, my comment is wrong.
mhm
2014/07/07 21:19:39
Done.
|
| - 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)); |
| - continue; |
| - } else if (id == PermissionMessage::kMediaGalleriesAllGalleriesCopyTo || |
| - id == PermissionMessage::kMediaGalleriesAllGalleriesDelete) { |
| - // The combined message will be pushed above. |
| - continue; |
| + if (media_galleries_read_copy_to) { |
| + message_strings.push_back(l10n_util::GetStringUTF16( |
| + IDS_EXTENSION_PROMPT_WARNING_MEDIA_GALLERIES_READ_WRITE)); |
| + } else { |
| + message_strings.push_back(l10n_util::GetStringUTF16( |
| + IDS_EXTENSION_PROMPT_WARNING_MEDIA_GALLERIES_READ_DELETE)); |
| + } |
| } |
| + continue; |
| } |
| if (permissions->HasAPIPermission(APIPermission::kSessions) && |
| id == PermissionMessage::kTabs) { |