Hiroki Nakagawa | 9e2bb27 | 2019-02-12 07:17:43 | [diff] [blame] | 1 | // Copyright 2019 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 CONTENT_RENDERER_WORKER_DEDICATED_WORKER_HOST_FACTORY_CLIENT_H_ |
| 6 | #define CONTENT_RENDERER_WORKER_DEDICATED_WORKER_HOST_FACTORY_CLIENT_H_ |
| 7 | |
| 8 | #include <memory> |
Gyuyoung Kim | 6c9ce902 | 2019-11-26 05:40:08 | [diff] [blame] | 9 | #include "mojo/public/cpp/bindings/pending_remote.h" |
Miyoung Shin | 466c21fb | 2019-08-17 00:00:06 | [diff] [blame] | 10 | #include "mojo/public/cpp/bindings/receiver.h" |
| 11 | #include "mojo/public/cpp/bindings/remote.h" |
Miyoung Shin | 996cb65 | 2019-11-28 03:27:22 | [diff] [blame^] | 12 | #include "services/service_manager/public/mojom/interface_provider.mojom-forward.h" |
| 13 | #include "third_party/blink/public/common/browser_interface_broker_proxy.h" |
Hiroki Nakagawa | 599efcb | 2019-02-27 12:22:33 | [diff] [blame] | 14 | #include "third_party/blink/public/mojom/renderer_preference_watcher.mojom.h" |
| 15 | #include "third_party/blink/public/mojom/renderer_preferences.mojom.h" |
Dave Tapuska | 5c84c02 | 2019-08-22 13:00:08 | [diff] [blame] | 16 | #include "third_party/blink/public/mojom/worker/dedicated_worker_host.mojom.h" |
Hiroki Nakagawa | 9e2bb27 | 2019-02-12 07:17:43 | [diff] [blame] | 17 | #include "third_party/blink/public/mojom/worker/dedicated_worker_host_factory.mojom.h" |
| 18 | #include "third_party/blink/public/platform/web_dedicated_worker_host_factory_client.h" |
| 19 | |
| 20 | namespace blink { |
| 21 | class WebDedicatedWorker; |
Hiroki Nakagawa | 47f352a8 | 2019-06-03 10:23:37 | [diff] [blame] | 22 | class WebWorkerFetchContext; |
Hiroki Nakagawa | 9e2bb27 | 2019-02-12 07:17:43 | [diff] [blame] | 23 | } // namespace blink |
| 24 | |
| 25 | namespace content { |
| 26 | |
Hiroki Nakagawa | 599efcb | 2019-02-27 12:22:33 | [diff] [blame] | 27 | class ChildURLLoaderFactoryBundle; |
| 28 | class ServiceWorkerProviderContext; |
| 29 | class WebWorkerFetchContextImpl; |
| 30 | struct NavigationResponseOverrideParameters; |
| 31 | |
Hiroki Nakagawa | 9e2bb27 | 2019-02-12 07:17:43 | [diff] [blame] | 32 | // DedicatedWorkerHostFactoryClient intermediates between |
| 33 | // blink::(Web)DedicatedWorker and content::DedicatedWorkerHostFactory. This |
| 34 | // is bound with the thread where the execution context creating this worker |
| 35 | // lives (i.e., the main thread or a worker thread for nested workers). This is |
| 36 | // owned by blink::(Web)DedicatedWorker. |
| 37 | class DedicatedWorkerHostFactoryClient final |
| 38 | : public blink::WebDedicatedWorkerHostFactoryClient, |
| 39 | public blink::mojom::DedicatedWorkerHostFactoryClient { |
| 40 | public: |
| 41 | DedicatedWorkerHostFactoryClient( |
| 42 | blink::WebDedicatedWorker* worker, |
Miyoung Shin | 996cb65 | 2019-11-28 03:27:22 | [diff] [blame^] | 43 | const blink::BrowserInterfaceBrokerProxy& interface_broker); |
Hiroki Nakagawa | 9e2bb27 | 2019-02-12 07:17:43 | [diff] [blame] | 44 | ~DedicatedWorkerHostFactoryClient() override; |
| 45 | |
| 46 | // Implements blink::WebDedicatedWorkerHostFactoryClient. |
Hiroki Nakagawa | a0c9399 | 2019-04-02 09:34:45 | [diff] [blame] | 47 | void CreateWorkerHostDeprecated( |
| 48 | const blink::WebSecurityOrigin& script_origin) override; |
Hiroki Nakagawa | 686d5f5 | 2019-06-27 05:12:43 | [diff] [blame] | 49 | void CreateWorkerHost( |
| 50 | const blink::WebURL& script_url, |
| 51 | const blink::WebSecurityOrigin& script_origin, |
| 52 | network::mojom::CredentialsMode credentials_mode, |
| 53 | const blink::WebSecurityOrigin& fetch_client_security_origin, |
Kenichi Ishibashi | dfb966a | 2019-10-07 08:19:45 | [diff] [blame] | 54 | const blink::WebFetchClientSettingsObject& fetch_client_settings_object, |
Hiroki Nakagawa | 686d5f5 | 2019-06-27 05:12:43 | [diff] [blame] | 55 | mojo::ScopedMessagePipeHandle blob_url_token) override; |
Hiroki Nakagawa | 47f352a8 | 2019-06-03 10:23:37 | [diff] [blame] | 56 | scoped_refptr<blink::WebWorkerFetchContext> CloneWorkerFetchContext( |
| 57 | blink::WebWorkerFetchContext* web_worker_fetch_context, |
| 58 | scoped_refptr<base::SingleThreadTaskRunner> task_runner) override; |
Dave Tapuska | 5c84c02 | 2019-08-22 13:00:08 | [diff] [blame] | 59 | void LifecycleStateChanged(blink::mojom::FrameLifecycleState state) override; |
Hiroki Nakagawa | 9e2bb27 | 2019-02-12 07:17:43 | [diff] [blame] | 60 | |
Hiroki Nakagawa | 599efcb | 2019-02-27 12:22:33 | [diff] [blame] | 61 | scoped_refptr<WebWorkerFetchContextImpl> CreateWorkerFetchContext( |
| 62 | blink::mojom::RendererPreferences renderer_preference, |
Julie Jeongeun Kim | 6d8b749 | 2019-08-20 19:24:11 | [diff] [blame] | 63 | mojo::PendingReceiver<blink::mojom::RendererPreferenceWatcher> |
| 64 | watcher_receiver); |
Hiroki Nakagawa | 599efcb | 2019-02-27 12:22:33 | [diff] [blame] | 65 | |
Hiroki Nakagawa | 9e2bb27 | 2019-02-12 07:17:43 | [diff] [blame] | 66 | private: |
| 67 | // Implements blink::mojom::DedicatedWorkerHostFactoryClient. |
| 68 | void OnWorkerHostCreated( |
Gyuyoung Kim | 6c9ce902 | 2019-11-26 05:40:08 | [diff] [blame] | 69 | mojo::PendingRemote<service_manager::mojom::InterfaceProvider> |
| 70 | interface_provider, |
Oksana Zhuravlova | ceb2cef5 | 2019-08-09 01:09:59 | [diff] [blame] | 71 | mojo::PendingRemote<blink::mojom::BrowserInterfaceBroker> |
| 72 | browser_interface_broker) override; |
Hiroki Nakagawa | 6ead1186 | 2019-02-21 08:16:13 | [diff] [blame] | 73 | void OnScriptLoadStarted( |
Matt Falkenhagen | 5e340f1 | 2019-07-21 01:28:37 | [diff] [blame] | 74 | blink::mojom::ServiceWorkerProviderInfoForClientPtr |
Hiroki Nakagawa | 9e2bb27 | 2019-02-12 07:17:43 | [diff] [blame] | 75 | service_worker_provider_info, |
| 76 | blink::mojom::WorkerMainScriptLoadParamsPtr main_script_load_params, |
| 77 | std::unique_ptr<blink::URLLoaderFactoryBundleInfo> |
| 78 | subresource_loader_factory_bundle_info, |
Hiroki Nakagawa | 579d02a | 2019-09-10 04:13:51 | [diff] [blame] | 79 | mojo::PendingReceiver<blink::mojom::SubresourceLoaderUpdater> |
Hiroki Nakagawa | 3b90e64 | 2019-09-10 01:59:58 | [diff] [blame] | 80 | subresource_loader_updater, |
Hiroki Nakagawa | 9e2bb27 | 2019-02-12 07:17:43 | [diff] [blame] | 81 | blink::mojom::ControllerServiceWorkerInfoPtr controller_info) override; |
Hiroki Nakagawa | 6ead1186 | 2019-02-21 08:16:13 | [diff] [blame] | 82 | void OnScriptLoadStartFailed() override; |
Hiroki Nakagawa | 9e2bb27 | 2019-02-12 07:17:43 | [diff] [blame] | 83 | |
| 84 | // |worker_| owns |this|. |
| 85 | blink::WebDedicatedWorker* worker_; |
| 86 | |
Hiroki Nakagawa | 599efcb | 2019-02-27 12:22:33 | [diff] [blame] | 87 | scoped_refptr<ChildURLLoaderFactoryBundle> subresource_loader_factory_bundle_; |
Hiroki Nakagawa | 579d02a | 2019-09-10 04:13:51 | [diff] [blame] | 88 | mojo::PendingReceiver<blink::mojom::SubresourceLoaderUpdater> |
Hiroki Nakagawa | 3b90e64 | 2019-09-10 01:59:58 | [diff] [blame] | 89 | pending_subresource_loader_updater_; |
| 90 | |
Hiroki Nakagawa | 599efcb | 2019-02-27 12:22:33 | [diff] [blame] | 91 | scoped_refptr<ServiceWorkerProviderContext> service_worker_provider_context_; |
| 92 | std::unique_ptr<NavigationResponseOverrideParameters> |
| 93 | response_override_for_main_script_; |
| 94 | |
Miyoung Shin | 466c21fb | 2019-08-17 00:00:06 | [diff] [blame] | 95 | mojo::Remote<blink::mojom::DedicatedWorkerHostFactory> factory_; |
| 96 | mojo::Receiver<blink::mojom::DedicatedWorkerHostFactoryClient> receiver_{ |
| 97 | this}; |
Dave Tapuska | 5c84c02 | 2019-08-22 13:00:08 | [diff] [blame] | 98 | mojo::Remote<blink::mojom::DedicatedWorkerHost> remote_host_; |
Hiroki Nakagawa | 9e2bb27 | 2019-02-12 07:17:43 | [diff] [blame] | 99 | }; |
| 100 | |
| 101 | } // namespace content |
| 102 | |
| 103 | #endif // CONTENT_RENDERER_WORKER_DEDICATED_WORKER_HOST_FACTORY_CLIENT_H_ |