blob: 8ea62be6e6685eb53db295eff770391c8d93f322 [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
tbarzicd9a88fc92017-07-14 02:18:108#include <memory>
asargent631a99a2015-10-15 21:51:489#include <string>
dchenge59eca1602015-12-18 17:48:0010#include <utility>
asargent631a99a2015-10-15 21:51:4811#include <vector>
12
13#include "base/callback.h"
[email protected]b9f6ba32014-03-10 18:34:0814#include "base/compiler_specific.h"
avic9cec102015-12-23 00:39:2615#include "base/macros.h"
asargent631a99a2015-10-15 21:51:4816#include "base/memory/ref_counted.h"
avic9cec102015-12-23 00:39:2617#include "build/build_config.h"
asargent631a99a2015-10-15 21:51:4818#include "components/update_client/update_client.h"
[email protected]b9f6ba32014-03-10 18:34:0819#include "extensions/browser/extensions_browser_client.h"
rockotffa65b12014-10-14 17:19:0620#include "extensions/browser/updater/extension_cache.h"
[email protected]b9f6ba32014-03-10 18:34:0821
22namespace extensions {
steelc8e6ede2016-09-29 00:56:2723class KioskDelegate;
[email protected]b9f6ba32014-03-10 18:34:0824
25// A simplified ExtensionsBrowserClient for a single normal browser context and
26// an optional incognito browser context associated with it. A test that uses
27// this class should call ExtensionsBrowserClient::Set() with its instance.
28class TestExtensionsBrowserClient : public ExtensionsBrowserClient {
29 public:
[email protected]6b54fda2014-07-22 02:13:4730 // |main_context| is required and must not be an incognito context.
[email protected]883346042014-06-03 12:04:3331 explicit TestExtensionsBrowserClient(content::BrowserContext* main_context);
dcheng9168b2f2014-10-21 12:38:2432 ~TestExtensionsBrowserClient() override;
[email protected]b9f6ba32014-03-10 18:34:0833
[email protected]6b54fda2014-07-22 02:13:4734 void set_process_manager_delegate(ProcessManagerDelegate* delegate) {
35 process_manager_delegate_ = delegate;
36 }
[email protected]9fc5bdc82014-08-03 23:49:2637 void set_extension_system_factory(ExtensionSystemProvider* factory) {
38 extension_system_factory_ = factory;
39 }
dchengf5d241082016-04-21 03:43:1140 void set_extension_cache(std::unique_ptr<ExtensionCache> extension_cache) {
dchenge59eca1602015-12-18 17:48:0041 extension_cache_ = std::move(extension_cache);
rockotffa65b12014-10-14 17:19:0642 }
[email protected]6b54fda2014-07-22 02:13:4743
tbarzicd9a88fc92017-07-14 02:18:1044 void set_lock_screen_context(content::BrowserContext* context) {
45 lock_screen_context_ = context;
46 }
47
asargent631a99a2015-10-15 21:51:4848 // Sets a factory to respond to calls of the CreateUpdateClient method.
49 void SetUpdateClientFactory(
50 const base::Callback<update_client::UpdateClient*(void)>& factory);
51
[email protected]b9f6ba32014-03-10 18:34:0852 // Associates an incognito context with |main_context_|.
53 void SetIncognitoContext(content::BrowserContext* incognito_context);
54
55 // ExtensionsBrowserClient overrides:
dcheng9168b2f2014-10-21 12:38:2456 bool IsShuttingDown() override;
57 bool AreExtensionsDisabled(const base::CommandLine& command_line,
58 content::BrowserContext* context) override;
59 bool IsValidContext(content::BrowserContext* context) override;
60 bool IsSameContext(content::BrowserContext* first,
61 content::BrowserContext* second) override;
62 bool HasOffTheRecordContext(content::BrowserContext* context) override;
63 content::BrowserContext* GetOffTheRecordContext(
mostynb0eac4e1b2014-10-03 16:32:1964 content::BrowserContext* context) override;
dcheng9168b2f2014-10-21 12:38:2465 content::BrowserContext* GetOriginalContext(
mostynb0eac4e1b2014-10-03 16:32:1966 content::BrowserContext* context) override;
stevenjbd194dd1362015-01-28 17:30:0867#if defined(OS_CHROMEOS)
68 std::string GetUserIdHashFromContext(
69 content::BrowserContext* context) override;
70#endif
dcheng9168b2f2014-10-21 12:38:2471 bool IsGuestSession(content::BrowserContext* context) const override;
72 bool IsExtensionIncognitoEnabled(
[email protected]b9f6ba32014-03-10 18:34:0873 const std::string& extension_id,
mostynb0eac4e1b2014-10-03 16:32:1974 content::BrowserContext* context) const override;
dcheng9168b2f2014-10-21 12:38:2475 bool CanExtensionCrossIncognito(
[email protected]b9f6ba32014-03-10 18:34:0876 const extensions::Extension* extension,
mostynb0eac4e1b2014-10-03 16:32:1977 content::BrowserContext* context) const override;
dcheng9168b2f2014-10-21 12:38:2478 net::URLRequestJob* MaybeCreateResourceBundleRequestJob(
[email protected]1791e6c92014-04-11 08:29:0179 net::URLRequest* request,
80 net::NetworkDelegate* network_delegate,
81 const base::FilePath& directory_path,
82 const std::string& content_security_policy,
mostynb0eac4e1b2014-10-03 16:32:1983 bool send_cors_header) override;
dcheng9168b2f2014-10-21 12:38:2484 bool AllowCrossRendererResourceLoad(net::URLRequest* request,
85 bool is_incognito,
86 const Extension* extension,
87 InfoMap* extension_info_map) override;
88 PrefService* GetPrefServiceForContext(
mostynb0eac4e1b2014-10-03 16:32:1989 content::BrowserContext* context) override;
dcheng9168b2f2014-10-21 12:38:2490 void GetEarlyExtensionPrefsObservers(
[email protected]d31e2482014-04-02 22:52:2091 content::BrowserContext* context,
mostynb0eac4e1b2014-10-03 16:32:1992 std::vector<ExtensionPrefsObserver*>* observers) const override;
dcheng9168b2f2014-10-21 12:38:2493 ProcessManagerDelegate* GetProcessManagerDelegate() const override;
dchengf5d241082016-04-21 03:43:1194 std::unique_ptr<ExtensionHostDelegate> CreateExtensionHostDelegate() override;
dcheng9168b2f2014-10-21 12:38:2495 bool DidVersionUpdate(content::BrowserContext* context) override;
96 void PermitExternalProtocolHandler() override;
dcheng9168b2f2014-10-21 12:38:2497 bool IsRunningInForcedAppMode() override;
kelvinp1b80b8f2015-10-01 01:22:1398 bool IsLoggedInAsPublicAccount() override;
dcheng9168b2f2014-10-21 12:38:2499 ExtensionSystemProvider* GetExtensionSystemFactory() override;
100 void RegisterExtensionFunctions(
mostynb0eac4e1b2014-10-03 16:32:19101 ExtensionFunctionRegistry* registry) const override;
Ben Goodgerb6169152017-07-22 04:09:43102 void RegisterExtensionInterfaces(service_manager::BinderRegistryWithArgs<
103 content::RenderFrameHost*>* registry,
104 content::RenderFrameHost* render_frame_host,
105 const Extension* extension) const override;
dchengf5d241082016-04-21 03:43:11106 std::unique_ptr<RuntimeAPIDelegate> CreateRuntimeAPIDelegate(
mostynb0eac4e1b2014-10-03 16:32:19107 content::BrowserContext* context) const override;
mukaiee458c92015-01-06 01:30:33108 const ComponentExtensionResourceManager*
109 GetComponentExtensionResourceManager() override;
dchengf5d241082016-04-21 03:43:11110 void BroadcastEventToRenderers(
111 events::HistogramValue histogram_value,
112 const std::string& event_name,
113 std::unique_ptr<base::ListValue> args) override;
dcheng9168b2f2014-10-21 12:38:24114 net::NetLog* GetNetLog() override;
115 ExtensionCache* GetExtensionCache() override;
116 bool IsBackgroundUpdateAllowed() override;
117 bool IsMinBrowserVersionSupported(const std::string& min_version) override;
rdevlin.cronincb2ec659a2015-06-10 23:32:41118 ExtensionWebContentsObserver* GetExtensionWebContentsObserver(
119 content::WebContents* web_contents) override;
steelc8e6ede2016-09-29 00:56:27120 KioskDelegate* GetKioskDelegate() override;
asargent631a99a2015-10-15 21:51:48121 scoped_refptr<update_client::UpdateClient> CreateUpdateClient(
122 content::BrowserContext* context) override;
tbarzic8e89b0b12017-06-10 03:25:51123 bool IsLockScreenContext(content::BrowserContext* context) override;
[email protected]b9f6ba32014-03-10 18:34:08124
afakhry2bd481832016-06-16 16:17:24125 ExtensionSystemProvider* extension_system_factory() {
126 return extension_system_factory_;
127 }
128
[email protected]b9f6ba32014-03-10 18:34:08129 private:
tbarzicd9a88fc92017-07-14 02:18:10130 // Not owned.
131 content::BrowserContext* main_context_;
132 // Not owned, defaults to nullptr.
133 content::BrowserContext* incognito_context_;
134 // Not owned, defaults to nullptr.
135 content::BrowserContext* lock_screen_context_;
[email protected]b9f6ba32014-03-10 18:34:08136
tbarzicd9a88fc92017-07-14 02:18:10137 // Not owned, defaults to nullptr.
[email protected]6b54fda2014-07-22 02:13:47138 ProcessManagerDelegate* process_manager_delegate_;
139
tbarzicd9a88fc92017-07-14 02:18:10140 // Not owned, defaults to nullptr.
[email protected]9fc5bdc82014-08-03 23:49:26141 ExtensionSystemProvider* extension_system_factory_;
142
dchengf5d241082016-04-21 03:43:11143 std::unique_ptr<ExtensionCache> extension_cache_;
rockotffa65b12014-10-14 17:19:06144
asargent631a99a2015-10-15 21:51:48145 base::Callback<update_client::UpdateClient*(void)> update_client_factory_;
146
[email protected]b9f6ba32014-03-10 18:34:08147 DISALLOW_COPY_AND_ASSIGN(TestExtensionsBrowserClient);
148};
149
150} // namespace extensions
151
152#endif // EXTENSIONS_BROWSER_TEST_EXTENSIONS_BROWSER_CLIENT_H_