Commit 10760389 authored by Daniel Cheng's avatar Daniel Cheng Committed by Commit Bot

Use typesafe helpers to pass Mojo interfaces in Blink public API for workers

Bug: 1059157
Change-Id: I03b2e9b1b6eaad6d8e24e54eb0f2287ec2953b04
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2233603Reviewed-by: default avatarDave Tapuska <dtapuska@chromium.org>
Commit-Queue: Daniel Cheng <dcheng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#775846}
parent 8d9b2cab
......@@ -429,13 +429,12 @@ blink::WebURLLoaderFactory* WebWorkerFetchContextImpl::GetURLLoaderFactory() {
std::unique_ptr<blink::WebURLLoaderFactory>
WebWorkerFetchContextImpl::WrapURLLoaderFactory(
mojo::ScopedMessagePipeHandle url_loader_factory_handle) {
blink::CrossVariantMojoRemote<network::mojom::URLLoaderFactoryInterfaceBase>
url_loader_factory) {
return std::make_unique<WebURLLoaderFactoryImpl>(
resource_dispatcher_->GetWeakPtr(),
base::MakeRefCounted<network::WrapperSharedURLLoaderFactory>(
mojo::PendingRemote<network::mojom::URLLoaderFactory>(
std::move(url_loader_factory_handle),
network::mojom::URLLoaderFactory::Version_)));
std::move(url_loader_factory)));
}
std::unique_ptr<blink::CodeCacheLoader>
......@@ -539,7 +538,8 @@ WebWorkerFetchContextImpl::CreateWebSocketHandshakeThrottle(
ancestor_frame_id_, std::move(task_runner));
}
mojo::ScopedMessagePipeHandle
blink::CrossVariantMojoReceiver<
blink::mojom::WorkerTimingContainerInterfaceBase>
WebWorkerFetchContextImpl::TakePendingWorkerTimingReceiver(int request_id) {
auto iter = worker_timing_container_receivers_.find(request_id);
if (iter == worker_timing_container_receivers_.end()) {
......@@ -547,7 +547,7 @@ WebWorkerFetchContextImpl::TakePendingWorkerTimingReceiver(int request_id) {
}
auto receiver = std::move(iter->second);
worker_timing_container_receivers_.erase(iter);
return receiver.PassPipe();
return std::move(receiver);
}
void WebWorkerFetchContextImpl::SetIsOfflineMode(bool is_offline_mode) {
......
......@@ -111,7 +111,9 @@ class CONTENT_EXPORT WebWorkerFetchContextImpl
void InitializeOnWorkerThread(blink::AcceptLanguagesWatcher*) override;
blink::WebURLLoaderFactory* GetURLLoaderFactory() override;
std::unique_ptr<blink::WebURLLoaderFactory> WrapURLLoaderFactory(
mojo::ScopedMessagePipeHandle url_loader_factory_handle) override;
blink::CrossVariantMojoRemote<
network::mojom::URLLoaderFactoryInterfaceBase> url_loader_factory)
override;
std::unique_ptr<blink::CodeCacheLoader> CreateCodeCacheLoader() override;
void WillSendRequest(blink::WebURLRequest&) override;
blink::mojom::ControllerServiceWorkerMode GetControllerServiceWorkerMode()
......@@ -131,8 +133,9 @@ class CONTENT_EXPORT WebWorkerFetchContextImpl
std::unique_ptr<blink::WebSocketHandshakeThrottle>
CreateWebSocketHandshakeThrottle(
scoped_refptr<base::SingleThreadTaskRunner> task_runner) override;
mojo::ScopedMessagePipeHandle TakePendingWorkerTimingReceiver(
int request_id) override;
blink::CrossVariantMojoReceiver<
blink::mojom::WorkerTimingContainerInterfaceBase>
TakePendingWorkerTimingReceiver(int request_id) override;
void SetIsOfflineMode(bool is_offline_mode) override;
// blink::mojom::ServiceWorkerWorkerClient implementation:
......
......@@ -100,13 +100,12 @@ ServiceWorkerFetchContextImpl::GetURLLoaderFactory() {
std::unique_ptr<blink::WebURLLoaderFactory>
ServiceWorkerFetchContextImpl::WrapURLLoaderFactory(
mojo::ScopedMessagePipeHandle url_loader_factory_handle) {
blink::CrossVariantMojoRemote<network::mojom::URLLoaderFactoryInterfaceBase>
url_loader_factory) {
return std::make_unique<WebURLLoaderFactoryImpl>(
resource_dispatcher_->GetWeakPtr(),
base::MakeRefCounted<network::WrapperSharedURLLoaderFactory>(
mojo::PendingRemote<network::mojom::URLLoaderFactory>(
std::move(url_loader_factory_handle),
network::mojom::URLLoaderFactory::Version_)));
std::move(url_loader_factory)));
}
blink::WebURLLoaderFactory*
......@@ -205,7 +204,8 @@ blink::WebString ServiceWorkerFetchContextImpl::GetAcceptLanguages() const {
return blink::WebString::FromUTF8(renderer_preferences_.accept_languages);
}
mojo::ScopedMessagePipeHandle
blink::CrossVariantMojoReceiver<
blink::mojom::WorkerTimingContainerInterfaceBase>
ServiceWorkerFetchContextImpl::TakePendingWorkerTimingReceiver(int request_id) {
// No receiver exists because requests from service workers are never handled
// by a service worker.
......
......@@ -60,7 +60,9 @@ class CONTENT_EXPORT ServiceWorkerFetchContextImpl final
void InitializeOnWorkerThread(blink::AcceptLanguagesWatcher*) override;
blink::WebURLLoaderFactory* GetURLLoaderFactory() override;
std::unique_ptr<blink::WebURLLoaderFactory> WrapURLLoaderFactory(
mojo::ScopedMessagePipeHandle url_loader_factory_handle) override;
blink::CrossVariantMojoRemote<
network::mojom::URLLoaderFactoryInterfaceBase> url_loader_factory)
override;
blink::WebURLLoaderFactory* GetScriptLoaderFactory() override;
void WillSendRequest(blink::WebURLRequest&) override;
blink::mojom::ControllerServiceWorkerMode GetControllerServiceWorkerMode()
......@@ -71,8 +73,9 @@ class CONTENT_EXPORT ServiceWorkerFetchContextImpl final
CreateWebSocketHandshakeThrottle(
scoped_refptr<base::SingleThreadTaskRunner> task_runner) override;
blink::WebString GetAcceptLanguages() const override;
mojo::ScopedMessagePipeHandle TakePendingWorkerTimingReceiver(
int request_id) override;
blink::CrossVariantMojoReceiver<
blink::mojom::WorkerTimingContainerInterfaceBase>
TakePendingWorkerTimingReceiver(int request_id) override;
void SetIsOfflineMode(bool) override;
blink::mojom::SubresourceLoaderUpdater* GetSubresourceLoaderUpdater()
override;
......
......@@ -175,14 +175,13 @@ void ServiceWorkerNetworkProviderForFrame::DispatchNetworkQuiet() {
context()->DispatchNetworkQuiet();
}
mojo::ScopedMessagePipeHandle
blink::CrossVariantMojoReceiver<
blink::mojom::WorkerTimingContainerInterfaceBase>
ServiceWorkerNetworkProviderForFrame::TakePendingWorkerTimingReceiver(
int request_id) {
if (!context())
return {};
auto worker_timing_receiver =
context()->TakePendingWorkerTimingReceiver(request_id);
return worker_timing_receiver.PassPipe();
return context()->TakePendingWorkerTimingReceiver(request_id);
}
void ServiceWorkerNetworkProviderForFrame::NotifyExecutionReady() {
......
......@@ -52,8 +52,9 @@ class CONTENT_EXPORT ServiceWorkerNetworkProviderForFrame final
override;
int64_t ControllerServiceWorkerID() override;
void DispatchNetworkQuiet() override;
mojo::ScopedMessagePipeHandle TakePendingWorkerTimingReceiver(
int request_id) override;
blink::CrossVariantMojoReceiver<
blink::mojom::WorkerTimingContainerInterfaceBase>
TakePendingWorkerTimingReceiver(int request_id) override;
ServiceWorkerProviderContext* context() { return context_.get(); }
......
......@@ -110,7 +110,7 @@ DedicatedWorkerHostFactoryClient::CreateWorkerFetchContext(
void DedicatedWorkerHostFactoryClient::OnWorkerHostCreated(
mojo::PendingRemote<blink::mojom::BrowserInterfaceBroker>
browser_interface_broker) {
worker_->OnWorkerHostCreated(browser_interface_broker.PassPipe());
worker_->OnWorkerHostCreated(std::move(browser_interface_broker));
}
void DedicatedWorkerHostFactoryClient::OnScriptLoadStarted(
......
......@@ -44,6 +44,7 @@ include_rules = [
"+services/network/public/mojom/fetch_api.mojom-shared.h",
"+services/network/public/mojom/referrer_policy.mojom-shared.h",
"+services/network/public/mojom/trust_tokens.mojom-shared.h",
"+services/network/public/mojom/url_loader_factory.mojom-shared.h",
"+services/network/public/mojom/web_client_hints_types.mojom-shared.h",
"+services/service_manager/public/mojom",
......
......@@ -34,8 +34,9 @@
#include <memory>
#include "base/memory/scoped_refptr.h"
#include "mojo/public/cpp/system/message_pipe.h"
#include "third_party/blink/public/mojom/service_worker/controller_service_worker_mode.mojom-shared.h"
#include "third_party/blink/public/mojom/timing/worker_timing_container.mojom-shared.h"
#include "third_party/blink/public/platform/cross_variant_mojo_util.h"
#include "third_party/blink/public/platform/scheduler/web_resource_loading_task_runner_handle.h"
#include "third_party/blink/public/platform/web_url_loader.h"
......@@ -78,11 +79,11 @@ class WebServiceWorkerNetworkProvider {
// idle signal.
virtual void DispatchNetworkQuiet() = 0;
// Returns mojo::PendingReceiver<blink::mojom::blink::WorkerTimingContainer>
// for the blink::ResourceResponse with the given |request_id|. Null if the
// request has not been intercepted by a service worker.
virtual mojo::ScopedMessagePipeHandle TakePendingWorkerTimingReceiver(
int request_id) = 0;
// Returns the blink::mojom::WorkerTimingContainer receiver for the
// blink::ResourceResponse with the given |request_id|. Null if the request
// has not been intercepted by a service worker.
virtual CrossVariantMojoReceiver<mojom::WorkerTimingContainerInterfaceBase>
TakePendingWorkerTimingReceiver(int request_id) = 0;
};
} // namespace blink
......
......@@ -5,7 +5,8 @@
#ifndef THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_DEDICATED_WORKER_H_
#define THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_DEDICATED_WORKER_H_
#include "mojo/public/cpp/system/message_pipe.h"
#include "third_party/blink/public/mojom/browser_interface_broker.mojom-shared.h"
#include "third_party/blink/public/platform/cross_variant_mojo_util.h"
namespace blink {
......@@ -18,7 +19,8 @@ class WebDedicatedWorker {
// Called when content::DedicatedWorkerHost is created in the browser process.
virtual void OnWorkerHostCreated(
mojo::ScopedMessagePipeHandle browser_interface_broker) = 0;
CrossVariantMojoRemote<mojom::BrowserInterfaceBrokerInterfaceBase>
browser_interface_broker) = 0;
// Called when content::DedicatedWorkerHost started loading the main worker
// script in the browser process, and the script information is sent back to
......
......@@ -10,8 +10,11 @@
#include "base/memory/ref_counted.h"
#include "base/memory/scoped_refptr.h"
#include "services/network/public/mojom/url_loader_factory.mojom-shared.h"
#include "third_party/blink/public/mojom/service_worker/controller_service_worker_mode.mojom-shared.h"
#include "third_party/blink/public/mojom/timing/worker_timing_container.mojom-shared.h"
#include "third_party/blink/public/platform/code_cache_loader.h"
#include "third_party/blink/public/platform/cross_variant_mojo_util.h"
#include "third_party/blink/public/platform/web_document_subresource_filter.h"
#include "third_party/blink/public/platform/web_security_origin.h"
#include "third_party/blink/public/platform/web_string.h"
......@@ -74,7 +77,8 @@ class WebWorkerFetchContext : public base::RefCounted<WebWorkerFetchContext> {
// Returns a new WebURLLoaderFactory that wraps the given
// network::mojom::URLLoaderFactory.
virtual std::unique_ptr<WebURLLoaderFactory> WrapURLLoaderFactory(
mojo::ScopedMessagePipeHandle url_loader_factory_handle) = 0;
CrossVariantMojoRemote<network::mojom::URLLoaderFactoryInterfaceBase>
url_loader_factory) = 0;
// Returns a CodeCacheLoader that fetches data from code caches. If
// a nullptr is returned then data would not be fetched from the code
......@@ -148,11 +152,11 @@ class WebWorkerFetchContext : public base::RefCounted<WebWorkerFetchContext> {
// Returns the current list of user prefered languages.
virtual blink::WebString GetAcceptLanguages() const = 0;
// Returns mojo::PendingReceiver<blink::mojom::blink::WorkerTimingContainer>
// for the blink::ResourceResponse with the given |request_id|. Null if the
// Returns the blink::mojom::WorkerTimingContainer receiver for the
// blink::ResourceResponse with the given |request_id|. Null if the
// request has not been intercepted by a service worker.
virtual mojo::ScopedMessagePipeHandle TakePendingWorkerTimingReceiver(
int request_id) = 0;
virtual CrossVariantMojoReceiver<mojom::WorkerTimingContainerInterfaceBase>
TakePendingWorkerTimingReceiver(int request_id) = 0;
// This flag is set to disallow all network accesses in the context. Used for
// offline capability detection in service workers.
......
......@@ -588,11 +588,8 @@ mojo::PendingReceiver<mojom::blink::WorkerTimingContainer>
DocumentLoader::TakePendingWorkerTimingReceiver(int request_id) {
if (!GetServiceWorkerNetworkProvider())
return mojo::NullReceiver();
mojo::ScopedMessagePipeHandle pipe =
GetServiceWorkerNetworkProvider()->TakePendingWorkerTimingReceiver(
request_id);
return mojo::PendingReceiver<mojom::blink::WorkerTimingContainer>(
std::move(pipe));
return GetServiceWorkerNetworkProvider()->TakePendingWorkerTimingReceiver(
request_id);
}
void DocumentLoader::BodyCodeCacheReceived(mojo_base::BigBuffer data) {
......
......@@ -49,7 +49,7 @@ std::unique_ptr<WebURLLoader> LoaderFactoryForWorker::CreateURLLoader(
}
if (url_loader_factory) {
return web_context_->WrapURLLoaderFactory(url_loader_factory.PassPipe())
return web_context_->WrapURLLoaderFactory(std::move(url_loader_factory))
->CreateURLLoader(wrapped, CreateTaskRunnerHandle(task_runner));
}
......
......@@ -263,10 +263,8 @@ void WorkerFetchContext::PopulateResourceRequest(
mojo::PendingReceiver<mojom::blink::WorkerTimingContainer>
WorkerFetchContext::TakePendingWorkerTimingReceiver(int request_id) {
mojo::ScopedMessagePipeHandle pipe =
GetWebWorkerFetchContext()->TakePendingWorkerTimingReceiver(request_id);
return mojo::PendingReceiver<mojom::blink::WorkerTimingContainer>(
std::move(pipe));
return GetWebWorkerFetchContext()->TakePendingWorkerTimingReceiver(
request_id);
}
void WorkerFetchContext::SetFirstPartyCookie(ResourceRequest& out_request) {
......
......@@ -289,12 +289,10 @@ bool DedicatedWorker::HasPendingActivity() const {
}
void DedicatedWorker::OnWorkerHostCreated(
mojo::ScopedMessagePipeHandle browser_interface_broker) {
CrossVariantMojoRemote<mojom::blink::BrowserInterfaceBrokerInterfaceBase>
browser_interface_broker) {
DCHECK(!browser_interface_broker_);
browser_interface_broker_ =
mojo::PendingRemote<mojom::blink::BrowserInterfaceBroker>(
std::move(browser_interface_broker),
mojom::blink::BrowserInterfaceBroker::Version_);
browser_interface_broker_ = std::move(browser_interface_broker);
}
void DedicatedWorker::OnScriptLoadStarted() {
......
......@@ -86,7 +86,8 @@ class CORE_EXPORT DedicatedWorker final
// Implements WebDedicatedWorker.
// Called only when PlzDedicatedWorker is enabled.
void OnWorkerHostCreated(
mojo::ScopedMessagePipeHandle browser_interface_broker) override;
CrossVariantMojoRemote<mojom::blink::BrowserInterfaceBrokerInterfaceBase>
browser_interface_broker) override;
void OnScriptLoadStarted() override;
void OnScriptLoadStartFailed() override;
......
......@@ -111,7 +111,8 @@ class FakeWebServiceWorkerFetchContext final
return &fake_web_url_loader_factory_;
}
std::unique_ptr<WebURLLoaderFactory> WrapURLLoaderFactory(
mojo::ScopedMessagePipeHandle url_loader_factory_handle) override {
CrossVariantMojoRemote<network::mojom::URLLoaderFactoryInterfaceBase>
url_loader_factory) override {
return nullptr;
}
void WillSendRequest(WebURLRequest&) override {}
......@@ -126,8 +127,8 @@ class FakeWebServiceWorkerFetchContext final
return base::Optional<WebSecurityOrigin>();
}
WebString GetAcceptLanguages() const override { return WebString(); }
mojo::ScopedMessagePipeHandle TakePendingWorkerTimingReceiver(
int request_id) override {
CrossVariantMojoReceiver<mojom::blink::WorkerTimingContainerInterfaceBase>
TakePendingWorkerTimingReceiver(int request_id) override {
return {};
}
void SetIsOfflineMode(bool is_offline_mode) override {}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment