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

Side by Side 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: Cleaned the code and added tests 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/common/extensions/permissions/chrome_permission_message_provide r.h" 5 #include "chrome/common/extensions/permissions/chrome_permission_message_provide r.h"
6 6
7 #include "base/stl_util.h" 7 #include "base/stl_util.h"
8 #include "base/strings/stringprintf.h" 8 #include "base/strings/stringprintf.h"
9 #include "extensions/common/extensions_client.h" 9 #include "extensions/common/extensions_client.h"
10 #include "extensions/common/permissions/permission_message.h" 10 #include "extensions/common/permissions/permission_message.h"
(...skipping 26 matching lines...) Expand all
37 int suppressing_message, 37 int suppressing_message,
38 int suppressed_message) { 38 int suppressed_message) {
39 typename T::iterator suppressed = FindMessageByID(messages, 39 typename T::iterator suppressed = FindMessageByID(messages,
40 suppressed_message); 40 suppressed_message);
41 if (suppressed != messages.end() && 41 if (suppressed != messages.end() &&
42 FindMessageByID(messages, suppressing_message) != messages.end()) { 42 FindMessageByID(messages, suppressing_message) != messages.end()) {
43 messages.erase(suppressed); 43 messages.erase(suppressed);
44 } 44 }
45 } 45 }
46 46
47 template <typename T>
48 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.
49 typename T::iterator first = FindMessageByID(messages, first_message);
50 typename T::iterator second = FindMessageByID(messages, second_message);
51 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.
52 return true;
53 }
54 return false;
55 }
56
47 } // namespace 57 } // namespace
48 58
49 ChromePermissionMessageProvider::ChromePermissionMessageProvider() { 59 ChromePermissionMessageProvider::ChromePermissionMessageProvider() {
50 } 60 }
51 61
52 ChromePermissionMessageProvider::~ChromePermissionMessageProvider() { 62 ChromePermissionMessageProvider::~ChromePermissionMessageProvider() {
53 } 63 }
54 64
55 PermissionMessages ChromePermissionMessageProvider::GetPermissionMessages( 65 PermissionMessages ChromePermissionMessageProvider::GetPermissionMessages(
56 const PermissionSet* permissions, 66 const PermissionSet* permissions,
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 return messages; 114 return messages;
105 } 115 }
106 116
107 std::vector<base::string16> ChromePermissionMessageProvider::GetWarningMessages( 117 std::vector<base::string16> ChromePermissionMessageProvider::GetWarningMessages(
108 const PermissionSet* permissions, 118 const PermissionSet* permissions,
109 Manifest::Type extension_type) const { 119 Manifest::Type extension_type) const {
110 std::vector<base::string16> message_strings; 120 std::vector<base::string16> message_strings;
111 PermissionMessages messages = 121 PermissionMessages messages =
112 GetPermissionMessages(permissions, extension_type); 122 GetPermissionMessages(permissions, extension_type);
113 123
114 bool audio_capture = false; 124 // Warning for Hid always include warning for USB and/or Bluetooth
115 bool video_capture = false; 125 // access permission.
116 bool media_galleries_read = false; 126 SuppressMessage(messages,
117 bool media_galleries_copy_to = false; 127 PermissionMessage::kHid,
118 bool media_galleries_delete = false; 128 PermissionMessage::kUsb);
119 bool accessibility_read = false; 129 SuppressMessage(messages,
120 bool accessibility_write = false; 130 PermissionMessage::kBluetooth,
121 for (PermissionMessages::const_iterator i = messages.begin(); 131 PermissionMessage::kBluetoothDevices);
122 i != messages.end(); ++i) { 132 SuppressMessage(messages,
123 switch (i->id()) { 133 PermissionMessage::kHid,
124 case PermissionMessage::kAudioCapture: 134 PermissionMessage::kBluetooth);
125 audio_capture = true; 135
126 break; 136 // Replace USB and Bluetooth with HID.
127 case PermissionMessage::kVideoCapture: 137 if (CombineMessage(
128 video_capture = true; 138 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.
129 break; 139 messages.push_back(PermissionMessage(
130 case PermissionMessage::kMediaGalleriesAllGalleriesRead: 140 PermissionMessage::kHid,
131 media_galleries_read = true; 141 l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_HID)));
132 break; 142 messages.erase(FindMessageByID(messages, PermissionMessage::kUsb));
133 case PermissionMessage::kMediaGalleriesAllGalleriesCopyTo: 143 messages.erase(FindMessageByID(messages, PermissionMessage::kBluetooth));
134 media_galleries_copy_to = true;
135 break;
136 case PermissionMessage::kMediaGalleriesAllGalleriesDelete:
137 media_galleries_delete = true;
138 break;
139 case PermissionMessage::kAccessibilityFeaturesRead:
140 accessibility_read = true;
141 break;
142 case PermissionMessage::kAccessibilityFeaturesModify:
143 accessibility_write = true;
144 break;
145 default:
146 break;
147 }
148 } 144 }
149 145
146 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.
147 CombineMessage(messages,
148 PermissionMessage::kMediaGalleriesAllGalleriesRead,
149 PermissionMessage::kMediaGalleriesAllGalleriesCopyTo);
150 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.
151 CombineMessage(messages,
152 PermissionMessage::kMediaGalleriesAllGalleriesRead,
153 PermissionMessage::kMediaGalleriesAllGalleriesDelete);
150 for (PermissionMessages::const_iterator i = messages.begin(); 154 for (PermissionMessages::const_iterator i = messages.begin();
151 i != messages.end(); ++i) { 155 i != messages.end(); ++i) {
152 int id = i->id(); 156 int id = i->id();
153 if (audio_capture && video_capture) { 157 if ((id == PermissionMessage::kHid || id == PermissionMessage::kSerial) &&
158 CombineMessage(
159 messages, PermissionMessage::kHid, PermissionMessage::kSerial)) {
160 if (id == PermissionMessage::kHid) {
161 message_strings.push_back(
162 l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_DEVICES));
163 }
164 continue;
165 }
166 if ((id == PermissionMessage::kUsb || id == PermissionMessage::kSerial) &&
167 CombineMessage(
168 messages, PermissionMessage::kUsb, PermissionMessage::kSerial)) {
169 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
170 message_strings.push_back(
171 l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_USB_SERIAL));
172 }
173 continue;
174 }
175 if ((id == PermissionMessage::kBluetooth ||
176 id == PermissionMessage::kSerial) &&
177 CombineMessage(messages,
178 PermissionMessage::kBluetooth,
179 PermissionMessage::kSerial)) {
180 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.
181 message_strings.push_back(l10n_util::GetStringUTF16(
182 IDS_EXTENSION_PROMPT_WARNING_BLUETOOTH_SERIAL));
183 }
184 continue;
185 }
186 if ((id == PermissionMessage::kAccessibilityFeaturesRead ||
187 id == PermissionMessage::kAccessibilityFeaturesModify) &&
188 CombineMessage(messages,
189 PermissionMessage::kAccessibilityFeaturesRead,
190 PermissionMessage::kAccessibilityFeaturesModify)) {
191 if (id == PermissionMessage::kAccessibilityFeaturesRead) {
192 message_strings.push_back(l10n_util::GetStringUTF16(
193 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.
194 }
195 continue;
196 }
197 if ((id == PermissionMessage::kAudioCapture ||
198 id == PermissionMessage::kVideoCapture) &&
199 CombineMessage(messages,
200 PermissionMessage::kAudioCapture,
201 PermissionMessage::kVideoCapture)) {
154 if (id == PermissionMessage::kAudioCapture) { 202 if (id == PermissionMessage::kAudioCapture) {
meacer 2014/07/03 01:04:11 Ditto.
mhm 2014/07/07 21:19:38 Done.
155 message_strings.push_back(l10n_util::GetStringUTF16( 203 message_strings.push_back(l10n_util::GetStringUTF16(
156 IDS_EXTENSION_PROMPT_WARNING_AUDIO_AND_VIDEO_CAPTURE)); 204 IDS_EXTENSION_PROMPT_WARNING_AUDIO_AND_VIDEO_CAPTURE));
157 continue;
158 } else if (id == PermissionMessage::kVideoCapture) {
159 // The combined message will be pushed above.
160 continue;
161 } 205 }
206 continue;
162 } 207 }
163 if (accessibility_read && accessibility_write) { 208 if ((id == PermissionMessage::kMediaGalleriesAllGalleriesRead ||
164 if (id == PermissionMessage::kAccessibilityFeaturesRead) { 209 id == PermissionMessage::kMediaGalleriesAllGalleriesCopyTo ||
165 message_strings.push_back(l10n_util::GetStringUTF16( 210 id == PermissionMessage::kMediaGalleriesAllGalleriesDelete) &&
166 IDS_EXTENSION_PROMPT_WARNING_ACCESSIBILITY_FEATURES_READ_MODIFY)); 211 (media_galleries_read_delete || media_galleries_read_copy_to)) {
167 continue; 212 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.
168 } else if (id == PermissionMessage::kAccessibilityFeaturesModify) { 213 if (media_galleries_read_copy_to) {
169 // The combined message will be pushed above. 214 message_strings.push_back(l10n_util::GetStringUTF16(
170 continue; 215 IDS_EXTENSION_PROMPT_WARNING_MEDIA_GALLERIES_READ_WRITE));
216 } else {
217 message_strings.push_back(l10n_util::GetStringUTF16(
218 IDS_EXTENSION_PROMPT_WARNING_MEDIA_GALLERIES_READ_DELETE));
219 }
171 } 220 }
172 } 221 continue;
173 if (media_galleries_read &&
174 (media_galleries_copy_to || media_galleries_delete)) {
175 if (id == PermissionMessage::kMediaGalleriesAllGalleriesRead) {
176 int m_id = media_galleries_copy_to ?
177 IDS_EXTENSION_PROMPT_WARNING_MEDIA_GALLERIES_READ_WRITE :
178 IDS_EXTENSION_PROMPT_WARNING_MEDIA_GALLERIES_READ_DELETE;
179 message_strings.push_back(l10n_util::GetStringUTF16(m_id));
180 continue;
181 } else if (id == PermissionMessage::kMediaGalleriesAllGalleriesCopyTo ||
182 id == PermissionMessage::kMediaGalleriesAllGalleriesDelete) {
183 // The combined message will be pushed above.
184 continue;
185 }
186 } 222 }
187 if (permissions->HasAPIPermission(APIPermission::kSessions) && 223 if (permissions->HasAPIPermission(APIPermission::kSessions) &&
188 id == PermissionMessage::kTabs) { 224 id == PermissionMessage::kTabs) {
189 message_strings.push_back(l10n_util::GetStringUTF16( 225 message_strings.push_back(l10n_util::GetStringUTF16(
190 IDS_EXTENSION_PROMPT_WARNING_HISTORY_READ_AND_SESSIONS)); 226 IDS_EXTENSION_PROMPT_WARNING_HISTORY_READ_AND_SESSIONS));
191 continue; 227 continue;
192 } 228 }
193 if (permissions->HasAPIPermission(APIPermission::kSessions) && 229 if (permissions->HasAPIPermission(APIPermission::kSessions) &&
194 id == PermissionMessage::kBrowsingHistory) { 230 id == PermissionMessage::kBrowsingHistory) {
195 message_strings.push_back(l10n_util::GetStringUTF16( 231 message_strings.push_back(l10n_util::GetStringUTF16(
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
390 std::set<std::string> old_hosts_set( 426 std::set<std::string> old_hosts_set(
391 permission_message_util::GetDistinctHosts(old_list, false, false)); 427 permission_message_util::GetDistinctHosts(old_list, false, false));
392 std::set<std::string> new_hosts_only = 428 std::set<std::string> new_hosts_only =
393 base::STLSetDifference<std::set<std::string> >(new_hosts_set, 429 base::STLSetDifference<std::set<std::string> >(new_hosts_set,
394 old_hosts_set); 430 old_hosts_set);
395 431
396 return !new_hosts_only.empty(); 432 return !new_hosts_only.empty();
397 } 433 }
398 434
399 } // namespace extensions 435 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698