blob: b2194b434dd6e8c3ba0c210a7f87d79b55b97380 [file] [log] [blame]
[email protected]de7d61ff2013-08-20 11:30:411// Copyright 2013 The Chromium Authors. All rights reserved.
[email protected]5629e0c2011-09-12 22:07:362// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
[email protected]de7d61ff2013-08-20 11:30:415#ifndef CONTENT_SHELL_BROWSER_SHELL_CONTENT_BROWSER_CLIENT_H_
6#define CONTENT_SHELL_BROWSER_SHELL_CONTENT_BROWSER_CLIENT_H_
[email protected]5629e0c2011-09-12 22:07:367
dcheng6003e0b2016-04-09 18:42:348#include <memory>
[email protected]5629e0c2011-09-12 22:07:369#include <string>
10
11#include "base/compiler_specific.h"
[email protected]57999812013-02-24 05:40:5212#include "base/files/file_path.h"
avi66a07722015-12-25 23:38:1213#include "build/build_config.h"
[email protected]87f3c082011-10-19 18:07:4414#include "content/public/browser/content_browser_client.h"
jochen5ce1af92016-02-17 20:39:4515#include "content/shell/browser/shell_resource_dispatcher_host_delegate.h"
[email protected]9896c552013-08-29 19:03:2016#include "content/shell/browser/shell_speech_recognition_manager_delegate.h"
Ben Goodger6a695c012017-06-20 20:21:2017#include "services/service_manager/public/cpp/binder_registry.h"
[email protected]5629e0c2011-09-12 22:07:3618
19namespace content {
20
[email protected]147f8092012-03-21 11:47:4521class ShellBrowserContext;
[email protected]b0f146f2011-09-15 22:14:2522class ShellBrowserMainParts;
23
[email protected]7f5500872013-11-12 20:03:5424class ShellContentBrowserClient : public ContentBrowserClient {
[email protected]5629e0c2011-09-12 22:07:3625 public:
[email protected]eabbfb12013-04-05 23:28:3526 // Gets the current instance.
27 static ShellContentBrowserClient* Get();
28
[email protected]fbaccee2013-08-12 23:24:0229 static void SetSwapProcessesForRedirect(bool swap);
30
[email protected]b0f146f2011-09-15 22:14:2531 ShellContentBrowserClient();
dchenge933b3e2014-10-21 11:44:0932 ~ShellContentBrowserClient() override;
[email protected]5629e0c2011-09-12 22:07:3633
[email protected]bdcf9152012-07-19 17:43:2134 // ContentBrowserClient overrides.
dchenge933b3e2014-10-21 11:44:0935 BrowserMainParts* CreateBrowserMainParts(
anand.ratn449f39a42014-10-06 13:45:5736 const MainFunctionParams& parameters) override;
nickd4106442015-12-08 21:53:1137 bool DoesSiteRequireDedicatedProcess(BrowserContext* browser_context,
nickdb193a12016-09-09 23:09:2338 const GURL& effective_site_url) override;
dchenge933b3e2014-10-21 11:44:0939 bool IsHandledURL(const GURL& url) override;
Ben Goodger6a695c012017-06-20 20:21:2040 void BindInterfaceRequestFromFrame(
41 content::RenderFrameHost* render_frame_host,
Ben Goodger6a695c012017-06-20 20:21:2042 const std::string& interface_name,
43 mojo::ScopedMessagePipeHandle interface_pipe) override;
bend32292b2016-10-07 00:21:5844 void RegisterInProcessServices(StaticServiceMap* services) override;
45 void RegisterOutOfProcessServices(OutOfProcessServiceMap* services) override;
James Cook5b2b3982017-10-17 03:04:2146 bool ShouldTerminateOnServiceQuit(
47 const service_manager::Identity& id) override;
ben6c7a8a72016-09-30 18:35:2148 std::unique_ptr<base::Value> GetServiceManifestOverlay(
sammc2b0375b2016-12-22 01:26:1749 base::StringPiece name) override;
dchenge933b3e2014-10-21 11:44:0950 void AppendExtraCommandLineSwitches(base::CommandLine* command_line,
51 int child_process_id) override;
dchenge933b3e2014-10-21 11:44:0952 void ResourceDispatcherHostCreated() override;
dchenge933b3e2014-10-21 11:44:0953 std::string GetDefaultDownloadName() override;
54 WebContentsViewDelegate* GetWebContentsViewDelegate(
anand.ratn449f39a42014-10-06 13:45:5755 WebContents* web_contents) override;
dchenge933b3e2014-10-21 11:44:0956 QuotaPermissionContext* CreateQuotaPermissionContext() override;
michaeln10e5fc352017-02-07 02:07:5857 void GetQuotaSettings(
58 content::BrowserContext* context,
59 content::StoragePartition* partition,
taptede6d878e2017-06-24 01:53:4560 storage::OptionalQuotaSettingsCallback callback) override;
davidben3b8455ae72015-03-11 19:42:1961 void SelectClientCertificate(
62 WebContents* web_contents,
63 net::SSLCertRequestInfo* cert_request_info,
mattm436ccfe2017-06-19 20:24:0864 net::ClientCertIdentityList client_certs,
dcheng6003e0b2016-04-09 18:42:3465 std::unique_ptr<ClientCertificateDelegate> delegate) override;
zorkb548de082014-11-14 21:40:4766 SpeechRecognitionManagerDelegate* CreateSpeechRecognitionManagerDelegate()
dchenge933b3e2014-10-21 11:44:0967 override;
68 net::NetLog* GetNetLog() override;
clamyd69748c2016-10-07 22:09:4469 bool ShouldSwapProcessesForRedirect(BrowserContext* browser_context,
dchenge933b3e2014-10-21 11:44:0970 const GURL& current_url,
71 const GURL& new_url) override;
72 DevToolsManagerDelegate* GetDevToolsManagerDelegate() override;
[email protected]b0f146f2011-09-15 22:14:2573
peterbbcccc12015-02-11 22:23:3374 void OpenURL(BrowserContext* browser_context,
75 const OpenURLParams& params,
76 const base::Callback<void(WebContents*)>& callback) override;
mlamourieb40d552015-02-05 00:57:0877
Wez010464a2017-10-26 17:42:2378#if defined(OS_LINUX) || defined(OS_ANDROID)
agrieve05398f52015-06-24 18:59:0079 void GetAdditionalMappedFilesForChildProcess(
80 const base::CommandLine& command_line,
81 int child_process_id,
brettw3c98c7d32017-07-25 01:44:2082 content::PosixFileDescriptorInfo* mappings) override;
Wez010464a2017-10-26 17:42:2383#endif // defined(OS_LINUX) || defined(OS_ANDROID)
84
[email protected]a553b672014-04-16 05:40:4185#if defined(OS_WIN)
rickyz50109312015-11-11 00:37:0886 bool PreSpawnRenderer(sandbox::TargetPolicy* policy) override;
[email protected]a553b672014-04-16 05:40:4187#endif
[email protected]f83a47392012-07-12 22:15:0488
[email protected]147f8092012-03-21 11:47:4589 ShellBrowserContext* browser_context();
[email protected]71d504f2012-07-25 17:15:2890 ShellBrowserContext* off_the_record_browser_context();
91 ShellResourceDispatcherHostDelegate* resource_dispatcher_host_delegate() {
92 return resource_dispatcher_host_delegate_.get();
93 }
[email protected]7c17b692012-08-09 16:16:3094 ShellBrowserMainParts* shell_browser_main_parts() {
95 return shell_browser_main_parts_;
96 }
[email protected]147f8092012-03-21 11:47:4597
davidben3b8455ae72015-03-11 19:42:1998 // Used for content_browsertests.
99 void set_select_client_certificate_callback(
100 base::Closure select_client_certificate_callback) {
101 select_client_certificate_callback_ = select_client_certificate_callback;
102 }
James Cook5b2b3982017-10-17 03:04:21103 void set_should_terminate_on_service_quit_callback(
104 base::Callback<bool(const service_manager::Identity&)> callback) {
105 should_terminate_on_service_quit_callback_ = callback;
106 }
davidben3b8455ae72015-03-11 19:42:19107
jochen5ce1af92016-02-17 20:39:45108 protected:
Reilly Grantb0b47832017-08-31 23:57:09109 virtual void ExposeInterfacesToFrame(
110 service_manager::BinderRegistryWithArgs<content::RenderFrameHost*>*
111 registry);
112
jochen5ce1af92016-02-17 20:39:45113 void set_resource_dispatcher_host_delegate(
dcheng6003e0b2016-04-09 18:42:34114 std::unique_ptr<ShellResourceDispatcherHostDelegate> delegate) {
jochen5ce1af92016-02-17 20:39:45115 resource_dispatcher_host_delegate_ = std::move(delegate);
116 }
117
118 void set_browser_main_parts(ShellBrowserMainParts* parts) {
119 shell_browser_main_parts_ = parts;
120 }
121
[email protected]b0f146f2011-09-15 22:14:25122 private:
dcheng6003e0b2016-04-09 18:42:34123 std::unique_ptr<ShellResourceDispatcherHostDelegate>
[email protected]e3503ac2012-04-05 15:01:36124 resource_dispatcher_host_delegate_;
125
davidben3b8455ae72015-03-11 19:42:19126 base::Closure select_client_certificate_callback_;
James Cook5b2b3982017-10-17 03:04:21127 base::Callback<bool(const service_manager::Identity&)>
128 should_terminate_on_service_quit_callback_;
davidben3b8455ae72015-03-11 19:42:19129
Reilly Grantb0b47832017-08-31 23:57:09130 std::unique_ptr<
131 service_manager::BinderRegistryWithArgs<content::RenderFrameHost*>>
Ben Goodger6a695c012017-06-20 20:21:20132 frame_interfaces_;
133
[email protected]b0f146f2011-09-15 22:14:25134 ShellBrowserMainParts* shell_browser_main_parts_;
[email protected]5629e0c2011-09-12 22:07:36135};
136
137} // namespace content
138
[email protected]de7d61ff2013-08-20 11:30:41139#endif // CONTENT_SHELL_BROWSER_SHELL_CONTENT_BROWSER_CLIENT_H_