Index: content/browser/service_worker/service_worker_fetch_dispatcher.cc |
diff --git a/content/browser/service_worker/service_worker_fetch_dispatcher.cc b/content/browser/service_worker/service_worker_fetch_dispatcher.cc |
index 9ada39ab56e98b6d8a83848fe69677da79e10d8c..c5c1d0200da20f24d3cffc00d70c46f16baf883a 100644 |
--- a/content/browser/service_worker/service_worker_fetch_dispatcher.cc |
+++ b/content/browser/service_worker/service_worker_fetch_dispatcher.cc |
@@ -12,9 +12,11 @@ namespace content { |
ServiceWorkerFetchDispatcher::ServiceWorkerFetchDispatcher( |
scoped_ptr<ServiceWorkerFetchRequest> request, |
ServiceWorkerVersion* version, |
- const FetchCallback& callback) |
+ const base::Closure& prepare_callback, |
+ const FetchCallback& fetch_callback) |
: version_(version), |
- callback_(callback), |
+ prepare_callback_(prepare_callback), |
+ fetch_callback_(fetch_callback), |
request_(request.Pass()), |
weak_factory_(this) { |
} |
@@ -57,17 +59,25 @@ void ServiceWorkerFetchDispatcher::DidFailActivation() { |
void ServiceWorkerFetchDispatcher::DispatchFetchEvent() { |
version_->DispatchFetchEvent( |
*request_.get(), |
+ base::Bind(&ServiceWorkerFetchDispatcher::DidPrepare, |
+ weak_factory_.GetWeakPtr()), |
base::Bind(&ServiceWorkerFetchDispatcher::DidFinish, |
weak_factory_.GetWeakPtr())); |
} |
+void ServiceWorkerFetchDispatcher::DidPrepare() { |
+ DCHECK(!prepare_callback_.is_null()); |
+ base::Closure prepare_callback = prepare_callback_; |
+ prepare_callback.Run(); |
+} |
+ |
void ServiceWorkerFetchDispatcher::DidFinish( |
ServiceWorkerStatusCode status, |
ServiceWorkerFetchEventResult fetch_result, |
const ServiceWorkerResponse& response) { |
- DCHECK(!callback_.is_null()); |
- FetchCallback callback = callback_; |
- callback.Run(status, fetch_result, response); |
+ DCHECK(!fetch_callback_.is_null()); |
+ FetchCallback fetch_callback = fetch_callback_; |
+ fetch_callback.Run(status, fetch_result, response); |
} |
} // namespace content |