| 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> |
| 11 #include <string> | 11 #include <string> |
| 12 #include <vector> | 12 #include <vector> |
| 13 | 13 |
| 14 #include "base/compiler_specific.h" | 14 #include "base/compiler_specific.h" |
| 15 #include "base/files/file_path.h" | 15 #include "base/files/file_path.h" |
| 16 #include "base/gtest_prod_util.h" | 16 #include "base/gtest_prod_util.h" |
| 17 #include "base/memory/ref_counted.h" | 17 #include "base/memory/ref_counted.h" |
| 18 #include "base/memory/weak_ptr.h" | 18 #include "base/memory/weak_ptr.h" |
| 19 #include "base/prefs/pref_change_registrar.h" | 19 #include "base/prefs/pref_change_registrar.h" |
| 20 #include "base/strings/string16.h" | 20 #include "base/strings/string16.h" |
| 21 #include "chrome/browser/extensions/blacklist.h" | 21 #include "chrome/browser/extensions/blacklist.h" |
| 22 #include "chrome/browser/extensions/extension_function_histogram_value.h" | 22 #include "chrome/browser/extensions/extension_function_histogram_value.h" |
| 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 "chrome/common/extensions/extension_set.h" | |
| 27 #include "content/public/browser/devtools_agent_host.h" | 26 #include "content/public/browser/devtools_agent_host.h" |
| 28 #include "content/public/browser/notification_observer.h" | 27 #include "content/public/browser/notification_observer.h" |
| 29 #include "content/public/browser/notification_registrar.h" | 28 #include "content/public/browser/notification_registrar.h" |
| 30 #include "extensions/browser/external_provider_interface.h" | 29 #include "extensions/browser/external_provider_interface.h" |
| 31 #include "extensions/browser/management_policy.h" | 30 #include "extensions/browser/management_policy.h" |
| 32 #include "extensions/browser/pending_extension_manager.h" | 31 #include "extensions/browser/pending_extension_manager.h" |
| 33 #include "extensions/browser/process_manager.h" | 32 #include "extensions/browser/process_manager.h" |
| 34 #include "extensions/browser/process_map.h" | 33 #include "extensions/browser/process_map.h" |
| 35 #include "extensions/browser/quota_service.h" | 34 #include "extensions/browser/quota_service.h" |
| 36 #include "extensions/common/extension.h" | 35 #include "extensions/common/extension.h" |
| 36 #include "extensions/common/extension_set.h" |
| 37 #include "extensions/common/manifest.h" | 37 #include "extensions/common/manifest.h" |
| 38 #include "extensions/common/manifest_handlers/shared_module_info.h" | 38 #include "extensions/common/manifest_handlers/shared_module_info.h" |
| 39 #include "extensions/common/one_shot_event.h" | 39 #include "extensions/common/one_shot_event.h" |
| 40 | 40 |
| 41 class CommandLine; | 41 class CommandLine; |
| 42 class ExtensionErrorUI; | 42 class ExtensionErrorUI; |
| 43 class ExtensionToolbarModel; | 43 class ExtensionToolbarModel; |
| 44 class GURL; | 44 class GURL; |
| 45 class Profile; | 45 class Profile; |
| 46 | 46 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 65 namespace syncer { | 65 namespace syncer { |
| 66 class SyncErrorFactory; | 66 class SyncErrorFactory; |
| 67 } | 67 } |
| 68 | 68 |
| 69 // This is an interface class to encapsulate the dependencies that | 69 // This is an interface class to encapsulate the dependencies that |
| 70 // various classes have on ExtensionService. This allows easy mocking. | 70 // various classes have on ExtensionService. This allows easy mocking. |
| 71 class ExtensionServiceInterface | 71 class ExtensionServiceInterface |
| 72 : public base::SupportsWeakPtr<ExtensionServiceInterface> { | 72 : public base::SupportsWeakPtr<ExtensionServiceInterface> { |
| 73 public: | 73 public: |
| 74 virtual ~ExtensionServiceInterface() {} | 74 virtual ~ExtensionServiceInterface() {} |
| 75 virtual const ExtensionSet* extensions() const = 0; | 75 virtual const extensions::ExtensionSet* extensions() const = 0; |
| 76 virtual const ExtensionSet* disabled_extensions() const = 0; | 76 virtual const extensions::ExtensionSet* disabled_extensions() const = 0; |
| 77 virtual extensions::PendingExtensionManager* pending_extension_manager() = 0; | 77 virtual extensions::PendingExtensionManager* pending_extension_manager() = 0; |
| 78 | 78 |
| 79 // Install an update. Return true if the install can be started. | 79 // Install an update. Return true if the install can be started. |
| 80 // Set out_crx_installer to the installer if one was started. | 80 // Set out_crx_installer to the installer if one was started. |
| 81 virtual bool UpdateExtension( | 81 virtual bool UpdateExtension( |
| 82 const std::string& id, | 82 const std::string& id, |
| 83 const base::FilePath& path, | 83 const base::FilePath& path, |
| 84 const GURL& download_url, | 84 const GURL& download_url, |
| 85 extensions::CrxInstaller** out_crx_installer) = 0; | 85 extensions::CrxInstaller** out_crx_installer) = 0; |
| 86 virtual const extensions::Extension* GetExtensionById( | 86 virtual const extensions::Extension* GetExtensionById( |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 151 const base::FilePath& install_directory, | 151 const base::FilePath& install_directory, |
| 152 extensions::ExtensionPrefs* extension_prefs, | 152 extensions::ExtensionPrefs* extension_prefs, |
| 153 extensions::Blacklist* blacklist, | 153 extensions::Blacklist* blacklist, |
| 154 bool autoupdate_enabled, | 154 bool autoupdate_enabled, |
| 155 bool extensions_enabled, | 155 bool extensions_enabled, |
| 156 extensions::OneShotEvent* ready); | 156 extensions::OneShotEvent* ready); |
| 157 | 157 |
| 158 virtual ~ExtensionService(); | 158 virtual ~ExtensionService(); |
| 159 | 159 |
| 160 // Gets the list of currently installed extensions. | 160 // Gets the list of currently installed extensions. |
| 161 virtual const ExtensionSet* extensions() const OVERRIDE; | 161 virtual const extensions::ExtensionSet* extensions() const OVERRIDE; |
| 162 virtual const ExtensionSet* disabled_extensions() const OVERRIDE; | 162 virtual const extensions::ExtensionSet* disabled_extensions() const OVERRIDE; |
| 163 const ExtensionSet* terminated_extensions() const; | 163 const extensions::ExtensionSet* terminated_extensions() const; |
| 164 const ExtensionSet* blacklisted_extensions() const; | 164 const extensions::ExtensionSet* blacklisted_extensions() const; |
| 165 const ExtensionSet* delayed_installs() const; | 165 const extensions::ExtensionSet* delayed_installs() const; |
| 166 | 166 |
| 167 // Returns a set of all installed, disabled, blacklisted, and terminated | 167 // Returns a set of all installed, disabled, blacklisted, and terminated |
| 168 // extensions. | 168 // extensions. |
| 169 scoped_ptr<ExtensionSet> GenerateInstalledExtensionsSet() const; | 169 scoped_ptr<extensions::ExtensionSet> GenerateInstalledExtensionsSet() const; |
| 170 | 170 |
| 171 // Gets the object managing the set of pending extensions. | 171 // Gets the object managing the set of pending extensions. |
| 172 virtual extensions::PendingExtensionManager* | 172 virtual extensions::PendingExtensionManager* |
| 173 pending_extension_manager() OVERRIDE; | 173 pending_extension_manager() OVERRIDE; |
| 174 | 174 |
| 175 const base::FilePath& install_directory() const { return install_directory_; } | 175 const base::FilePath& install_directory() const { return install_directory_; } |
| 176 | 176 |
| 177 extensions::ProcessMap* process_map() { return &process_map_; } | 177 extensions::ProcessMap* process_map() { return &process_map_; } |
| 178 | 178 |
| 179 // Updates the app launcher value for the moved extension so that it is now | 179 // Updates the app launcher value for the moved extension so that it is now |
| (...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 362 const extensions::Extension* extension, | 362 const extensions::Extension* extension, |
| 363 std::list<extensions::SharedModuleInfo::ImportInfo>* missing_modules, | 363 std::list<extensions::SharedModuleInfo::ImportInfo>* missing_modules, |
| 364 std::list<extensions::SharedModuleInfo::ImportInfo>* outdated_modules); | 364 std::list<extensions::SharedModuleInfo::ImportInfo>* outdated_modules); |
| 365 | 365 |
| 366 // Checks an extension's shared module imports to see if they are satisfied. | 366 // Checks an extension's shared module imports to see if they are satisfied. |
| 367 // If they are not, this function adds the dependencies to the pending install | 367 // If they are not, this function adds the dependencies to the pending install |
| 368 // list if |extension| came from the webstore. | 368 // list if |extension| came from the webstore. |
| 369 ImportStatus SatisfyImports(const extensions::Extension* extension); | 369 ImportStatus SatisfyImports(const extensions::Extension* extension); |
| 370 | 370 |
| 371 // Returns a set of extensions that import a given extension. | 371 // Returns a set of extensions that import a given extension. |
| 372 scoped_ptr<const ExtensionSet> GetDependentExtensions( | 372 scoped_ptr<const extensions::ExtensionSet> GetDependentExtensions( |
| 373 const extensions::Extension* extension); | 373 const extensions::Extension* extension); |
| 374 | 374 |
| 375 // Uninstalls shared modules that were only referenced by |extension|. | 375 // Uninstalls shared modules that were only referenced by |extension|. |
| 376 void PruneSharedModulesOnUninstall(const extensions::Extension* extension); | 376 void PruneSharedModulesOnUninstall(const extensions::Extension* extension); |
| 377 | 377 |
| 378 // Informs the service that an extension's files are in place for loading. | 378 // Informs the service that an extension's files are in place for loading. |
| 379 // | 379 // |
| 380 // |page_ordinal| is the location of the extension in the app launcher. | 380 // |page_ordinal| is the location of the extension in the app launcher. |
| 381 // |has_requirement_errors| is true if requirements of the extension weren't | 381 // |has_requirement_errors| is true if requirements of the extension weren't |
| 382 // met (for example graphics capabilities). | 382 // met (for example graphics capabilities). |
| (...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 720 // Blacklist for the owning profile. | 720 // Blacklist for the owning profile. |
| 721 extensions::Blacklist* blacklist_; | 721 extensions::Blacklist* blacklist_; |
| 722 | 722 |
| 723 // Settings for the owning profile. | 723 // Settings for the owning profile. |
| 724 scoped_ptr<extensions::SettingsFrontend> settings_frontend_; | 724 scoped_ptr<extensions::SettingsFrontend> settings_frontend_; |
| 725 | 725 |
| 726 // The ExtensionSyncService that is used by this ExtensionService. | 726 // The ExtensionSyncService that is used by this ExtensionService. |
| 727 ExtensionSyncService* extension_sync_service_; | 727 ExtensionSyncService* extension_sync_service_; |
| 728 | 728 |
| 729 // The current list of installed extensions. | 729 // The current list of installed extensions. |
| 730 ExtensionSet extensions_; | 730 extensions::ExtensionSet extensions_; |
| 731 | 731 |
| 732 // The list of installed extensions that have been disabled. | 732 // The list of installed extensions that have been disabled. |
| 733 ExtensionSet disabled_extensions_; | 733 extensions::ExtensionSet disabled_extensions_; |
| 734 | 734 |
| 735 // The list of installed extensions that have been terminated. | 735 // The list of installed extensions that have been terminated. |
| 736 ExtensionSet terminated_extensions_; | 736 extensions::ExtensionSet terminated_extensions_; |
| 737 | 737 |
| 738 // The list of installed extensions that have been blacklisted. Generally | 738 // The list of installed extensions that have been blacklisted. Generally |
| 739 // these shouldn't be considered as installed by the extension platform: we | 739 // these shouldn't be considered as installed by the extension platform: we |
| 740 // only keep them around so that if extensions are blacklisted by mistake | 740 // only keep them around so that if extensions are blacklisted by mistake |
| 741 // they can easily be un-blacklisted. | 741 // they can easily be un-blacklisted. |
| 742 ExtensionSet blacklisted_extensions_; | 742 extensions::ExtensionSet blacklisted_extensions_; |
| 743 | 743 |
| 744 // The list of extension installs delayed for various reasons. The reason | 744 // The list of extension installs delayed for various reasons. The reason |
| 745 // for delayed install is stored in ExtensionPrefs. | 745 // for delayed install is stored in ExtensionPrefs. |
| 746 ExtensionSet delayed_installs_; | 746 extensions::ExtensionSet delayed_installs_; |
| 747 | 747 |
| 748 // Hold the set of pending extensions. | 748 // Hold the set of pending extensions. |
| 749 extensions::PendingExtensionManager pending_extension_manager_; | 749 extensions::PendingExtensionManager pending_extension_manager_; |
| 750 | 750 |
| 751 // The map of extension IDs to their runtime data. | 751 // The map of extension IDs to their runtime data. |
| 752 ExtensionRuntimeDataMap extension_runtime_data_; | 752 ExtensionRuntimeDataMap extension_runtime_data_; |
| 753 | 753 |
| 754 // The full path to the directory where extensions are installed. | 754 // The full path to the directory where extensions are installed. |
| 755 base::FilePath install_directory_; | 755 base::FilePath install_directory_; |
| 756 | 756 |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 850 #endif | 850 #endif |
| 851 | 851 |
| 852 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, | 852 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, |
| 853 InstallAppsWithUnlimtedStorage); | 853 InstallAppsWithUnlimtedStorage); |
| 854 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, | 854 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, |
| 855 InstallAppsAndCheckStorageProtection); | 855 InstallAppsAndCheckStorageProtection); |
| 856 DISALLOW_COPY_AND_ASSIGN(ExtensionService); | 856 DISALLOW_COPY_AND_ASSIGN(ExtensionService); |
| 857 }; | 857 }; |
| 858 | 858 |
| 859 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_H_ | 859 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_H_ |
| OLD | NEW |