Home | History | Annotate | Download | only in extensions
      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 
     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;
     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.
     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