1a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// found in the LICENSE file.
4a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
5a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#ifndef EXTENSIONS_BROWSER_TEST_EXTENSIONS_BROWSER_CLIENT_H_
6a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#define EXTENSIONS_BROWSER_TEST_EXTENSIONS_BROWSER_CLIENT_H_
7a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
8a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "base/compiler_specific.h"
9a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "extensions/browser/extensions_browser_client.h"
10a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
11a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)namespace extensions {
12a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
13a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// A simplified ExtensionsBrowserClient for a single normal browser context and
14a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// an optional incognito browser context associated with it. A test that uses
15a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// this class should call ExtensionsBrowserClient::Set() with its instance.
16a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class TestExtensionsBrowserClient : public ExtensionsBrowserClient {
17a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) public:
185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  // |main_context| is required and must not be an incognito context.
1946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  explicit TestExtensionsBrowserClient(content::BrowserContext* main_context);
20a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual ~TestExtensionsBrowserClient();
21a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  void set_process_manager_delegate(ProcessManagerDelegate* delegate) {
235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    process_manager_delegate_ = delegate;
245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  }
255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  void set_extension_system_factory(ExtensionSystemProvider* factory) {
265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    extension_system_factory_ = factory;
275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  }
285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
29a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  // Associates an incognito context with |main_context_|.
30a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  void SetIncognitoContext(content::BrowserContext* incognito_context);
31a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
32a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  // ExtensionsBrowserClient overrides:
33a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual bool IsShuttingDown() OVERRIDE;
34a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual bool AreExtensionsDisabled(const base::CommandLine& command_line,
35a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                     content::BrowserContext* context) OVERRIDE;
36a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual bool IsValidContext(content::BrowserContext* context) OVERRIDE;
37a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual bool IsSameContext(content::BrowserContext* first,
38a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                             content::BrowserContext* second) OVERRIDE;
39a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual bool HasOffTheRecordContext(content::BrowserContext* context)
40a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      OVERRIDE;
41a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual content::BrowserContext* GetOffTheRecordContext(
42a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      content::BrowserContext* context) OVERRIDE;
43a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual content::BrowserContext* GetOriginalContext(
44a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      content::BrowserContext* context) OVERRIDE;
45a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual bool IsGuestSession(content::BrowserContext* context) const OVERRIDE;
46a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual bool IsExtensionIncognitoEnabled(
47a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      const std::string& extension_id,
48a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      content::BrowserContext* context) const OVERRIDE;
49a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual bool CanExtensionCrossIncognito(
50a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      const extensions::Extension* extension,
51a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      content::BrowserContext* context) const OVERRIDE;
52a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  virtual net::URLRequestJob* MaybeCreateResourceBundleRequestJob(
53a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      net::URLRequest* request,
54a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      net::NetworkDelegate* network_delegate,
55a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      const base::FilePath& directory_path,
56a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      const std::string& content_security_policy,
57a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      bool send_cors_header) OVERRIDE;
58a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  virtual bool AllowCrossRendererResourceLoad(net::URLRequest* request,
59a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch                                              bool is_incognito,
60a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch                                              const Extension* extension,
61a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch                                              InfoMap* extension_info_map)
62a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      OVERRIDE;
63a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual PrefService* GetPrefServiceForContext(
64a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      content::BrowserContext* context) OVERRIDE;
65e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch  virtual void GetEarlyExtensionPrefsObservers(
66e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch      content::BrowserContext* context,
67e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch      std::vector<ExtensionPrefsObserver*>* observers) const OVERRIDE;
685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  virtual ProcessManagerDelegate* GetProcessManagerDelegate() const OVERRIDE;
6923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  virtual scoped_ptr<ExtensionHostDelegate> CreateExtensionHostDelegate()
70a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      OVERRIDE;
71a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual bool DidVersionUpdate(content::BrowserContext* context) OVERRIDE;
725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  virtual void PermitExternalProtocolHandler() OVERRIDE;
73a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual scoped_ptr<AppSorting> CreateAppSorting() OVERRIDE;
74a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual bool IsRunningInForcedAppMode() OVERRIDE;
75a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual ApiActivityMonitor* GetApiActivityMonitor(
76a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      content::BrowserContext* context) OVERRIDE;
77a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual ExtensionSystemProvider* GetExtensionSystemFactory() OVERRIDE;
78a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual void RegisterExtensionFunctions(
79a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      ExtensionFunctionRegistry* registry) const OVERRIDE;
80010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  virtual scoped_ptr<RuntimeAPIDelegate> CreateRuntimeAPIDelegate(
81010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      content::BrowserContext* context) const OVERRIDE;
826d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)  virtual ComponentExtensionResourceManager*
836d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)  GetComponentExtensionResourceManager() OVERRIDE;
841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual void BroadcastEventToRenderers(
851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      const std::string& event_name,
861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      scoped_ptr<base::ListValue> args) OVERRIDE;
875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  virtual net::NetLog* GetNetLog() OVERRIDE;
88a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
89a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) private:
90a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  content::BrowserContext* main_context_;       // Not owned.
91a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  content::BrowserContext* incognito_context_;  // Not owned, defaults to NULL.
92a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  // Not owned, defaults to NULL.
945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  ProcessManagerDelegate* process_manager_delegate_;
955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  // Not owned, defaults to NULL.
975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  ExtensionSystemProvider* extension_system_factory_;
985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
99a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(TestExtensionsBrowserClient);
100a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)};
101a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
102a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}  // namespace extensions
103a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
104a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#endif  // EXTENSIONS_BROWSER_TEST_EXTENSIONS_BROWSER_CLIENT_H_
105