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

Unified Diff: chrome/common/extensions/permissions/chrome_permission_message_provider.cc

Issue 336313009: Showing devices transport method in one device (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixing the style of using overriding instead of options and adding const when needed Created 6 years, 5 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
« no previous file with comments | « chrome/app/generated_resources.grd ('k') | chrome/common/extensions/permissions/permission_set_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..3e8c56f21d48f4cff1d1d97d32b818309ccf2bf8 100644
--- a/chrome/common/extensions/permissions/chrome_permission_message_provider.cc
+++ b/chrome/common/extensions/permissions/chrome_permission_message_provider.cc
@@ -33,6 +33,16 @@ typename T::iterator FindMessageByID(T& messages, int id) {
}
template<typename T>
+typename T::const_iterator FindMessageByID(const T& messages, int id) {
+ for (typename T::const_iterator it = messages.begin();
+ it != messages.end(); ++it) {
+ if (it->id() == id)
+ return it;
+ }
+ return messages.end();
+}
+
+template<typename T>
void SuppressMessage(T& messages,
int suppressing_message,
int suppressed_message) {
@@ -44,6 +54,21 @@ void SuppressMessage(T& messages,
}
}
+bool ContainsMessages(const PermissionMessages& messages,
+ int first_message,
+ int second_message) {
+ return FindMessageByID(messages, first_message) != messages.end() &&
+ FindMessageByID(messages, second_message) != messages.end();
+}
+
+bool ContainsMessages(const PermissionMessages& messages,
+ int first_message,
+ int second_message,
+ int third_message) {
+ return ContainsMessages(messages, first_message, second_message) &&
+ FindMessageByID(messages, third_message) != messages.end();
+}
+
} // namespace
ChromePermissionMessageProvider::ChromePermissionMessageProvider() {
@@ -111,76 +136,112 @@ 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));
+ // Access to users' devices should provide a single warning message
+ // specifying the transport method used; USB, serial and/or Bluetooth.
+ if (id == PermissionMessage::kBluetooth ||
+ id == PermissionMessage::kSerial ||
+ id == PermissionMessage::kUsb) {
+ if (ContainsMessages(messages,
+ PermissionMessage::kBluetooth,
+ PermissionMessage::kSerial,
+ PermissionMessage::kUsb)) {
+ if (id == PermissionMessage::kBluetooth) {
+ 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.
+ }
+ if (ContainsMessages(messages,
+ PermissionMessage::kBluetooth,
+ PermissionMessage::kUsb)) {
+ if (id == PermissionMessage::kBluetooth) {
+ message_strings.push_back(l10n_util::GetStringUTF16(
+ IDS_EXTENSION_PROMPT_WARNING_USB_BLUETOOTH));
+ }
+ continue;
+ }
+ if (ContainsMessages(messages,
+ PermissionMessage::kSerial,
+ PermissionMessage::kUsb)) {
+ if (id == PermissionMessage::kSerial) {
+ message_strings.push_back(l10n_util::GetStringUTF16(
+ IDS_EXTENSION_PROMPT_WARNING_USB_SERIAL));
+ }
+ continue;
+ }
+ if (ContainsMessages(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::kAccessibilityFeaturesModify ||
+ id == PermissionMessage::kAccessibilityFeaturesRead) {
+ if (ContainsMessages(messages,
+ PermissionMessage::kAccessibilityFeaturesModify,
+ PermissionMessage::kAccessibilityFeaturesRead)) {
+ if (id == PermissionMessage::kAccessibilityFeaturesModify) {
+ 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 (ContainsMessages(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::kMediaGalleriesAllGalleriesCopyTo ||
+ id == PermissionMessage::kMediaGalleriesAllGalleriesDelete ||
+ id == PermissionMessage::kMediaGalleriesAllGalleriesRead) {
+ if (ContainsMessages(
+ messages,
+ PermissionMessage::kMediaGalleriesAllGalleriesCopyTo,
+ PermissionMessage::kMediaGalleriesAllGalleriesDelete,
+ PermissionMessage::kMediaGalleriesAllGalleriesRead)) {
+ if (id == PermissionMessage::kMediaGalleriesAllGalleriesCopyTo) {
+ message_strings.push_back(l10n_util::GetStringUTF16(
+ IDS_EXTENSION_PROMPT_WARNING_MEDIA_GALLERIES_READ_WRITE_DELETE));
+ }
continue;
- } else if (id == PermissionMessage::kMediaGalleriesAllGalleriesCopyTo ||
- id == PermissionMessage::kMediaGalleriesAllGalleriesDelete) {
- // The combined message will be pushed above.
+ }
+ if (ContainsMessages(
+ messages,
+ PermissionMessage::kMediaGalleriesAllGalleriesCopyTo,
+ PermissionMessage::kMediaGalleriesAllGalleriesRead)) {
+ if (id == PermissionMessage::kMediaGalleriesAllGalleriesCopyTo) {
+ message_strings.push_back(l10n_util::GetStringUTF16(
+ IDS_EXTENSION_PROMPT_WARNING_MEDIA_GALLERIES_READ_WRITE));
+ }
+ continue;
+ }
+ if (ContainsMessages(
+ messages,
+ PermissionMessage::kMediaGalleriesAllGalleriesDelete,
+ PermissionMessage::kMediaGalleriesAllGalleriesRead)) {
+ if (id == PermissionMessage::kMediaGalleriesAllGalleriesDelete) {
+ message_strings.push_back(l10n_util::GetStringUTF16(
+ IDS_EXTENSION_PROMPT_WARNING_MEDIA_GALLERIES_READ_DELETE));
+ }
continue;
}
}
« no previous file with comments | « chrome/app/generated_resources.grd ('k') | chrome/common/extensions/permissions/permission_set_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698