[go: nahoru, domu]

blob: 51f72684b710c74261eb134fe4e697a15e358446 [file] [log] [blame]
Avi Drissman4e1b7bc2022-09-15 14:03:501// Copyright 2019 The Chromium Authors
Hiroki Nakagawa9e2bb272019-02-12 07:17:432// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CONTENT_RENDERER_WORKER_DEDICATED_WORKER_HOST_FACTORY_CLIENT_H_
6#define CONTENT_RENDERER_WORKER_DEDICATED_WORKER_HOST_FACTORY_CLIENT_H_
7
8#include <memory>
Kalvin Leebc3754ae2023-10-01 22:37:349#include "base/memory/raw_ptr.h"
Sean Mahere672a662023-01-09 21:42:2810#include "base/task/single_thread_task_runner.h"
Gyuyoung Kim6c9ce9022019-11-26 05:40:0811#include "mojo/public/cpp/bindings/pending_remote.h"
Miyoung Shin466c21fb2019-08-17 00:00:0612#include "mojo/public/cpp/bindings/receiver.h"
13#include "mojo/public/cpp/bindings/remote.h"
Miyoung Shin996cb652019-11-28 03:27:2214#include "third_party/blink/public/common/browser_interface_broker_proxy.h"
Mario Sanchez Prada0bd8b8c2020-10-21 17:49:2315#include "third_party/blink/public/common/renderer_preferences/renderer_preferences.h"
Hajime Hoshi9142ac9a2021-10-26 08:57:0316#include "third_party/blink/public/mojom/frame/back_forward_cache_controller.mojom.h"
Minggang Wangd712a912020-07-10 08:12:3517#include "third_party/blink/public/mojom/loader/resource_load_info_notifier.mojom.h"
Gyuyoung Kim3a5f4852020-01-09 04:48:5818#include "third_party/blink/public/mojom/renderer_preference_watcher.mojom-forward.h"
Hitoshi Yoshida19644c52021-01-27 04:30:4619#include "third_party/blink/public/mojom/renderer_preferences.mojom-forward.h"
20#include "third_party/blink/public/mojom/worker/dedicated_worker_host.mojom.h"
Hiroki Nakagawa9e2bb272019-02-12 07:17:4321#include "third_party/blink/public/mojom/worker/dedicated_worker_host_factory.mojom.h"
22#include "third_party/blink/public/platform/web_dedicated_worker_host_factory_client.h"
23
24namespace blink {
Minggang Wang035abc12020-11-05 03:05:1525class ChildURLLoaderFactoryBundle;
Minggang Wang844e3672021-05-20 14:20:4026class WebDedicatedOrSharedWorkerFetchContext;
Hiroki Nakagawa9e2bb272019-02-12 07:17:4327class WebDedicatedWorker;
28} // namespace blink
29
30namespace content {
31
Hiroki Nakagawa599efcb2019-02-27 12:22:3332class ServiceWorkerProviderContext;
Hiroki Nakagawa599efcb2019-02-27 12:22:3333
Hiroki Nakagawa9e2bb272019-02-12 07:17:4334// DedicatedWorkerHostFactoryClient intermediates between
35// blink::(Web)DedicatedWorker and content::DedicatedWorkerHostFactory. This
36// is bound with the thread where the execution context creating this worker
37// lives (i.e., the main thread or a worker thread for nested workers). This is
38// owned by blink::(Web)DedicatedWorker.
39class DedicatedWorkerHostFactoryClient final
40 : public blink::WebDedicatedWorkerHostFactoryClient,
41 public blink::mojom::DedicatedWorkerHostFactoryClient {
42 public:
43 DedicatedWorkerHostFactoryClient(
44 blink::WebDedicatedWorker* worker,
Miyoung Shin996cb652019-11-28 03:27:2245 const blink::BrowserInterfaceBrokerProxy& interface_broker);
Hiroki Nakagawa9e2bb272019-02-12 07:17:4346 ~DedicatedWorkerHostFactoryClient() override;
47
48 // Implements blink::WebDedicatedWorkerHostFactoryClient.
Yutaka Hirano8007a3d2020-04-02 11:42:0549 void CreateWorkerHostDeprecated(
Chris Hamilton07c39fa2020-07-28 13:27:4750 const blink::DedicatedWorkerToken& dedicated_worker_token,
Asami Doicf85b1e2021-03-20 05:42:3251 const blink::WebURL& script_url,
Hiroki Nakagawa379de7e2022-02-24 09:09:3952 CreateWorkerHostCallback callback) override;
Hiroki Nakagawa686d5f52019-06-27 05:12:4353 void CreateWorkerHost(
Chris Hamilton07c39fa2020-07-28 13:27:4754 const blink::DedicatedWorkerToken& dedicated_worker_token,
Hiroki Nakagawa686d5f52019-06-27 05:12:4355 const blink::WebURL& script_url,
Hiroki Nakagawa686d5f52019-06-27 05:12:4356 network::mojom::CredentialsMode credentials_mode,
Kenichi Ishibashidfb966a2019-10-07 08:19:4557 const blink::WebFetchClientSettingsObject& fetch_client_settings_object,
Daniel Cheng247bd932020-06-04 20:09:2558 blink::CrossVariantMojoRemote<blink::mojom::BlobURLTokenInterfaceBase>
Ari Chivukulac1ec32d2024-02-15 17:02:0259 blob_url_token,
60 bool has_storage_access) override;
Hiroki Nakagawa47f352a82019-06-03 10:23:3761 scoped_refptr<blink::WebWorkerFetchContext> CloneWorkerFetchContext(
62 blink::WebWorkerFetchContext* web_worker_fetch_context,
63 scoped_refptr<base::SingleThreadTaskRunner> task_runner) override;
Hiroki Nakagawa9e2bb272019-02-12 07:17:4364
Minggang Wang844e3672021-05-20 14:20:4065 scoped_refptr<blink::WebDedicatedOrSharedWorkerFetchContext>
66 CreateWorkerFetchContext(
Mario Sanchez Prada0bd8b8c2020-10-21 17:49:2367 const blink::RendererPreferences& renderer_preference,
Julie Jeongeun Kim6d8b7492019-08-20 19:24:1168 mojo::PendingReceiver<blink::mojom::RendererPreferenceWatcher>
Minggang Wangd712a912020-07-10 08:12:3569 watcher_receiver,
70 mojo::PendingRemote<blink::mojom::ResourceLoadInfoNotifier>
71 pending_resource_load_info_notifier);
Hiroki Nakagawa599efcb2019-02-27 12:22:3372
Hiroki Nakagawa9e2bb272019-02-12 07:17:4373 private:
74 // Implements blink::mojom::DedicatedWorkerHostFactoryClient.
75 void OnWorkerHostCreated(
Oksana Zhuravlovaceb2cef52019-08-09 01:09:5976 mojo::PendingRemote<blink::mojom::BrowserInterfaceBroker>
Hitoshi Yoshida98cb5432021-02-02 06:12:0677 browser_interface_broker,
78 mojo::PendingRemote<blink::mojom::DedicatedWorkerHost>
79 dedicated_worker_host) override;
Hiroki Nakagawa6ead11862019-02-21 08:16:1380 void OnScriptLoadStarted(
Hiroki Nakagawa74cdcf32020-05-15 04:57:2181 blink::mojom::ServiceWorkerContainerInfoForClientPtr
82 service_worker_container_info,
Hiroki Nakagawa9e2bb272019-02-12 07:17:4383 blink::mojom::WorkerMainScriptLoadParamsPtr main_script_load_params,
Dominic Farolinobc280d22019-12-05 05:49:2484 std::unique_ptr<blink::PendingURLLoaderFactoryBundle>
85 pending_subresource_loader_factory_bundle,
Hiroki Nakagawa579d02a2019-09-10 04:13:5186 mojo::PendingReceiver<blink::mojom::SubresourceLoaderUpdater>
Hiroki Nakagawa3b90e642019-09-10 01:59:5887 subresource_loader_updater,
Hajime Hoshi9142ac9a2021-10-26 08:57:0388 blink::mojom::ControllerServiceWorkerInfoPtr controller_info,
89 mojo::PendingRemote<blink::mojom::BackForwardCacheControllerHost>
90 back_forward_cache_controller_host) override;
Hiroki Nakagawa6ead11862019-02-21 08:16:1391 void OnScriptLoadStartFailed() override;
Hiroki Nakagawa9e2bb272019-02-12 07:17:4392
93 // |worker_| owns |this|.
Kalvin Leebc3754ae2023-10-01 22:37:3494 raw_ptr<blink::WebDedicatedWorker, ExperimentalRenderer> worker_;
Hiroki Nakagawa9e2bb272019-02-12 07:17:4395
Minggang Wang035abc12020-11-05 03:05:1596 scoped_refptr<blink::ChildURLLoaderFactoryBundle>
97 subresource_loader_factory_bundle_;
Hiroki Nakagawa579d02a2019-09-10 04:13:5198 mojo::PendingReceiver<blink::mojom::SubresourceLoaderUpdater>
Hiroki Nakagawa3b90e642019-09-10 01:59:5899 pending_subresource_loader_updater_;
100
Hiroki Nakagawa599efcb2019-02-27 12:22:33101 scoped_refptr<ServiceWorkerProviderContext> service_worker_provider_context_;
Hiroki Nakagawa599efcb2019-02-27 12:22:33102
Miyoung Shin466c21fb2019-08-17 00:00:06103 mojo::Remote<blink::mojom::DedicatedWorkerHostFactory> factory_;
104 mojo::Receiver<blink::mojom::DedicatedWorkerHostFactoryClient> receiver_{
105 this};
Hiroki Nakagawa9e2bb272019-02-12 07:17:43106};
107
108} // namespace content
109
110#endif // CONTENT_RENDERER_WORKER_DEDICATED_WORKER_HOST_FACTORY_CLIENT_H_