[sessions]: Componentize TabRestore code
[chromium-blink-merge.git] / chrome / browser / extensions / extension_system_impl.h
blob49369ff807752e92e545d44bbfb954863764b728
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.
5 #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_SYSTEM_IMPL_H_
6 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_SYSTEM_IMPL_H_
8 #include "extensions/browser/extension_system.h"
9 #include "extensions/common/one_shot_event.h"
11 class Profile;
13 namespace extensions {
15 class ExtensionSystemSharedFactory;
16 class NavigationObserver;
17 class StateStoreNotificationObserver;
19 // The ExtensionSystem for ProfileImpl and OffTheRecordProfileImpl.
20 // Implementation details: non-shared services are owned by
21 // ExtensionSystemImpl, a KeyedService with separate incognito
22 // instances. A private Shared class (also a KeyedService,
23 // but with a shared instance for incognito) keeps the common services.
24 class ExtensionSystemImpl : public ExtensionSystem {
25 public:
26 explicit ExtensionSystemImpl(Profile* profile);
27 ~ExtensionSystemImpl() override;
29 // KeyedService implementation.
30 void Shutdown() override;
32 void InitForRegularProfile(bool extensions_enabled) override;
34 ExtensionService* extension_service() override; // shared
35 RuntimeData* runtime_data() override; // shared
36 ManagementPolicy* management_policy() override; // shared
37 ServiceWorkerManager* service_worker_manager() override; // shared
38 SharedUserScriptMaster* shared_user_script_master() override; // shared
39 StateStore* state_store() override; // shared
40 StateStore* rules_store() override; // shared
41 InfoMap* info_map() override; // shared
42 QuotaService* quota_service() override; // shared
43 AppSorting* app_sorting() override; // shared
45 void RegisterExtensionWithRequestContexts(
46 const Extension* extension,
47 const base::Closure& callback) override;
49 void UnregisterExtensionWithRequestContexts(
50 const std::string& extension_id,
51 const UnloadedExtensionInfo::Reason reason) override;
53 const OneShotEvent& ready() const override;
54 ContentVerifier* content_verifier() override; // shared
55 scoped_ptr<ExtensionSet> GetDependentExtensions(
56 const Extension* extension) override;
58 private:
59 friend class ExtensionSystemSharedFactory;
61 // Owns the Extension-related systems that have a single instance
62 // shared between normal and incognito profiles.
63 class Shared : public KeyedService {
64 public:
65 explicit Shared(Profile* profile);
66 ~Shared() override;
68 // Initialization takes place in phases.
69 virtual void InitPrefs();
70 // This must not be called until all the providers have been created.
71 void RegisterManagementPolicyProviders();
72 void Init(bool extensions_enabled);
74 // KeyedService implementation.
75 void Shutdown() override;
77 StateStore* state_store();
78 StateStore* rules_store();
79 ExtensionService* extension_service();
80 RuntimeData* runtime_data();
81 ManagementPolicy* management_policy();
82 ServiceWorkerManager* service_worker_manager();
83 SharedUserScriptMaster* shared_user_script_master();
84 InfoMap* info_map();
85 QuotaService* quota_service();
86 AppSorting* app_sorting();
87 const OneShotEvent& ready() const { return ready_; }
88 ContentVerifier* content_verifier();
90 private:
91 Profile* profile_;
93 // The services that are shared between normal and incognito profiles.
95 scoped_ptr<StateStore> state_store_;
96 scoped_ptr<StateStoreNotificationObserver>
97 state_store_notification_observer_;
98 scoped_ptr<StateStore> rules_store_;
99 scoped_ptr<NavigationObserver> navigation_observer_;
100 scoped_ptr<ServiceWorkerManager> service_worker_manager_;
101 // Shared memory region manager for scripts statically declared in extension
102 // manifests. This region is shared between all extensions.
103 scoped_ptr<SharedUserScriptMaster> shared_user_script_master_;
104 scoped_ptr<RuntimeData> runtime_data_;
105 // ExtensionService depends on StateStore, Blacklist and RuntimeData.
106 scoped_ptr<ExtensionService> extension_service_;
107 scoped_ptr<ManagementPolicy> management_policy_;
108 // extension_info_map_ needs to outlive process_manager_.
109 scoped_refptr<InfoMap> extension_info_map_;
110 scoped_ptr<QuotaService> quota_service_;
111 scoped_ptr<AppSorting> app_sorting_;
113 // For verifying the contents of extensions read from disk.
114 scoped_refptr<ContentVerifier> content_verifier_;
116 #if defined(OS_CHROMEOS)
117 scoped_ptr<chromeos::DeviceLocalAccountManagementPolicyProvider>
118 device_local_account_management_policy_provider_;
119 #endif
121 OneShotEvent ready_;
124 Profile* profile_;
126 Shared* shared_;
128 DISALLOW_COPY_AND_ASSIGN(ExtensionSystemImpl);
131 } // namespace extensions
133 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_SYSTEM_IMPL_H_