Avi Drissman | 4e1b7bc | 2022-09-15 14:03:50 | [diff] [blame] | 1 | // Copyright 2019 The Chromium Authors |
Hiroki Nakagawa | 9e2bb27 | 2019-02-12 07:17:43 | [diff] [blame] | 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 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 Lee | bc3754ae | 2023-10-01 22:37:34 | [diff] [blame] | 9 | #include "base/memory/raw_ptr.h" |
Sean Maher | e672a66 | 2023-01-09 21:42:28 | [diff] [blame] | 10 | #include "base/task/single_thread_task_runner.h" |
Gyuyoung Kim | 6c9ce902 | 2019-11-26 05:40:08 | [diff] [blame] | 11 | #include "mojo/public/cpp/bindings/pending_remote.h" |
Miyoung Shin | 466c21fb | 2019-08-17 00:00:06 | [diff] [blame] | 12 | #include "mojo/public/cpp/bindings/receiver.h" |
| 13 | #include "mojo/public/cpp/bindings/remote.h" |
Miyoung Shin | 996cb65 | 2019-11-28 03:27:22 | [diff] [blame] | 14 | #include "third_party/blink/public/common/browser_interface_broker_proxy.h" |
Mario Sanchez Prada | 0bd8b8c | 2020-10-21 17:49:23 | [diff] [blame] | 15 | #include "third_party/blink/public/common/renderer_preferences/renderer_preferences.h" |
Hajime Hoshi | 9142ac9a | 2021-10-26 08:57:03 | [diff] [blame] | 16 | #include "third_party/blink/public/mojom/frame/back_forward_cache_controller.mojom.h" |
Minggang Wang | d712a91 | 2020-07-10 08:12:35 | [diff] [blame] | 17 | #include "third_party/blink/public/mojom/loader/resource_load_info_notifier.mojom.h" |
Gyuyoung Kim | 3a5f485 | 2020-01-09 04:48:58 | [diff] [blame] | 18 | #include "third_party/blink/public/mojom/renderer_preference_watcher.mojom-forward.h" |
Hitoshi Yoshida | 19644c5 | 2021-01-27 04:30:46 | [diff] [blame] | 19 | #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 Nakagawa | 9e2bb27 | 2019-02-12 07:17:43 | [diff] [blame] | 21 | #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 | |
| 24 | namespace blink { |
Minggang Wang | 035abc1 | 2020-11-05 03:05:15 | [diff] [blame] | 25 | class ChildURLLoaderFactoryBundle; |
Minggang Wang | 844e367 | 2021-05-20 14:20:40 | [diff] [blame] | 26 | class WebDedicatedOrSharedWorkerFetchContext; |
Hiroki Nakagawa | 9e2bb27 | 2019-02-12 07:17:43 | [diff] [blame] | 27 | class WebDedicatedWorker; |
| 28 | } // namespace blink |
| 29 | |
| 30 | namespace content { |
| 31 | |
Hiroki Nakagawa | 599efcb | 2019-02-27 12:22:33 | [diff] [blame] | 32 | class ServiceWorkerProviderContext; |
Hiroki Nakagawa | 599efcb | 2019-02-27 12:22:33 | [diff] [blame] | 33 | |
Hiroki Nakagawa | 9e2bb27 | 2019-02-12 07:17:43 | [diff] [blame] | 34 | // 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. |
| 39 | class DedicatedWorkerHostFactoryClient final |
| 40 | : public blink::WebDedicatedWorkerHostFactoryClient, |
| 41 | public blink::mojom::DedicatedWorkerHostFactoryClient { |
| 42 | public: |
| 43 | DedicatedWorkerHostFactoryClient( |
| 44 | blink::WebDedicatedWorker* worker, |
Miyoung Shin | 996cb65 | 2019-11-28 03:27:22 | [diff] [blame] | 45 | const blink::BrowserInterfaceBrokerProxy& interface_broker); |
Hiroki Nakagawa | 9e2bb27 | 2019-02-12 07:17:43 | [diff] [blame] | 46 | ~DedicatedWorkerHostFactoryClient() override; |
| 47 | |
| 48 | // Implements blink::WebDedicatedWorkerHostFactoryClient. |
Yutaka Hirano | 8007a3d | 2020-04-02 11:42:05 | [diff] [blame] | 49 | void CreateWorkerHostDeprecated( |
Chris Hamilton | 07c39fa | 2020-07-28 13:27:47 | [diff] [blame] | 50 | const blink::DedicatedWorkerToken& dedicated_worker_token, |
Asami Doi | cf85b1e | 2021-03-20 05:42:32 | [diff] [blame] | 51 | const blink::WebURL& script_url, |
Hiroki Nakagawa | 379de7e | 2022-02-24 09:09:39 | [diff] [blame] | 52 | CreateWorkerHostCallback callback) override; |
Hiroki Nakagawa | 686d5f5 | 2019-06-27 05:12:43 | [diff] [blame] | 53 | void CreateWorkerHost( |
Chris Hamilton | 07c39fa | 2020-07-28 13:27:47 | [diff] [blame] | 54 | const blink::DedicatedWorkerToken& dedicated_worker_token, |
Hiroki Nakagawa | 686d5f5 | 2019-06-27 05:12:43 | [diff] [blame] | 55 | const blink::WebURL& script_url, |
Hiroki Nakagawa | 686d5f5 | 2019-06-27 05:12:43 | [diff] [blame] | 56 | network::mojom::CredentialsMode credentials_mode, |
Kenichi Ishibashi | dfb966a | 2019-10-07 08:19:45 | [diff] [blame] | 57 | const blink::WebFetchClientSettingsObject& fetch_client_settings_object, |
Daniel Cheng | 247bd93 | 2020-06-04 20:09:25 | [diff] [blame] | 58 | blink::CrossVariantMojoRemote<blink::mojom::BlobURLTokenInterfaceBase> |
Ari Chivukula | c1ec32d | 2024-02-15 17:02:02 | [diff] [blame] | 59 | blob_url_token, |
| 60 | bool has_storage_access) override; |
Hiroki Nakagawa | 47f352a8 | 2019-06-03 10:23:37 | [diff] [blame] | 61 | scoped_refptr<blink::WebWorkerFetchContext> CloneWorkerFetchContext( |
| 62 | blink::WebWorkerFetchContext* web_worker_fetch_context, |
| 63 | scoped_refptr<base::SingleThreadTaskRunner> task_runner) override; |
Hiroki Nakagawa | 9e2bb27 | 2019-02-12 07:17:43 | [diff] [blame] | 64 | |
Minggang Wang | 844e367 | 2021-05-20 14:20:40 | [diff] [blame] | 65 | scoped_refptr<blink::WebDedicatedOrSharedWorkerFetchContext> |
| 66 | CreateWorkerFetchContext( |
Mario Sanchez Prada | 0bd8b8c | 2020-10-21 17:49:23 | [diff] [blame] | 67 | const blink::RendererPreferences& renderer_preference, |
Julie Jeongeun Kim | 6d8b749 | 2019-08-20 19:24:11 | [diff] [blame] | 68 | mojo::PendingReceiver<blink::mojom::RendererPreferenceWatcher> |
Minggang Wang | d712a91 | 2020-07-10 08:12:35 | [diff] [blame] | 69 | watcher_receiver, |
| 70 | mojo::PendingRemote<blink::mojom::ResourceLoadInfoNotifier> |
| 71 | pending_resource_load_info_notifier); |
Hiroki Nakagawa | 599efcb | 2019-02-27 12:22:33 | [diff] [blame] | 72 | |
Hiroki Nakagawa | 9e2bb27 | 2019-02-12 07:17:43 | [diff] [blame] | 73 | private: |
| 74 | // Implements blink::mojom::DedicatedWorkerHostFactoryClient. |
| 75 | void OnWorkerHostCreated( |
Oksana Zhuravlova | ceb2cef5 | 2019-08-09 01:09:59 | [diff] [blame] | 76 | mojo::PendingRemote<blink::mojom::BrowserInterfaceBroker> |
Hitoshi Yoshida | 98cb543 | 2021-02-02 06:12:06 | [diff] [blame] | 77 | browser_interface_broker, |
| 78 | mojo::PendingRemote<blink::mojom::DedicatedWorkerHost> |
| 79 | dedicated_worker_host) override; |
Hiroki Nakagawa | 6ead1186 | 2019-02-21 08:16:13 | [diff] [blame] | 80 | void OnScriptLoadStarted( |
Hiroki Nakagawa | 74cdcf3 | 2020-05-15 04:57:21 | [diff] [blame] | 81 | blink::mojom::ServiceWorkerContainerInfoForClientPtr |
| 82 | service_worker_container_info, |
Hiroki Nakagawa | 9e2bb27 | 2019-02-12 07:17:43 | [diff] [blame] | 83 | blink::mojom::WorkerMainScriptLoadParamsPtr main_script_load_params, |
Dominic Farolino | bc280d2 | 2019-12-05 05:49:24 | [diff] [blame] | 84 | std::unique_ptr<blink::PendingURLLoaderFactoryBundle> |
| 85 | pending_subresource_loader_factory_bundle, |
Hiroki Nakagawa | 579d02a | 2019-09-10 04:13:51 | [diff] [blame] | 86 | mojo::PendingReceiver<blink::mojom::SubresourceLoaderUpdater> |
Hiroki Nakagawa | 3b90e64 | 2019-09-10 01:59:58 | [diff] [blame] | 87 | subresource_loader_updater, |
Hajime Hoshi | 9142ac9a | 2021-10-26 08:57:03 | [diff] [blame] | 88 | blink::mojom::ControllerServiceWorkerInfoPtr controller_info, |
| 89 | mojo::PendingRemote<blink::mojom::BackForwardCacheControllerHost> |
| 90 | back_forward_cache_controller_host) override; |
Hiroki Nakagawa | 6ead1186 | 2019-02-21 08:16:13 | [diff] [blame] | 91 | void OnScriptLoadStartFailed() override; |
Hiroki Nakagawa | 9e2bb27 | 2019-02-12 07:17:43 | [diff] [blame] | 92 | |
| 93 | // |worker_| owns |this|. |
Kalvin Lee | bc3754ae | 2023-10-01 22:37:34 | [diff] [blame] | 94 | raw_ptr<blink::WebDedicatedWorker, ExperimentalRenderer> worker_; |
Hiroki Nakagawa | 9e2bb27 | 2019-02-12 07:17:43 | [diff] [blame] | 95 | |
Minggang Wang | 035abc1 | 2020-11-05 03:05:15 | [diff] [blame] | 96 | scoped_refptr<blink::ChildURLLoaderFactoryBundle> |
| 97 | subresource_loader_factory_bundle_; |
Hiroki Nakagawa | 579d02a | 2019-09-10 04:13:51 | [diff] [blame] | 98 | mojo::PendingReceiver<blink::mojom::SubresourceLoaderUpdater> |
Hiroki Nakagawa | 3b90e64 | 2019-09-10 01:59:58 | [diff] [blame] | 99 | pending_subresource_loader_updater_; |
| 100 | |
Hiroki Nakagawa | 599efcb | 2019-02-27 12:22:33 | [diff] [blame] | 101 | scoped_refptr<ServiceWorkerProviderContext> service_worker_provider_context_; |
Hiroki Nakagawa | 599efcb | 2019-02-27 12:22:33 | [diff] [blame] | 102 | |
Miyoung Shin | 466c21fb | 2019-08-17 00:00:06 | [diff] [blame] | 103 | mojo::Remote<blink::mojom::DedicatedWorkerHostFactory> factory_; |
| 104 | mojo::Receiver<blink::mojom::DedicatedWorkerHostFactoryClient> receiver_{ |
| 105 | this}; |
Hiroki Nakagawa | 9e2bb27 | 2019-02-12 07:17:43 | [diff] [blame] | 106 | }; |
| 107 | |
| 108 | } // namespace content |
| 109 | |
| 110 | #endif // CONTENT_RENDERER_WORKER_DEDICATED_WORKER_HOST_FACTORY_CLIENT_H_ |