| 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 60923e17d8edae7c4c5b057156cd93fcc31fda0d..0bffa65e38aa767b9eb45143190cea453250072d 100644
|
| --- a/content/browser/service_worker/service_worker_version.cc
|
| +++ b/content/browser/service_worker/service_worker_version.cc
|
| @@ -289,27 +289,32 @@ void ServiceWorkerVersion::DispatchActivateEvent(
|
|
|
| void ServiceWorkerVersion::DispatchFetchEvent(
|
| const ServiceWorkerFetchRequest& request,
|
| - const FetchCallback& callback) {
|
| + const base::Closure& prepare_callback,
|
| + const FetchCallback& fetch_callback) {
|
| DCHECK_EQ(ACTIVATED, status()) << status();
|
|
|
| if (running_status() != RUNNING) {
|
| // Schedule calling this method after starting the worker.
|
| StartWorker(base::Bind(&RunTaskAfterStartWorker,
|
| weak_factory_.GetWeakPtr(),
|
| - base::Bind(&RunErrorFetchCallback, callback),
|
| + base::Bind(&RunErrorFetchCallback, fetch_callback),
|
| base::Bind(&self::DispatchFetchEvent,
|
| weak_factory_.GetWeakPtr(),
|
| - request, callback)));
|
| + request,
|
| + prepare_callback,
|
| + fetch_callback)));
|
| return;
|
| }
|
|
|
| - int request_id = fetch_callbacks_.Add(new FetchCallback(callback));
|
| + prepare_callback.Run();
|
| +
|
| + int request_id = fetch_callbacks_.Add(new FetchCallback(fetch_callback));
|
| ServiceWorkerStatusCode status = embedded_worker_->SendMessage(
|
| ServiceWorkerMsg_FetchEvent(request_id, request));
|
| if (status != SERVICE_WORKER_OK) {
|
| fetch_callbacks_.Remove(request_id);
|
| RunSoon(base::Bind(&RunErrorFetchCallback,
|
| - callback,
|
| + fetch_callback,
|
| SERVICE_WORKER_ERROR_FAILED));
|
| }
|
| }
|
|
|