1 // Copyright 2013 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 APPS_SHELL_BROWSER_SHELL_EXTENSION_SYSTEM_H_ 6 #define APPS_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 14 class BrowserContextKeyedServiceFactory; 15 16 namespace base { 17 class FilePath; 18 } 19 20 namespace content { 21 class BrowserContext; 22 } 23 24 namespace extensions { 25 26 class EventRouter; 27 class InfoMap; 28 class LazyBackgroundTaskQueue; 29 class ProcessManager; 30 class RendererStartupHelper; 31 32 // A simplified version of ExtensionSystem for app_shell. Allows 33 // app_shell to skip initialization of services it doesn't need. 34 class 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 extension()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() 61 OVERRIDE; 62 virtual EventRouter* event_router() OVERRIDE; 63 virtual ExtensionWarningService* warning_service() OVERRIDE; 64 virtual Blacklist* blacklist() OVERRIDE; 65 virtual ErrorConsole* error_console() OVERRIDE; 66 virtual InstallVerifier* install_verifier() OVERRIDE; 67 virtual QuotaService* quota_service() OVERRIDE; 68 virtual void RegisterExtensionWithRequestContexts( 69 const Extension* extension) OVERRIDE; 70 virtual void UnregisterExtensionWithRequestContexts( 71 const std::string& extension_id, 72 const UnloadedExtensionInfo::Reason reason) OVERRIDE; 73 virtual const OneShotEvent& ready() const OVERRIDE; 74 virtual ContentVerifier* content_verifier() OVERRIDE; 75 virtual scoped_ptr<ExtensionSet> GetDependentExtensions( 76 const Extension* extension) OVERRIDE; 77 78 private: 79 content::BrowserContext* browser_context_; // Not owned. 80 81 // Extension ID for the app. 82 std::string app_id_; 83 84 scoped_refptr<Extension> extension_; 85 86 // Data to be accessed on the IO thread. Must outlive process_manager_. 87 scoped_refptr<InfoMap> info_map_; 88 89 scoped_ptr<RuntimeData> runtime_data_; 90 scoped_ptr<LazyBackgroundTaskQueue> lazy_background_task_queue_; 91 scoped_ptr<EventRouter> event_router_; 92 scoped_ptr<ProcessManager> process_manager_; 93 scoped_ptr<QuotaService> quota_service_; 94 95 // Signaled when the extension system has completed its startup tasks. 96 OneShotEvent ready_; 97 98 DISALLOW_COPY_AND_ASSIGN(ShellExtensionSystem); 99 }; 100 101 } // namespace extensions 102 103 #endif // APPS_SHELL_BROWSER_SHELL_EXTENSION_SYSTEM_H_ 104