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

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

Issue 1321333003: Reorder permission message rules, so that related rules appear together (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@optional_rules
Patch Set: fix test 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
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 366 matching lines...) Expand 10 before | Expand all | Expand 10 after
377 // permission_message_combinations_unittest.cc (or elsewhere) to ensure your 377 // permission_message_combinations_unittest.cc (or elsewhere) to ensure your
378 // messages are being generated/coalesced correctly. 378 // messages are being generated/coalesced correctly.
379 // 379 //
380 // Rules are not transitive: This means that if the kTab permission 'absorbs' 380 // Rules are not transitive: This means that if the kTab permission 'absorbs'
381 // (suppresses) the messages for kTopSites and kFavicon, and the kHistory 381 // (suppresses) the messages for kTopSites and kFavicon, and the kHistory
382 // permission suppresses kTab, be careful to also add kTopSites and kFavicon 382 // permission suppresses kTab, be careful to also add kTopSites and kFavicon
383 // to the kHistory absorb list. Ideally, the rules system should be simple 383 // 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 384 // 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 385 // 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. 386 // yet powerful enough to encapsulate all the messages we want to display.
387 //
388 // TODO(sashab): Once existing message sites are deprecated, reorder this list
389 // to better describe the rules generated, rather than the callsites they are
390 // migrated from.
391 ChromePermissionMessageRule rules_arr[] = { 387 ChromePermissionMessageRule rules_arr[] = {
392 // Full url access permission messages. 388 // Full access permission messages.
393 {IDS_EXTENSION_PROMPT_WARNING_DEBUGGER, {APIPermission::kDebugger}, {}}, 389 {IDS_EXTENSION_PROMPT_WARNING_DEBUGGER, {APIPermission::kDebugger}, {}},
394 {IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS, 390 {IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS,
395 {APIPermission::kPlugin}, 391 {APIPermission::kPlugin},
392 // TODO(treib): Add the other IDs implied by kFullAccess/kHostsAll.
396 {APIPermission::kFullAccess, APIPermission::kHostsAll, 393 {APIPermission::kFullAccess, APIPermission::kHostsAll,
397 APIPermission::kHostsAllReadOnly, APIPermission::kDeclarativeWebRequest, 394 APIPermission::kHostsAllReadOnly, APIPermission::kDeclarativeWebRequest,
398 APIPermission::kTopSites, APIPermission::kTab}}, 395 APIPermission::kTopSites, APIPermission::kTab}},
399 {IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS, 396 {IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS,
400 {APIPermission::kFullAccess}, 397 {APIPermission::kFullAccess},
398 // TODO(treib): Add the other IDs implied by kHostsAll.
401 {APIPermission::kHostsAll, APIPermission::kHostsAllReadOnly, 399 {APIPermission::kHostsAll, APIPermission::kHostsAllReadOnly,
402 APIPermission::kDeclarativeWebRequest, APIPermission::kTopSites, 400 APIPermission::kDeclarativeWebRequest, APIPermission::kTopSites,
403 APIPermission::kTab}}, 401 APIPermission::kTab}},
404 402
405 // Parameterized permission messages: 403 // Hosts permission messages.
406 // Messages generated by the sockets permission. 404 // Full host access already allows DeclarativeWebRequest, reading the list
407 {new SpaceSeparatedListFormatter( 405 // of most frequently visited sites, and tab access.
408 IDS_EXTENSION_PROMPT_WARNING_SOCKET_HOSTS_IN_DOMAIN, 406 // The warning message for declarativeWebRequest permissions speaks about
409 IDS_EXTENSION_PROMPT_WARNING_SOCKET_HOSTS_IN_DOMAINS), 407 // blocking parts of pages, which is a subset of what the "<all_urls>"
410 {APIPermission::kSocketDomainHosts}, 408 // access allows. Therefore we display only the "<all_urls>" warning
411 {}}, 409 // message if both permissions are required.
412 {new SpaceSeparatedListFormatter( 410 {IDS_EXTENSION_PROMPT_WARNING_ALL_HOSTS,
413 IDS_EXTENSION_PROMPT_WARNING_SOCKET_SPECIFIC_HOST, 411 {APIPermission::kHostsAll},
414 IDS_EXTENSION_PROMPT_WARNING_SOCKET_SPECIFIC_HOSTS), 412 // TODO(treib): Add kHostReadWrite and kHostReadOnly.
415 {APIPermission::kSocketSpecificHosts}, 413 {APIPermission::kDeclarativeWebRequest, APIPermission::kFavicon,
416 {}}, 414 APIPermission::kHostsAllReadOnly, APIPermission::kProcesses,
415 APIPermission::kTab, APIPermission::kTopSites,
416 APIPermission::kWebNavigation}},
417 {IDS_EXTENSION_PROMPT_WARNING_ALL_HOSTS_READ_ONLY,
418 {APIPermission::kHostsAllReadOnly},
419 // TODO(treib): Add kHostReadOnly.
420 {APIPermission::kFavicon, APIPermission::kProcesses, APIPermission::kTab,
421 APIPermission::kTopSites, APIPermission::kWebNavigation}},
417 422
418 // Messages generated by host permissions.
419 {new CommaSeparatedListFormatter( 423 {new CommaSeparatedListFormatter(
420 IDS_EXTENSION_PROMPT_WARNING_1_HOST_READ_ONLY, 424 IDS_EXTENSION_PROMPT_WARNING_1_HOST_READ_ONLY,
421 IDS_EXTENSION_PROMPT_WARNING_2_HOSTS_READ_ONLY, 425 IDS_EXTENSION_PROMPT_WARNING_2_HOSTS_READ_ONLY,
422 IDS_EXTENSION_PROMPT_WARNING_3_HOSTS_READ_ONLY, 426 IDS_EXTENSION_PROMPT_WARNING_3_HOSTS_READ_ONLY,
423 IDS_EXTENSION_PROMPT_WARNING_HOSTS_LIST_READ_ONLY), 427 IDS_EXTENSION_PROMPT_WARNING_HOSTS_LIST_READ_ONLY),
424 {APIPermission::kHostReadOnly}, 428 {APIPermission::kHostReadOnly},
425 {}}, 429 {}},
426 {new CommaSeparatedListFormatter(IDS_EXTENSION_PROMPT_WARNING_1_HOST, 430 {new CommaSeparatedListFormatter(IDS_EXTENSION_PROMPT_WARNING_1_HOST,
427 IDS_EXTENSION_PROMPT_WARNING_2_HOSTS, 431 IDS_EXTENSION_PROMPT_WARNING_2_HOSTS,
428 IDS_EXTENSION_PROMPT_WARNING_3_HOSTS, 432 IDS_EXTENSION_PROMPT_WARNING_3_HOSTS,
429 IDS_EXTENSION_PROMPT_WARNING_HOSTS_LIST), 433 IDS_EXTENSION_PROMPT_WARNING_HOSTS_LIST),
430 {APIPermission::kHostReadWrite}, 434 {APIPermission::kHostReadWrite},
431 {}}, 435 {}},
432 436
437 // History-related permission messages.
438 // History already allows reading favicons, tab access and accessing the
439 // list of most frequently visited sites.
440 {IDS_EXTENSION_PROMPT_WARNING_HISTORY_WRITE_AND_SESSIONS,
441 {APIPermission::kSessions, APIPermission::kHistory},
442 {APIPermission::kFavicon, APIPermission::kProcesses, APIPermission::kTab,
443 APIPermission::kTopSites, APIPermission::kWebNavigation}},
444 {IDS_EXTENSION_PROMPT_WARNING_HISTORY_READ_AND_SESSIONS,
445 {APIPermission::kSessions, APIPermission::kTab},
446 {APIPermission::kFavicon, APIPermission::kProcesses,
447 APIPermission::kTopSites, APIPermission::kWebNavigation}},
448 {IDS_EXTENSION_PROMPT_WARNING_HISTORY_WRITE,
449 {APIPermission::kHistory},
450 {APIPermission::kFavicon, APIPermission::kProcesses, APIPermission::kTab,
451 APIPermission::kTopSites, APIPermission::kWebNavigation}},
452 {IDS_EXTENSION_PROMPT_WARNING_HISTORY_READ,
453 {APIPermission::kTab},
454 {APIPermission::kFavicon, APIPermission::kProcesses,
455 APIPermission::kTopSites, APIPermission::kWebNavigation}},
456 // TODO(treib): Should we have _AND_SESSIONS versions of these 2 as well?
Devlin 2015/09/01 15:55:24 I looked a bit more into it, and I think I underst
Marc Treib 2015/09/01 15:59:50 Ah, good to know! Thanks for investigating! I alre
457 {IDS_EXTENSION_PROMPT_WARNING_HISTORY_READ,
458 {APIPermission::kProcesses},
459 {}},
460 {IDS_EXTENSION_PROMPT_WARNING_HISTORY_READ,
461 {APIPermission::kWebNavigation},
462 {}},
463 {IDS_EXTENSION_PROMPT_WARNING_FAVICON, {APIPermission::kFavicon}, {}},
464 {IDS_EXTENSION_PROMPT_WARNING_TOPSITES, {APIPermission::kTopSites}, {}},
465 {IDS_EXTENSION_PROMPT_WARNING_DECLARATIVE_WEB_REQUEST,
466 {APIPermission::kDeclarativeWebRequest},
467 {}},
468
469 // Messages generated by the sockets permission.
470 {IDS_EXTENSION_PROMPT_WARNING_SOCKET_ANY_HOST,
471 {APIPermission::kSocketAnyHost},
472 // TODO(treib): Add kSocketDomainHosts and kSocketSpecificHosts.
473 {}},
474 {new SpaceSeparatedListFormatter(
475 IDS_EXTENSION_PROMPT_WARNING_SOCKET_HOSTS_IN_DOMAIN,
476 IDS_EXTENSION_PROMPT_WARNING_SOCKET_HOSTS_IN_DOMAINS),
477 {APIPermission::kSocketDomainHosts},
478 {}},
479 {new SpaceSeparatedListFormatter(
480 IDS_EXTENSION_PROMPT_WARNING_SOCKET_SPECIFIC_HOST,
481 IDS_EXTENSION_PROMPT_WARNING_SOCKET_SPECIFIC_HOSTS),
482 {APIPermission::kSocketSpecificHosts},
483 {}},
484
485 // Devices-related messages.
433 // USB Device Permission rules. Think of these three rules as a single one 486 // USB Device Permission rules. Think of these three rules as a single one
434 // that applies when any of the three kUsb* IDs is there, and pulls them 487 // that applies when any of the three kUsb* IDs is there, and pulls them
435 // all into a single formatter. 488 // all into a single formatter.
436 {new USBDevicesFormatter, 489 {new USBDevicesFormatter,
437 {APIPermission::kUsbDevice}, 490 {APIPermission::kUsbDevice},
438 {APIPermission::kUsbDeviceUnknownProduct, 491 {APIPermission::kUsbDeviceUnknownProduct,
439 APIPermission::kUsbDeviceUnknownVendor}}, 492 APIPermission::kUsbDeviceUnknownVendor}},
440 {new USBDevicesFormatter, 493 {new USBDevicesFormatter,
441 {APIPermission::kUsbDeviceUnknownProduct}, 494 {APIPermission::kUsbDeviceUnknownProduct},
442 {APIPermission::kUsbDeviceUnknownVendor}}, 495 {APIPermission::kUsbDeviceUnknownVendor}},
443 {new USBDevicesFormatter, {APIPermission::kUsbDeviceUnknownVendor}, {}}, 496 {new USBDevicesFormatter, {APIPermission::kUsbDeviceUnknownVendor}, {}},
444
445 // Coalesced message rules taken from
446 // ChromePermissionMessageProvider::GetWarningMessages():
447
448 // Access to users' devices should provide a single warning message 497 // Access to users' devices should provide a single warning message
449 // specifying the transport method used; serial and/or Bluetooth. 498 // specifying the transport method used; serial and/or Bluetooth.
450 {IDS_EXTENSION_PROMPT_WARNING_BLUETOOTH_SERIAL, 499 {IDS_EXTENSION_PROMPT_WARNING_BLUETOOTH_SERIAL,
451 {APIPermission::kBluetooth, APIPermission::kSerial}, 500 {APIPermission::kBluetooth, APIPermission::kSerial},
452 {APIPermission::kBluetoothDevices}}, 501 {APIPermission::kBluetoothDevices}},
502 {IDS_EXTENSION_PROMPT_WARNING_BLUETOOTH,
503 {APIPermission::kBluetooth},
504 {APIPermission::kBluetoothDevices}},
505 {IDS_EXTENSION_PROMPT_WARNING_BLUETOOTH_DEVICES,
506 {APIPermission::kBluetoothDevices},
507 {}},
508 {IDS_EXTENSION_PROMPT_WARNING_BLUETOOTH_PRIVATE,
509 {APIPermission::kBluetoothPrivate},
510 {}},
511 {IDS_EXTENSION_PROMPT_WARNING_SERIAL, {APIPermission::kSerial}, {}},
512 // Universal 2nd Factor devices.
513 {IDS_EXTENSION_PROMPT_WARNING_U2F_DEVICES,
514 {APIPermission::kU2fDevices},
515 {}},
453 516
517 // Accessibility features.
454 {IDS_EXTENSION_PROMPT_WARNING_ACCESSIBILITY_FEATURES_READ_MODIFY, 518 {IDS_EXTENSION_PROMPT_WARNING_ACCESSIBILITY_FEATURES_READ_MODIFY,
455 {APIPermission::kAccessibilityFeaturesModify, 519 {APIPermission::kAccessibilityFeaturesModify,
456 APIPermission::kAccessibilityFeaturesRead}, 520 APIPermission::kAccessibilityFeaturesRead},
457 {}}, 521 {}},
522 {IDS_EXTENSION_PROMPT_WARNING_ACCESSIBILITY_FEATURES_MODIFY,
523 {APIPermission::kAccessibilityFeaturesModify},
524 {}},
525 {IDS_EXTENSION_PROMPT_WARNING_ACCESSIBILITY_FEATURES_READ,
526 {APIPermission::kAccessibilityFeaturesRead},
527 {}},
458 528
459 // TODO(sashab): Add the missing combinations of media galleries 529 // TODO(sashab): Add the missing combinations of media galleries
460 // permissions so a valid permission is generated for all combinations. 530 // permissions so a valid permission is generated for all combinations.
461 {IDS_EXTENSION_PROMPT_WARNING_MEDIA_GALLERIES_READ_WRITE_DELETE, 531 {IDS_EXTENSION_PROMPT_WARNING_MEDIA_GALLERIES_READ_WRITE_DELETE,
462 {APIPermission::kMediaGalleriesAllGalleriesCopyTo, 532 {APIPermission::kMediaGalleriesAllGalleriesCopyTo,
463 APIPermission::kMediaGalleriesAllGalleriesDelete, 533 APIPermission::kMediaGalleriesAllGalleriesDelete,
464 APIPermission::kMediaGalleriesAllGalleriesRead}, 534 APIPermission::kMediaGalleriesAllGalleriesRead},
465 {}}, 535 {}},
466 {IDS_EXTENSION_PROMPT_WARNING_MEDIA_GALLERIES_READ_WRITE, 536 {IDS_EXTENSION_PROMPT_WARNING_MEDIA_GALLERIES_READ_WRITE,
467 {APIPermission::kMediaGalleriesAllGalleriesCopyTo, 537 {APIPermission::kMediaGalleriesAllGalleriesCopyTo,
468 APIPermission::kMediaGalleriesAllGalleriesRead}, 538 APIPermission::kMediaGalleriesAllGalleriesRead},
469 {}}, 539 {}},
470 {IDS_EXTENSION_PROMPT_WARNING_MEDIA_GALLERIES_READ_DELETE, 540 {IDS_EXTENSION_PROMPT_WARNING_MEDIA_GALLERIES_READ_DELETE,
471 {APIPermission::kMediaGalleriesAllGalleriesDelete, 541 {APIPermission::kMediaGalleriesAllGalleriesDelete,
472 APIPermission::kMediaGalleriesAllGalleriesRead}, 542 APIPermission::kMediaGalleriesAllGalleriesRead},
473 {}}, 543 {}},
474 {IDS_EXTENSION_PROMPT_WARNING_MEDIA_GALLERIES_READ, 544 {IDS_EXTENSION_PROMPT_WARNING_MEDIA_GALLERIES_READ,
475 {APIPermission::kMediaGalleriesAllGalleriesRead}, 545 {APIPermission::kMediaGalleriesAllGalleriesRead},
476 {}}, 546 {}},
477 547
478 {IDS_EXTENSION_PROMPT_WARNING_HISTORY_WRITE_AND_SESSIONS, 548 // The permission string for "fileSystem" is only shown when
479 {APIPermission::kSessions, APIPermission::kHistory}, 549 // "write" or "directory" is present. Read-only access is only
480 {APIPermission::kFavicon, APIPermission::kProcesses, APIPermission::kTab, 550 // granted after the user has been shown a file or directory
481 APIPermission::kTopSites, APIPermission::kWebNavigation}}, 551 // chooser dialog and selected a file or directory. Selecting
482 {IDS_EXTENSION_PROMPT_WARNING_HISTORY_READ_AND_SESSIONS, 552 // the file or directory is considered consent to read it.
483 {APIPermission::kSessions, APIPermission::kTab}, 553 {IDS_EXTENSION_PROMPT_WARNING_FILE_SYSTEM_WRITE_DIRECTORY,
484 {APIPermission::kFavicon, APIPermission::kProcesses, 554 {APIPermission::kFileSystemWrite, APIPermission::kFileSystemDirectory},
485 APIPermission::kTopSites, APIPermission::kWebNavigation}}, 555 {}},
556 {IDS_EXTENSION_PROMPT_WARNING_FILE_SYSTEM_DIRECTORY,
557 {APIPermission::kFileSystemDirectory},
558 {}},
486 559
487 // Suppression list taken from 560 // Video and audio capture.
488 // ChromePermissionMessageProvider::GetPermissionMessages(): 561 {IDS_EXTENSION_PROMPT_WARNING_AUDIO_AND_VIDEO_CAPTURE,
489 // Some warnings are more generic and/or powerful and supercede other 562 {APIPermission::kAudioCapture, APIPermission::kVideoCapture},
490 // warnings. In that case, the first message suppresses the second one. 563 {}},
491 {IDS_EXTENSION_PROMPT_WARNING_BLUETOOTH, 564 {IDS_EXTENSION_PROMPT_WARNING_AUDIO_CAPTURE,
492 {APIPermission::kBluetooth}, 565 {APIPermission::kAudioCapture},
493 {APIPermission::kBluetoothDevices}}, 566 {}},
567 {IDS_EXTENSION_PROMPT_WARNING_VIDEO_CAPTURE,
568 {APIPermission::kVideoCapture},
569 {}},
570
571 // Network-related permissions.
572 {IDS_EXTENSION_PROMPT_WARNING_NETWORKING_PRIVATE,
573 {APIPermission::kNetworkingPrivate},
574 {}},
575 {IDS_EXTENSION_PROMPT_WARNING_NETWORKING_CONFIG,
576 {APIPermission::kNetworkingConfig},
577 {}},
578 {IDS_EXTENSION_PROMPT_WARNING_NETWORK_STATE,
579 {APIPermission::kNetworkState},
580 {}},
581 {IDS_EXTENSION_PROMPT_WARNING_VPN, {APIPermission::kVpnProvider}, {}},
582 {IDS_EXTENSION_PROMPT_WARNING_WEB_CONNECTABLE,
583 {APIPermission::kWebConnectable},
584 {}},
585 {new SingleParameterFormatter(
586 IDS_EXTENSION_PROMPT_WARNING_HOME_PAGE_SETTING_OVERRIDE),
587 {APIPermission::kHomepage},
588 {}},
589 {new SingleParameterFormatter(
590 IDS_EXTENSION_PROMPT_WARNING_SEARCH_SETTINGS_OVERRIDE),
591 {APIPermission::kSearchProvider},
592 {}},
593 {new SingleParameterFormatter(
594 IDS_EXTENSION_PROMPT_WARNING_START_PAGE_SETTING_OVERRIDE),
595 {APIPermission::kStartupPages},
596 {}},
597
494 {IDS_EXTENSION_PROMPT_WARNING_BOOKMARKS, 598 {IDS_EXTENSION_PROMPT_WARNING_BOOKMARKS,
495 {APIPermission::kBookmark}, 599 {APIPermission::kBookmark},
496 {APIPermission::kOverrideBookmarksUI}}, 600 {APIPermission::kOverrideBookmarksUI}},
497 // History already allows reading favicons, tab access and accessing the
498 // list of most frequently visited sites.
499 {IDS_EXTENSION_PROMPT_WARNING_HISTORY_WRITE,
500 {APIPermission::kHistory},
501 {APIPermission::kFavicon, APIPermission::kProcesses, APIPermission::kTab,
502 APIPermission::kTopSites, APIPermission::kWebNavigation}},
503 {IDS_EXTENSION_PROMPT_WARNING_FILE_SYSTEM_WRITE_DIRECTORY,
504 {APIPermission::kFileSystemWrite, APIPermission::kFileSystemDirectory},
505 {}},
506 // Full access already allows DeclarativeWebRequest, reading the list of
507 // most frequently visited sites, and tab access.
508 // The warning message for declarativeWebRequest
509 // permissions speaks about blocking parts of pages, which is a
510 // subset of what the "<all_urls>" access allows. Therefore we
511 // display only the "<all_urls>" warning message if both permissions
512 // are required.
513 {IDS_EXTENSION_PROMPT_WARNING_ALL_HOSTS,
514 {APIPermission::kHostsAll},
515 {APIPermission::kDeclarativeWebRequest, APIPermission::kFavicon,
516 APIPermission::kHostsAllReadOnly, APIPermission::kProcesses,
517 APIPermission::kTab, APIPermission::kTopSites,
518 APIPermission::kWebNavigation}},
519 // AutomationManifestPermission:
520 {IDS_EXTENSION_PROMPT_WARNING_ALL_HOSTS_READ_ONLY,
521 {APIPermission::kHostsAllReadOnly},
522 {APIPermission::kFavicon, APIPermission::kProcesses, APIPermission::kTab,
523 APIPermission::kTopSites, APIPermission::kWebNavigation}},
524 // Tabs already allows reading favicons and reading the list of most
525 // frequently visited sites.
526 {IDS_EXTENSION_PROMPT_WARNING_HISTORY_READ,
527 {APIPermission::kTab},
528 {APIPermission::kFavicon, APIPermission::kProcesses,
529 APIPermission::kTopSites, APIPermission::kWebNavigation}},
530
531 // Individual message rules taken from
532 // ChromeAPIPermissions::GetAllPermissions():
533 // Permission messages for all extension types:
534
535 {IDS_EXTENSION_PROMPT_WARNING_CLIPBOARD, 601 {IDS_EXTENSION_PROMPT_WARNING_CLIPBOARD,
536 {APIPermission::kClipboardRead}, 602 {APIPermission::kClipboardRead},
537 {}}, 603 {}},
538 {IDS_EXTENSION_PROMPT_WARNING_DESKTOP_CAPTURE, 604 {IDS_EXTENSION_PROMPT_WARNING_DESKTOP_CAPTURE,
539 {APIPermission::kDesktopCapture}, 605 {APIPermission::kDesktopCapture},
540 {}}, 606 {}},
541 {IDS_EXTENSION_PROMPT_WARNING_DOWNLOADS, {APIPermission::kDownloads}, {}}, 607 {IDS_EXTENSION_PROMPT_WARNING_DOWNLOADS, {APIPermission::kDownloads}, {}},
542 {IDS_EXTENSION_PROMPT_WARNING_DOWNLOADS_OPEN, 608 {IDS_EXTENSION_PROMPT_WARNING_DOWNLOADS_OPEN,
543 {APIPermission::kDownloadsOpen}, 609 {APIPermission::kDownloadsOpen},
544 {}}, 610 {}},
545 {IDS_EXTENSION_PROMPT_WARNING_IDENTITY_EMAIL, 611 {IDS_EXTENSION_PROMPT_WARNING_IDENTITY_EMAIL,
546 {APIPermission::kIdentityEmail}, 612 {APIPermission::kIdentityEmail},
547 {}}, 613 {}},
548 {IDS_EXTENSION_PROMPT_WARNING_GEOLOCATION, 614 {IDS_EXTENSION_PROMPT_WARNING_GEOLOCATION,
549 {APIPermission::kGeolocation}, 615 {APIPermission::kGeolocation},
550 {}}, 616 {}},
617 {IDS_EXTENSION_PROMPT_WARNING_GEOLOCATION,
618 {APIPermission::kLocation},
619 {}},
551 620
552 // Permission messages for extensions:
553 {IDS_EXTENSION_PROMPT_WARNING_ACCESSIBILITY_FEATURES_MODIFY,
554 {APIPermission::kAccessibilityFeaturesModify},
555 {}},
556 {IDS_EXTENSION_PROMPT_WARNING_ACCESSIBILITY_FEATURES_READ,
557 {APIPermission::kAccessibilityFeaturesRead},
558 {}},
559 {IDS_EXTENSION_PROMPT_WARNING_CONTENT_SETTINGS, 621 {IDS_EXTENSION_PROMPT_WARNING_CONTENT_SETTINGS,
560 {APIPermission::kContentSettings}, 622 {APIPermission::kContentSettings},
561 {}}, 623 {}},
562 {IDS_EXTENSION_PROMPT_WARNING_COPRESENCE, 624 {IDS_EXTENSION_PROMPT_WARNING_COPRESENCE,
563 {APIPermission::kCopresence}, 625 {APIPermission::kCopresence},
564 {}}, 626 {}},
565 {IDS_EXTENSION_PROMPT_WARNING_DOCUMENT_SCAN, 627 {IDS_EXTENSION_PROMPT_WARNING_DOCUMENT_SCAN,
566 {APIPermission::kDocumentScan}, 628 {APIPermission::kDocumentScan},
567 {}}, 629 {}},
630 {IDS_EXTENSION_PROMPT_WARNING_INTERCEPT_ALL_KEYS,
631 {APIPermission::kInterceptAllKeys},
632 {}}, // TODO(treib): This should probably suppress kInput.
568 {IDS_EXTENSION_PROMPT_WARNING_INPUT, {APIPermission::kInput}, {}}, 633 {IDS_EXTENSION_PROMPT_WARNING_INPUT, {APIPermission::kInput}, {}},
569 {IDS_EXTENSION_PROMPT_WARNING_GEOLOCATION,
570 {APIPermission::kLocation},
571 {}},
572 {IDS_EXTENSION_PROMPT_WARNING_MANAGEMENT, 634 {IDS_EXTENSION_PROMPT_WARNING_MANAGEMENT,
573 {APIPermission::kManagement}, 635 {APIPermission::kManagement},
574 {}}, 636 {}},
575 {IDS_EXTENSION_PROMPT_WARNING_MDNS, {APIPermission::kMDns}, {}}, 637 {IDS_EXTENSION_PROMPT_WARNING_MDNS, {APIPermission::kMDns}, {}},
576 {IDS_EXTENSION_PROMPT_WARNING_NATIVE_MESSAGING, 638 {IDS_EXTENSION_PROMPT_WARNING_NATIVE_MESSAGING,
577 {APIPermission::kNativeMessaging}, 639 {APIPermission::kNativeMessaging},
578 {}}, 640 {}},
579 {IDS_EXTENSION_PROMPT_WARNING_PRIVACY, {APIPermission::kPrivacy}, {}}, 641 {IDS_EXTENSION_PROMPT_WARNING_PRIVACY, {APIPermission::kPrivacy}, {}},
580 {IDS_EXTENSION_PROMPT_WARNING_HISTORY_READ,
581 {APIPermission::kProcesses},
582 {}},
583 {IDS_EXTENSION_PROMPT_WARNING_SIGNED_IN_DEVICES, 642 {IDS_EXTENSION_PROMPT_WARNING_SIGNED_IN_DEVICES,
584 {APIPermission::kSignedInDevices}, 643 {APIPermission::kSignedInDevices},
585 {}}, 644 {}},
586 {IDS_EXTENSION_PROMPT_WARNING_SYNCFILESYSTEM, 645 {IDS_EXTENSION_PROMPT_WARNING_SYNCFILESYSTEM,
587 {APIPermission::kSyncFileSystem}, 646 {APIPermission::kSyncFileSystem},
588 {}}, 647 {}},
589 {IDS_EXTENSION_PROMPT_WARNING_TOPSITES, {APIPermission::kTopSites}, {}},
590 {IDS_EXTENSION_PROMPT_WARNING_TTS_ENGINE, 648 {IDS_EXTENSION_PROMPT_WARNING_TTS_ENGINE,
591 {APIPermission::kTtsEngine}, 649 {APIPermission::kTtsEngine},
592 {}}, 650 {}},
593 {IDS_EXTENSION_PROMPT_WARNING_WALLPAPER, {APIPermission::kWallpaper}, {}}, 651 {IDS_EXTENSION_PROMPT_WARNING_WALLPAPER, {APIPermission::kWallpaper}, {}},
594 {IDS_EXTENSION_PROMPT_WARNING_HISTORY_READ,
595 {APIPermission::kWebNavigation},
596 {}},
597 {IDS_EXTENSION_PROMPT_WARNING_PLATFORMKEYS, 652 {IDS_EXTENSION_PROMPT_WARNING_PLATFORMKEYS,
598 {APIPermission::kPlatformKeys}, 653 {APIPermission::kPlatformKeys},
599 {}}, 654 {}},
600 655
601 // Permission messages for private permissions:
602 {IDS_EXTENSION_PROMPT_WARNING_SCREENLOCK_PRIVATE, 656 {IDS_EXTENSION_PROMPT_WARNING_SCREENLOCK_PRIVATE,
603 {APIPermission::kScreenlockPrivate}, 657 {APIPermission::kScreenlockPrivate},
604 {}}, 658 {}},
605 {IDS_EXTENSION_PROMPT_WARNING_ACTIVITY_LOG_PRIVATE, 659 {IDS_EXTENSION_PROMPT_WARNING_ACTIVITY_LOG_PRIVATE,
606 {APIPermission::kActivityLogPrivate}, 660 {APIPermission::kActivityLogPrivate},
607 {}}, 661 {}},
608 {IDS_EXTENSION_PROMPT_WARNING_EXPERIENCE_SAMPLING_PRIVATE, 662 {IDS_EXTENSION_PROMPT_WARNING_EXPERIENCE_SAMPLING_PRIVATE,
609 {APIPermission::kExperienceSamplingPrivate}, 663 {APIPermission::kExperienceSamplingPrivate},
610 {}}, 664 {}},
611 {IDS_EXTENSION_PROMPT_WARNING_NETWORKING_PRIVATE,
612 {APIPermission::kNetworkingPrivate},
613 {}},
614 {IDS_EXTENSION_PROMPT_WARNING_MUSIC_MANAGER_PRIVATE, 665 {IDS_EXTENSION_PROMPT_WARNING_MUSIC_MANAGER_PRIVATE,
615 {APIPermission::kMusicManagerPrivate}, 666 {APIPermission::kMusicManagerPrivate},
616 {}}, 667 {}},
617 {IDS_EXTENSION_PROMPT_WARNING_SEARCH_ENGINES_PRIVATE, 668 {IDS_EXTENSION_PROMPT_WARNING_SEARCH_ENGINES_PRIVATE,
618 {APIPermission::kSearchEnginesPrivate}, 669 {APIPermission::kSearchEnginesPrivate},
619 {}}, 670 {}},
620 {IDS_EXTENSION_PROMPT_WARNING_SETTINGS_PRIVATE, 671 {IDS_EXTENSION_PROMPT_WARNING_SETTINGS_PRIVATE,
621 {APIPermission::kSettingsPrivate}, 672 {APIPermission::kSettingsPrivate},
622 {}}, 673 {}},
623 {IDS_EXTENSION_PROMPT_WARNING_AUTOFILL_PRIVATE, 674 {IDS_EXTENSION_PROMPT_WARNING_AUTOFILL_PRIVATE,
624 {APIPermission::kAutofillPrivate}, 675 {APIPermission::kAutofillPrivate},
625 {}}, 676 {}},
626 {IDS_EXTENSION_PROMPT_WARNING_PASSWORDS_PRIVATE, 677 {IDS_EXTENSION_PROMPT_WARNING_PASSWORDS_PRIVATE,
627 {APIPermission::kPasswordsPrivate}, 678 {APIPermission::kPasswordsPrivate},
628 {}}, 679 {}},
629 {IDS_EXTENSION_PROMPT_WARNING_USERS_PRIVATE, 680 {IDS_EXTENSION_PROMPT_WARNING_USERS_PRIVATE,
630 {APIPermission::kUsersPrivate}, 681 {APIPermission::kUsersPrivate},
631 {}}, 682 {}},
632
633 // Platform-app permission messages.
634
635 // The permission string for "fileSystem" is only shown when
636 // "write" or "directory" is present. Read-only access is only
637 // granted after the user has been shown a file or directory
638 // chooser dialog and selected a file or directory. Selecting
639 // the file or directory is considered consent to read it.
640 {IDS_EXTENSION_PROMPT_WARNING_FILE_SYSTEM_DIRECTORY,
641 {APIPermission::kFileSystemDirectory},
642 {}},
643
644 // Because warning messages for the "mediaGalleries" permission
645 // vary based on the permissions parameters, no message ID or
646 // message text is specified here. The message ID and text used
647 // will be determined at run-time in the
648 // |MediaGalleriesPermission| class.
649
650 {IDS_EXTENSION_PROMPT_WARNING_INTERCEPT_ALL_KEYS,
651 {APIPermission::kInterceptAllKeys},
652 {}},
653
654 {IDS_EXTENSION_PROMPT_WARNING_AUDIO_AND_VIDEO_CAPTURE,
655 {APIPermission::kAudioCapture, APIPermission::kVideoCapture},
656 {}},
657
658 // Individual message rules taken from
659 // ExtensionsAPIPermissions::GetAllPermissions():
660 {IDS_EXTENSION_PROMPT_WARNING_AUDIO_CAPTURE,
661 {APIPermission::kAudioCapture},
662 {}},
663 {IDS_EXTENSION_PROMPT_WARNING_BLUETOOTH_PRIVATE,
664 {APIPermission::kBluetoothPrivate},
665 {}},
666 {IDS_EXTENSION_PROMPT_WARNING_DECLARATIVE_WEB_REQUEST,
667 {APIPermission::kDeclarativeWebRequest},
668 {}},
669 {IDS_EXTENSION_PROMPT_WARNING_SERIAL, {APIPermission::kSerial}, {}},
670 {IDS_EXTENSION_PROMPT_WARNING_NETWORKING_CONFIG,
671 {APIPermission::kNetworkingConfig},
672 {}},
673
674 // Because warning messages for the "socket" permission vary based
675 // on the permissions parameters, no message ID or message text is
676 // specified here. The message ID and text used will be
677 // determined at run-time in the |SocketPermission| class.
678 {IDS_EXTENSION_PROMPT_WARNING_U2F_DEVICES,
679 {APIPermission::kU2fDevices},
680 {}},
681 {IDS_EXTENSION_PROMPT_WARNING_VIDEO_CAPTURE,
682 {APIPermission::kVideoCapture},
683 {}},
684 {IDS_EXTENSION_PROMPT_WARNING_VPN, {APIPermission::kVpnProvider}, {}},
685 {IDS_EXTENSION_PROMPT_WARNING_WEB_CONNECTABLE,
686 {APIPermission::kWebConnectable},
687 {}},
688
689 // Rules from ManifestPermissions:
690 // BluetoothManifestPermission:
691 {IDS_EXTENSION_PROMPT_WARNING_BLUETOOTH_DEVICES,
692 {APIPermission::kBluetoothDevices},
693 {}},
694
695 // SocketsManifestPermission:
696 {IDS_EXTENSION_PROMPT_WARNING_SOCKET_ANY_HOST,
697 {APIPermission::kSocketAnyHost},
698 {}},
699 {IDS_EXTENSION_PROMPT_WARNING_NETWORK_STATE,
700 {APIPermission::kNetworkState},
701 {}},
702
703 // API permission rules:
704 // SettingsOverrideAPIPermission:
705 {new SingleParameterFormatter(
706 IDS_EXTENSION_PROMPT_WARNING_HOME_PAGE_SETTING_OVERRIDE),
707 {APIPermission::kHomepage},
708 {}},
709 {new SingleParameterFormatter(
710 IDS_EXTENSION_PROMPT_WARNING_SEARCH_SETTINGS_OVERRIDE),
711 {APIPermission::kSearchProvider},
712 {}},
713 {new SingleParameterFormatter(
714 IDS_EXTENSION_PROMPT_WARNING_START_PAGE_SETTING_OVERRIDE),
715 {APIPermission::kStartupPages},
716 {}},
717
718 // Other rules:
719 // From ChromeExtensionsClient::FilterHostPermissions():
720 {IDS_EXTENSION_PROMPT_WARNING_FAVICON, {APIPermission::kFavicon}, {}},
721 }; 683 };
722 684
723 return std::vector<ChromePermissionMessageRule>( 685 return std::vector<ChromePermissionMessageRule>(
724 rules_arr, rules_arr + arraysize(rules_arr)); 686 rules_arr, rules_arr + arraysize(rules_arr));
725 } 687 }
726 688
727 } // namespace extensions 689 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698