• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
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(
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