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 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 |
| OLD | NEW |