OLD | NEW |
---|---|
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 Loading... | |
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 |
OLD | NEW |