Chromium Code Reviews| 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 |