| 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 "base/stringprintf.h" | 9 #include "base/stringprintf.h" |
| 10 #include "webkit/appcache/appcache.h" | 10 #include "webkit/appcache/appcache.h" |
| (...skipping 21 matching lines...) Expand all Loading... |
| 32 } // Anonymous namespace | 32 } // Anonymous namespace |
| 33 | 33 |
| 34 AppCacheHost::AppCacheHost(int host_id, AppCacheFrontend* frontend, | 34 AppCacheHost::AppCacheHost(int host_id, AppCacheFrontend* frontend, |
| 35 AppCacheService* service) | 35 AppCacheService* service) |
| 36 : host_id_(host_id), parent_host_id_(kNoHostId), parent_process_id_(0), | 36 : host_id_(host_id), parent_host_id_(kNoHostId), parent_process_id_(0), |
| 37 pending_main_resource_cache_id_(kNoCacheId), | 37 pending_main_resource_cache_id_(kNoCacheId), |
| 38 pending_selected_cache_id_(kNoCacheId), | 38 pending_selected_cache_id_(kNoCacheId), |
| 39 frontend_(frontend), service_(service), | 39 frontend_(frontend), service_(service), |
| 40 pending_get_status_callback_(NULL), pending_start_update_callback_(NULL), | 40 pending_get_status_callback_(NULL), pending_start_update_callback_(NULL), |
| 41 pending_swap_cache_callback_(NULL), pending_callback_param_(NULL), | 41 pending_swap_cache_callback_(NULL), pending_callback_param_(NULL), |
| 42 main_resource_blocked_(false), associated_cache_info_pending_(false) { | 42 main_resource_was_fallback_(false), main_resource_blocked_(false), |
| 43 associated_cache_info_pending_(false) { |
| 43 } | 44 } |
| 44 | 45 |
| 45 AppCacheHost::~AppCacheHost() { | 46 AppCacheHost::~AppCacheHost() { |
| 46 FOR_EACH_OBSERVER(Observer, observers_, OnDestructionImminent(this)); | 47 FOR_EACH_OBSERVER(Observer, observers_, OnDestructionImminent(this)); |
| 47 if (associated_cache_.get()) | 48 if (associated_cache_.get()) |
| 48 associated_cache_->UnassociateHost(this); | 49 associated_cache_->UnassociateHost(this); |
| 49 if (group_being_updated_.get()) | 50 if (group_being_updated_.get()) |
| 50 group_being_updated_->RemoveUpdateObserver(this); | 51 group_being_updated_->RemoveUpdateObserver(this); |
| 51 service_->storage()->CancelDelegateCallbacks(this); | 52 service_->storage()->CancelDelegateCallbacks(this); |
| 52 } | 53 } |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 137 if (appcache_id != kNoCacheId) { | 138 if (appcache_id != kNoCacheId) { |
| 138 LoadSelectedCache(appcache_id); | 139 LoadSelectedCache(appcache_id); |
| 139 return; | 140 return; |
| 140 } | 141 } |
| 141 FinishCacheSelection(NULL, NULL); | 142 FinishCacheSelection(NULL, NULL); |
| 142 } | 143 } |
| 143 | 144 |
| 144 // TODO(michaeln): change method name to MarkEntryAsForeign for consistency | 145 // TODO(michaeln): change method name to MarkEntryAsForeign for consistency |
| 145 void AppCacheHost::MarkAsForeignEntry(const GURL& document_url, | 146 void AppCacheHost::MarkAsForeignEntry(const GURL& document_url, |
| 146 int64 cache_document_was_loaded_from) { | 147 int64 cache_document_was_loaded_from) { |
| 148 // The document url is not the resource url in the fallback case. |
| 147 service_->storage()->MarkEntryAsForeign( | 149 service_->storage()->MarkEntryAsForeign( |
| 148 document_url, cache_document_was_loaded_from); | 150 main_resource_was_fallback_ ? fallback_url_ : document_url, |
| 151 cache_document_was_loaded_from); |
| 149 SelectCache(document_url, kNoCacheId, GURL()); | 152 SelectCache(document_url, kNoCacheId, GURL()); |
| 150 } | 153 } |
| 151 | 154 |
| 152 void AppCacheHost::GetStatusWithCallback(GetStatusCallback* callback, | 155 void AppCacheHost::GetStatusWithCallback(GetStatusCallback* callback, |
| 153 void* callback_param) { | 156 void* callback_param) { |
| 154 DCHECK(!pending_start_update_callback_ && | 157 DCHECK(!pending_start_update_callback_ && |
| 155 !pending_swap_cache_callback_ && | 158 !pending_swap_cache_callback_ && |
| 156 !pending_get_status_callback_); | 159 !pending_get_status_callback_); |
| 157 | 160 |
| 158 pending_get_status_callback_ = callback; | 161 pending_get_status_callback_ = callback; |
| (...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 445 void AppCacheHost::LoadMainResourceCache(int64 cache_id) { | 448 void AppCacheHost::LoadMainResourceCache(int64 cache_id) { |
| 446 DCHECK(cache_id != kNoCacheId); | 449 DCHECK(cache_id != kNoCacheId); |
| 447 if (pending_main_resource_cache_id_ == cache_id || | 450 if (pending_main_resource_cache_id_ == cache_id || |
| 448 (main_resource_cache_ && main_resource_cache_->cache_id() == cache_id)) { | 451 (main_resource_cache_ && main_resource_cache_->cache_id() == cache_id)) { |
| 449 return; | 452 return; |
| 450 } | 453 } |
| 451 pending_main_resource_cache_id_ = cache_id; | 454 pending_main_resource_cache_id_ = cache_id; |
| 452 service_->storage()->LoadCache(cache_id, this); | 455 service_->storage()->LoadCache(cache_id, this); |
| 453 } | 456 } |
| 454 | 457 |
| 458 void AppCacheHost::NotifyMainResourceFallback(const GURL& fallback_url) { |
| 459 main_resource_was_fallback_ = true; |
| 460 fallback_url_ = fallback_url; |
| 461 } |
| 462 |
| 455 void AppCacheHost::NotifyMainResourceBlocked(const GURL& manifest_url) { | 463 void AppCacheHost::NotifyMainResourceBlocked(const GURL& manifest_url) { |
| 456 main_resource_blocked_ = true; | 464 main_resource_blocked_ = true; |
| 457 blocked_manifest_url_ = manifest_url; | 465 blocked_manifest_url_ = manifest_url; |
| 458 } | 466 } |
| 459 | 467 |
| 460 void AppCacheHost::AssociateCache(AppCache* cache) { | 468 void AppCacheHost::AssociateCache(AppCache* cache) { |
| 461 if (associated_cache_.get()) { | 469 if (associated_cache_.get()) { |
| 462 associated_cache_->UnassociateHost(this); | 470 associated_cache_->UnassociateHost(this); |
| 463 } | 471 } |
| 464 | 472 |
| 465 associated_cache_ = cache; | 473 associated_cache_ = cache; |
| 466 SetSwappableCache(cache ? cache->owning_group() : NULL); | 474 SetSwappableCache(cache ? cache->owning_group() : NULL); |
| 467 associated_cache_info_pending_ = cache && !cache->is_complete(); | 475 associated_cache_info_pending_ = cache && !cache->is_complete(); |
| 468 AppCacheInfo info; | 476 AppCacheInfo info; |
| 469 if (cache) { | 477 if (cache) { |
| 470 cache->AssociateHost(this); | 478 cache->AssociateHost(this); |
| 471 FillCacheInfo(cache, GetStatus(), &info); | 479 FillCacheInfo(cache, GetStatus(), &info); |
| 472 } | 480 } |
| 473 frontend_->OnCacheSelected(host_id_, info); | 481 frontend_->OnCacheSelected(host_id_, info); |
| 474 } | 482 } |
| 475 | 483 |
| 476 } // namespace appcache | 484 } // namespace appcache |
| OLD | NEW |