| 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 12 matching lines...) Expand all Loading... |
| 23 #include "chrome/browser/extensions/extension_prefs.h" | 23 #include "chrome/browser/extensions/extension_prefs.h" |
| 24 #include "chrome/browser/extensions/extension_sync_service.h" | 24 #include "chrome/browser/extensions/extension_sync_service.h" |
| 25 #include "chrome/common/extensions/extension_constants.h" | 25 #include "chrome/common/extensions/extension_constants.h" |
| 26 #include "content/public/browser/devtools_agent_host.h" | 26 #include "content/public/browser/devtools_agent_host.h" |
| 27 #include "content/public/browser/notification_observer.h" | 27 #include "content/public/browser/notification_observer.h" |
| 28 #include "content/public/browser/notification_registrar.h" | 28 #include "content/public/browser/notification_registrar.h" |
| 29 #include "extensions/browser/external_provider_interface.h" | 29 #include "extensions/browser/external_provider_interface.h" |
| 30 #include "extensions/browser/management_policy.h" | 30 #include "extensions/browser/management_policy.h" |
| 31 #include "extensions/browser/pending_extension_manager.h" | 31 #include "extensions/browser/pending_extension_manager.h" |
| 32 #include "extensions/browser/process_manager.h" | 32 #include "extensions/browser/process_manager.h" |
| 33 #include "extensions/browser/process_map.h" | |
| 34 #include "extensions/browser/quota_service.h" | 33 #include "extensions/browser/quota_service.h" |
| 35 #include "extensions/common/extension.h" | 34 #include "extensions/common/extension.h" |
| 36 #include "extensions/common/extension_set.h" | 35 #include "extensions/common/extension_set.h" |
| 37 #include "extensions/common/manifest.h" | 36 #include "extensions/common/manifest.h" |
| 38 #include "extensions/common/manifest_handlers/shared_module_info.h" | 37 #include "extensions/common/manifest_handlers/shared_module_info.h" |
| 39 #include "extensions/common/one_shot_event.h" | 38 #include "extensions/common/one_shot_event.h" |
| 40 | 39 |
| 41 class CommandLine; | 40 class CommandLine; |
| 42 class ExtensionErrorUI; | 41 class ExtensionErrorUI; |
| 43 class ExtensionToolbarModel; | 42 class ExtensionToolbarModel; |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 118 const std::string& extension_id, | 117 const std::string& extension_id, |
| 119 extensions::UnloadedExtensionInfo::Reason reason) = 0; | 118 extensions::UnloadedExtensionInfo::Reason reason) = 0; |
| 120 virtual void RemoveComponentExtension(const std::string& extension_id) = 0; | 119 virtual void RemoveComponentExtension(const std::string& extension_id) = 0; |
| 121 | 120 |
| 122 virtual bool is_ready() = 0; | 121 virtual bool is_ready() = 0; |
| 123 | 122 |
| 124 // Returns task runner for crx installation file I/O operations. | 123 // Returns task runner for crx installation file I/O operations. |
| 125 virtual base::SequencedTaskRunner* GetFileTaskRunner() = 0; | 124 virtual base::SequencedTaskRunner* GetFileTaskRunner() = 0; |
| 126 }; | 125 }; |
| 127 | 126 |
| 128 // Manages installed and running Chromium extensions. | 127 // Manages installed and running Chromium extensions. An instance is shared |
| 128 // between normal and incognito profiles. |
| 129 class ExtensionService | 129 class ExtensionService |
| 130 : public ExtensionServiceInterface, | 130 : public ExtensionServiceInterface, |
| 131 public extensions::ExternalProviderInterface::VisitorInterface, | 131 public extensions::ExternalProviderInterface::VisitorInterface, |
| 132 public content::NotificationObserver, | 132 public content::NotificationObserver, |
| 133 public extensions::Blacklist::Observer { | 133 public extensions::Blacklist::Observer { |
| 134 public: | 134 public: |
| 135 // Returns the Extension for a given url or NULL if the url doesn't belong to | 135 // Returns the Extension for a given url or NULL if the url doesn't belong to |
| 136 // an installed extension. This may be a hosted app extent or a | 136 // an installed extension. This may be a hosted app extent or a |
| 137 // chrome-extension:// url. | 137 // chrome-extension:// url. |
| 138 const extensions::Extension* GetInstalledExtensionByUrl( | 138 const extensions::Extension* GetInstalledExtensionByUrl( |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 172 // Returns a set of all installed, disabled, blacklisted, and terminated | 172 // Returns a set of all installed, disabled, blacklisted, and terminated |
| 173 // extensions. | 173 // extensions. |
| 174 scoped_ptr<extensions::ExtensionSet> GenerateInstalledExtensionsSet() const; | 174 scoped_ptr<extensions::ExtensionSet> GenerateInstalledExtensionsSet() const; |
| 175 | 175 |
| 176 // Gets the object managing the set of pending extensions. | 176 // Gets the object managing the set of pending extensions. |
| 177 virtual extensions::PendingExtensionManager* | 177 virtual extensions::PendingExtensionManager* |
| 178 pending_extension_manager() OVERRIDE; | 178 pending_extension_manager() OVERRIDE; |
| 179 | 179 |
| 180 const base::FilePath& install_directory() const { return install_directory_; } | 180 const base::FilePath& install_directory() const { return install_directory_; } |
| 181 | 181 |
| 182 extensions::ProcessMap* process_map() { return &process_map_; } | |
| 183 | |
| 184 // 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 |
| 185 // located after the given predecessor and before the successor. This will | 183 // located after the given predecessor and before the successor. This will |
| 186 // 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 |
| 187 // or predecessor. | 185 // or predecessor. |
| 188 void OnExtensionMoved(const std::string& moved_extension_id, | 186 void OnExtensionMoved(const std::string& moved_extension_id, |
| 189 const std::string& predecessor_extension_id, | 187 const std::string& predecessor_extension_id, |
| 190 const std::string& successor_extension_id); | 188 const std::string& successor_extension_id); |
| 191 | 189 |
| 192 // Whether the persistent background page, if any, is ready. We don't load | 190 // Whether the persistent background page, if any, is ready. We don't load |
| 193 // other components until then. If there is no background page, or if it is | 191 // other components until then. If there is no background page, or if it is |
| (...skipping 621 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 815 // allow background processing of garbage collection of on-disk state without | 813 // allow background processing of garbage collection of on-disk state without |
| 816 // needing to worry about race conditions caused by extension installation and | 814 // needing to worry about race conditions caused by extension installation and |
| 817 // reinstallation. | 815 // reinstallation. |
| 818 bool installs_delayed_for_gc_; | 816 bool installs_delayed_for_gc_; |
| 819 | 817 |
| 820 // Set to true if this is the first time this ExtensionService has run. | 818 // Set to true if this is the first time this ExtensionService has run. |
| 821 // Used for specially handling external extensions that are installed the | 819 // Used for specially handling external extensions that are installed the |
| 822 // first time. | 820 // first time. |
| 823 bool is_first_run_; | 821 bool is_first_run_; |
| 824 | 822 |
| 825 extensions::ProcessMap process_map_; | |
| 826 | |
| 827 // A set of the extension ids currently being reloaded. We use this to | 823 // A set of the extension ids currently being reloaded. We use this to |
| 828 // avoid showing a "new install" notice for an extension reinstall. | 824 // avoid showing a "new install" notice for an extension reinstall. |
| 829 std::set<std::string> extensions_being_reloaded_; | 825 std::set<std::string> extensions_being_reloaded_; |
| 830 | 826 |
| 831 scoped_ptr<ExtensionErrorUI> extension_error_ui_; | 827 scoped_ptr<ExtensionErrorUI> extension_error_ui_; |
| 832 // Sequenced task runner for extension related file operations. | 828 // Sequenced task runner for extension related file operations. |
| 833 scoped_refptr<base::SequencedTaskRunner> file_task_runner_; | 829 scoped_refptr<base::SequencedTaskRunner> file_task_runner_; |
| 834 | 830 |
| 835 #if defined(ENABLE_EXTENSIONS) | 831 #if defined(ENABLE_EXTENSIONS) |
| 836 scoped_ptr<extensions::ExtensionActionStorageManager> | 832 scoped_ptr<extensions::ExtensionActionStorageManager> |
| (...skipping 22 matching lines...) Expand all Loading... |
| 859 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, | 855 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, |
| 860 UnloadBlacklistedExtensionPolicy); | 856 UnloadBlacklistedExtensionPolicy); |
| 861 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, | 857 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, |
| 862 WillNotLoadBlacklistedExtensionsFromDirectory); | 858 WillNotLoadBlacklistedExtensionsFromDirectory); |
| 863 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, | 859 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, |
| 864 BlacklistedInPrefsFromStartup); | 860 BlacklistedInPrefsFromStartup); |
| 865 DISALLOW_COPY_AND_ASSIGN(ExtensionService); | 861 DISALLOW_COPY_AND_ASSIGN(ExtensionService); |
| 866 }; | 862 }; |
| 867 | 863 |
| 868 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_H_ | 864 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_H_ |
| OLD | NEW |