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.
5 #ifndef CHROME_BROWSER_EXTENSIONS_CHROME_EXTENSIONS_BROWSER_CLIENT_H_
6 #define CHROME_BROWSER_EXTENSIONS_CHROME_EXTENSIONS_BROWSER_CLIENT_H_
10 #include "base/basictypes.h"
11 #include "base/compiler_specific.h"
12 #include "base/lazy_instance.h"
13 #include "base/memory/scoped_ptr.h"
14 #include "chrome/browser/extensions/chrome_notification_observer.h"
15 #include "extensions/browser/extensions_browser_client.h"
25 namespace extensions {
27 class ChromeComponentExtensionResourceManager;
28 class ChromeExtensionsAPIClient;
29 class ChromeProcessManagerDelegate;
30 class ContentSettingsPrefsObserver;
32 // Implementation of extensions::BrowserClient for Chrome, which includes
33 // knowledge of Profiles, BrowserContexts and incognito.
35 // NOTE: Methods that do not require knowledge of browser concepts should be
36 // implemented in ChromeExtensionsClient even if they are only used in the
37 // browser process (see chrome/common/extensions/chrome_extensions_client.h).
38 class ChromeExtensionsBrowserClient : public ExtensionsBrowserClient {
40 ChromeExtensionsBrowserClient();
41 virtual ~ChromeExtensionsBrowserClient();
43 // BrowserClient overrides:
44 virtual bool IsShuttingDown() OVERRIDE;
45 virtual bool AreExtensionsDisabled(const base::CommandLine& command_line,
46 content::BrowserContext* context) OVERRIDE;
47 virtual bool IsValidContext(content::BrowserContext* context) OVERRIDE;
48 virtual bool IsSameContext(content::BrowserContext* first,
49 content::BrowserContext* second) OVERRIDE;
50 virtual bool HasOffTheRecordContext(
51 content::BrowserContext* context) OVERRIDE;
52 virtual content::BrowserContext* GetOffTheRecordContext(
53 content::BrowserContext* context) OVERRIDE;
54 virtual content::BrowserContext* GetOriginalContext(
55 content::BrowserContext* context) OVERRIDE;
56 virtual bool IsGuestSession(content::BrowserContext* context) const OVERRIDE;
57 virtual bool IsExtensionIncognitoEnabled(
58 const std::string& extension_id,
59 content::BrowserContext* context) const OVERRIDE;
60 virtual bool CanExtensionCrossIncognito(
61 const extensions::Extension* extension,
62 content::BrowserContext* context) const OVERRIDE;
63 virtual net::URLRequestJob* MaybeCreateResourceBundleRequestJob(
64 net::URLRequest* request,
65 net::NetworkDelegate* network_delegate,
66 const base::FilePath& directory_path,
67 const std::string& content_security_policy,
68 bool send_cors_header) OVERRIDE;
69 virtual bool AllowCrossRendererResourceLoad(net::URLRequest* request,
71 const Extension* extension,
72 InfoMap* extension_info_map)
74 virtual PrefService* GetPrefServiceForContext(
75 content::BrowserContext* context) OVERRIDE;
76 virtual void GetEarlyExtensionPrefsObservers(
77 content::BrowserContext* context,
78 std::vector<ExtensionPrefsObserver*>* observers) const OVERRIDE;
79 virtual ProcessManagerDelegate* GetProcessManagerDelegate() const OVERRIDE;
80 virtual scoped_ptr<ExtensionHostDelegate> CreateExtensionHostDelegate()
82 virtual bool DidVersionUpdate(content::BrowserContext* context) OVERRIDE;
83 virtual void PermitExternalProtocolHandler() OVERRIDE;
84 virtual scoped_ptr<AppSorting> CreateAppSorting() OVERRIDE;
85 virtual bool IsRunningInForcedAppMode() OVERRIDE;
86 virtual ApiActivityMonitor* GetApiActivityMonitor(
87 content::BrowserContext* context) OVERRIDE;
88 virtual ExtensionSystemProvider* GetExtensionSystemFactory() OVERRIDE;
89 virtual void RegisterExtensionFunctions(
90 ExtensionFunctionRegistry* registry) const OVERRIDE;
91 virtual scoped_ptr<extensions::RuntimeAPIDelegate> CreateRuntimeAPIDelegate(
92 content::BrowserContext* context) const OVERRIDE;
93 virtual ComponentExtensionResourceManager*
94 GetComponentExtensionResourceManager() OVERRIDE;
95 virtual void BroadcastEventToRenderers(
96 const std::string& event_name,
97 scoped_ptr<base::ListValue> args) OVERRIDE;
98 virtual net::NetLog* GetNetLog() OVERRIDE;
101 friend struct base::DefaultLazyInstanceTraits<ChromeExtensionsBrowserClient>;
103 // Observer for Chrome-specific notifications.
104 ChromeNotificationObserver notification_observer_;
106 // Support for ProcessManager.
107 scoped_ptr<ChromeProcessManagerDelegate> process_manager_delegate_;
109 // Client for API implementations.
110 scoped_ptr<ChromeExtensionsAPIClient> api_client_;
112 scoped_ptr<ChromeComponentExtensionResourceManager> resource_manager_;
114 DISALLOW_COPY_AND_ASSIGN(ChromeExtensionsBrowserClient);
117 } // namespace extensions
119 #endif // CHROME_BROWSER_EXTENSIONS_CHROME_EXTENSIONS_BROWSER_CLIENT_H_