| 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 bb3bf9a1b1821c566df3fa7776a540a3e301fbc8..cf85ea51f08bceffb7c0e477ecdfca32874d365a 100644
|
| --- a/content/renderer/service_worker/service_worker_script_context.cc
|
| +++ b/content/renderer/service_worker/service_worker_script_context.cc
|
| @@ -12,6 +12,7 @@
|
| #include "ipc/ipc_message.h"
|
| #include "third_party/WebKit/public/web/WebServiceWorkerContextClient.h"
|
| #include "third_party/WebKit/public/web/WebServiceWorkerContextProxy.h"
|
| +#include "third_party/WebKit/public/web/WebServiceWorkerPushEventCallback.h"
|
|
|
| namespace content {
|
|
|
| @@ -28,6 +29,20 @@ void SendPostMessageToDocumentOnMainThread(
|
| WebMessagePortChannelImpl::ExtractMessagePortIDs(channels.release())));
|
| }
|
|
|
| +class PushEventCallback : public blink::WebServiceWorkerPushEventCallback {
|
| + public:
|
| + PushEventCallback(ServiceWorkerScriptContext* context)
|
| + : context_(context) {
|
| + }
|
| +
|
| + virtual void didHandlePushEvent(int eventID) const OVERRIDE {
|
| + context_->DidHandlePushEvent(eventID);
|
| + }
|
| +
|
| + private:
|
| + ServiceWorkerScriptContext* context_;
|
| +};
|
| +
|
| } // namespace
|
|
|
| ServiceWorkerScriptContext::ServiceWorkerScriptContext(
|
| @@ -47,6 +62,7 @@ void ServiceWorkerScriptContext::OnMessageReceived(
|
| IPC_MESSAGE_HANDLER(ServiceWorkerMsg_FetchEvent, OnFetchEvent)
|
| IPC_MESSAGE_HANDLER(ServiceWorkerMsg_InstallEvent, OnInstallEvent)
|
| IPC_MESSAGE_HANDLER(ServiceWorkerMsg_SyncEvent, OnSyncEvent)
|
| + IPC_MESSAGE_HANDLER(ServiceWorkerMsg_PushEvent, OnPushEvent)
|
| IPC_MESSAGE_HANDLER(ServiceWorkerMsg_MessageToWorker, OnPostMessage)
|
| IPC_MESSAGE_HANDLER(ServiceWorkerMsg_DidGetClientDocuments,
|
| OnDidGetClientDocuments)
|
| @@ -82,6 +98,11 @@ void ServiceWorkerScriptContext::DidHandleSyncEvent(int request_id) {
|
| GetRoutingID(), request_id));
|
| }
|
|
|
| +void ServiceWorkerScriptContext::DidHandlePushEvent(int request_id) {
|
| + Send(new ServiceWorkerHostMsg_PushEventFinished(
|
| + GetRoutingID(), request_id));
|
| +}
|
| +
|
| void ServiceWorkerScriptContext::GetClientDocuments(
|
| blink::WebServiceWorkerClientsCallbacks* callbacks) {
|
| DCHECK(callbacks);
|
| @@ -129,6 +150,11 @@ void ServiceWorkerScriptContext::OnSyncEvent(int request_id) {
|
| proxy_->dispatchSyncEvent(request_id);
|
| }
|
|
|
| +void ServiceWorkerScriptContext::OnPushEvent(int request_id) {
|
| + PushEventCallback callback(this);
|
| + proxy_->dispatchPushEvent(request_id, "ServiceWorkerScriptContext", callback);
|
| +}
|
| +
|
| void ServiceWorkerScriptContext::OnPostMessage(
|
| const base::string16& message,
|
| const std::vector<int>& sent_message_port_ids,
|
|
|