3c4a2c6d963c0e3a6da5a01c9aeef95627de4faa
[platform/framework/web/crosswalk.git] / src / chrome / browser / extensions / chrome_extensions_browser_client.h
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 CHROME_BROWSER_EXTENSIONS_CHROME_EXTENSIONS_BROWSER_CLIENT_H_
6 #define CHROME_BROWSER_EXTENSIONS_CHROME_EXTENSIONS_BROWSER_CLIENT_H_
7
8 #include <map>
9
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"
16
17 namespace base {
18 class CommandLine;
19 }
20
21 namespace content {
22 class BrowserContext;
23 }
24
25 namespace extensions {
26
27 class ChromeComponentExtensionResourceManager;
28 class ChromeExtensionsAPIClient;
29 class ContentSettingsPrefsObserver;
30
31 // Implementation of extensions::BrowserClient for Chrome, which includes
32 // knowledge of Profiles, BrowserContexts and incognito.
33 //
34 // NOTE: Methods that do not require knowledge of browser concepts should be
35 // implemented in ChromeExtensionsClient even if they are only used in the
36 // browser process (see chrome/common/extensions/chrome_extensions_client.h).
37 class ChromeExtensionsBrowserClient : public ExtensionsBrowserClient {
38  public:
39   ChromeExtensionsBrowserClient();
40   virtual ~ChromeExtensionsBrowserClient();
41
42   // BrowserClient overrides:
43   virtual bool IsShuttingDown() OVERRIDE;
44   virtual bool AreExtensionsDisabled(const base::CommandLine& command_line,
45                                      content::BrowserContext* context) OVERRIDE;
46   virtual bool IsValidContext(content::BrowserContext* context) OVERRIDE;
47   virtual bool IsSameContext(content::BrowserContext* first,
48                              content::BrowserContext* second) OVERRIDE;
49   virtual bool HasOffTheRecordContext(
50       content::BrowserContext* context) OVERRIDE;
51   virtual content::BrowserContext* GetOffTheRecordContext(
52       content::BrowserContext* context) OVERRIDE;
53   virtual content::BrowserContext* GetOriginalContext(
54       content::BrowserContext* context) OVERRIDE;
55   virtual bool IsGuestSession(content::BrowserContext* context) const OVERRIDE;
56   virtual bool IsExtensionIncognitoEnabled(
57       const std::string& extension_id,
58       content::BrowserContext* context) const OVERRIDE;
59   virtual bool CanExtensionCrossIncognito(
60       const extensions::Extension* extension,
61       content::BrowserContext* context) const OVERRIDE;
62   virtual bool IsWebViewRequest(net::URLRequest* request) 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,
70                                               bool is_incognito,
71                                               const Extension* extension,
72                                               InfoMap* extension_info_map)
73       OVERRIDE;
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 bool DeferLoadingBackgroundHosts(
80       content::BrowserContext* context) const OVERRIDE;
81   virtual bool IsBackgroundPageAllowed(
82       content::BrowserContext* context) const OVERRIDE;
83   virtual scoped_ptr<ExtensionHostDelegate> CreateExtensionHostDelegate()
84       OVERRIDE;
85   virtual bool DidVersionUpdate(content::BrowserContext* context) OVERRIDE;
86   virtual scoped_ptr<AppSorting> CreateAppSorting() OVERRIDE;
87   virtual bool IsRunningInForcedAppMode() OVERRIDE;
88   virtual ApiActivityMonitor* GetApiActivityMonitor(
89       content::BrowserContext* context) OVERRIDE;
90   virtual ExtensionSystemProvider* GetExtensionSystemFactory() OVERRIDE;
91   virtual void RegisterExtensionFunctions(
92       ExtensionFunctionRegistry* registry) const OVERRIDE;
93   virtual scoped_ptr<extensions::RuntimeAPIDelegate> CreateRuntimeAPIDelegate(
94       content::BrowserContext* context) const OVERRIDE;
95   virtual ComponentExtensionResourceManager*
96   GetComponentExtensionResourceManager() OVERRIDE;
97
98  private:
99   friend struct base::DefaultLazyInstanceTraits<ChromeExtensionsBrowserClient>;
100
101   // Observer for Chrome-specific notifications.
102   ChromeNotificationObserver notification_observer_;
103
104 #if defined(ENABLE_EXTENSIONS)
105   // Client for API implementations.
106   scoped_ptr<ChromeExtensionsAPIClient> api_client_;
107 #endif
108
109   scoped_ptr<ChromeComponentExtensionResourceManager> resource_manager_;
110
111   DISALLOW_COPY_AND_ASSIGN(ChromeExtensionsBrowserClient);
112 };
113
114 }  // namespace extensions
115
116 #endif  // CHROME_BROWSER_EXTENSIONS_CHROME_EXTENSIONS_BROWSER_CLIENT_H_