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 f6251434d3be8a1f65569f7b13ccb76937aafccf..8e9771b6af6783e6281335a4d6f51ba437594ff2 100644 |
--- a/content/browser/service_worker/service_worker_version.cc |
+++ b/content/browser/service_worker/service_worker_version.cc |
@@ -685,30 +685,6 @@ void ServiceWorkerVersion::DispatchNotificationClickEvent( |
} |
} |
-void ServiceWorkerVersion::DispatchPushEvent(const StatusCallback& callback, |
- const std::string& data) { |
- OnBeginEvent(); |
- DCHECK_EQ(ACTIVATED, status()) << status(); |
- if (running_status() != RUNNING) { |
- // Schedule calling this method after starting the worker. |
- StartWorker(base::Bind(&RunTaskAfterStartWorker, |
- weak_factory_.GetWeakPtr(), callback, |
- base::Bind(&self::DispatchPushEvent, |
- weak_factory_.GetWeakPtr(), |
- callback, data))); |
- return; |
- } |
- |
- int request_id = AddRequest(callback, &push_requests_, REQUEST_PUSH, |
- ServiceWorkerMetrics::EventType::PUSH); |
- ServiceWorkerStatusCode status = embedded_worker_->SendMessage( |
- ServiceWorkerMsg_PushEvent(request_id, data)); |
- if (status != SERVICE_WORKER_OK) { |
- push_requests_.Remove(request_id); |
- RunSoon(base::Bind(callback, status)); |
- } |
-} |
- |
void ServiceWorkerVersion::DispatchCrossOriginMessageEvent( |
const NavigatorConnectClient& client, |
const base::string16& message, |
@@ -1020,8 +996,6 @@ bool ServiceWorkerVersion::OnMessageReceived(const IPC::Message& message) { |
OnFetchEventFinished) |
IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_NotificationClickEventFinished, |
OnNotificationClickEventFinished) |
- IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_PushEventFinished, |
- OnPushEventFinished) |
IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_OpenWindow, |
OnOpenWindow) |
IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_SetCachedMetadata, |
@@ -1211,27 +1185,20 @@ void ServiceWorkerVersion::OnNotificationClickEventFinished( |
RemoveCallbackAndStopIfRedundant(¬ification_click_requests_, request_id); |
} |
-void ServiceWorkerVersion::OnPushEventFinished( |
+void ServiceWorkerVersion::OnSimpleEventResponse( |
int request_id, |
blink::WebServiceWorkerEventResult result) { |
- TRACE_EVENT1("ServiceWorker", |
- "ServiceWorkerVersion::OnPushEventFinished", |
- "Request id", request_id); |
- PendingRequest<StatusCallback>* request = push_requests_.Lookup(request_id); |
- if (!request) { |
- NOTREACHED() << "Got unexpected message: " << request_id; |
- return; |
- } |
+ // Copy error callback before calling FinishRequest. |
+ PendingRequest<StatusCallback>* request = custom_requests_.Lookup(request_id); |
+ DCHECK(request) << "Invalid request id"; |
+ StatusCallback callback = request->callback; |
+ |
+ FinishRequest(request_id); |
+ |
ServiceWorkerStatusCode status = SERVICE_WORKER_OK; |
if (result == blink::WebServiceWorkerEventResultRejected) |
status = SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED; |
- |
- ServiceWorkerMetrics::RecordEventDuration( |
- request->event_type, base::TimeTicks::Now() - request->start_time); |
- |
- scoped_refptr<ServiceWorkerVersion> protect(this); |
- request->callback.Run(status); |
- RemoveCallbackAndStopIfRedundant(&push_requests_, request_id); |
+ callback.Run(status); |
} |
void ServiceWorkerVersion::OnOpenWindow(int request_id, GURL url) { |
@@ -1769,7 +1736,7 @@ void ServiceWorkerVersion::StopWorkerIfIdle() { |
bool ServiceWorkerVersion::HasInflightRequests() const { |
return !activate_requests_.IsEmpty() || !install_requests_.IsEmpty() || |
!fetch_requests_.IsEmpty() || |
- !notification_click_requests_.IsEmpty() || !push_requests_.IsEmpty() || |
+ !notification_click_requests_.IsEmpty() || |
!custom_requests_.IsEmpty() || !streaming_url_request_jobs_.empty(); |
} |
@@ -1879,9 +1846,6 @@ bool ServiceWorkerVersion::MaybeTimeOutRequest(const RequestInfo& info) { |
case REQUEST_NOTIFICATION_CLICK: |
return RunIDMapCallback(¬ification_click_requests_, info.id, |
SERVICE_WORKER_ERROR_TIMEOUT); |
- case REQUEST_PUSH: |
- return RunIDMapCallback(&push_requests_, info.id, |
- SERVICE_WORKER_ERROR_TIMEOUT); |
case REQUEST_CUSTOM: |
return RunIDMapCallback(&custom_requests_, info.id, |
SERVICE_WORKER_ERROR_TIMEOUT); |
@@ -2001,7 +1965,6 @@ void ServiceWorkerVersion::OnStoppedInternal( |
SERVICE_WORKER_FETCH_EVENT_RESULT_FALLBACK, |
ServiceWorkerResponse()); |
RunIDMapCallbacks(¬ification_click_requests_, SERVICE_WORKER_ERROR_FAILED); |
- RunIDMapCallbacks(&push_requests_, SERVICE_WORKER_ERROR_FAILED); |
RunIDMapCallbacks(&custom_requests_, SERVICE_WORKER_ERROR_FAILED); |
// Close all mojo services. This will also fire and clear all callbacks |