• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
3 // found in the LICENSE file.
4 
5 #ifndef CHROME_BROWSER_EXTENSIONS_TEST_EXTENSION_SYSTEM_H_
6 #define CHROME_BROWSER_EXTENSIONS_TEST_EXTENSION_SYSTEM_H_
7 
8 #include "base/memory/scoped_vector.h"
9 #include "extensions/browser/extension_system.h"
10 #include "extensions/common/one_shot_event.h"
11 
12 class Profile;
13 class TestingValueStore;
14 
15 namespace base {
16 class CommandLine;
17 class FilePath;
18 class Time;
19 }
20 
21 namespace content {
22 class BrowserContext;
23 }
24 
25 namespace extensions {
26 class DeclarativeUserScriptMaster;
27 class ExtensionPrefs;
28 class RuntimeData;
29 class SharedUserScriptMaster;
30 class StandardManagementPolicyProvider;
31 
32 // Test ExtensionSystem, for use with TestingProfile.
33 class TestExtensionSystem : public ExtensionSystem {
34  public:
35   explicit TestExtensionSystem(Profile* profile);
36   virtual ~TestExtensionSystem();
37 
38   // KeyedService implementation.
39   virtual void Shutdown() OVERRIDE;
40 
41   // Creates an ExtensionPrefs with the testing profile and returns it.
42   // Useful for tests that need to modify prefs before creating the
43   // ExtensionService.
44   ExtensionPrefs* CreateExtensionPrefs(const base::CommandLine* command_line,
45                                        const base::FilePath& install_directory);
46 
47   // Creates an ExtensionService initialized with the testing profile and
48   // returns it, and creates ExtensionPrefs if it hasn't been created yet.
49   ExtensionService* CreateExtensionService(
50       const base::CommandLine* command_line,
51       const base::FilePath& install_directory,
52       bool autoupdate_enabled);
53 
54   // Creates a ProcessManager. If not invoked, the ProcessManager is NULL.
55   void CreateProcessManager();
56 
57   // Allows the ProcessManager to be overriden, for example by a stub
58   // implementation. Takes ownership of |manager|.
59   void SetProcessManager(ProcessManager* manager);
60 
61   void CreateSocketManager();
62 
InitForRegularProfile(bool extensions_enabled)63   virtual void InitForRegularProfile(bool extensions_enabled) OVERRIDE {}
64   void SetExtensionService(ExtensionService* service);
65   virtual ExtensionService* extension_service() OVERRIDE;
66   virtual RuntimeData* runtime_data() OVERRIDE;
67   virtual ManagementPolicy* management_policy() OVERRIDE;
68   virtual SharedUserScriptMaster* shared_user_script_master() OVERRIDE;
69   virtual ProcessManager* process_manager() OVERRIDE;
70   virtual StateStore* state_store() OVERRIDE;
71   virtual StateStore* rules_store() OVERRIDE;
value_store()72   TestingValueStore* value_store() { return value_store_; }
73   virtual InfoMap* info_map() OVERRIDE;
74   virtual LazyBackgroundTaskQueue* lazy_background_task_queue() OVERRIDE;
75   void SetEventRouter(scoped_ptr<EventRouter> event_router);
76   virtual EventRouter* event_router() OVERRIDE;
77   virtual WarningService* warning_service() OVERRIDE;
78   virtual Blacklist* blacklist() OVERRIDE;
79   virtual ErrorConsole* error_console() OVERRIDE;
80   virtual InstallVerifier* install_verifier() OVERRIDE;
81   virtual QuotaService* quota_service() OVERRIDE;
82   virtual const OneShotEvent& ready() const OVERRIDE;
83   virtual ContentVerifier* content_verifier() OVERRIDE;
84   virtual scoped_ptr<ExtensionSet> GetDependentExtensions(
85       const Extension* extension) OVERRIDE;
86   virtual DeclarativeUserScriptMaster*
87       GetDeclarativeUserScriptMasterByExtension(
88           const ExtensionId& extension_id) OVERRIDE;
89 
90   // Note that you probably want to use base::RunLoop().RunUntilIdle() right
91   // after this to run all the accumulated tasks.
SetReady()92   void SetReady() { ready_.Signal(); }
93 
94   // Factory method for tests to use with SetTestingProfile.
95   static KeyedService* Build(content::BrowserContext* profile);
96 
97  protected:
98   Profile* profile_;
99 
100  private:
101   scoped_ptr<StateStore> state_store_;
102   // A pointer to the TestingValueStore owned by |state_store_|.
103   TestingValueStore* value_store_;
104   ScopedVector<DeclarativeUserScriptMaster> declarative_user_script_masters_;
105   scoped_ptr<Blacklist> blacklist_;
106   scoped_ptr<ManagementPolicy> management_policy_;
107   scoped_ptr<RuntimeData> runtime_data_;
108   scoped_ptr<ExtensionService> extension_service_;
109   scoped_ptr<ProcessManager> process_manager_;
110   scoped_refptr<InfoMap> info_map_;
111   scoped_ptr<EventRouter> event_router_;
112   scoped_ptr<ErrorConsole> error_console_;
113   scoped_ptr<InstallVerifier> install_verifier_;
114   scoped_ptr<QuotaService> quota_service_;
115   OneShotEvent ready_;
116 };
117 
118 }  // namespace extensions
119 
120 #endif  // CHROME_BROWSER_EXTENSIONS_TEST_EXTENSION_SYSTEM_H_
121