| Index: content/renderer/service_worker/service_worker_context_client.cc
|
| diff --git a/content/renderer/service_worker/service_worker_context_client.cc b/content/renderer/service_worker/service_worker_context_client.cc
|
| index c19944bfc590320dbf0f0dcfe90e93af6fd21f6e..09699f0edcc735d484f0c796e8701c6f445fefe2 100644
|
| --- a/content/renderer/service_worker/service_worker_context_client.cc
|
| +++ b/content/renderer/service_worker/service_worker_context_client.cc
|
| @@ -40,7 +40,6 @@
|
| #include "content/public/common/referrer.h"
|
| #include "content/public/renderer/content_renderer_client.h"
|
| #include "content/public/renderer/document_state.h"
|
| -#include "content/renderer/background_sync/background_sync_client_impl.h"
|
| #include "content/renderer/devtools/devtools_agent.h"
|
| #include "content/renderer/render_thread_impl.h"
|
| #include "content/renderer/service_worker/embedded_worker_dispatcher.h"
|
| @@ -52,6 +51,7 @@
|
| #include "mojo/public/cpp/bindings/strong_binding.h"
|
| #include "services/service_manager/public/cpp/interface_provider.h"
|
| #include "services/service_manager/public/cpp/interface_registry.h"
|
| +#include "third_party/WebKit/public/platform/InterfaceRegistry.h"
|
| #include "third_party/WebKit/public/platform/URLConversion.h"
|
| #include "third_party/WebKit/public/platform/WebMessagePortChannel.h"
|
| #include "third_party/WebKit/public/platform/WebReferrerPolicy.h"
|
| @@ -182,10 +182,6 @@ struct ServiceWorkerContextClient::WorkerContextData {
|
| IDMap<blink::WebServiceWorkerClientCallbacks, IDMapOwnPointer>;
|
| using SkipWaitingCallbacksMap =
|
| IDMap<blink::WebServiceWorkerSkipWaitingCallbacks, IDMapOwnPointer>;
|
| - using SyncEventCallbacksMap =
|
| - IDMap<const base::Callback<void(blink::mojom::ServiceWorkerEventStatus,
|
| - base::Time /* dispatch_event_time */)>,
|
| - IDMapOwnPointer>;
|
| using FetchEventCallbacksMap =
|
| IDMap<const base::Callback<void(ServiceWorkerStatusCode,
|
| base::Time /* dispatch_event_time */)>,
|
| @@ -197,7 +193,10 @@ struct ServiceWorkerContextClient::WorkerContextData {
|
| explicit WorkerContextData(ServiceWorkerContextClient* owner)
|
| : interface_registry(std::string()),
|
| weak_factory(owner),
|
| - proxy_weak_factory(owner->proxy_) {}
|
| + proxy_weak_factory(owner->proxy_) {
|
| + blink_interface_registry.reset(
|
| + new BlinkInterfaceRegistryImpl(interface_registry.GetWeakPtr()));
|
| + }
|
|
|
| ~WorkerContextData() {
|
| DCHECK(thread_checker.CalledOnValidThread());
|
| @@ -215,9 +214,6 @@ struct ServiceWorkerContextClient::WorkerContextData {
|
| // Pending callbacks for ClaimClients().
|
| ClaimClientsCallbacksMap claim_clients_callbacks;
|
|
|
| - // Pending callbacks for Background Sync Events.
|
| - SyncEventCallbacksMap sync_event_callbacks;
|
| -
|
| // Pending callbacks for Fetch Events.
|
| FetchEventCallbacksMap fetch_event_callbacks;
|
|
|
| @@ -229,6 +225,8 @@ struct ServiceWorkerContextClient::WorkerContextData {
|
| // time, remote interfaces are stored in EmbeddedWorkerInstanceClientImpl.
|
| service_manager::InterfaceProvider remote_interfaces;
|
|
|
| + std::unique_ptr<blink::InterfaceRegistry> blink_interface_registry;
|
| +
|
| base::ThreadChecker thread_checker;
|
| base::WeakPtrFactory<ServiceWorkerContextClient> weak_factory;
|
| base::WeakPtrFactory<blink::WebServiceWorkerContextProxy> proxy_weak_factory;
|
| @@ -404,7 +402,8 @@ ServiceWorkerContextClient::ServiceWorkerContextClient(
|
| sender_(ChildThreadImpl::current()->thread_safe_sender()),
|
| main_thread_task_runner_(base::ThreadTaskRunnerHandle::Get()),
|
| proxy_(nullptr),
|
| - embedded_worker_client_(std::move(embedded_worker_client)) {
|
| + embedded_worker_client_(std::move(embedded_worker_client)),
|
| + blink_interface_registry_(nullptr) {
|
| TRACE_EVENT_ASYNC_BEGIN0("ServiceWorker",
|
| "ServiceWorkerContextClient::StartingWorkerContext",
|
| this);
|
| @@ -561,8 +560,6 @@ void ServiceWorkerContextClient::workerContextStarted(
|
|
|
| // Register Mojo interfaces.
|
| context_->interface_registry.AddInterface(
|
| - base::Bind(&BackgroundSyncClientImpl::Create));
|
| - context_->interface_registry.AddInterface(
|
| base::Bind(&FetchEventDispatcherImpl::Create));
|
|
|
| if (ServiceWorkerUtils::IsMojoForServiceWorkerEnabled()) {
|
| @@ -611,13 +608,6 @@ void ServiceWorkerContextClient::willDestroyWorkerContext(
|
| // (while we're still on the worker thread).
|
| proxy_ = NULL;
|
|
|
| - // Aborts the all pending sync event callbacks.
|
| - for (WorkerContextData::SyncEventCallbacksMap::iterator it(
|
| - &context_->sync_event_callbacks);
|
| - !it.IsAtEnd(); it.Advance()) {
|
| - it.GetCurrentValue()->Run(blink::mojom::ServiceWorkerEventStatus::ABORTED,
|
| - base::Time::Now());
|
| - }
|
| // Aborts the all pending fetch event callbacks.
|
| for (WorkerContextData::FetchEventCallbacksMap::iterator it(
|
| &context_->fetch_event_callbacks);
|
| @@ -808,24 +798,6 @@ void ServiceWorkerContextClient::didHandlePushEvent(
|
| base::Time::FromDoubleT(event_dispatch_time)));
|
| }
|
|
|
| -void ServiceWorkerContextClient::didHandleSyncEvent(
|
| - int request_id,
|
| - blink::WebServiceWorkerEventResult result,
|
| - double event_dispatch_time) {
|
| - const SyncCallback* callback =
|
| - context_->sync_event_callbacks.Lookup(request_id);
|
| - if (!callback)
|
| - return;
|
| - if (result == blink::WebServiceWorkerEventResultCompleted) {
|
| - callback->Run(blink::mojom::ServiceWorkerEventStatus::COMPLETED,
|
| - base::Time::FromDoubleT(event_dispatch_time));
|
| - } else {
|
| - callback->Run(blink::mojom::ServiceWorkerEventStatus::REJECTED,
|
| - base::Time::FromDoubleT(event_dispatch_time));
|
| - }
|
| - context_->sync_event_callbacks.Remove(request_id);
|
| -}
|
| -
|
| blink::WebServiceWorkerNetworkProvider*
|
| ServiceWorkerContextClient::createServiceWorkerNetworkProvider(
|
| blink::WebDataSource* data_source) {
|
| @@ -931,19 +903,8 @@ void ServiceWorkerContextClient::registerForeignFetchScopes(
|
| std::vector<url::Origin>(origins.begin(), origins.end())));
|
| }
|
|
|
| -void ServiceWorkerContextClient::DispatchSyncEvent(
|
| - const std::string& tag,
|
| - blink::WebServiceWorkerContextProxy::LastChanceOption last_chance,
|
| - const SyncCallback& callback) {
|
| - TRACE_EVENT0("ServiceWorker",
|
| - "ServiceWorkerContextClient::DispatchSyncEvent");
|
| - int request_id =
|
| - context_->sync_event_callbacks.Add(new SyncCallback(callback));
|
| -
|
| - // TODO(jkarlin): Make this blink::WebString::FromUTF8Lenient once
|
| - // https://crrev.com/1768063002/ lands.
|
| - proxy_->dispatchSyncEvent(request_id, blink::WebString::fromUTF8(tag),
|
| - last_chance);
|
| +blink::InterfaceRegistry* ServiceWorkerContextClient::interfaceRegistry() {
|
| + return context_->blink_interface_registry.get();
|
| }
|
|
|
| void ServiceWorkerContextClient::Send(IPC::Message* message) {
|
|
|