blob: ee572fae7981186a5f417f603c919937c0669d4e [file] [log] [blame]
[email protected]b9f6ba32014-03-10 18:34:081// 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_BROWSER_TEST_EXTENSIONS_BROWSER_CLIENT_H_
6#define EXTENSIONS_BROWSER_TEST_EXTENSIONS_BROWSER_CLIENT_H_
7
asargent631a99a2015-10-15 21:51:488#include <string>
dchenge59eca1602015-12-18 17:48:009#include <utility>
asargent631a99a2015-10-15 21:51:4810#include <vector>
11
12#include "base/callback.h"
[email protected]b9f6ba32014-03-10 18:34:0813#include "base/compiler_specific.h"
avic9cec102015-12-23 00:39:2614#include "base/macros.h"
asargent631a99a2015-10-15 21:51:4815#include "base/memory/ref_counted.h"
avic9cec102015-12-23 00:39:2616#include "build/build_config.h"
asargent631a99a2015-10-15 21:51:4817#include "components/update_client/update_client.h"
[email protected]b9f6ba32014-03-10 18:34:0818#include "extensions/browser/extensions_browser_client.h"
rockotffa65b12014-10-14 17:19:0619#include "extensions/browser/updater/extension_cache.h"
[email protected]b9f6ba32014-03-10 18:34:0820
21namespace extensions {
steelc8e6ede2016-09-29 00:56:2722class KioskDelegate;
[email protected]b9f6ba32014-03-10 18:34:0823
24// A simplified ExtensionsBrowserClient for a single normal browser context and
25// an optional incognito browser context associated with it. A test that uses
26// this class should call ExtensionsBrowserClient::Set() with its instance.
27class TestExtensionsBrowserClient : public ExtensionsBrowserClient {
28 public:
[email protected]6b54fda2014-07-22 02:13:4729 // |main_context| is required and must not be an incognito context.
[email protected]883346042014-06-03 12:04:3330 explicit TestExtensionsBrowserClient(content::BrowserContext* main_context);
dcheng9168b2f2014-10-21 12:38:2431 ~TestExtensionsBrowserClient() override;
[email protected]b9f6ba32014-03-10 18:34:0832
[email protected]6b54fda2014-07-22 02:13:4733 void set_process_manager_delegate(ProcessManagerDelegate* delegate) {
34 process_manager_delegate_ = delegate;
35 }
[email protected]9fc5bdc82014-08-03 23:49:2636 void set_extension_system_factory(ExtensionSystemProvider* factory) {
37 extension_system_factory_ = factory;
38 }
dchengf5d241082016-04-21 03:43:1139 void set_extension_cache(std::unique_ptr<ExtensionCache> extension_cache) {
dchenge59eca1602015-12-18 17:48:0040 extension_cache_ = std::move(extension_cache);
rockotffa65b12014-10-14 17:19:0641 }
[email protected]6b54fda2014-07-22 02:13:4742
asargent631a99a2015-10-15 21:51:4843 // Sets a factory to respond to calls of the CreateUpdateClient method.
44 void SetUpdateClientFactory(
45 const base::Callback<update_client::UpdateClient*(void)>& factory);
46
[email protected]b9f6ba32014-03-10 18:34:0847 // Associates an incognito context with |main_context_|.
48 void SetIncognitoContext(content::BrowserContext* incognito_context);
49
50 // ExtensionsBrowserClient overrides:
dcheng9168b2f2014-10-21 12:38:2451 bool IsShuttingDown() override;
52 bool AreExtensionsDisabled(const base::CommandLine& command_line,
53 content::BrowserContext* context) override;
54 bool IsValidContext(content::BrowserContext* context) override;
55 bool IsSameContext(content::BrowserContext* first,
56 content::BrowserContext* second) override;
57 bool HasOffTheRecordContext(content::BrowserContext* context) override;
58 content::BrowserContext* GetOffTheRecordContext(
mostynb0eac4e1b2014-10-03 16:32:1959 content::BrowserContext* context) override;
dcheng9168b2f2014-10-21 12:38:2460 content::BrowserContext* GetOriginalContext(
mostynb0eac4e1b2014-10-03 16:32:1961 content::BrowserContext* context) override;
stevenjbd194dd1362015-01-28 17:30:0862#if defined(OS_CHROMEOS)
63 std::string GetUserIdHashFromContext(
64 content::BrowserContext* context) override;
65#endif
dcheng9168b2f2014-10-21 12:38:2466 bool IsGuestSession(content::BrowserContext* context) const override;
67 bool IsExtensionIncognitoEnabled(
[email protected]b9f6ba32014-03-10 18:34:0868 const std::string& extension_id,
mostynb0eac4e1b2014-10-03 16:32:1969 content::BrowserContext* context) const override;
dcheng9168b2f2014-10-21 12:38:2470 bool CanExtensionCrossIncognito(
[email protected]b9f6ba32014-03-10 18:34:0871 const extensions::Extension* extension,
mostynb0eac4e1b2014-10-03 16:32:1972 content::BrowserContext* context) const override;
dcheng9168b2f2014-10-21 12:38:2473 net::URLRequestJob* MaybeCreateResourceBundleRequestJob(
[email protected]1791e6c92014-04-11 08:29:0174 net::URLRequest* request,
75 net::NetworkDelegate* network_delegate,
76 const base::FilePath& directory_path,
77 const std::string& content_security_policy,
mostynb0eac4e1b2014-10-03 16:32:1978 bool send_cors_header) override;
dcheng9168b2f2014-10-21 12:38:2479 bool AllowCrossRendererResourceLoad(net::URLRequest* request,
80 bool is_incognito,
81 const Extension* extension,
82 InfoMap* extension_info_map) override;
83 PrefService* GetPrefServiceForContext(
mostynb0eac4e1b2014-10-03 16:32:1984 content::BrowserContext* context) override;
dcheng9168b2f2014-10-21 12:38:2485 void GetEarlyExtensionPrefsObservers(
[email protected]d31e2482014-04-02 22:52:2086 content::BrowserContext* context,
mostynb0eac4e1b2014-10-03 16:32:1987 std::vector<ExtensionPrefsObserver*>* observers) const override;
dcheng9168b2f2014-10-21 12:38:2488 ProcessManagerDelegate* GetProcessManagerDelegate() const override;
dchengf5d241082016-04-21 03:43:1189 std::unique_ptr<ExtensionHostDelegate> CreateExtensionHostDelegate() override;
dcheng9168b2f2014-10-21 12:38:2490 bool DidVersionUpdate(content::BrowserContext* context) override;
91 void PermitExternalProtocolHandler() override;
dcheng9168b2f2014-10-21 12:38:2492 bool IsRunningInForcedAppMode() override;
kelvinp1b80b8f2015-10-01 01:22:1393 bool IsLoggedInAsPublicAccount() override;
dcheng9168b2f2014-10-21 12:38:2494 ExtensionSystemProvider* GetExtensionSystemFactory() override;
95 void RegisterExtensionFunctions(
mostynb0eac4e1b2014-10-03 16:32:1996 ExtensionFunctionRegistry* registry) const override;
kmarshall166e5b42015-04-03 22:29:4397 void RegisterMojoServices(content::RenderFrameHost* render_frame_host,
98 const Extension* extension) const override;
dchengf5d241082016-04-21 03:43:1199 std::unique_ptr<RuntimeAPIDelegate> CreateRuntimeAPIDelegate(
mostynb0eac4e1b2014-10-03 16:32:19100 content::BrowserContext* context) const override;
mukaiee458c92015-01-06 01:30:33101 const ComponentExtensionResourceManager*
102 GetComponentExtensionResourceManager() override;
dchengf5d241082016-04-21 03:43:11103 void BroadcastEventToRenderers(
104 events::HistogramValue histogram_value,
105 const std::string& event_name,
106 std::unique_ptr<base::ListValue> args) override;
dcheng9168b2f2014-10-21 12:38:24107 net::NetLog* GetNetLog() override;
108 ExtensionCache* GetExtensionCache() override;
109 bool IsBackgroundUpdateAllowed() override;
110 bool IsMinBrowserVersionSupported(const std::string& min_version) override;
rdevlin.cronincb2ec659a2015-06-10 23:32:41111 ExtensionWebContentsObserver* GetExtensionWebContentsObserver(
112 content::WebContents* web_contents) override;
steelc8e6ede2016-09-29 00:56:27113 KioskDelegate* GetKioskDelegate() override;
asargent631a99a2015-10-15 21:51:48114 scoped_refptr<update_client::UpdateClient> CreateUpdateClient(
115 content::BrowserContext* context) override;
[email protected]b9f6ba32014-03-10 18:34:08116
afakhry2bd481832016-06-16 16:17:24117 ExtensionSystemProvider* extension_system_factory() {
118 return extension_system_factory_;
119 }
120
[email protected]b9f6ba32014-03-10 18:34:08121 private:
122 content::BrowserContext* main_context_; // Not owned.
123 content::BrowserContext* incognito_context_; // Not owned, defaults to NULL.
124
[email protected]6b54fda2014-07-22 02:13:47125 // Not owned, defaults to NULL.
126 ProcessManagerDelegate* process_manager_delegate_;
127
[email protected]9fc5bdc82014-08-03 23:49:26128 // Not owned, defaults to NULL.
129 ExtensionSystemProvider* extension_system_factory_;
130
dchengf5d241082016-04-21 03:43:11131 std::unique_ptr<ExtensionCache> extension_cache_;
rockotffa65b12014-10-14 17:19:06132
asargent631a99a2015-10-15 21:51:48133 base::Callback<update_client::UpdateClient*(void)> update_client_factory_;
134
[email protected]b9f6ba32014-03-10 18:34:08135 DISALLOW_COPY_AND_ASSIGN(TestExtensionsBrowserClient);
136};
137
138} // namespace extensions
139
140#endif // EXTENSIONS_BROWSER_TEST_EXTENSIONS_BROWSER_CLIENT_H_