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 EXTENSIONS_SHELL_BROWSER_SHELL_EXTENSIONS_BROWSER_CLIENT_H_
6 #define EXTENSIONS_SHELL_BROWSER_SHELL_EXTENSIONS_BROWSER_CLIENT_H_
8 #include "base/compiler_specific.h"
9 #include "extensions/browser/extensions_browser_client.h"
13 namespace extensions
{
15 class ExtensionsAPIClient
;
17 // An ExtensionsBrowserClient that supports a single content::BrowserContent
18 // with no related incognito context.
19 class ShellExtensionsBrowserClient
: public ExtensionsBrowserClient
{
21 // |context| is the single BrowserContext used for IsValidContext() below.
22 explicit ShellExtensionsBrowserClient(content::BrowserContext
* context
);
23 virtual ~ShellExtensionsBrowserClient();
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(
33 content::BrowserContext
* context
) 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 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(
53 net::URLRequest
* request
,
55 const Extension
* extension
,
56 InfoMap
* extension_info_map
) 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 ProcessManagerDelegate
* GetProcessManagerDelegate() const OVERRIDE
;
63 virtual scoped_ptr
<ExtensionHostDelegate
> CreateExtensionHostDelegate()
65 virtual bool DidVersionUpdate(content::BrowserContext
* context
) OVERRIDE
;
66 virtual void PermitExternalProtocolHandler() OVERRIDE
;
67 virtual scoped_ptr
<AppSorting
> CreateAppSorting() OVERRIDE
;
68 virtual bool IsRunningInForcedAppMode() OVERRIDE
;
69 virtual ApiActivityMonitor
* GetApiActivityMonitor(
70 content::BrowserContext
* context
) OVERRIDE
;
71 virtual ExtensionSystemProvider
* GetExtensionSystemFactory() OVERRIDE
;
72 virtual void RegisterExtensionFunctions(
73 ExtensionFunctionRegistry
* registry
) const OVERRIDE
;
74 virtual scoped_ptr
<RuntimeAPIDelegate
> CreateRuntimeAPIDelegate(
75 content::BrowserContext
* context
) const OVERRIDE
;
76 virtual ComponentExtensionResourceManager
*
77 GetComponentExtensionResourceManager() OVERRIDE
;
78 virtual net::NetLog
* GetNetLog() OVERRIDE
;
81 // The single BrowserContext for app_shell. Not owned.
82 content::BrowserContext
* browser_context_
;
84 // Support for extension APIs.
85 scoped_ptr
<ExtensionsAPIClient
> api_client_
;
87 // The PrefService for |browser_context_|.
88 scoped_ptr
<PrefService
> prefs_
;
90 DISALLOW_COPY_AND_ASSIGN(ShellExtensionsBrowserClient
);
93 } // namespace extensions
95 #endif // EXTENSIONS_SHELL_BROWSER_SHELL_EXTENSIONS_BROWSER_CLIENT_H_