test_extension_system.h revision 03b57e008b61dfcb1fbad3aea950ae0e001748b0
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_BROWSER_EXTENSIONS_TEST_EXTENSION_SYSTEM_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_EXTENSIONS_TEST_EXTENSION_SYSTEM_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "extensions/browser/extension_system.h" 95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "extensions/common/one_shot_event.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class Profile; 1290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class TestingValueStore; 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace base { 15a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class CommandLine; 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class FilePath; 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Time; 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace content { 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class BrowserContext; 22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace extensions { 256e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class DeclarativeUserScriptMaster; 2690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class ExtensionPrefs; 275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class RuntimeData; 286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class SharedUserScriptMaster; 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class StandardManagementPolicyProvider; 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test ExtensionSystem, for use with TestingProfile. 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TestExtensionSystem : public ExtensionSystem { 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) explicit TestExtensionSystem(Profile* profile); 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~TestExtensionSystem(); 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 37a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // KeyedService implementation. 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Shutdown() OVERRIDE; 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Creates an ExtensionPrefs with the testing profile and returns it. 41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Useful for tests that need to modify prefs before creating the 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // ExtensionService. 43a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ExtensionPrefs* CreateExtensionPrefs(const base::CommandLine* command_line, 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const base::FilePath& install_directory); 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Creates an ExtensionService initialized with the testing profile and 47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // returns it, and creates ExtensionPrefs if it hasn't been created yet. 48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ExtensionService* CreateExtensionService( 49a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const base::CommandLine* command_line, 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const base::FilePath& install_directory, 51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool autoupdate_enabled); 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 53f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Creates a ProcessManager. If not invoked, the ProcessManager is NULL. 54f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void CreateProcessManager(); 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 56f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Allows the ProcessManager to be overriden, for example by a stub 57f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // implementation. Takes ownership of |manager|. 58f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void SetProcessManager(ProcessManager* manager); 591e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void CreateSocketManager(); 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 62a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual void InitForRegularProfile(bool extensions_enabled) OVERRIDE {} 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetExtensionService(ExtensionService* service); 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ExtensionService* extension_service() OVERRIDE; 655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual RuntimeData* runtime_data() OVERRIDE; 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ManagementPolicy* management_policy() OVERRIDE; 676e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) virtual SharedUserScriptMaster* shared_user_script_master() OVERRIDE; 68f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual ProcessManager* process_manager() OVERRIDE; 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual StateStore* state_store() OVERRIDE; 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual StateStore* rules_store() OVERRIDE; 7190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) TestingValueStore* value_store() { return value_store_; } 72f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual InfoMap* info_map() OVERRIDE; 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual LazyBackgroundTaskQueue* lazy_background_task_queue() OVERRIDE; 74a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void SetEventRouter(scoped_ptr<EventRouter> event_router); 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual EventRouter* event_router() OVERRIDE; 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ExtensionWarningService* warning_service() OVERRIDE; 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual Blacklist* blacklist() OVERRIDE; 78558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch virtual ErrorConsole* error_console() OVERRIDE; 79f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual InstallVerifier* install_verifier() OVERRIDE; 805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual QuotaService* quota_service() OVERRIDE; 815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual const OneShotEvent& ready() const OVERRIDE; 82010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual ContentVerifier* content_verifier() OVERRIDE; 83f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual scoped_ptr<ExtensionSet> GetDependentExtensions( 84f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) const Extension* extension) OVERRIDE; 856e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) virtual DeclarativeUserScriptMaster* 866e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) GetDeclarativeUserScriptMasterByExtension( 876e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) const ExtensionId& extension_id) OVERRIDE; 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // Note that you probably want to use base::RunLoop().RunUntilIdle() right 9003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // after this to run all the accumulated tasks. 9103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) void SetReady() { ready_.Signal(); } 927dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Factory method for tests to use with SetTestingProfile. 94a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) static KeyedService* Build(content::BrowserContext* profile); 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Profile* profile_; 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<StateStore> state_store_; 10190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // A pointer to the TestingValueStore owned by |state_store_|. 10290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) TestingValueStore* value_store_; 1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<Blacklist> blacklist_; 1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<StandardManagementPolicyProvider> 1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) standard_management_policy_provider_; 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<ManagementPolicy> management_policy_; 1075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scoped_ptr<RuntimeData> runtime_data_; 1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<ExtensionService> extension_service_; 109f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) scoped_ptr<ProcessManager> process_manager_; 110f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) scoped_refptr<InfoMap> info_map_; 111a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) scoped_ptr<EventRouter> event_router_; 112558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch scoped_ptr<ErrorConsole> error_console_; 113f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) scoped_ptr<InstallVerifier> install_verifier_; 1145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scoped_ptr<QuotaService> quota_service_; 11590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) OneShotEvent ready_; 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace extensions 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CHROME_BROWSER_EXTENSIONS_TEST_EXTENSION_SYSTEM_H_ 121