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