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

Side by Side Diff: chrome/common/extensions/permissions/chrome_permission_message_rules.cc

Issue 1314753004: Permission messages: Add a bunch of missing combination/suppression rules. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@reorder_rules
Patch Set: variadic templates ftw! Created 5 years, 3 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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_rules.h " 5 #include "chrome/common/extensions/permissions/chrome_permission_message_rules.h "
6 6
7 #include "base/stl_util.h" 7 #include "base/stl_util.h"
8 #include "base/strings/string_util.h" 8 #include "base/strings/string_util.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "chrome/grit/generated_resources.h" 10 #include "chrome/grit/generated_resources.h"
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 permissions, submessages); 244 permissions, submessages);
245 } 245 }
246 246
247 DISALLOW_COPY_AND_ASSIGN(USBDevicesFormatter); 247 DISALLOW_COPY_AND_ASSIGN(USBDevicesFormatter);
248 }; 248 };
249 249
250 } // namespace 250 } // namespace
251 251
252 // Convenience constructors to allow inline initialization of the permission 252 // Convenience constructors to allow inline initialization of the permission
253 // ID sets. 253 // ID sets.
254 // TODO(treib): Once we're allowed to use uniform initialization (and
255 // std::initializer_list), get rid of this helper.
254 class ChromePermissionMessageRule::PermissionIDSetInitializer 256 class ChromePermissionMessageRule::PermissionIDSetInitializer
255 : public std::set<APIPermission::ID> { 257 : public std::set<APIPermission::ID> {
256 public: 258 public:
257 PermissionIDSetInitializer() {} 259 template <typename... IDs>
258 260 PermissionIDSetInitializer(IDs... ids) {
259 // Don't make the constructor explicit to make the usage convenient. 261 ExpandHelper(insert(ids)...);
260 PermissionIDSetInitializer(APIPermission::ID a) { // NOLINT(runtime/explicit)
261 insert(a);
262 }
263
264 PermissionIDSetInitializer(APIPermission::ID a, APIPermission::ID b)
265 : PermissionIDSetInitializer(a) {
266 insert(b);
267 }
268
269 PermissionIDSetInitializer(APIPermission::ID a,
270 APIPermission::ID b,
271 APIPermission::ID c)
272 : PermissionIDSetInitializer(a, b) {
273 insert(c);
274 }
275
276 PermissionIDSetInitializer(APIPermission::ID a,
277 APIPermission::ID b,
278 APIPermission::ID c,
279 APIPermission::ID d)
280 : PermissionIDSetInitializer(a, b, c) {
281 insert(d);
282 }
283
284 PermissionIDSetInitializer(APIPermission::ID a,
285 APIPermission::ID b,
286 APIPermission::ID c,
287 APIPermission::ID d,
288 APIPermission::ID e)
289 : PermissionIDSetInitializer(a, b, c, d) {
290 insert(e);
291 }
292
293 PermissionIDSetInitializer(APIPermission::ID a,
294 APIPermission::ID b,
295 APIPermission::ID c,
296 APIPermission::ID d,
297 APIPermission::ID e,
298 APIPermission::ID f)
299 : PermissionIDSetInitializer(a, b, c, d, e) {
300 insert(f);
301 }
302
303 PermissionIDSetInitializer(APIPermission::ID a,
304 APIPermission::ID b,
305 APIPermission::ID c,
306 APIPermission::ID d,
307 APIPermission::ID e,
308 APIPermission::ID f,
309 APIPermission::ID g)
310 : PermissionIDSetInitializer(a, b, c, d, e, f) {
311 insert(g);
312 } 262 }
313 263
314 virtual ~PermissionIDSetInitializer() {} 264 virtual ~PermissionIDSetInitializer() {}
265
266 private:
267 template <typename... Args>
268 void ExpandHelper(Args&&...) {}
Marc Treib 2015/09/02 10:43:55 This is the one slightly yucky part - we need this
315 }; 269 };
316 270
317 ChromePermissionMessageRule::ChromePermissionMessageRule( 271 ChromePermissionMessageRule::ChromePermissionMessageRule(
318 int message_id, 272 int message_id,
319 const PermissionIDSetInitializer& required, 273 const PermissionIDSetInitializer& required,
320 const PermissionIDSetInitializer& optional) 274 const PermissionIDSetInitializer& optional)
321 : ChromePermissionMessageRule( 275 : ChromePermissionMessageRule(
322 new DefaultPermissionMessageFormatter(message_id), 276 new DefaultPermissionMessageFormatter(message_id),
323 required, 277 required,
324 optional) {} 278 optional) {}
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 // permission suppresses kTab, be careful to also add kTopSites and kFavicon 336 // permission suppresses kTab, be careful to also add kTopSites and kFavicon
383 // to the kHistory absorb list. Ideally, the rules system should be simple 337 // to the kHistory absorb list. Ideally, the rules system should be simple
384 // enough that rules like this should not occur; the visibility of the rules 338 // enough that rules like this should not occur; the visibility of the rules
385 // system should allow us to design a system that is simple enough to explain 339 // system should allow us to design a system that is simple enough to explain
386 // yet powerful enough to encapsulate all the messages we want to display. 340 // yet powerful enough to encapsulate all the messages we want to display.
387 ChromePermissionMessageRule rules_arr[] = { 341 ChromePermissionMessageRule rules_arr[] = {
388 // Full access permission messages. 342 // Full access permission messages.
389 {IDS_EXTENSION_PROMPT_WARNING_DEBUGGER, {APIPermission::kDebugger}, {}}, 343 {IDS_EXTENSION_PROMPT_WARNING_DEBUGGER, {APIPermission::kDebugger}, {}},
390 {IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS, 344 {IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS,
391 {APIPermission::kPlugin}, 345 {APIPermission::kPlugin},
392 // TODO(treib): Add the other IDs implied by kFullAccess/kHostsAll. 346 {APIPermission::kDeclarativeWebRequest, APIPermission::kFavicon,
393 {APIPermission::kFullAccess, APIPermission::kHostsAll, 347 APIPermission::kFullAccess, APIPermission::kHostsAll,
394 APIPermission::kHostsAllReadOnly, APIPermission::kDeclarativeWebRequest, 348 APIPermission::kHostsAllReadOnly, APIPermission::kProcesses,
395 APIPermission::kTopSites, APIPermission::kTab}}, 349 APIPermission::kTab, APIPermission::kTopSites,
350 APIPermission::kWebNavigation}},
396 {IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS, 351 {IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS,
397 {APIPermission::kFullAccess}, 352 {APIPermission::kFullAccess},
398 // TODO(treib): Add the other IDs implied by kHostsAll. 353 {APIPermission::kDeclarativeWebRequest, APIPermission::kFavicon,
399 {APIPermission::kHostsAll, APIPermission::kHostsAllReadOnly, 354 APIPermission::kHostsAll, APIPermission::kHostsAllReadOnly,
400 APIPermission::kDeclarativeWebRequest, APIPermission::kTopSites, 355 APIPermission::kProcesses, APIPermission::kTab,
401 APIPermission::kTab}}, 356 APIPermission::kTopSites, APIPermission::kWebNavigation}},
402 357
403 // Hosts permission messages. 358 // Hosts permission messages.
404 // Full host access already allows DeclarativeWebRequest, reading the list 359 // Full host access already allows DeclarativeWebRequest, reading the list
405 // of most frequently visited sites, and tab access. 360 // of most frequently visited sites, and tab access.
406 // The warning message for declarativeWebRequest permissions speaks about 361 // The warning message for declarativeWebRequest permissions speaks about
407 // blocking parts of pages, which is a subset of what the "<all_urls>" 362 // blocking parts of pages, which is a subset of what the "<all_urls>"
408 // access allows. Therefore we display only the "<all_urls>" warning 363 // access allows. Therefore we display only the "<all_urls>" warning
409 // message if both permissions are required. 364 // message if both permissions are required.
410 {IDS_EXTENSION_PROMPT_WARNING_ALL_HOSTS, 365 {IDS_EXTENSION_PROMPT_WARNING_ALL_HOSTS,
411 {APIPermission::kHostsAll}, 366 {APIPermission::kHostsAll},
412 // TODO(treib): Add kHostReadWrite and kHostReadOnly.
413 {APIPermission::kDeclarativeWebRequest, APIPermission::kFavicon, 367 {APIPermission::kDeclarativeWebRequest, APIPermission::kFavicon,
414 APIPermission::kHostsAllReadOnly, APIPermission::kProcesses, 368 APIPermission::kHostsAllReadOnly, APIPermission::kHostReadOnly,
369 APIPermission::kHostReadWrite, APIPermission::kProcesses,
415 APIPermission::kTab, APIPermission::kTopSites, 370 APIPermission::kTab, APIPermission::kTopSites,
416 APIPermission::kWebNavigation}}, 371 APIPermission::kWebNavigation}},
417 {IDS_EXTENSION_PROMPT_WARNING_ALL_HOSTS_READ_ONLY, 372 {IDS_EXTENSION_PROMPT_WARNING_ALL_HOSTS_READ_ONLY,
418 {APIPermission::kHostsAllReadOnly}, 373 {APIPermission::kHostsAllReadOnly},
419 // TODO(treib): Add kHostReadOnly. 374 {APIPermission::kFavicon, APIPermission::kHostReadOnly,
420 {APIPermission::kFavicon, APIPermission::kProcesses, APIPermission::kTab, 375 APIPermission::kProcesses, APIPermission::kTab,
421 APIPermission::kTopSites, APIPermission::kWebNavigation}}, 376 APIPermission::kTopSites, APIPermission::kWebNavigation}},
422 377
378 {new CommaSeparatedListFormatter(IDS_EXTENSION_PROMPT_WARNING_1_HOST,
379 IDS_EXTENSION_PROMPT_WARNING_2_HOSTS,
380 IDS_EXTENSION_PROMPT_WARNING_3_HOSTS,
381 IDS_EXTENSION_PROMPT_WARNING_HOSTS_LIST),
382 {APIPermission::kHostReadWrite},
383 {}},
423 {new CommaSeparatedListFormatter( 384 {new CommaSeparatedListFormatter(
424 IDS_EXTENSION_PROMPT_WARNING_1_HOST_READ_ONLY, 385 IDS_EXTENSION_PROMPT_WARNING_1_HOST_READ_ONLY,
425 IDS_EXTENSION_PROMPT_WARNING_2_HOSTS_READ_ONLY, 386 IDS_EXTENSION_PROMPT_WARNING_2_HOSTS_READ_ONLY,
426 IDS_EXTENSION_PROMPT_WARNING_3_HOSTS_READ_ONLY, 387 IDS_EXTENSION_PROMPT_WARNING_3_HOSTS_READ_ONLY,
427 IDS_EXTENSION_PROMPT_WARNING_HOSTS_LIST_READ_ONLY), 388 IDS_EXTENSION_PROMPT_WARNING_HOSTS_LIST_READ_ONLY),
428 {APIPermission::kHostReadOnly}, 389 {APIPermission::kHostReadOnly},
429 {}}, 390 {}},
430 {new CommaSeparatedListFormatter(IDS_EXTENSION_PROMPT_WARNING_1_HOST,
431 IDS_EXTENSION_PROMPT_WARNING_2_HOSTS,
432 IDS_EXTENSION_PROMPT_WARNING_3_HOSTS,
433 IDS_EXTENSION_PROMPT_WARNING_HOSTS_LIST),
434 {APIPermission::kHostReadWrite},
435 {}},
436 391
437 // History-related permission messages. 392 // History-related permission messages.
438 // History already allows reading favicons, tab access and accessing the 393 // History already allows reading favicons, tab access and accessing the
439 // list of most frequently visited sites. 394 // list of most frequently visited sites.
440 {IDS_EXTENSION_PROMPT_WARNING_HISTORY_WRITE_AND_SESSIONS, 395 {IDS_EXTENSION_PROMPT_WARNING_HISTORY_WRITE_AND_SESSIONS,
441 {APIPermission::kSessions, APIPermission::kHistory}, 396 {APIPermission::kHistory, APIPermission::kSessions},
442 {APIPermission::kFavicon, APIPermission::kProcesses, APIPermission::kTab, 397 {APIPermission::kFavicon, APIPermission::kProcesses, APIPermission::kTab,
443 APIPermission::kTopSites, APIPermission::kWebNavigation}}, 398 APIPermission::kTopSites, APIPermission::kWebNavigation}},
444 {IDS_EXTENSION_PROMPT_WARNING_HISTORY_READ_AND_SESSIONS, 399 {IDS_EXTENSION_PROMPT_WARNING_HISTORY_READ_AND_SESSIONS,
445 {APIPermission::kSessions, APIPermission::kTab}, 400 {APIPermission::kTab, APIPermission::kSessions},
446 {APIPermission::kFavicon, APIPermission::kProcesses, 401 {APIPermission::kFavicon, APIPermission::kProcesses,
447 APIPermission::kTopSites, APIPermission::kWebNavigation}}, 402 APIPermission::kTopSites, APIPermission::kWebNavigation}},
448 {IDS_EXTENSION_PROMPT_WARNING_HISTORY_WRITE, 403 {IDS_EXTENSION_PROMPT_WARNING_HISTORY_WRITE,
449 {APIPermission::kHistory}, 404 {APIPermission::kHistory},
450 {APIPermission::kFavicon, APIPermission::kProcesses, APIPermission::kTab, 405 {APIPermission::kFavicon, APIPermission::kProcesses, APIPermission::kTab,
451 APIPermission::kTopSites, APIPermission::kWebNavigation}}, 406 APIPermission::kTopSites, APIPermission::kWebNavigation}},
407 // Note: kSessions allows reading history from other devices only if kTab
408 // is also present. Therefore, there are no _AND_SESSIONS versions of
409 // the other rules that generate the HISTORY_READ warning.
452 {IDS_EXTENSION_PROMPT_WARNING_HISTORY_READ, 410 {IDS_EXTENSION_PROMPT_WARNING_HISTORY_READ,
453 {APIPermission::kTab}, 411 {APIPermission::kTab},
454 {APIPermission::kFavicon, APIPermission::kProcesses, 412 {APIPermission::kFavicon, APIPermission::kProcesses,
455 APIPermission::kTopSites, APIPermission::kWebNavigation}}, 413 APIPermission::kTopSites, APIPermission::kWebNavigation}},
456 // TODO(treib): Should we have _AND_SESSIONS versions of these 2 as well?
457 {IDS_EXTENSION_PROMPT_WARNING_HISTORY_READ, 414 {IDS_EXTENSION_PROMPT_WARNING_HISTORY_READ,
458 {APIPermission::kProcesses}, 415 {APIPermission::kProcesses},
459 {}}, 416 {APIPermission::kFavicon, APIPermission::kTopSites,
417 APIPermission::kWebNavigation}},
460 {IDS_EXTENSION_PROMPT_WARNING_HISTORY_READ, 418 {IDS_EXTENSION_PROMPT_WARNING_HISTORY_READ,
461 {APIPermission::kWebNavigation}, 419 {APIPermission::kWebNavigation},
462 {}}, 420 {APIPermission::kFavicon, APIPermission::kTopSites}},
463 {IDS_EXTENSION_PROMPT_WARNING_FAVICON, {APIPermission::kFavicon}, {}}, 421 {IDS_EXTENSION_PROMPT_WARNING_FAVICON, {APIPermission::kFavicon}, {}},
464 {IDS_EXTENSION_PROMPT_WARNING_TOPSITES, {APIPermission::kTopSites}, {}}, 422 {IDS_EXTENSION_PROMPT_WARNING_TOPSITES, {APIPermission::kTopSites}, {}},
423
465 {IDS_EXTENSION_PROMPT_WARNING_DECLARATIVE_WEB_REQUEST, 424 {IDS_EXTENSION_PROMPT_WARNING_DECLARATIVE_WEB_REQUEST,
466 {APIPermission::kDeclarativeWebRequest}, 425 {APIPermission::kDeclarativeWebRequest},
467 {}}, 426 {}},
468 427
469 // Messages generated by the sockets permission. 428 // Messages generated by the sockets permission.
470 {IDS_EXTENSION_PROMPT_WARNING_SOCKET_ANY_HOST, 429 {IDS_EXTENSION_PROMPT_WARNING_SOCKET_ANY_HOST,
471 {APIPermission::kSocketAnyHost}, 430 {APIPermission::kSocketAnyHost},
472 // TODO(treib): Add kSocketDomainHosts and kSocketSpecificHosts. 431 {APIPermission::kSocketDomainHosts,
473 {}}, 432 APIPermission::kSocketSpecificHosts}},
474 {new SpaceSeparatedListFormatter( 433 {new SpaceSeparatedListFormatter(
475 IDS_EXTENSION_PROMPT_WARNING_SOCKET_HOSTS_IN_DOMAIN, 434 IDS_EXTENSION_PROMPT_WARNING_SOCKET_HOSTS_IN_DOMAIN,
476 IDS_EXTENSION_PROMPT_WARNING_SOCKET_HOSTS_IN_DOMAINS), 435 IDS_EXTENSION_PROMPT_WARNING_SOCKET_HOSTS_IN_DOMAINS),
477 {APIPermission::kSocketDomainHosts}, 436 {APIPermission::kSocketDomainHosts},
478 {}}, 437 {}},
479 {new SpaceSeparatedListFormatter( 438 {new SpaceSeparatedListFormatter(
480 IDS_EXTENSION_PROMPT_WARNING_SOCKET_SPECIFIC_HOST, 439 IDS_EXTENSION_PROMPT_WARNING_SOCKET_SPECIFIC_HOST,
481 IDS_EXTENSION_PROMPT_WARNING_SOCKET_SPECIFIC_HOSTS), 440 IDS_EXTENSION_PROMPT_WARNING_SOCKET_SPECIFIC_HOSTS),
482 {APIPermission::kSocketSpecificHosts}, 441 {APIPermission::kSocketSpecificHosts},
483 {}}, 442 {}},
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
519 {APIPermission::kAccessibilityFeaturesModify, 478 {APIPermission::kAccessibilityFeaturesModify,
520 APIPermission::kAccessibilityFeaturesRead}, 479 APIPermission::kAccessibilityFeaturesRead},
521 {}}, 480 {}},
522 {IDS_EXTENSION_PROMPT_WARNING_ACCESSIBILITY_FEATURES_MODIFY, 481 {IDS_EXTENSION_PROMPT_WARNING_ACCESSIBILITY_FEATURES_MODIFY,
523 {APIPermission::kAccessibilityFeaturesModify}, 482 {APIPermission::kAccessibilityFeaturesModify},
524 {}}, 483 {}},
525 {IDS_EXTENSION_PROMPT_WARNING_ACCESSIBILITY_FEATURES_READ, 484 {IDS_EXTENSION_PROMPT_WARNING_ACCESSIBILITY_FEATURES_READ,
526 {APIPermission::kAccessibilityFeaturesRead}, 485 {APIPermission::kAccessibilityFeaturesRead},
527 {}}, 486 {}},
528 487
529 // TODO(sashab): Add the missing combinations of media galleries 488 // Media galleries permissions. We don't have strings for every possible
530 // permissions so a valid permission is generated for all combinations. 489 // combination, e.g. we don't bother with a special string for "write, but
490 // not read" - just show the "read and write" string instead, etc.
531 {IDS_EXTENSION_PROMPT_WARNING_MEDIA_GALLERIES_READ_WRITE_DELETE, 491 {IDS_EXTENSION_PROMPT_WARNING_MEDIA_GALLERIES_READ_WRITE_DELETE,
532 {APIPermission::kMediaGalleriesAllGalleriesCopyTo, 492 {APIPermission::kMediaGalleriesAllGalleriesCopyTo,
533 APIPermission::kMediaGalleriesAllGalleriesDelete, 493 APIPermission::kMediaGalleriesAllGalleriesDelete},
534 APIPermission::kMediaGalleriesAllGalleriesRead}, 494 {APIPermission::kMediaGalleriesAllGalleriesRead}},
535 {}},
536 {IDS_EXTENSION_PROMPT_WARNING_MEDIA_GALLERIES_READ_WRITE, 495 {IDS_EXTENSION_PROMPT_WARNING_MEDIA_GALLERIES_READ_WRITE,
537 {APIPermission::kMediaGalleriesAllGalleriesCopyTo, 496 {APIPermission::kMediaGalleriesAllGalleriesCopyTo},
538 APIPermission::kMediaGalleriesAllGalleriesRead}, 497 {APIPermission::kMediaGalleriesAllGalleriesRead}},
539 {}},
540 {IDS_EXTENSION_PROMPT_WARNING_MEDIA_GALLERIES_READ_DELETE, 498 {IDS_EXTENSION_PROMPT_WARNING_MEDIA_GALLERIES_READ_DELETE,
541 {APIPermission::kMediaGalleriesAllGalleriesDelete, 499 {APIPermission::kMediaGalleriesAllGalleriesDelete},
542 APIPermission::kMediaGalleriesAllGalleriesRead}, 500 {APIPermission::kMediaGalleriesAllGalleriesRead}},
543 {}},
544 {IDS_EXTENSION_PROMPT_WARNING_MEDIA_GALLERIES_READ, 501 {IDS_EXTENSION_PROMPT_WARNING_MEDIA_GALLERIES_READ,
545 {APIPermission::kMediaGalleriesAllGalleriesRead}, 502 {APIPermission::kMediaGalleriesAllGalleriesRead},
546 {}}, 503 {}},
547 504
548 // The permission string for "fileSystem" is only shown when 505 // The permission string for "fileSystem" is only shown when
549 // "write" or "directory" is present. Read-only access is only 506 // "write" or "directory" is present. Read-only access is only
550 // granted after the user has been shown a file or directory 507 // granted after the user has been shown a file or directory
551 // chooser dialog and selected a file or directory. Selecting 508 // chooser dialog and selected a file or directory. Selecting
552 // the file or directory is considered consent to read it. 509 // the file or directory is considered consent to read it.
553 {IDS_EXTENSION_PROMPT_WARNING_FILE_SYSTEM_WRITE_DIRECTORY, 510 {IDS_EXTENSION_PROMPT_WARNING_FILE_SYSTEM_WRITE_DIRECTORY,
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
622 {APIPermission::kContentSettings}, 579 {APIPermission::kContentSettings},
623 {}}, 580 {}},
624 {IDS_EXTENSION_PROMPT_WARNING_COPRESENCE, 581 {IDS_EXTENSION_PROMPT_WARNING_COPRESENCE,
625 {APIPermission::kCopresence}, 582 {APIPermission::kCopresence},
626 {}}, 583 {}},
627 {IDS_EXTENSION_PROMPT_WARNING_DOCUMENT_SCAN, 584 {IDS_EXTENSION_PROMPT_WARNING_DOCUMENT_SCAN,
628 {APIPermission::kDocumentScan}, 585 {APIPermission::kDocumentScan},
629 {}}, 586 {}},
630 {IDS_EXTENSION_PROMPT_WARNING_INTERCEPT_ALL_KEYS, 587 {IDS_EXTENSION_PROMPT_WARNING_INTERCEPT_ALL_KEYS,
631 {APIPermission::kInterceptAllKeys}, 588 {APIPermission::kInterceptAllKeys},
632 {}}, // TODO(treib): This should probably suppress kInput. 589 {APIPermission::kInput}},
633 {IDS_EXTENSION_PROMPT_WARNING_INPUT, {APIPermission::kInput}, {}}, 590 {IDS_EXTENSION_PROMPT_WARNING_INPUT, {APIPermission::kInput}, {}},
634 {IDS_EXTENSION_PROMPT_WARNING_MANAGEMENT, 591 {IDS_EXTENSION_PROMPT_WARNING_MANAGEMENT,
635 {APIPermission::kManagement}, 592 {APIPermission::kManagement},
636 {}}, 593 {}},
637 {IDS_EXTENSION_PROMPT_WARNING_MDNS, {APIPermission::kMDns}, {}}, 594 {IDS_EXTENSION_PROMPT_WARNING_MDNS, {APIPermission::kMDns}, {}},
638 {IDS_EXTENSION_PROMPT_WARNING_NATIVE_MESSAGING, 595 {IDS_EXTENSION_PROMPT_WARNING_NATIVE_MESSAGING,
639 {APIPermission::kNativeMessaging}, 596 {APIPermission::kNativeMessaging},
640 {}}, 597 {}},
641 {IDS_EXTENSION_PROMPT_WARNING_PRIVACY, {APIPermission::kPrivacy}, {}}, 598 {IDS_EXTENSION_PROMPT_WARNING_PRIVACY, {APIPermission::kPrivacy}, {}},
642 {IDS_EXTENSION_PROMPT_WARNING_SIGNED_IN_DEVICES, 599 {IDS_EXTENSION_PROMPT_WARNING_SIGNED_IN_DEVICES,
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
680 {IDS_EXTENSION_PROMPT_WARNING_USERS_PRIVATE, 637 {IDS_EXTENSION_PROMPT_WARNING_USERS_PRIVATE,
681 {APIPermission::kUsersPrivate}, 638 {APIPermission::kUsersPrivate},
682 {}}, 639 {}},
683 }; 640 };
684 641
685 return std::vector<ChromePermissionMessageRule>( 642 return std::vector<ChromePermissionMessageRule>(
686 rules_arr, rules_arr + arraysize(rules_arr)); 643 rules_arr, rules_arr + arraysize(rules_arr));
687 } 644 }
688 645
689 } // namespace extensions 646 } // namespace extensions
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698