Index: content/browser/service_worker/service_worker_job_coordinator.cc |
diff --git a/content/browser/service_worker/service_worker_job_coordinator.cc b/content/browser/service_worker/service_worker_job_coordinator.cc |
index f2b54389d1175e19292c0a9ed8ef78fad7ddf458..6da772c54efae2411676d3bfbc8721754c03da05 100644 |
--- a/content/browser/service_worker/service_worker_job_coordinator.cc |
+++ b/content/browser/service_worker/service_worker_job_coordinator.cc |
@@ -41,6 +41,14 @@ void ServiceWorkerJobCoordinator::JobQueue::Pop( |
jobs_.front()->Start(); |
} |
+void ServiceWorkerJobCoordinator::JobQueue::AbortAll() { |
+ for (std::deque<ServiceWorkerRegisterJobBase*>::iterator it = jobs_.begin(); |
+ it != jobs_.end(); ++it) { |
+ (*it)->Abort(); |
+ } |
+ STLDeleteElements(&jobs_); |
+} |
+ |
void ServiceWorkerJobCoordinator::JobQueue::ClearForShutdown() { |
STLDeleteElements(&jobs_); |
} |
@@ -84,6 +92,14 @@ void ServiceWorkerJobCoordinator::Unregister( |
queued_job->AddCallback(callback); |
} |
+void ServiceWorkerJobCoordinator::AbortAll() { |
+ for (RegistrationJobMap::iterator it = jobs_.begin(); |
+ it != jobs_.end(); ++it) { |
+ it->second.AbortAll(); |
+ } |
+ jobs_.clear(); |
+} |
+ |
void ServiceWorkerJobCoordinator::FinishJob(const GURL& pattern, |
ServiceWorkerRegisterJobBase* job) { |
RegistrationJobMap::iterator pending_jobs = jobs_.find(pattern); |