d049e156d2cb2e231cffd5da646ab29f4e606416
[platform/framework/web/crosswalk.git] / src / extensions / browser / mock_extension_system.h
1 // Copyright 2014 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 EXTENSIONS_BROWSER_MOCK_EXTENSION_SYSTEM_H_
6 #define EXTENSIONS_BROWSER_MOCK_EXTENSION_SYSTEM_H_
7
8 #include "components/keyed_service/content/browser_context_dependency_manager.h"
9 #include "extensions/browser/extension_registry_factory.h"
10 #include "extensions/browser/extension_system.h"
11 #include "extensions/browser/extension_system_provider.h"
12 #include "extensions/common/one_shot_event.h"
13
14 namespace extensions {
15
16 // An empty ExtensionSystem for testing. Tests that need only specific
17 // parts of ExtensionSystem should derive from this class and override
18 // functions as needed. To use this, use
19 // TestExtensionsBrowserClient::set_extension_system_factory
20 // with the MockExtensionSystemFactory below.
21 class MockExtensionSystem : public ExtensionSystem {
22  public:
23   explicit MockExtensionSystem(content::BrowserContext* context);
24   ~MockExtensionSystem() override;
25
26   content::BrowserContext* browser_context() { return browser_context_; }
27
28   // ExtensionSystem overrides:
29   void InitForRegularProfile(bool extensions_enabled) override;
30   ExtensionService* extension_service() override;
31   RuntimeData* runtime_data() override;
32   ManagementPolicy* management_policy() override;
33   SharedUserScriptMaster* shared_user_script_master() override;
34   StateStore* state_store() override;
35   StateStore* rules_store() override;
36   InfoMap* info_map() override;
37   LazyBackgroundTaskQueue* lazy_background_task_queue() override;
38   EventRouter* event_router() override;
39   ErrorConsole* error_console() override;
40   InstallVerifier* install_verifier() override;
41   QuotaService* quota_service() override;
42   const OneShotEvent& ready() const override;
43   ContentVerifier* content_verifier() override;
44   scoped_ptr<ExtensionSet> GetDependentExtensions(
45       const Extension* extension) override;
46   DeclarativeUserScriptMaster* GetDeclarativeUserScriptMasterByExtension(
47       const ExtensionId& extension_id) override;
48
49  private:
50   content::BrowserContext* browser_context_;
51   OneShotEvent ready_;
52
53   DISALLOW_COPY_AND_ASSIGN(MockExtensionSystem);
54 };
55
56 // A factory to create a MockExtensionSystem. Sample use:
57 //
58 // MockExtensionSystemFactory<MockExtensionSystemSubclass> factory;
59 // TestExtensionsBrowserClient::set_extension_system_factory(factory);
60 template <typename T>
61 class MockExtensionSystemFactory : public ExtensionSystemProvider {
62  public:
63   MockExtensionSystemFactory()
64       : ExtensionSystemProvider(
65             "MockExtensionSystem",
66             BrowserContextDependencyManager::GetInstance()) {
67     DependsOn(ExtensionRegistryFactory::GetInstance());
68   }
69
70   virtual ~MockExtensionSystemFactory() {}
71
72   // BrowserContextKeyedServiceFactory overrides:
73   virtual KeyedService* BuildServiceInstanceFor(
74       content::BrowserContext* context) const override {
75     return new T(context);
76   }
77
78   // ExtensionSystemProvider overrides:
79   virtual ExtensionSystem* GetForBrowserContext(
80       content::BrowserContext* context) override {
81     return static_cast<ExtensionSystem*>(
82         GetServiceForBrowserContext(context, true));
83   }
84
85  private:
86   DISALLOW_COPY_AND_ASSIGN(MockExtensionSystemFactory);
87 };
88
89 }  // namespace extensions
90
91 #endif  // EXTENSIONS_BROWSER_MOCK_EXTENSION_SYSTEM_H_