| Index: content/browser/service_worker/service_worker_version.cc
|
| diff --git a/content/browser/service_worker/service_worker_version.cc b/content/browser/service_worker/service_worker_version.cc
|
| index c9f14e5bbe052ee152eb13e47d1bef2323680fe7..2a174335a6a4dc6a5c06bb7f9daac1e886ef0333 100644
|
| --- a/content/browser/service_worker/service_worker_version.cc
|
| +++ b/content/browser/service_worker/service_worker_version.cc
|
| @@ -32,6 +32,7 @@
|
| #include "content/browser/service_worker/service_worker_client_utils.h"
|
| #include "content/browser/service_worker/service_worker_context_core.h"
|
| #include "content/browser/service_worker/service_worker_context_wrapper.h"
|
| +#include "content/browser/service_worker/service_worker_global_scope_host_impl.h"
|
| #include "content/browser/service_worker/service_worker_metrics.h"
|
| #include "content/browser/service_worker/service_worker_registration.h"
|
| #include "content/common/service_worker/embedded_worker_messages.h"
|
| @@ -47,6 +48,7 @@
|
| #include "mojo/common/common_type_converters.h"
|
| #include "net/http/http_response_headers.h"
|
| #include "net/http/http_response_info.h"
|
| +#include "services/shell/public/cpp/interface_registry.h"
|
|
|
| namespace content {
|
|
|
| @@ -769,6 +771,11 @@ void ServiceWorkerVersion::OnThreadStarted() {
|
| }
|
|
|
| void ServiceWorkerVersion::OnStarting() {
|
| + // Setup mojo services
|
| + embedded_worker_->GetInterfaceRegistry()->AddInterface(
|
| + base::Bind(&ServiceWorkerGlobalScopeHostImpl::Create,
|
| + weak_factory_.GetWeakPtr()));
|
| +
|
| FOR_EACH_OBSERVER(Listener, listeners_, OnRunningStateChanged(this));
|
| }
|
|
|
| @@ -776,6 +783,10 @@ void ServiceWorkerVersion::OnStarted() {
|
| DCHECK_EQ(EmbeddedWorkerStatus::RUNNING, running_status());
|
| RestartTick(&idle_time_);
|
|
|
| + base::WeakPtr<blink::mojom::ServiceWorkerGlobalScopeClient> client =
|
| + GetMojoService<blink::mojom::ServiceWorkerGlobalScopeClient>();
|
| + client->DispatchPingEvent("hello client!");
|
| +
|
| // Fire all start callbacks.
|
| scoped_refptr<ServiceWorkerVersion> protect(this);
|
| RunCallbacks(this, &start_callbacks_, SERVICE_WORKER_OK);
|
| @@ -962,17 +973,21 @@ void ServiceWorkerVersion::OnGetClientsFinished(int request_id,
|
| void ServiceWorkerVersion::OnSimpleEventResponse(
|
| int request_id,
|
| blink::WebServiceWorkerEventResult result) {
|
| + ServiceWorkerStatusCode status =
|
| + SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED;
|
| + if (result == blink::WebServiceWorkerEventResultCompleted)
|
| + status = SERVICE_WORKER_OK;
|
| + OnSimpleEventResponse(request_id, status);
|
| +}
|
| +
|
| +void ServiceWorkerVersion::OnSimpleEventResponse(
|
| + int request_id,
|
| + ServiceWorkerStatusCode status) {
|
| // Copy error callback before calling FinishRequest.
|
| PendingRequest* request = pending_requests_.Lookup(request_id);
|
| DCHECK(request) << "Invalid request id";
|
| StatusCallback callback = request->error_callback;
|
| -
|
| - FinishRequest(request_id,
|
| - result == blink::WebServiceWorkerEventResultCompleted);
|
| -
|
| - ServiceWorkerStatusCode status = SERVICE_WORKER_OK;
|
| - if (result == blink::WebServiceWorkerEventResultRejected)
|
| - status = SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED;
|
| + FinishRequest(request_id, status == SERVICE_WORKER_OK);
|
| callback.Run(status);
|
| }
|
|
|
|
|