test_extension_system.h revision 6e8cce623b6e4fe0c9e4af605d675dd9d0338c38
18d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt// Copyright (c) 2012 The Chromium Authors. All rights reserved. 28d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt// Use of this source code is governed by a BSD-style license that can be 3fb79edc9df1f20461e90e478363d207348213d35Dmitry Shmidt// found in the LICENSE file. 48d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 5c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt#ifndef CHROME_BROWSER_EXTENSIONS_TEST_EXTENSION_SYSTEM_H_ 6c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt#define CHROME_BROWSER_EXTENSIONS_TEST_EXTENSION_SYSTEM_H_ 78d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 88d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "extensions/browser/extension_system.h" 98d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "extensions/common/one_shot_event.h" 108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtclass Profile; 128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtclass TestingValueStore; 138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtnamespace base { 158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtclass CommandLine; 16a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidtclass FilePath; 1704f534e89ed127da4077485376f24debc50d80d5Dmitry Shmidtclass Time; 188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt} 198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 201f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidtnamespace content { 211f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidtclass BrowserContext; 221f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt} 231f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 241f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidtnamespace extensions { 251f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidtclass DeclarativeUserScriptMaster; 261f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidtclass ExtensionPrefs; 278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtclass RuntimeData; 288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtclass SharedUserScriptMaster; 298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtclass StandardManagementPolicyProvider; 308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt// Test ExtensionSystem, for use with TestingProfile. 328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtclass TestExtensionSystem : public ExtensionSystem { 338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt public: 348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt explicit TestExtensionSystem(Profile* profile); 35c2ebb4b85d69b65f552fee71ac68f44e8d87b39eDmitry Shmidt virtual ~TestExtensionSystem(); 36c2ebb4b85d69b65f552fee71ac68f44e8d87b39eDmitry Shmidt 378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt // KeyedService implementation. 388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void Shutdown() OVERRIDE; 398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt // Creates an ExtensionPrefs with the testing profile and returns it. 411f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt // Useful for tests that need to modify prefs before creating the 42a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt // ExtensionService. 43bd14a57187b024f49f5b9ace55ef457d8d04650aDmitry Shmidt ExtensionPrefs* CreateExtensionPrefs(const base::CommandLine* command_line, 448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const base::FilePath& install_directory); 458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt // Creates an ExtensionService initialized with the testing profile and 478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt // returns it, and creates ExtensionPrefs if it hasn't been created yet. 488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt ExtensionService* CreateExtensionService( 498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const base::CommandLine* command_line, 508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const base::FilePath& install_directory, 518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt bool autoupdate_enabled); 52cce06667447b5aec83452adb0c15100ada531095Dmitry Shmidt 538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt // Creates a ProcessManager. If not invoked, the ProcessManager is NULL. 548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt void CreateProcessManager(); 558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt // Allows the ProcessManager to be overriden, for example by a stub 578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt // implementation. Takes ownership of |manager|. 588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt void SetProcessManager(ProcessManager* manager); 598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt void CreateSocketManager(); 61a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt 62a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt virtual void InitForRegularProfile(bool extensions_enabled) OVERRIDE {} 63a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt void SetExtensionService(ExtensionService* service); 648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual ExtensionService* extension_service() OVERRIDE; 658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual RuntimeData* runtime_data() OVERRIDE; 668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual ManagementPolicy* management_policy() OVERRIDE; 678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual SharedUserScriptMaster* shared_user_script_master() OVERRIDE; 688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual ProcessManager* process_manager() OVERRIDE; 698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual StateStore* state_store() OVERRIDE; 708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual StateStore* rules_store() OVERRIDE; 718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt TestingValueStore* value_store() { return value_store_; } 728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual InfoMap* info_map() OVERRIDE; 738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual LazyBackgroundTaskQueue* lazy_background_task_queue() OVERRIDE; 748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt void SetEventRouter(scoped_ptr<EventRouter> event_router); 758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual EventRouter* event_router() OVERRIDE; 768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual ExtensionWarningService* warning_service() OVERRIDE; 778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual Blacklist* blacklist() OVERRIDE; 788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual ErrorConsole* error_console() OVERRIDE; 798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual InstallVerifier* install_verifier() OVERRIDE; 808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual QuotaService* quota_service() OVERRIDE; 818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual const OneShotEvent& ready() const OVERRIDE; 828d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual ContentVerifier* content_verifier() OVERRIDE; 838d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual scoped_ptr<ExtensionSet> GetDependentExtensions( 848d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const Extension* extension) OVERRIDE; 858d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual DeclarativeUserScriptMaster* 868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt GetDeclarativeUserScriptMasterByExtension( 878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt const ExtensionId& extension_id) OVERRIDE; 888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 891f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt void SetReady() { 908d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt LOG(INFO) << "SetReady()"; 918d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt ready_.Signal(); 928d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt } 938d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 9404949598a23f501be6eec21697465fd46a28840aDmitry Shmidt // Factory method for tests to use with SetTestingProfile. 9504949598a23f501be6eec21697465fd46a28840aDmitry Shmidt static KeyedService* Build(content::BrowserContext* profile); 9604949598a23f501be6eec21697465fd46a28840aDmitry Shmidt 971f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt protected: 981f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt Profile* profile_; 991f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt 1001f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt private: 1011f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt scoped_ptr<StateStore> state_store_; 1021f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt // A pointer to the TestingValueStore owned by |state_store_|. 1031f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt TestingValueStore* value_store_; 1041f69aa52ea2e0a73ac502565df8c666ee49cab6aDmitry Shmidt scoped_ptr<Blacklist> blacklist_; 105cce06667447b5aec83452adb0c15100ada531095Dmitry Shmidt scoped_ptr<StandardManagementPolicyProvider> 106051af73b8f8014eff33330aead0f36944b3403e6Dmitry Shmidt standard_management_policy_provider_; 107051af73b8f8014eff33330aead0f36944b3403e6Dmitry Shmidt scoped_ptr<ManagementPolicy> management_policy_; 108051af73b8f8014eff33330aead0f36944b3403e6Dmitry Shmidt scoped_ptr<RuntimeData> runtime_data_; 10904f534e89ed127da4077485376f24debc50d80d5Dmitry Shmidt scoped_ptr<ExtensionService> extension_service_; 11004f534e89ed127da4077485376f24debc50d80d5Dmitry Shmidt scoped_ptr<ProcessManager> process_manager_; 11104f534e89ed127da4077485376f24debc50d80d5Dmitry Shmidt scoped_refptr<InfoMap> info_map_; 11204f534e89ed127da4077485376f24debc50d80d5Dmitry Shmidt scoped_ptr<EventRouter> event_router_; 11304f534e89ed127da4077485376f24debc50d80d5Dmitry Shmidt scoped_ptr<ErrorConsole> error_console_; 1148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt scoped_ptr<InstallVerifier> install_verifier_; 1158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt scoped_ptr<QuotaService> quota_service_; 1168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt OneShotEvent ready_; 1178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}; 11861d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt 11961d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt} // namespace extensions 12061d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt 12161d9df3e62aaa0e87ad05452fcb95142159a17b6Dmitry Shmidt#endif // CHROME_BROWSER_EXTENSIONS_TEST_EXTENSION_SYSTEM_H_ 122051af73b8f8014eff33330aead0f36944b3403e6Dmitry Shmidt