Index: webkit/appcache/appcache_host.cc |
=================================================================== |
--- webkit/appcache/appcache_host.cc (revision 54586) |
+++ webkit/appcache/appcache_host.cc (working copy) |
@@ -12,6 +12,24 @@ |
namespace appcache { |
+namespace { |
+ |
+void FillCacheInfo( |
+ const AppCache* cache, Status status, AppCacheInfo* info) { |
+ DCHECK(cache); |
+ info->cache_id = cache->cache_id(); |
+ info->status = status; |
+ info->is_complete = cache->is_complete(); |
+ if (info->is_complete) { |
+ info->manifest_url = cache->owning_group()->manifest_url(); |
+ info->last_update_time = cache->update_time(); |
+ info->creation_time = cache->owning_group()->creation_time(); |
+ info->size = cache->cache_size(); |
+ } |
+} |
+ |
+} // Anonymous namespace |
+ |
AppCacheHost::AppCacheHost(int host_id, AppCacheFrontend* frontend, |
AppCacheService* service) |
: host_id_(host_id), parent_host_id_(kNoHostId), parent_process_id_(0), |
@@ -20,7 +38,7 @@ |
frontend_(frontend), service_(service), |
pending_get_status_callback_(NULL), pending_start_update_callback_(NULL), |
pending_swap_cache_callback_(NULL), pending_callback_param_(NULL), |
- main_resource_blocked_(false) { |
+ main_resource_blocked_(false), associated_cache_info_pending_(false) { |
} |
AppCacheHost::~AppCacheHost() { |
@@ -396,6 +414,14 @@ |
group_being_updated_ = NULL; |
newest_cache_of_group_being_updated_ = NULL; |
+ |
+ if (associated_cache_info_pending_ && associated_cache_.get() && |
+ associated_cache_->is_complete()) { |
+ AppCacheInfo info; |
+ FillCacheInfo(associated_cache_.get(), GetStatus(), &info); |
+ associated_cache_info_pending_ = false; |
+ frontend_->OnCacheSelected(host_id_, info); |
+ } |
} |
void AppCacheHost::OnContentBlocked(AppCacheGroup* group) { |
@@ -436,24 +462,13 @@ |
associated_cache_ = cache; |
SetSwappableCache(cache ? cache->owning_group() : NULL); |
+ associated_cache_info_pending_ = cache && !cache->is_complete(); |
AppCacheInfo info; |
if (cache) { |
cache->AssociateHost(this); |
- info.cache_id = cache->cache_id(); |
- info.status = GetStatus(); |
- info.is_complete = cache->is_complete(); |
- if (cache->is_complete()) { |
- // TODO(kkanetkar): Get manifest URL info for NULL owning_group(). |
- info.manifest_url = cache->owning_group()->manifest_url(); |
- info.last_update_time = cache->update_time(); |
- info.creation_time = cache->owning_group()->creation_time(); |
- info.size = cache->cache_size(); |
- } |
- frontend_->OnCacheSelected(host_id_, info); |
- } else { |
- // No Cache. |
- frontend_->OnCacheSelected(host_id_, info); |
+ FillCacheInfo(cache, GetStatus(), &info); |
} |
+ frontend_->OnCacheSelected(host_id_, info); |
} |
} // namespace appcache |