| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_H_ | 5 #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_H_ |
| 6 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_H_ | 6 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_H_ |
| 7 | 7 |
| 8 #include <map> | 8 #include <map> |
| 9 #include <set> | 9 #include <set> |
| 10 #include <string> | 10 #include <string> |
| (...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 288 // cannot be disabled, does nothing. | 288 // cannot be disabled, does nothing. |
| 289 virtual void DisableExtension( | 289 virtual void DisableExtension( |
| 290 const std::string& extension_id, | 290 const std::string& extension_id, |
| 291 extensions::Extension::DisableReason disable_reason); | 291 extensions::Extension::DisableReason disable_reason); |
| 292 | 292 |
| 293 // Disable non-default and non-managed extensions with ids not in | 293 // Disable non-default and non-managed extensions with ids not in |
| 294 // |except_ids|. Default extensions are those from the Web Store with | 294 // |except_ids|. Default extensions are those from the Web Store with |
| 295 // |was_installed_by_default| flag. | 295 // |was_installed_by_default| flag. |
| 296 void DisableUserExtensions(const std::vector<std::string>& except_ids); | 296 void DisableUserExtensions(const std::vector<std::string>& except_ids); |
| 297 | 297 |
| 298 // Puts all extensions in a blocked state: Unloading every extension, and |
| 299 // preventing them from ever loading until UnblockAllExtensions is called. |
| 300 // This state is stored in preferences, so persists until Chrome restarts. |
| 301 // |
| 302 // Component, external component and whitelisted policy installed extensions |
| 303 // are exempt from being Blocked (see CanBlockExtension). |
| 304 void BlockAllExtensions(); |
| 305 |
| 306 // All blocked extensions are reverted to their previous state, and are |
| 307 // reloaded. Newly added extensions are no longer automatically blocked. |
| 308 void UnblockAllExtensions(); |
| 309 |
| 298 // Updates the |extension|'s granted permissions lists to include all | 310 // Updates the |extension|'s granted permissions lists to include all |
| 299 // permissions in the |extension|'s manifest and re-enables the | 311 // permissions in the |extension|'s manifest and re-enables the |
| 300 // extension. | 312 // extension. |
| 301 void GrantPermissionsAndEnableExtension( | 313 void GrantPermissionsAndEnableExtension( |
| 302 const extensions::Extension* extension); | 314 const extensions::Extension* extension); |
| 303 | 315 |
| 304 // Updates the |extension|'s granted permissions lists to include all | 316 // Updates the |extension|'s granted permissions lists to include all |
| 305 // permissions in the |extensions|'s manifest. | 317 // permissions in the |extensions|'s manifest. |
| 306 void GrantPermissions(const extensions::Extension* extension); | 318 void GrantPermissions(const extensions::Extension* extension); |
| 307 | 319 |
| (...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 544 void CheckPermissionsIncrease(const extensions::Extension* extension, | 556 void CheckPermissionsIncrease(const extensions::Extension* extension, |
| 545 bool is_extension_installed); | 557 bool is_extension_installed); |
| 546 | 558 |
| 547 // Helper that updates the active extension list used for crash reporting. | 559 // Helper that updates the active extension list used for crash reporting. |
| 548 void UpdateActiveExtensionsInCrashReporter(); | 560 void UpdateActiveExtensionsInCrashReporter(); |
| 549 | 561 |
| 550 // Helper to determine whether we should initially enable an installed | 562 // Helper to determine whether we should initially enable an installed |
| 551 // (or upgraded) extension. | 563 // (or upgraded) extension. |
| 552 bool ShouldEnableOnInstall(const extensions::Extension* extension); | 564 bool ShouldEnableOnInstall(const extensions::Extension* extension); |
| 553 | 565 |
| 566 // Helper method to determine if an extension can be blocked. |
| 567 bool CanBlockExtension(const extensions::Extension* extension) const; |
| 568 |
| 554 // Helper to determine if updating an extensions should proceed immediately, | 569 // Helper to determine if updating an extensions should proceed immediately, |
| 555 // or if we should delay the update until further notice. | 570 // or if we should delay the update until further notice. |
| 556 bool ShouldDelayExtensionUpdate(const std::string& extension_id, | 571 bool ShouldDelayExtensionUpdate(const std::string& extension_id, |
| 557 bool install_immediately) const; | 572 bool install_immediately) const; |
| 558 | 573 |
| 559 // Manages the blacklisted extensions, intended as callback from | 574 // Manages the blacklisted extensions, intended as callback from |
| 560 // Blacklist::GetBlacklistedIDs. | 575 // Blacklist::GetBlacklistedIDs. |
| 561 void ManageBlacklist( | 576 void ManageBlacklist( |
| 562 const extensions::Blacklist::BlacklistStateMap& blacklisted_ids); | 577 const extensions::Blacklist::BlacklistStateMap& blacklisted_ids); |
| 563 | 578 |
| 564 // Add extensions in |blocked| to blacklisted_extensions, remove extensions | 579 // Add extensions in |blacklisted| to blacklisted_extensions, remove |
| 565 // that are neither in |blocked|, nor in |unchanged|. | 580 // extensions that are neither in |blacklisted|, nor in |unchanged|. |
| 566 void UpdateBlockedExtensions(const extensions::ExtensionIdSet& blocked, | 581 void UpdateBlacklistedExtensions( |
| 567 const extensions::ExtensionIdSet& unchanged); | 582 const extensions::ExtensionIdSet& to_blacklist, |
| 583 const extensions::ExtensionIdSet& unchanged); |
| 568 | 584 |
| 569 void UpdateGreylistedExtensions( | 585 void UpdateGreylistedExtensions( |
| 570 const extensions::ExtensionIdSet& greylist, | 586 const extensions::ExtensionIdSet& greylist, |
| 571 const extensions::ExtensionIdSet& unchanged, | 587 const extensions::ExtensionIdSet& unchanged, |
| 572 const extensions::Blacklist::BlacklistStateMap& state_map); | 588 const extensions::Blacklist::BlacklistStateMap& state_map); |
| 573 | 589 |
| 574 // Used only by test code. | 590 // Used only by test code. |
| 575 void UnloadAllExtensionsInternal(); | 591 void UnloadAllExtensionsInternal(); |
| 576 | 592 |
| 577 // Disable apps & extensions now to stop them from running after a profile | 593 // Disable apps & extensions now to stop them from running after a profile |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 682 // allow background processing of garbage collection of on-disk state without | 698 // allow background processing of garbage collection of on-disk state without |
| 683 // needing to worry about race conditions caused by extension installation and | 699 // needing to worry about race conditions caused by extension installation and |
| 684 // reinstallation. | 700 // reinstallation. |
| 685 bool installs_delayed_for_gc_; | 701 bool installs_delayed_for_gc_; |
| 686 | 702 |
| 687 // Set to true if this is the first time this ExtensionService has run. | 703 // Set to true if this is the first time this ExtensionService has run. |
| 688 // Used for specially handling external extensions that are installed the | 704 // Used for specially handling external extensions that are installed the |
| 689 // first time. | 705 // first time. |
| 690 bool is_first_run_; | 706 bool is_first_run_; |
| 691 | 707 |
| 708 // Set to true if extensions are all to be blocked. |
| 709 bool block_extensions_; |
| 710 |
| 692 // Store the ids of reloading extensions. We use this to re-enable extensions | 711 // Store the ids of reloading extensions. We use this to re-enable extensions |
| 693 // which were disabled for a reload. | 712 // which were disabled for a reload. |
| 694 std::set<std::string> reloading_extensions_; | 713 std::set<std::string> reloading_extensions_; |
| 695 | 714 |
| 696 // A set of the extension ids currently being terminated. We use this to | 715 // A set of the extension ids currently being terminated. We use this to |
| 697 // avoid trying to unload the same extension twice. | 716 // avoid trying to unload the same extension twice. |
| 698 std::set<std::string> extensions_being_terminated_; | 717 std::set<std::string> extensions_being_terminated_; |
| 699 | 718 |
| 700 // The controller for the UI that alerts the user about any blacklisted | 719 // The controller for the UI that alerts the user about any blacklisted |
| 701 // extensions. | 720 // extensions. |
| (...skipping 26 matching lines...) Expand all Loading... |
| 728 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, | 747 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, |
| 729 WillNotLoadBlacklistedExtensionsFromDirectory); | 748 WillNotLoadBlacklistedExtensionsFromDirectory); |
| 730 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, ReloadBlacklistedExtension); | 749 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, ReloadBlacklistedExtension); |
| 731 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, BlacklistedInPrefsFromStartup); | 750 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, BlacklistedInPrefsFromStartup); |
| 732 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, | 751 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, |
| 733 GreylistedExtensionDisabled); | 752 GreylistedExtensionDisabled); |
| 734 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, | 753 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, |
| 735 GreylistDontEnableManuallyDisabled); | 754 GreylistDontEnableManuallyDisabled); |
| 736 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, | 755 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, |
| 737 GreylistUnknownDontChange); | 756 GreylistUnknownDontChange); |
| 757 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, |
| 758 BlockAndUnblockBlacklistedExtension); |
| 738 | 759 |
| 739 DISALLOW_COPY_AND_ASSIGN(ExtensionService); | 760 DISALLOW_COPY_AND_ASSIGN(ExtensionService); |
| 740 }; | 761 }; |
| 741 | 762 |
| 742 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_H_ | 763 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_H_ |
| OLD | NEW |