| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "content/browser/appcache/appcache_storage_impl.h" | 5 #include "content/browser/appcache/appcache_storage_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <functional> | 8 #include <functional> |
| 9 #include <set> | 9 #include <set> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 463 // TODO(michaeln): histogram is fishing for clues to crbug/95101 | 463 // TODO(michaeln): histogram is fishing for clues to crbug/95101 |
| 464 if (!cache->get()->GetEntry(group_record_.manifest_url)) { | 464 if (!cache->get()->GetEntry(group_record_.manifest_url)) { |
| 465 AppCacheHistograms::AddMissingManifestDetectedAtCallsite( | 465 AppCacheHistograms::AddMissingManifestDetectedAtCallsite( |
| 466 AppCacheHistograms::CALLSITE_1); | 466 AppCacheHistograms::CALLSITE_1); |
| 467 } | 467 } |
| 468 } else { | 468 } else { |
| 469 (*group) = new AppCacheGroup( | 469 (*group) = new AppCacheGroup( |
| 470 storage_, group_record_.manifest_url, | 470 storage_, group_record_.manifest_url, |
| 471 group_record_.group_id); | 471 group_record_.group_id); |
| 472 group->get()->set_creation_time(group_record_.creation_time); | 472 group->get()->set_creation_time(group_record_.creation_time); |
| 473 group->get()->set_last_full_update_check_time( |
| 474 group_record_.last_full_update_check_time); |
| 475 group->get()->set_first_evictable_error_time( |
| 476 group_record_.first_evictable_error_time); |
| 473 group->get()->AddCache(cache->get()); | 477 group->get()->AddCache(cache->get()); |
| 474 | 478 |
| 475 // TODO(michaeln): histogram is fishing for clues to crbug/95101 | 479 // TODO(michaeln): histogram is fishing for clues to crbug/95101 |
| 476 if (!cache->get()->GetEntry(group_record_.manifest_url)) { | 480 if (!cache->get()->GetEntry(group_record_.manifest_url)) { |
| 477 AppCacheHistograms::AddMissingManifestDetectedAtCallsite( | 481 AppCacheHistograms::AddMissingManifestDetectedAtCallsite( |
| 478 AppCacheHistograms::CALLSITE_2); | 482 AppCacheHistograms::CALLSITE_2); |
| 479 } | 483 } |
| 480 } | 484 } |
| 481 DCHECK(group->get()->newest_complete_cache() == cache->get()); | 485 DCHECK(group->get()->newest_complete_cache() == cache->get()); |
| 482 | 486 |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 625 }; | 629 }; |
| 626 | 630 |
| 627 AppCacheStorageImpl::StoreGroupAndCacheTask::StoreGroupAndCacheTask( | 631 AppCacheStorageImpl::StoreGroupAndCacheTask::StoreGroupAndCacheTask( |
| 628 AppCacheStorageImpl* storage, AppCacheGroup* group, AppCache* newest_cache) | 632 AppCacheStorageImpl* storage, AppCacheGroup* group, AppCache* newest_cache) |
| 629 : StoreOrLoadTask(storage), group_(group), cache_(newest_cache), | 633 : StoreOrLoadTask(storage), group_(group), cache_(newest_cache), |
| 630 success_(false), would_exceed_quota_(false), | 634 success_(false), would_exceed_quota_(false), |
| 631 space_available_(-1), new_origin_usage_(-1) { | 635 space_available_(-1), new_origin_usage_(-1) { |
| 632 group_record_.group_id = group->group_id(); | 636 group_record_.group_id = group->group_id(); |
| 633 group_record_.manifest_url = group->manifest_url(); | 637 group_record_.manifest_url = group->manifest_url(); |
| 634 group_record_.origin = group_record_.manifest_url.GetOrigin(); | 638 group_record_.origin = group_record_.manifest_url.GetOrigin(); |
| 639 group_record_.last_full_update_check_time = |
| 640 group->last_full_update_check_time(); |
| 641 group_record_.first_evictable_error_time = |
| 642 group->first_evictable_error_time(); |
| 635 newest_cache->ToDatabaseRecords( | 643 newest_cache->ToDatabaseRecords( |
| 636 group, | 644 group, |
| 637 &cache_record_, &entry_records_, | 645 &cache_record_, &entry_records_, |
| 638 &intercept_namespace_records_, | 646 &intercept_namespace_records_, |
| 639 &fallback_namespace_records_, | 647 &fallback_namespace_records_, |
| 640 &online_whitelist_records_); | 648 &online_whitelist_records_); |
| 641 } | 649 } |
| 642 | 650 |
| 643 void AppCacheStorageImpl::StoreGroupAndCacheTask::GetQuotaThenSchedule() { | 651 void AppCacheStorageImpl::StoreGroupAndCacheTask::GetQuotaThenSchedule() { |
| 644 storage::QuotaManager* quota_manager = NULL; | 652 storage::QuotaManager* quota_manager = NULL; |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 697 group_record_.last_access_time = base::Time::Now(); | 705 group_record_.last_access_time = base::Time::Now(); |
| 698 success_ = database_->InsertGroup(&group_record_); | 706 success_ = database_->InsertGroup(&group_record_); |
| 699 } else { | 707 } else { |
| 700 DCHECK(group_record_.group_id == existing_group.group_id); | 708 DCHECK(group_record_.group_id == existing_group.group_id); |
| 701 DCHECK(group_record_.manifest_url == existing_group.manifest_url); | 709 DCHECK(group_record_.manifest_url == existing_group.manifest_url); |
| 702 DCHECK(group_record_.origin == existing_group.origin); | 710 DCHECK(group_record_.origin == existing_group.origin); |
| 703 | 711 |
| 704 database_->UpdateLastAccessTime(group_record_.group_id, | 712 database_->UpdateLastAccessTime(group_record_.group_id, |
| 705 base::Time::Now()); | 713 base::Time::Now()); |
| 706 | 714 |
| 715 database_->UpdateEvictionTimes( |
| 716 group_record_.group_id, |
| 717 group_record_.last_full_update_check_time, |
| 718 group_record_.first_evictable_error_time); |
| 719 |
| 707 AppCacheDatabase::CacheRecord cache; | 720 AppCacheDatabase::CacheRecord cache; |
| 708 if (database_->FindCacheForGroup(group_record_.group_id, &cache)) { | 721 if (database_->FindCacheForGroup(group_record_.group_id, &cache)) { |
| 709 // Get the set of response ids in the old cache. | 722 // Get the set of response ids in the old cache. |
| 710 std::set<int64> existing_response_ids; | 723 std::set<int64> existing_response_ids; |
| 711 database_->FindResponseIdsForCacheAsSet(cache.cache_id, | 724 database_->FindResponseIdsForCacheAsSet(cache.cache_id, |
| 712 &existing_response_ids); | 725 &existing_response_ids); |
| 713 | 726 |
| 714 // Remove those that remain in the new cache. | 727 // Remove those that remain in the new cache. |
| 715 std::vector<AppCacheDatabase::EntryRecord>::const_iterator entry_iter = | 728 std::vector<AppCacheDatabase::EntryRecord>::const_iterator entry_iter = |
| 716 entry_records_.begin(); | 729 entry_records_.begin(); |
| (...skipping 631 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1348 tracked_objects::ScopedTracker tracking_profile( | 1361 tracked_objects::ScopedTracker tracking_profile( |
| 1349 FROM_HERE_WITH_EXPLICIT_FUNCTION( | 1362 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
| 1350 "AppCacheStorageImpl::CommitLastAccessTimesTask")); | 1363 "AppCacheStorageImpl::CommitLastAccessTimesTask")); |
| 1351 database_->CommitLazyLastAccessTimes(); | 1364 database_->CommitLazyLastAccessTimes(); |
| 1352 } | 1365 } |
| 1353 | 1366 |
| 1354 protected: | 1367 protected: |
| 1355 ~CommitLastAccessTimesTask() override {} | 1368 ~CommitLastAccessTimesTask() override {} |
| 1356 }; | 1369 }; |
| 1357 | 1370 |
| 1371 // UpdateEvictionTimes ------- |
| 1372 |
| 1373 class AppCacheStorageImpl::UpdateEvictionTimesTask |
| 1374 : public DatabaseTask { |
| 1375 public: |
| 1376 UpdateEvictionTimesTask( |
| 1377 AppCacheStorageImpl* storage, AppCacheGroup* group) |
| 1378 : DatabaseTask(storage), group_id_(group->group_id()), |
| 1379 last_full_update_check_time_(group->last_full_update_check_time()), |
| 1380 first_evictable_error_time_(group->first_evictable_error_time()) { |
| 1381 } |
| 1382 |
| 1383 // DatabaseTask: |
| 1384 void Run() override; |
| 1385 |
| 1386 protected: |
| 1387 ~UpdateEvictionTimesTask() override {} |
| 1388 |
| 1389 private: |
| 1390 int64 group_id_; |
| 1391 base::Time last_full_update_check_time_; |
| 1392 base::Time first_evictable_error_time_; |
| 1393 }; |
| 1394 |
| 1395 void AppCacheStorageImpl::UpdateEvictionTimesTask::Run() { |
| 1396 tracked_objects::ScopedTracker tracking_profile( |
| 1397 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
| 1398 "AppCacheStorageImpl::UpdateEvictionTimes")); |
| 1399 database_->UpdateEvictionTimes(group_id_, |
| 1400 last_full_update_check_time_, |
| 1401 first_evictable_error_time_); |
| 1402 } |
| 1403 |
| 1358 // AppCacheStorageImpl --------------------------------------------------- | 1404 // AppCacheStorageImpl --------------------------------------------------- |
| 1359 | 1405 |
| 1360 AppCacheStorageImpl::AppCacheStorageImpl(AppCacheServiceImpl* service) | 1406 AppCacheStorageImpl::AppCacheStorageImpl(AppCacheServiceImpl* service) |
| 1361 : AppCacheStorage(service), | 1407 : AppCacheStorage(service), |
| 1362 is_incognito_(false), | 1408 is_incognito_(false), |
| 1363 is_response_deletion_scheduled_(false), | 1409 is_response_deletion_scheduled_(false), |
| 1364 did_start_deleting_responses_(false), | 1410 did_start_deleting_responses_(false), |
| 1365 last_deletable_response_rowid_(0), | 1411 last_deletable_response_rowid_(0), |
| 1366 database_(NULL), | 1412 database_(NULL), |
| 1367 is_disabled_(false), | 1413 is_disabled_(false), |
| (...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1667 void AppCacheStorageImpl::MakeGroupObsolete(AppCacheGroup* group, | 1713 void AppCacheStorageImpl::MakeGroupObsolete(AppCacheGroup* group, |
| 1668 Delegate* delegate, | 1714 Delegate* delegate, |
| 1669 int response_code) { | 1715 int response_code) { |
| 1670 DCHECK(group && delegate); | 1716 DCHECK(group && delegate); |
| 1671 scoped_refptr<MakeGroupObsoleteTask> task( | 1717 scoped_refptr<MakeGroupObsoleteTask> task( |
| 1672 new MakeGroupObsoleteTask(this, group, response_code)); | 1718 new MakeGroupObsoleteTask(this, group, response_code)); |
| 1673 task->AddDelegate(GetOrCreateDelegateReference(delegate)); | 1719 task->AddDelegate(GetOrCreateDelegateReference(delegate)); |
| 1674 task->Schedule(); | 1720 task->Schedule(); |
| 1675 } | 1721 } |
| 1676 | 1722 |
| 1723 void AppCacheStorageImpl::StoreEvictionTimes(AppCacheGroup* group) { |
| 1724 scoped_refptr<UpdateEvictionTimesTask> task( |
| 1725 new UpdateEvictionTimesTask(this, group)); |
| 1726 task->Schedule(); |
| 1727 } |
| 1728 |
| 1677 AppCacheResponseReader* AppCacheStorageImpl::CreateResponseReader( | 1729 AppCacheResponseReader* AppCacheStorageImpl::CreateResponseReader( |
| 1678 const GURL& manifest_url, int64 group_id, int64 response_id) { | 1730 const GURL& manifest_url, int64 group_id, int64 response_id) { |
| 1679 return new AppCacheResponseReader(response_id, group_id, disk_cache()); | 1731 return new AppCacheResponseReader(response_id, group_id, disk_cache()); |
| 1680 } | 1732 } |
| 1681 | 1733 |
| 1682 AppCacheResponseWriter* AppCacheStorageImpl::CreateResponseWriter( | 1734 AppCacheResponseWriter* AppCacheStorageImpl::CreateResponseWriter( |
| 1683 const GURL& manifest_url, int64 group_id) { | 1735 const GURL& manifest_url, int64 group_id) { |
| 1684 return new AppCacheResponseWriter(NewResponseId(), group_id, disk_cache()); | 1736 return new AppCacheResponseWriter(NewResponseId(), group_id, disk_cache()); |
| 1685 } | 1737 } |
| 1686 | 1738 |
| (...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1921 | 1973 |
| 1922 void AppCacheStorageImpl::OnLazyCommitTimer() { | 1974 void AppCacheStorageImpl::OnLazyCommitTimer() { |
| 1923 lazy_commit_timer_.Stop(); | 1975 lazy_commit_timer_.Stop(); |
| 1924 if (is_disabled()) | 1976 if (is_disabled()) |
| 1925 return; | 1977 return; |
| 1926 scoped_refptr<DatabaseTask> task(new CommitLastAccessTimesTask(this)); | 1978 scoped_refptr<DatabaseTask> task(new CommitLastAccessTimesTask(this)); |
| 1927 task->Schedule(); | 1979 task->Schedule(); |
| 1928 } | 1980 } |
| 1929 | 1981 |
| 1930 } // namespace content | 1982 } // namespace content |
| OLD | NEW |