[go: nahoru, domu]

blob: 420125c5f4bd4c98adce035b460e0557dbcb1986 [file] [log] [blame]
Hiroki Nakagawa9e2bb272019-02-12 07:17:431// 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 Kim6c9ce9022019-11-26 05:40:089#include "mojo/public/cpp/bindings/pending_remote.h"
Miyoung Shin466c21fb2019-08-17 00:00:0610#include "mojo/public/cpp/bindings/receiver.h"
11#include "mojo/public/cpp/bindings/remote.h"
Miyoung Shin996cb652019-11-28 03:27:2212#include "services/service_manager/public/mojom/interface_provider.mojom-forward.h"
13#include "third_party/blink/public/common/browser_interface_broker_proxy.h"
Hiroki Nakagawa599efcb2019-02-27 12:22:3314#include "third_party/blink/public/mojom/renderer_preference_watcher.mojom.h"
15#include "third_party/blink/public/mojom/renderer_preferences.mojom.h"
Dave Tapuska5c84c022019-08-22 13:00:0816#include "third_party/blink/public/mojom/worker/dedicated_worker_host.mojom.h"
Hiroki Nakagawa9e2bb272019-02-12 07:17:4317#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
20namespace blink {
21class WebDedicatedWorker;
Hiroki Nakagawa47f352a82019-06-03 10:23:3722class WebWorkerFetchContext;
Hiroki Nakagawa9e2bb272019-02-12 07:17:4323} // namespace blink
24
25namespace content {
26
Hiroki Nakagawa599efcb2019-02-27 12:22:3327class ChildURLLoaderFactoryBundle;
28class ServiceWorkerProviderContext;
29class WebWorkerFetchContextImpl;
30struct NavigationResponseOverrideParameters;
31
Hiroki Nakagawa9e2bb272019-02-12 07:17:4332// 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.
37class DedicatedWorkerHostFactoryClient final
38 : public blink::WebDedicatedWorkerHostFactoryClient,
39 public blink::mojom::DedicatedWorkerHostFactoryClient {
40 public:
41 DedicatedWorkerHostFactoryClient(
42 blink::WebDedicatedWorker* worker,
Miyoung Shin996cb652019-11-28 03:27:2243 const blink::BrowserInterfaceBrokerProxy& interface_broker);
Hiroki Nakagawa9e2bb272019-02-12 07:17:4344 ~DedicatedWorkerHostFactoryClient() override;
45
46 // Implements blink::WebDedicatedWorkerHostFactoryClient.
Hiroki Nakagawaa0c93992019-04-02 09:34:4547 void CreateWorkerHostDeprecated(
48 const blink::WebSecurityOrigin& script_origin) override;
Hiroki Nakagawa686d5f52019-06-27 05:12:4349 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 Ishibashidfb966a2019-10-07 08:19:4554 const blink::WebFetchClientSettingsObject& fetch_client_settings_object,
Hiroki Nakagawa686d5f52019-06-27 05:12:4355 mojo::ScopedMessagePipeHandle blob_url_token) override;
Hiroki Nakagawa47f352a82019-06-03 10:23:3756 scoped_refptr<blink::WebWorkerFetchContext> CloneWorkerFetchContext(
57 blink::WebWorkerFetchContext* web_worker_fetch_context,
58 scoped_refptr<base::SingleThreadTaskRunner> task_runner) override;
Dave Tapuska5c84c022019-08-22 13:00:0859 void LifecycleStateChanged(blink::mojom::FrameLifecycleState state) override;
Hiroki Nakagawa9e2bb272019-02-12 07:17:4360
Hiroki Nakagawa599efcb2019-02-27 12:22:3361 scoped_refptr<WebWorkerFetchContextImpl> CreateWorkerFetchContext(
62 blink::mojom::RendererPreferences renderer_preference,
Julie Jeongeun Kim6d8b7492019-08-20 19:24:1163 mojo::PendingReceiver<blink::mojom::RendererPreferenceWatcher>
64 watcher_receiver);
Hiroki Nakagawa599efcb2019-02-27 12:22:3365
Hiroki Nakagawa9e2bb272019-02-12 07:17:4366 private:
67 // Implements blink::mojom::DedicatedWorkerHostFactoryClient.
68 void OnWorkerHostCreated(
Gyuyoung Kim6c9ce9022019-11-26 05:40:0869 mojo::PendingRemote<service_manager::mojom::InterfaceProvider>
70 interface_provider,
Oksana Zhuravlovaceb2cef52019-08-09 01:09:5971 mojo::PendingRemote<blink::mojom::BrowserInterfaceBroker>
72 browser_interface_broker) override;
Hiroki Nakagawa6ead11862019-02-21 08:16:1373 void OnScriptLoadStarted(
Matt Falkenhagen5e340f12019-07-21 01:28:3774 blink::mojom::ServiceWorkerProviderInfoForClientPtr
Hiroki Nakagawa9e2bb272019-02-12 07:17:4375 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 Nakagawa579d02a2019-09-10 04:13:5179 mojo::PendingReceiver<blink::mojom::SubresourceLoaderUpdater>
Hiroki Nakagawa3b90e642019-09-10 01:59:5880 subresource_loader_updater,
Hiroki Nakagawa9e2bb272019-02-12 07:17:4381 blink::mojom::ControllerServiceWorkerInfoPtr controller_info) override;
Hiroki Nakagawa6ead11862019-02-21 08:16:1382 void OnScriptLoadStartFailed() override;
Hiroki Nakagawa9e2bb272019-02-12 07:17:4383
84 // |worker_| owns |this|.
85 blink::WebDedicatedWorker* worker_;
86
Hiroki Nakagawa599efcb2019-02-27 12:22:3387 scoped_refptr<ChildURLLoaderFactoryBundle> subresource_loader_factory_bundle_;
Hiroki Nakagawa579d02a2019-09-10 04:13:5188 mojo::PendingReceiver<blink::mojom::SubresourceLoaderUpdater>
Hiroki Nakagawa3b90e642019-09-10 01:59:5889 pending_subresource_loader_updater_;
90
Hiroki Nakagawa599efcb2019-02-27 12:22:3391 scoped_refptr<ServiceWorkerProviderContext> service_worker_provider_context_;
92 std::unique_ptr<NavigationResponseOverrideParameters>
93 response_override_for_main_script_;
94
Miyoung Shin466c21fb2019-08-17 00:00:0695 mojo::Remote<blink::mojom::DedicatedWorkerHostFactory> factory_;
96 mojo::Receiver<blink::mojom::DedicatedWorkerHostFactoryClient> receiver_{
97 this};
Dave Tapuska5c84c022019-08-22 13:00:0898 mojo::Remote<blink::mojom::DedicatedWorkerHost> remote_host_;
Hiroki Nakagawa9e2bb272019-02-12 07:17:4399};
100
101} // namespace content
102
103#endif // CONTENT_RENDERER_WORKER_DEDICATED_WORKER_HOST_FACTORY_CLIENT_H_