| Index: content/renderer/service_worker/service_worker_script_context.cc
|
| diff --git a/content/renderer/service_worker/service_worker_script_context.cc b/content/renderer/service_worker/service_worker_script_context.cc
|
| index d314ce78890d7a01486e9464516d1a30445ec03a..a898e3ae0dd21b8fef0b928d8ff5d550cc8779c5 100644
|
| --- a/content/renderer/service_worker/service_worker_script_context.cc
|
| +++ b/content/renderer/service_worker/service_worker_script_context.cc
|
| @@ -14,7 +14,10 @@
|
| #include "content/child/webmessageportchannel_impl.h"
|
| #include "content/common/message_port_messages.h"
|
| #include "content/common/service_worker/service_worker_messages.h"
|
| +#include "content/public/child/child_thread.h"
|
| #include "content/public/common/referrer.h"
|
| +#include "content/renderer/render_thread_impl.h"
|
| +#include "content/renderer/renderer_blink_platform_impl.h"
|
| #include "content/renderer/service_worker/embedded_worker_context_client.h"
|
| #include "ipc/ipc_message.h"
|
| #include "third_party/WebKit/public/platform/WebCrossOriginServiceWorkerClient.h"
|
| @@ -120,7 +123,6 @@ void ServiceWorkerScriptContext::OnMessageReceived(
|
| IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ActivateEvent, OnActivateEvent)
|
| IPC_MESSAGE_HANDLER(ServiceWorkerMsg_FetchEvent, OnFetchEvent)
|
| IPC_MESSAGE_HANDLER(ServiceWorkerMsg_InstallEvent, OnInstallEvent)
|
| - IPC_MESSAGE_HANDLER(ServiceWorkerMsg_SyncEvent, OnSyncEvent)
|
| IPC_MESSAGE_HANDLER(ServiceWorkerMsg_NotificationClickEvent,
|
| OnNotificationClickEvent)
|
| IPC_MESSAGE_HANDLER(ServiceWorkerMsg_PushEvent, OnPushEvent)
|
| @@ -221,8 +223,15 @@ void ServiceWorkerScriptContext::DidHandlePushEvent(
|
| void ServiceWorkerScriptContext::DidHandleSyncEvent(
|
| int request_id,
|
| blink::WebServiceWorkerEventResult result) {
|
| - Send(new ServiceWorkerHostMsg_SyncEventFinished(GetRoutingID(), request_id,
|
| - result));
|
| + const SyncCallback* callback = sync_event_callbacks_.Lookup(request_id);
|
| + if (!callback)
|
| + return;
|
| + if (result == blink::WebServiceWorkerEventResultCompleted) {
|
| + callback->Run(BACKGROUND_SYNC_EVENT_STATUS_COMPLETED);
|
| + } else {
|
| + callback->Run(BACKGROUND_SYNC_EVENT_STATUS_REJECTED);
|
| + }
|
| + sync_event_callbacks_.Remove(request_id);
|
| }
|
|
|
| void ServiceWorkerScriptContext::DidHandleCrossOriginConnectEvent(
|
| @@ -340,6 +349,14 @@ int ServiceWorkerScriptContext::GetRoutingID() const {
|
| return embedded_context_->embedded_worker_id();
|
| }
|
|
|
| +void ServiceWorkerScriptContext::DispatchSyncEvent(
|
| + const SyncCallback& callbacks) {
|
| + TRACE_EVENT0("ServiceWorker",
|
| + "ServiceWorkerScriptContext::DispatchSyncEvent");
|
| + int request_id = sync_event_callbacks_.Add(&callbacks);
|
| + proxy_->dispatchSyncEvent(request_id);
|
| +}
|
| +
|
| void ServiceWorkerScriptContext::OnActivateEvent(int request_id) {
|
| TRACE_EVENT0("ServiceWorker",
|
| "ServiceWorkerScriptContext::OnActivateEvent");
|
| @@ -386,12 +403,6 @@ void ServiceWorkerScriptContext::OnFetchEvent(
|
| proxy_->dispatchFetchEvent(request_id, webRequest);
|
| }
|
|
|
| -void ServiceWorkerScriptContext::OnSyncEvent(int request_id) {
|
| - TRACE_EVENT0("ServiceWorker",
|
| - "ServiceWorkerScriptContext::OnSyncEvent");
|
| - proxy_->dispatchSyncEvent(request_id);
|
| -}
|
| -
|
| void ServiceWorkerScriptContext::OnNotificationClickEvent(
|
| int request_id,
|
| int64_t persistent_notification_id,
|
|
|