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_EXTENSIONS_BROWSER_CLIENT_H_ 6 #define APPS_SHELL_BROWSER_SHELL_EXTENSIONS_BROWSER_CLIENT_H_ 7 8 #include "base/compiler_specific.h" 9 #include "extensions/browser/extensions_browser_client.h" 10 11 class PrefService; 12 13 namespace extensions { 14 15 class ExtensionsAPIClient; 16 17 // An ExtensionsBrowserClient that supports a single content::BrowserContent 18 // with no related incognito context. 19 class ShellExtensionsBrowserClient : public ExtensionsBrowserClient { 20 public: 21 // |context| is the single BrowserContext used for IsValidContext() below. 22 explicit ShellExtensionsBrowserClient(content::BrowserContext* context); 23 virtual ~ShellExtensionsBrowserClient(); 24 25 // ExtensionsBrowserClient overrides: 26 virtual bool IsShuttingDown() OVERRIDE; 27 virtual bool AreExtensionsDisabled(const base::CommandLine& command_line, 28 content::BrowserContext* context) OVERRIDE; 29 virtual bool IsValidContext(content::BrowserContext* context) OVERRIDE; 30 virtual bool IsSameContext(content::BrowserContext* first, 31 content::BrowserContext* second) OVERRIDE; 32 virtual bool HasOffTheRecordContext(content::BrowserContext* context) 33 OVERRIDE; 34 virtual content::BrowserContext* GetOffTheRecordContext( 35 content::BrowserContext* context) OVERRIDE; 36 virtual content::BrowserContext* GetOriginalContext( 37 content::BrowserContext* context) OVERRIDE; 38 virtual bool IsGuestSession(content::BrowserContext* context) const OVERRIDE; 39 virtual bool IsExtensionIncognitoEnabled( 40 const std::string& extension_id, 41 content::BrowserContext* context) const OVERRIDE; 42 virtual bool CanExtensionCrossIncognito( 43 const extensions::Extension* extension, 44 content::BrowserContext* context) const OVERRIDE; 45 virtual bool IsWebViewRequest(net::URLRequest* request) const OVERRIDE; 46 virtual net::URLRequestJob* MaybeCreateResourceBundleRequestJob( 47 net::URLRequest* request, 48 net::NetworkDelegate* network_delegate, 49 const base::FilePath& directory_path, 50 const std::string& content_security_policy, 51 bool send_cors_header) OVERRIDE; 52 virtual bool AllowCrossRendererResourceLoad(net::URLRequest* request, 53 bool is_incognito, 54 const Extension* extension, 55 InfoMap* extension_info_map) 56 OVERRIDE; 57 virtual PrefService* GetPrefServiceForContext( 58 content::BrowserContext* context) OVERRIDE; 59 virtual void GetEarlyExtensionPrefsObservers( 60 content::BrowserContext* context, 61 std::vector<ExtensionPrefsObserver*>* observers) const OVERRIDE; 62 virtual bool DeferLoadingBackgroundHosts(content::BrowserContext* context) 63 const OVERRIDE; 64 virtual bool IsBackgroundPageAllowed(content::BrowserContext* context) 65 const OVERRIDE; 66 virtual scoped_ptr<ExtensionHostDelegate> CreateExtensionHostDelegate() 67 OVERRIDE; 68 virtual bool DidVersionUpdate(content::BrowserContext* context) OVERRIDE; 69 virtual void PermitExternalProtocolHandler() OVERRIDE; 70 virtual scoped_ptr<AppSorting> CreateAppSorting() OVERRIDE; 71 virtual bool IsRunningInForcedAppMode() OVERRIDE; 72 virtual ApiActivityMonitor* GetApiActivityMonitor( 73 content::BrowserContext* context) OVERRIDE; 74 virtual ExtensionSystemProvider* GetExtensionSystemFactory() OVERRIDE; 75 virtual void RegisterExtensionFunctions( 76 ExtensionFunctionRegistry* registry) const OVERRIDE; 77 virtual scoped_ptr<RuntimeAPIDelegate> CreateRuntimeAPIDelegate( 78 content::BrowserContext* context) const OVERRIDE; 79 virtual ComponentExtensionResourceManager* 80 GetComponentExtensionResourceManager() OVERRIDE; 81 82 private: 83 // The single BrowserContext for app_shell. Not owned. 84 content::BrowserContext* browser_context_; 85 86 // Support for extension APIs. 87 scoped_ptr<ExtensionsAPIClient> api_client_; 88 89 // The PrefService for |browser_context_|. 90 scoped_ptr<PrefService> prefs_; 91 92 DISALLOW_COPY_AND_ASSIGN(ShellExtensionsBrowserClient); 93 }; 94 95 } // namespace extensions 96 97 #endif // APPS_SHELL_BROWSER_SHELL_EXTENSIONS_BROWSER_CLIENT_H_ 98