| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "webkit/appcache/appcache_host.h" | 5 #include "webkit/appcache/appcache_host.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/string_util.h" | 8 #include "base/string_util.h" |
| 9 #include "webkit/appcache/appcache.h" | 9 #include "webkit/appcache/appcache.h" |
| 10 #include "webkit/appcache/appcache_backend_impl.h" | 10 #include "webkit/appcache/appcache_backend_impl.h" |
| 11 #include "webkit/appcache/appcache_request_handler.h" | 11 #include "webkit/appcache/appcache_request_handler.h" |
| 12 | 12 |
| 13 namespace appcache { | 13 namespace appcache { |
| 14 | 14 |
| 15 namespace { |
| 16 |
| 17 void FillCacheInfo( |
| 18 const AppCache* cache, Status status, AppCacheInfo* info) { |
| 19 DCHECK(cache); |
| 20 info->cache_id = cache->cache_id(); |
| 21 info->status = status; |
| 22 info->is_complete = cache->is_complete(); |
| 23 if (info->is_complete) { |
| 24 info->manifest_url = cache->owning_group()->manifest_url(); |
| 25 info->last_update_time = cache->update_time(); |
| 26 info->creation_time = cache->owning_group()->creation_time(); |
| 27 info->size = cache->cache_size(); |
| 28 } |
| 29 } |
| 30 |
| 31 } // Anonymous namespace |
| 32 |
| 15 AppCacheHost::AppCacheHost(int host_id, AppCacheFrontend* frontend, | 33 AppCacheHost::AppCacheHost(int host_id, AppCacheFrontend* frontend, |
| 16 AppCacheService* service) | 34 AppCacheService* service) |
| 17 : host_id_(host_id), parent_host_id_(kNoHostId), parent_process_id_(0), | 35 : host_id_(host_id), parent_host_id_(kNoHostId), parent_process_id_(0), |
| 18 pending_main_resource_cache_id_(kNoCacheId), | 36 pending_main_resource_cache_id_(kNoCacheId), |
| 19 pending_selected_cache_id_(kNoCacheId), | 37 pending_selected_cache_id_(kNoCacheId), |
| 20 frontend_(frontend), service_(service), | 38 frontend_(frontend), service_(service), |
| 21 pending_get_status_callback_(NULL), pending_start_update_callback_(NULL), | 39 pending_get_status_callback_(NULL), pending_start_update_callback_(NULL), |
| 22 pending_swap_cache_callback_(NULL), pending_callback_param_(NULL), | 40 pending_swap_cache_callback_(NULL), pending_callback_param_(NULL), |
| 23 main_resource_blocked_(false) { | 41 main_resource_blocked_(false), associated_cache_info_pending_(false) { |
| 24 } | 42 } |
| 25 | 43 |
| 26 AppCacheHost::~AppCacheHost() { | 44 AppCacheHost::~AppCacheHost() { |
| 27 FOR_EACH_OBSERVER(Observer, observers_, OnDestructionImminent(this)); | 45 FOR_EACH_OBSERVER(Observer, observers_, OnDestructionImminent(this)); |
| 28 if (associated_cache_.get()) | 46 if (associated_cache_.get()) |
| 29 associated_cache_->UnassociateHost(this); | 47 associated_cache_->UnassociateHost(this); |
| 30 if (group_being_updated_.get()) | 48 if (group_being_updated_.get()) |
| 31 group_being_updated_->RemoveUpdateObserver(this); | 49 group_being_updated_->RemoveUpdateObserver(this); |
| 32 service_->storage()->CancelDelegateCallbacks(this); | 50 service_->storage()->CancelDelegateCallbacks(this); |
| 33 } | 51 } |
| (...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 389 | 407 |
| 390 void AppCacheHost::OnUpdateComplete(AppCacheGroup* group) { | 408 void AppCacheHost::OnUpdateComplete(AppCacheGroup* group) { |
| 391 DCHECK_EQ(group, group_being_updated_); | 409 DCHECK_EQ(group, group_being_updated_); |
| 392 group->RemoveUpdateObserver(this); | 410 group->RemoveUpdateObserver(this); |
| 393 | 411 |
| 394 // Add a reference to the newest complete cache. | 412 // Add a reference to the newest complete cache. |
| 395 SetSwappableCache(group); | 413 SetSwappableCache(group); |
| 396 | 414 |
| 397 group_being_updated_ = NULL; | 415 group_being_updated_ = NULL; |
| 398 newest_cache_of_group_being_updated_ = NULL; | 416 newest_cache_of_group_being_updated_ = NULL; |
| 417 |
| 418 if (associated_cache_info_pending_ && associated_cache_.get() && |
| 419 associated_cache_->is_complete()) { |
| 420 AppCacheInfo info; |
| 421 FillCacheInfo(associated_cache_.get(), GetStatus(), &info); |
| 422 associated_cache_info_pending_ = false; |
| 423 frontend_->OnCacheSelected(host_id_, info); |
| 424 } |
| 399 } | 425 } |
| 400 | 426 |
| 401 void AppCacheHost::OnContentBlocked(AppCacheGroup* group) { | 427 void AppCacheHost::OnContentBlocked(AppCacheGroup* group) { |
| 402 frontend_->OnContentBlocked(host_id_, group->manifest_url()); | 428 frontend_->OnContentBlocked(host_id_, group->manifest_url()); |
| 403 } | 429 } |
| 404 | 430 |
| 405 void AppCacheHost::SetSwappableCache(AppCacheGroup* group) { | 431 void AppCacheHost::SetSwappableCache(AppCacheGroup* group) { |
| 406 if (!group) { | 432 if (!group) { |
| 407 swappable_cache_ = NULL; | 433 swappable_cache_ = NULL; |
| 408 } else { | 434 } else { |
| (...skipping 20 matching lines...) Expand all Loading... |
| 429 blocked_manifest_url_ = manifest_url; | 455 blocked_manifest_url_ = manifest_url; |
| 430 } | 456 } |
| 431 | 457 |
| 432 void AppCacheHost::AssociateCache(AppCache* cache) { | 458 void AppCacheHost::AssociateCache(AppCache* cache) { |
| 433 if (associated_cache_.get()) { | 459 if (associated_cache_.get()) { |
| 434 associated_cache_->UnassociateHost(this); | 460 associated_cache_->UnassociateHost(this); |
| 435 } | 461 } |
| 436 | 462 |
| 437 associated_cache_ = cache; | 463 associated_cache_ = cache; |
| 438 SetSwappableCache(cache ? cache->owning_group() : NULL); | 464 SetSwappableCache(cache ? cache->owning_group() : NULL); |
| 465 associated_cache_info_pending_ = cache && !cache->is_complete(); |
| 439 AppCacheInfo info; | 466 AppCacheInfo info; |
| 440 if (cache) { | 467 if (cache) { |
| 441 cache->AssociateHost(this); | 468 cache->AssociateHost(this); |
| 442 info.cache_id = cache->cache_id(); | 469 FillCacheInfo(cache, GetStatus(), &info); |
| 443 info.status = GetStatus(); | |
| 444 info.is_complete = cache->is_complete(); | |
| 445 if (cache->is_complete()) { | |
| 446 // TODO(kkanetkar): Get manifest URL info for NULL owning_group(). | |
| 447 info.manifest_url = cache->owning_group()->manifest_url(); | |
| 448 info.last_update_time = cache->update_time(); | |
| 449 info.creation_time = cache->owning_group()->creation_time(); | |
| 450 info.size = cache->cache_size(); | |
| 451 } | |
| 452 frontend_->OnCacheSelected(host_id_, info); | |
| 453 } else { | |
| 454 // No Cache. | |
| 455 frontend_->OnCacheSelected(host_id_, info); | |
| 456 } | 470 } |
| 471 frontend_->OnCacheSelected(host_id_, info); |
| 457 } | 472 } |
| 458 | 473 |
| 459 } // namespace appcache | 474 } // namespace appcache |
| OLD | NEW |