| 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 <list> | 8 #include <list> |
| 9 #include <map> | 9 #include <map> |
| 10 #include <set> | 10 #include <set> |
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 180 const base::FilePath& install_directory() const { return install_directory_; } | 180 const base::FilePath& install_directory() const { return install_directory_; } |
| 181 | 181 |
| 182 // Updates the app launcher value for the moved extension so that it is now | 182 // Updates the app launcher value for the moved extension so that it is now |
| 183 // located after the given predecessor and before the successor. This will | 183 // located after the given predecessor and before the successor. This will |
| 184 // trigger a sync if needed. Empty strings are used to indicate no successor | 184 // trigger a sync if needed. Empty strings are used to indicate no successor |
| 185 // or predecessor. | 185 // or predecessor. |
| 186 void OnExtensionMoved(const std::string& moved_extension_id, | 186 void OnExtensionMoved(const std::string& moved_extension_id, |
| 187 const std::string& predecessor_extension_id, | 187 const std::string& predecessor_extension_id, |
| 188 const std::string& successor_extension_id); | 188 const std::string& successor_extension_id); |
| 189 | 189 |
| 190 // Whether the persistent background page, if any, is ready. We don't load | |
| 191 // other components until then. If there is no background page, or if it is | |
| 192 // non-persistent (lazy), we consider it to be ready. | |
| 193 bool IsBackgroundPageReady(const extensions::Extension* extension) const; | |
| 194 void SetBackgroundPageReady(const extensions::Extension* extension); | |
| 195 | |
| 196 // Getter and setter for the flag that specifies whether the extension is | |
| 197 // being upgraded. | |
| 198 bool IsBeingUpgraded(const extensions::Extension* extension) const; | |
| 199 void SetBeingUpgraded(const extensions::Extension* extension, bool value); | |
| 200 | |
| 201 // Getter and setter for the flag that specifies whether the extension is | 190 // Getter and setter for the flag that specifies whether the extension is |
| 202 // being reloaded. | 191 // being reloaded. |
| 203 bool IsBeingReloaded(const std::string& extension_id) const; | 192 bool IsBeingReloaded(const std::string& extension_id) const; |
| 204 void SetBeingReloaded(const std::string& extension_id, bool value); | 193 void SetBeingReloaded(const std::string& extension_id, bool value); |
| 205 | 194 |
| 206 // Getter and setter for the flag that specifies if the extension has used | |
| 207 // the webrequest API. | |
| 208 // TODO(mpcomplete): remove. http://crbug.com/100411 | |
| 209 bool HasUsedWebRequest(const extensions::Extension* extension) const; | |
| 210 void SetHasUsedWebRequest(const extensions::Extension* extension, bool value); | |
| 211 | |
| 212 // Initialize and start all installed extensions. | 195 // Initialize and start all installed extensions. |
| 213 void Init(); | 196 void Init(); |
| 214 | 197 |
| 215 // Attempts to verify all extensions using the InstallVerifier. | 198 // Attempts to verify all extensions using the InstallVerifier. |
| 216 void VerifyAllExtensions(); | 199 void VerifyAllExtensions(); |
| 217 | 200 |
| 218 // Once the verifier work is finished, we may want to re-check management | 201 // Once the verifier work is finished, we may want to re-check management |
| 219 // policy if |success| indicates the verifier got a new signature back. | 202 // policy if |success| indicates the verifier got a new signature back. |
| 220 void FinishVerifyAllExtensions(bool success); | 203 void FinishVerifyAllExtensions(bool success); |
| 221 | 204 |
| (...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 609 #if defined(OS_CHROMEOS) | 592 #if defined(OS_CHROMEOS) |
| 610 void disable_garbage_collection() { | 593 void disable_garbage_collection() { |
| 611 disable_garbage_collection_ = true; | 594 disable_garbage_collection_ = true; |
| 612 } | 595 } |
| 613 void enable_garbage_collection() { | 596 void enable_garbage_collection() { |
| 614 disable_garbage_collection_ = false; | 597 disable_garbage_collection_ = false; |
| 615 } | 598 } |
| 616 #endif | 599 #endif |
| 617 | 600 |
| 618 private: | 601 private: |
| 619 // Contains Extension data that can change during the life of the process, | |
| 620 // but does not persist across restarts. | |
| 621 struct ExtensionRuntimeData { | |
| 622 // True if the background page is ready. | |
| 623 bool background_page_ready; | |
| 624 | |
| 625 // True while the extension is being upgraded. | |
| 626 bool being_upgraded; | |
| 627 | |
| 628 // True if the extension has used the webRequest API. | |
| 629 bool has_used_webrequest; | |
| 630 | |
| 631 ExtensionRuntimeData(); | |
| 632 ~ExtensionRuntimeData(); | |
| 633 }; | |
| 634 typedef std::map<std::string, ExtensionRuntimeData> ExtensionRuntimeDataMap; | |
| 635 | |
| 636 // Signals *ready_ and sends a notification to the listeners. | 602 // Signals *ready_ and sends a notification to the listeners. |
| 637 void SetReadyAndNotifyListeners(); | 603 void SetReadyAndNotifyListeners(); |
| 638 | 604 |
| 639 // Return true if the sync type of |extension| matches |type|. | 605 // Return true if the sync type of |extension| matches |type|. |
| 640 void OnExtensionInstallPrefChanged(); | 606 void OnExtensionInstallPrefChanged(); |
| 641 | 607 |
| 642 // Adds the given extension to the list of terminated extensions if | 608 // Adds the given extension to the list of terminated extensions if |
| 643 // it is not already there and unloads it. | 609 // it is not already there and unloads it. |
| 644 void TrackTerminatedExtension(const extensions::Extension* extension); | 610 void TrackTerminatedExtension(const extensions::Extension* extension); |
| 645 | 611 |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 734 extensions::ExtensionRegistry* registry_; | 700 extensions::ExtensionRegistry* registry_; |
| 735 | 701 |
| 736 // The list of extension installs delayed for various reasons. The reason | 702 // The list of extension installs delayed for various reasons. The reason |
| 737 // for delayed install is stored in ExtensionPrefs. These are not part of | 703 // for delayed install is stored in ExtensionPrefs. These are not part of |
| 738 // ExtensionRegistry because they are not yet installed. | 704 // ExtensionRegistry because they are not yet installed. |
| 739 extensions::ExtensionSet delayed_installs_; | 705 extensions::ExtensionSet delayed_installs_; |
| 740 | 706 |
| 741 // Hold the set of pending extensions. | 707 // Hold the set of pending extensions. |
| 742 extensions::PendingExtensionManager pending_extension_manager_; | 708 extensions::PendingExtensionManager pending_extension_manager_; |
| 743 | 709 |
| 744 // The map of extension IDs to their runtime data. | |
| 745 ExtensionRuntimeDataMap extension_runtime_data_; | |
| 746 | |
| 747 // The full path to the directory where extensions are installed. | 710 // The full path to the directory where extensions are installed. |
| 748 base::FilePath install_directory_; | 711 base::FilePath install_directory_; |
| 749 | 712 |
| 750 // Whether or not extensions are enabled. | 713 // Whether or not extensions are enabled. |
| 751 bool extensions_enabled_; | 714 bool extensions_enabled_; |
| 752 | 715 |
| 753 // Whether to notify users when they attempt to install an extension. | 716 // Whether to notify users when they attempt to install an extension. |
| 754 bool show_extensions_prompts_; | 717 bool show_extensions_prompts_; |
| 755 | 718 |
| 756 // Whether to delay installing of extension updates until the extension is | 719 // Whether to delay installing of extension updates until the extension is |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 855 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, | 818 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, |
| 856 UnloadBlacklistedExtensionPolicy); | 819 UnloadBlacklistedExtensionPolicy); |
| 857 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, | 820 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, |
| 858 WillNotLoadBlacklistedExtensionsFromDirectory); | 821 WillNotLoadBlacklistedExtensionsFromDirectory); |
| 859 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, | 822 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, |
| 860 BlacklistedInPrefsFromStartup); | 823 BlacklistedInPrefsFromStartup); |
| 861 DISALLOW_COPY_AND_ASSIGN(ExtensionService); | 824 DISALLOW_COPY_AND_ASSIGN(ExtensionService); |
| 862 }; | 825 }; |
| 863 | 826 |
| 864 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_H_ | 827 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_H_ |
| OLD | NEW |