shell_extension_system.h revision 5f1c94371a64b3196d4be9466099bb892df9b88e
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_SHELL_BROWSER_SHELL_EXTENSION_SYSTEM_H_
6#define EXTENSIONS_SHELL_BROWSER_SHELL_EXTENSION_SYSTEM_H_
7
8#include <vector>
9
10#include "base/compiler_specific.h"
11#include "extensions/browser/extension_system.h"
12#include "extensions/common/one_shot_event.h"
13
14class BrowserContextKeyedServiceFactory;
15
16namespace base {
17class FilePath;
18}
19
20namespace content {
21class BrowserContext;
22}
23
24namespace extensions {
25
26class EventRouter;
27class InfoMap;
28class LazyBackgroundTaskQueue;
29class ProcessManager;
30class RendererStartupHelper;
31
32// A simplified version of ExtensionSystem for app_shell. Allows
33// app_shell to skip initialization of services it doesn't need.
34class ShellExtensionSystem : public ExtensionSystem {
35 public:
36  explicit ShellExtensionSystem(content::BrowserContext* browser_context);
37  virtual ~ShellExtensionSystem();
38
39  // Loads an unpacked application from a directory. Returns true on success.
40  bool LoadApp(const base::FilePath& app_dir);
41
42  // Launch the currently loaded app.
43  void LaunchApp();
44
45  // KeyedService implementation:
46  virtual void Shutdown() OVERRIDE;
47
48  scoped_refptr<Extension> extension() { return extension_; }
49
50  // ExtensionSystem implementation:
51  virtual void InitForRegularProfile(bool extensions_enabled) OVERRIDE;
52  virtual ExtensionService* extension_service() OVERRIDE;
53  virtual RuntimeData* runtime_data() OVERRIDE;
54  virtual ManagementPolicy* management_policy() OVERRIDE;
55  virtual UserScriptMaster* user_script_master() OVERRIDE;
56  virtual ProcessManager* process_manager() OVERRIDE;
57  virtual StateStore* state_store() OVERRIDE;
58  virtual StateStore* rules_store() OVERRIDE;
59  virtual InfoMap* info_map() OVERRIDE;
60  virtual LazyBackgroundTaskQueue* lazy_background_task_queue() OVERRIDE;
61  virtual EventRouter* event_router() OVERRIDE;
62  virtual ExtensionWarningService* warning_service() OVERRIDE;
63  virtual Blacklist* blacklist() OVERRIDE;
64  virtual ErrorConsole* error_console() OVERRIDE;
65  virtual InstallVerifier* install_verifier() OVERRIDE;
66  virtual QuotaService* quota_service() OVERRIDE;
67  virtual void RegisterExtensionWithRequestContexts(
68      const Extension* extension) OVERRIDE;
69  virtual void UnregisterExtensionWithRequestContexts(
70      const std::string& extension_id,
71      const UnloadedExtensionInfo::Reason reason) OVERRIDE;
72  virtual const OneShotEvent& ready() const OVERRIDE;
73  virtual ContentVerifier* content_verifier() OVERRIDE;
74  virtual scoped_ptr<ExtensionSet> GetDependentExtensions(
75      const Extension* extension) OVERRIDE;
76
77 private:
78  content::BrowserContext* browser_context_;  // Not owned.
79
80  // Extension ID for the app.
81  std::string app_id_;
82
83  scoped_refptr<Extension> extension_;
84
85  // Data to be accessed on the IO thread. Must outlive process_manager_.
86  scoped_refptr<InfoMap> info_map_;
87
88  scoped_ptr<RuntimeData> runtime_data_;
89  scoped_ptr<LazyBackgroundTaskQueue> lazy_background_task_queue_;
90  scoped_ptr<EventRouter> event_router_;
91  scoped_ptr<ProcessManager> process_manager_;
92  scoped_ptr<QuotaService> quota_service_;
93
94  // Signaled when the extension system has completed its startup tasks.
95  OneShotEvent ready_;
96
97  DISALLOW_COPY_AND_ASSIGN(ShellExtensionSystem);
98};
99
100}  // namespace extensions
101
102#endif  // EXTENSIONS_SHELL_BROWSER_SHELL_EXTENSION_SYSTEM_H_
103