Index: content/browser/service_worker/service_worker_script_cache_map.cc |
diff --git a/content/browser/service_worker/service_worker_script_cache_map.cc b/content/browser/service_worker/service_worker_script_cache_map.cc |
index ec450a9de804abe0efc31e171ae6cc821484c3cf..9b26f141e42f6d860e8b79cb325af1b80eeb1f89 100644 |
--- a/content/browser/service_worker/service_worker_script_cache_map.cc |
+++ b/content/browser/service_worker/service_worker_script_cache_map.cc |
@@ -13,9 +13,6 @@ namespace content { |
ServiceWorkerScriptCacheMap::ServiceWorkerScriptCacheMap( |
ServiceWorkerVersion* owner) |
: owner_(owner), |
- is_eval_complete_(false), |
- resources_started_(0), |
- resources_finished_(0), |
has_error_(false) { |
} |
@@ -29,48 +26,42 @@ int64 ServiceWorkerScriptCacheMap::Lookup(const GURL& url) { |
return found->second; |
} |
-void ServiceWorkerScriptCacheMap::AddObserver(Observer* observer) { |
- observers_.AddObserver(observer); |
-} |
- |
-void ServiceWorkerScriptCacheMap::RemoveObserver(Observer* observer) { |
- observers_.RemoveObserver(observer); |
-} |
- |
void ServiceWorkerScriptCacheMap::NotifyStartedCaching( |
const GURL& url, int64 resource_id) { |
DCHECK_EQ(kInvalidServiceWorkerResponseId, Lookup(url)); |
- DCHECK(owner_->status() == ServiceWorkerVersion::NEW || |
- owner_->status() == ServiceWorkerVersion::INSTALLING); |
- DCHECK(!is_eval_complete_); |
+ DCHECK(owner_->status() == ServiceWorkerVersion::NEW); |
resource_ids_[url] = resource_id; |
- ++resources_started_; |
+ // TODO(michaeln): Add resource id to the uncommitted list. |
} |
void ServiceWorkerScriptCacheMap::NotifyFinishedCaching( |
const GURL& url, bool success) { |
DCHECK_NE(kInvalidServiceWorkerResponseId, Lookup(url)); |
- DCHECK(owner_->status() == ServiceWorkerVersion::NEW || |
- owner_->status() == ServiceWorkerVersion::INSTALLING); |
- ++resources_finished_; |
- if (!success) |
+ DCHECK(owner_->status() == ServiceWorkerVersion::NEW); |
+ if (!success) { |
has_error_ = true; |
- if (url == owner_->script_url()) { |
- FOR_EACH_OBSERVER(Observer, observers_, |
- OnMainScriptCached(owner_, success)); |
+ resource_ids_.erase(url); |
+ // TODO(michaeln): Doom the resource id. |
} |
- if (is_eval_complete_ && resources_finished_ == resources_started_) { |
- FOR_EACH_OBSERVER(Observer, observers_, |
- OnAllScriptsCached(owner_, has_error_)); |
+} |
+ |
+void ServiceWorkerScriptCacheMap::GetResources( |
+ std::vector<ServiceWorkerDatabase::ResourceRecord>* resources) { |
+ DCHECK(resources->empty()); |
+ for (ResourceIDMap::const_iterator it = resource_ids_.begin(); |
+ it != resource_ids_.end(); ++it) { |
+ ServiceWorkerDatabase::ResourceRecord record = { it->second, it->first }; |
+ resources->push_back(record); |
} |
} |
-void ServiceWorkerScriptCacheMap::NotifyEvalCompletion() { |
- DCHECK(!is_eval_complete_); |
- is_eval_complete_ = true; |
- if (resources_finished_ == resources_started_) { |
- FOR_EACH_OBSERVER(Observer, observers_, |
- OnAllScriptsCached(owner_, has_error_)); |
+void ServiceWorkerScriptCacheMap::SetResources( |
+ const std::vector<ServiceWorkerDatabase::ResourceRecord>& resources) { |
+ DCHECK(resource_ids_.empty()); |
+ typedef std::vector<ServiceWorkerDatabase::ResourceRecord> RecordVector; |
+ for (RecordVector::const_iterator it = resources.begin(); |
+ it != resources.end(); ++it) { |
+ resource_ids_[it->url] = it->resource_id; |
} |
} |