shell_extensions_browser_client.h revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
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.
4
5#ifndef EXTENSIONS_SHELL_BROWSER_SHELL_EXTENSIONS_BROWSER_CLIENT_H_
6#define EXTENSIONS_SHELL_BROWSER_SHELL_EXTENSIONS_BROWSER_CLIENT_H_
7
8#include "base/compiler_specific.h"
9#include "extensions/browser/extensions_browser_client.h"
10
11class PrefService;
12
13namespace extensions {
14
15class ExtensionsAPIClient;
16
17// An ExtensionsBrowserClient that supports a single content::BrowserContent
18// with no related incognito context.
19class 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(
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 net::URLRequestJob* MaybeCreateResourceBundleRequestJob(
46      net::URLRequest* request,
47      net::NetworkDelegate* network_delegate,
48      const base::FilePath& directory_path,
49      const std::string& content_security_policy,
50      bool send_cors_header) OVERRIDE;
51  virtual bool AllowCrossRendererResourceLoad(
52      net::URLRequest* request,
53      bool is_incognito,
54      const Extension* extension,
55      InfoMap* extension_info_map) OVERRIDE;
56  virtual PrefService* GetPrefServiceForContext(
57      content::BrowserContext* context) OVERRIDE;
58  virtual void GetEarlyExtensionPrefsObservers(
59      content::BrowserContext* context,
60      std::vector<ExtensionPrefsObserver*>* observers) const OVERRIDE;
61  virtual ProcessManagerDelegate* GetProcessManagerDelegate() const OVERRIDE;
62  virtual scoped_ptr<ExtensionHostDelegate> CreateExtensionHostDelegate()
63      OVERRIDE;
64  virtual bool DidVersionUpdate(content::BrowserContext* context) OVERRIDE;
65  virtual void PermitExternalProtocolHandler() OVERRIDE;
66  virtual scoped_ptr<AppSorting> CreateAppSorting() OVERRIDE;
67  virtual bool IsRunningInForcedAppMode() OVERRIDE;
68  virtual ApiActivityMonitor* GetApiActivityMonitor(
69      content::BrowserContext* context) OVERRIDE;
70  virtual ExtensionSystemProvider* GetExtensionSystemFactory() OVERRIDE;
71  virtual void RegisterExtensionFunctions(
72      ExtensionFunctionRegistry* registry) const OVERRIDE;
73  virtual scoped_ptr<RuntimeAPIDelegate> CreateRuntimeAPIDelegate(
74      content::BrowserContext* context) const OVERRIDE;
75  virtual ComponentExtensionResourceManager*
76      GetComponentExtensionResourceManager() OVERRIDE;
77  virtual void BroadcastEventToRenderers(
78      const std::string& event_name,
79      scoped_ptr<base::ListValue> args) OVERRIDE;
80  virtual net::NetLog* GetNetLog() 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  // EXTENSIONS_SHELL_BROWSER_SHELL_EXTENSIONS_BROWSER_CLIENT_H_
98