| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 <stack> | 5 #include <stack> |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
| 9 #include "base/callback.h" | 9 #include "base/callback.h" |
| 10 #include "base/message_loop.h" | 10 #include "base/message_loop.h" |
| (...skipping 650 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 661 EXPECT_EQ(kDefaultEntrySize, storage()->usage_map_[kOrigin]); | 661 EXPECT_EQ(kDefaultEntrySize, storage()->usage_map_[kOrigin]); |
| 662 | 662 |
| 663 // Also insert some related records. | 663 // Also insert some related records. |
| 664 AppCacheDatabase::EntryRecord entry_record; | 664 AppCacheDatabase::EntryRecord entry_record; |
| 665 entry_record.cache_id = 1; | 665 entry_record.cache_id = 1; |
| 666 entry_record.flags = AppCacheEntry::FALLBACK; | 666 entry_record.flags = AppCacheEntry::FALLBACK; |
| 667 entry_record.response_id = 1; | 667 entry_record.response_id = 1; |
| 668 entry_record.url = kEntryUrl; | 668 entry_record.url = kEntryUrl; |
| 669 EXPECT_TRUE(database()->InsertEntry(&entry_record)); | 669 EXPECT_TRUE(database()->InsertEntry(&entry_record)); |
| 670 | 670 |
| 671 AppCacheDatabase::FallbackNameSpaceRecord fallback_namespace_record; | 671 AppCacheDatabase::NamespaceRecord fallback_namespace_record; |
| 672 fallback_namespace_record.cache_id = 1; | 672 fallback_namespace_record.cache_id = 1; |
| 673 fallback_namespace_record.fallback_entry_url = kEntryUrl; | 673 fallback_namespace_record.target_url = kEntryUrl; |
| 674 fallback_namespace_record.namespace_url = kFallbackNamespace; | 674 fallback_namespace_record.namespace_url = kFallbackNamespace; |
| 675 fallback_namespace_record.origin = kManifestUrl.GetOrigin(); | 675 fallback_namespace_record.origin = kManifestUrl.GetOrigin(); |
| 676 EXPECT_TRUE( | 676 EXPECT_TRUE(database()->InsertNamespace(&fallback_namespace_record)); |
| 677 database()->InsertFallbackNameSpace(&fallback_namespace_record)); | |
| 678 | 677 |
| 679 AppCacheDatabase::OnlineWhiteListRecord online_whitelist_record; | 678 AppCacheDatabase::OnlineWhiteListRecord online_whitelist_record; |
| 680 online_whitelist_record.cache_id = 1; | 679 online_whitelist_record.cache_id = 1; |
| 681 online_whitelist_record.namespace_url = kOnlineNamespace; | 680 online_whitelist_record.namespace_url = kOnlineNamespace; |
| 682 EXPECT_TRUE(database()->InsertOnlineWhiteList(&online_whitelist_record)); | 681 EXPECT_TRUE(database()->InsertOnlineWhiteList(&online_whitelist_record)); |
| 683 | 682 |
| 684 // Conduct the test. | 683 // Conduct the test. |
| 685 storage()->MakeGroupObsolete(group_, delegate()); | 684 storage()->MakeGroupObsolete(group_, delegate()); |
| 686 EXPECT_FALSE(group_->is_obsolete()); | 685 EXPECT_FALSE(group_->is_obsolete()); |
| 687 } | 686 } |
| 688 | 687 |
| 689 void Verify_MakeGroupObsolete() { | 688 void Verify_MakeGroupObsolete() { |
| 690 EXPECT_TRUE(delegate()->obsoleted_success_); | 689 EXPECT_TRUE(delegate()->obsoleted_success_); |
| 691 EXPECT_EQ(group_.get(), delegate()->obsoleted_group_.get()); | 690 EXPECT_EQ(group_.get(), delegate()->obsoleted_group_.get()); |
| 692 EXPECT_TRUE(group_->is_obsolete()); | 691 EXPECT_TRUE(group_->is_obsolete()); |
| 693 EXPECT_TRUE(storage()->usage_map_.empty()); | 692 EXPECT_TRUE(storage()->usage_map_.empty()); |
| 694 | 693 |
| 695 // The cache and group have been deleted from the database. | 694 // The cache and group have been deleted from the database. |
| 696 AppCacheDatabase::GroupRecord group_record; | 695 AppCacheDatabase::GroupRecord group_record; |
| 697 AppCacheDatabase::CacheRecord cache_record; | 696 AppCacheDatabase::CacheRecord cache_record; |
| 698 EXPECT_FALSE(database()->FindGroup(1, &group_record)); | 697 EXPECT_FALSE(database()->FindGroup(1, &group_record)); |
| 699 EXPECT_FALSE(database()->FindCache(1, &cache_record)); | 698 EXPECT_FALSE(database()->FindCache(1, &cache_record)); |
| 700 | 699 |
| 701 // The related records should have been deleted too. | 700 // The related records should have been deleted too. |
| 702 std::vector<AppCacheDatabase::EntryRecord> entry_records; | 701 std::vector<AppCacheDatabase::EntryRecord> entry_records; |
| 703 database()->FindEntriesForCache(1, &entry_records); | 702 database()->FindEntriesForCache(1, &entry_records); |
| 704 EXPECT_TRUE(entry_records.empty()); | 703 EXPECT_TRUE(entry_records.empty()); |
| 705 std::vector<AppCacheDatabase::FallbackNameSpaceRecord> fallback_records; | 704 std::vector<AppCacheDatabase::NamespaceRecord> intercept_records; |
| 706 database()->FindFallbackNameSpacesForCache(1, &fallback_records); | 705 std::vector<AppCacheDatabase::NamespaceRecord> fallback_records; |
| 706 database()->FindNamespacesForCache( |
| 707 1, &intercept_records, &fallback_records); |
| 707 EXPECT_TRUE(fallback_records.empty()); | 708 EXPECT_TRUE(fallback_records.empty()); |
| 708 std::vector<AppCacheDatabase::OnlineWhiteListRecord> whitelist_records; | 709 std::vector<AppCacheDatabase::OnlineWhiteListRecord> whitelist_records; |
| 709 database()->FindOnlineWhiteListForCache(1, &whitelist_records); | 710 database()->FindOnlineWhiteListForCache(1, &whitelist_records); |
| 710 EXPECT_TRUE(whitelist_records.empty()); | 711 EXPECT_TRUE(whitelist_records.empty()); |
| 711 | 712 |
| 712 // Verify quota bookkeeping | 713 // Verify quota bookkeeping |
| 713 EXPECT_TRUE(storage()->usage_map_.empty()); | 714 EXPECT_TRUE(storage()->usage_map_.empty()); |
| 714 EXPECT_EQ(1, mock_quota_manager_proxy_->notify_storage_modified_count_); | 715 EXPECT_EQ(1, mock_quota_manager_proxy_->notify_storage_modified_count_); |
| 715 EXPECT_EQ(kOrigin, mock_quota_manager_proxy_->last_origin_); | 716 EXPECT_EQ(kOrigin, mock_quota_manager_proxy_->last_origin_); |
| 716 EXPECT_EQ(-kDefaultEntrySize, mock_quota_manager_proxy_->last_delta_); | 717 EXPECT_EQ(-kDefaultEntrySize, mock_quota_manager_proxy_->last_delta_); |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 882 PushNextTask(base::Bind( | 883 PushNextTask(base::Bind( |
| 883 &AppCacheStorageImplTest::Verify_BasicFindMainFallbackResponse, | 884 &AppCacheStorageImplTest::Verify_BasicFindMainFallbackResponse, |
| 884 base::Unretained(this))); | 885 base::Unretained(this))); |
| 885 | 886 |
| 886 // Setup some preconditions. Create a complete cache with a | 887 // Setup some preconditions. Create a complete cache with a |
| 887 // fallback namespace and entry. | 888 // fallback namespace and entry. |
| 888 MakeCacheAndGroup(kManifestUrl, 2, 1, true); | 889 MakeCacheAndGroup(kManifestUrl, 2, 1, true); |
| 889 cache_->AddEntry(kEntryUrl, AppCacheEntry(AppCacheEntry::FALLBACK, 1)); | 890 cache_->AddEntry(kEntryUrl, AppCacheEntry(AppCacheEntry::FALLBACK, 1)); |
| 890 cache_->AddEntry(kEntryUrl2, AppCacheEntry(AppCacheEntry::FALLBACK, 2)); | 891 cache_->AddEntry(kEntryUrl2, AppCacheEntry(AppCacheEntry::FALLBACK, 2)); |
| 891 cache_->fallback_namespaces_.push_back( | 892 cache_->fallback_namespaces_.push_back( |
| 892 FallbackNamespace(kFallbackNamespace2, kEntryUrl2)); | 893 Namespace(FALLBACK_NAMESPACE, kFallbackNamespace2, kEntryUrl2)); |
| 893 cache_->fallback_namespaces_.push_back( | 894 cache_->fallback_namespaces_.push_back( |
| 894 FallbackNamespace(kFallbackNamespace, kEntryUrl)); | 895 Namespace(FALLBACK_NAMESPACE, kFallbackNamespace, kEntryUrl)); |
| 895 AppCacheDatabase::CacheRecord cache_record; | 896 AppCacheDatabase::CacheRecord cache_record; |
| 896 std::vector<AppCacheDatabase::EntryRecord> entries; | 897 std::vector<AppCacheDatabase::EntryRecord> entries; |
| 897 std::vector<AppCacheDatabase::FallbackNameSpaceRecord> fallbacks; | 898 std::vector<AppCacheDatabase::NamespaceRecord> intercepts; |
| 899 std::vector<AppCacheDatabase::NamespaceRecord> fallbacks; |
| 898 std::vector<AppCacheDatabase::OnlineWhiteListRecord> whitelists; | 900 std::vector<AppCacheDatabase::OnlineWhiteListRecord> whitelists; |
| 899 cache_->ToDatabaseRecords(group_, | 901 cache_->ToDatabaseRecords(group_, |
| 900 &cache_record, &entries, &fallbacks, &whitelists); | 902 &cache_record, &entries, &intercepts, &fallbacks, &whitelists); |
| 901 | 903 |
| 902 std::vector<AppCacheDatabase::EntryRecord>::const_iterator iter = | 904 std::vector<AppCacheDatabase::EntryRecord>::const_iterator iter = |
| 903 entries.begin(); | 905 entries.begin(); |
| 904 while (iter != entries.end()) { | 906 while (iter != entries.end()) { |
| 905 // MakeCacheAndGroup has inserted the default entry record already | 907 // MakeCacheAndGroup has inserted the default entry record already |
| 906 if (iter->url != kDefaultEntryUrl) | 908 if (iter->url != kDefaultEntryUrl) |
| 907 EXPECT_TRUE(database()->InsertEntry(&(*iter))); | 909 EXPECT_TRUE(database()->InsertEntry(&(*iter))); |
| 908 ++iter; | 910 ++iter; |
| 909 } | 911 } |
| 910 | 912 |
| 911 EXPECT_TRUE(database()->InsertFallbackNameSpaceRecords(fallbacks)); | 913 EXPECT_TRUE(database()->InsertNamespaceRecords(fallbacks)); |
| 912 EXPECT_TRUE(database()->InsertOnlineWhiteListRecords(whitelists)); | 914 EXPECT_TRUE(database()->InsertOnlineWhiteListRecords(whitelists)); |
| 913 if (drop_from_working_set) { | 915 if (drop_from_working_set) { |
| 914 EXPECT_TRUE(cache_->HasOneRef()); | 916 EXPECT_TRUE(cache_->HasOneRef()); |
| 915 cache_ = NULL; | 917 cache_ = NULL; |
| 916 EXPECT_TRUE(group_->HasOneRef()); | 918 EXPECT_TRUE(group_->HasOneRef()); |
| 917 group_ = NULL; | 919 group_ = NULL; |
| 918 } | 920 } |
| 919 | 921 |
| 920 // Conduct the test. The test url is in both fallback namespace urls, | 922 // Conduct the test. The test url is in both fallback namespace urls, |
| 921 // but should match the longer of the two. | 923 // but should match the longer of the two. |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 981 | 983 |
| 982 // Add a fallback entry and namespace | 984 // Add a fallback entry and namespace |
| 983 entry_record.cache_id = id; | 985 entry_record.cache_id = id; |
| 984 entry_record.url = kEntryUrl2; | 986 entry_record.url = kEntryUrl2; |
| 985 entry_record.flags = AppCacheEntry::FALLBACK; | 987 entry_record.flags = AppCacheEntry::FALLBACK; |
| 986 entry_record.response_id = id + kFallbackEntryIdOffset; | 988 entry_record.response_id = id + kFallbackEntryIdOffset; |
| 987 EXPECT_TRUE(database()->InsertEntry(&entry_record)); | 989 EXPECT_TRUE(database()->InsertEntry(&entry_record)); |
| 988 cache_->AddEntry( | 990 cache_->AddEntry( |
| 989 entry_record.url, | 991 entry_record.url, |
| 990 AppCacheEntry(entry_record.flags, entry_record.response_id)); | 992 AppCacheEntry(entry_record.flags, entry_record.response_id)); |
| 991 AppCacheDatabase::FallbackNameSpaceRecord fallback_namespace_record; | 993 AppCacheDatabase::NamespaceRecord fallback_namespace_record; |
| 992 fallback_namespace_record.cache_id = id; | 994 fallback_namespace_record.cache_id = id; |
| 993 fallback_namespace_record.fallback_entry_url = entry_record.url; | 995 fallback_namespace_record.target_url = entry_record.url; |
| 994 fallback_namespace_record.namespace_url = kFallbackNamespace; | 996 fallback_namespace_record.namespace_url = kFallbackNamespace; |
| 995 fallback_namespace_record.origin = manifest_url.GetOrigin(); | 997 fallback_namespace_record.origin = manifest_url.GetOrigin(); |
| 996 EXPECT_TRUE( | 998 EXPECT_TRUE(database()->InsertNamespace(&fallback_namespace_record)); |
| 997 database()->InsertFallbackNameSpace(&fallback_namespace_record)); | |
| 998 cache_->fallback_namespaces_.push_back( | 999 cache_->fallback_namespaces_.push_back( |
| 999 FallbackNamespace(kFallbackNamespace, kEntryUrl2)); | 1000 Namespace(FALLBACK_NAMESPACE, kFallbackNamespace, kEntryUrl2)); |
| 1000 } | 1001 } |
| 1001 | 1002 |
| 1002 void Verify_FindMainResponseWithMultipleHits() { | 1003 void Verify_FindMainResponseWithMultipleHits() { |
| 1003 EXPECT_EQ(kEntryUrl, delegate()->found_url_); | 1004 EXPECT_EQ(kEntryUrl, delegate()->found_url_); |
| 1004 EXPECT_EQ(kManifestUrl3, delegate()->found_manifest_url_); | 1005 EXPECT_EQ(kManifestUrl3, delegate()->found_manifest_url_); |
| 1005 EXPECT_EQ(3, delegate()->found_cache_id_); | 1006 EXPECT_EQ(3, delegate()->found_cache_id_); |
| 1006 EXPECT_EQ(3, delegate()->found_group_id_); | 1007 EXPECT_EQ(3, delegate()->found_group_id_); |
| 1007 EXPECT_EQ(3, delegate()->found_entry_.response_id()); | 1008 EXPECT_EQ(3, delegate()->found_entry_.response_id()); |
| 1008 EXPECT_TRUE(delegate()->found_entry_.IsExplicit()); | 1009 EXPECT_TRUE(delegate()->found_entry_.IsExplicit()); |
| 1009 EXPECT_FALSE(delegate()->found_fallback_entry_.has_response_id()); | 1010 EXPECT_FALSE(delegate()->found_fallback_entry_.has_response_id()); |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1102 void FindMainResponseExclusions(bool drop_from_working_set) { | 1103 void FindMainResponseExclusions(bool drop_from_working_set) { |
| 1103 // Setup some preconditions. Create a complete cache with a | 1104 // Setup some preconditions. Create a complete cache with a |
| 1104 // foreign entry, an online namespace, and a second online | 1105 // foreign entry, an online namespace, and a second online |
| 1105 // namespace nested within a fallback namespace. | 1106 // namespace nested within a fallback namespace. |
| 1106 MakeCacheAndGroup(kManifestUrl, 1, 1, true); | 1107 MakeCacheAndGroup(kManifestUrl, 1, 1, true); |
| 1107 cache_->AddEntry(kEntryUrl, | 1108 cache_->AddEntry(kEntryUrl, |
| 1108 AppCacheEntry(AppCacheEntry::EXPLICIT | AppCacheEntry::FOREIGN, 1)); | 1109 AppCacheEntry(AppCacheEntry::EXPLICIT | AppCacheEntry::FOREIGN, 1)); |
| 1109 cache_->online_whitelist_namespaces_.push_back(kOnlineNamespace); | 1110 cache_->online_whitelist_namespaces_.push_back(kOnlineNamespace); |
| 1110 cache_->AddEntry(kEntryUrl2, AppCacheEntry(AppCacheEntry::FALLBACK, 2)); | 1111 cache_->AddEntry(kEntryUrl2, AppCacheEntry(AppCacheEntry::FALLBACK, 2)); |
| 1111 cache_->fallback_namespaces_.push_back( | 1112 cache_->fallback_namespaces_.push_back( |
| 1112 FallbackNamespace(kFallbackNamespace, kEntryUrl2)); | 1113 Namespace(FALLBACK_NAMESPACE, kFallbackNamespace, kEntryUrl2)); |
| 1113 cache_->online_whitelist_namespaces_.push_back(kOnlineNamespace); | 1114 cache_->online_whitelist_namespaces_.push_back(kOnlineNamespace); |
| 1114 cache_->online_whitelist_namespaces_.push_back( | 1115 cache_->online_whitelist_namespaces_.push_back( |
| 1115 kOnlineNamespaceWithinFallback); | 1116 kOnlineNamespaceWithinFallback); |
| 1116 | 1117 |
| 1117 AppCacheDatabase::EntryRecord entry_record; | 1118 AppCacheDatabase::EntryRecord entry_record; |
| 1118 entry_record.cache_id = 1; | 1119 entry_record.cache_id = 1; |
| 1119 entry_record.url = kEntryUrl; | 1120 entry_record.url = kEntryUrl; |
| 1120 entry_record.flags = AppCacheEntry::EXPLICIT | AppCacheEntry::FOREIGN; | 1121 entry_record.flags = AppCacheEntry::EXPLICIT | AppCacheEntry::FOREIGN; |
| 1121 entry_record.response_id = 1; | 1122 entry_record.response_id = 1; |
| 1122 EXPECT_TRUE(database()->InsertEntry(&entry_record)); | 1123 EXPECT_TRUE(database()->InsertEntry(&entry_record)); |
| 1123 AppCacheDatabase::OnlineWhiteListRecord whitelist_record; | 1124 AppCacheDatabase::OnlineWhiteListRecord whitelist_record; |
| 1124 whitelist_record.cache_id = 1; | 1125 whitelist_record.cache_id = 1; |
| 1125 whitelist_record.namespace_url = kOnlineNamespace; | 1126 whitelist_record.namespace_url = kOnlineNamespace; |
| 1126 EXPECT_TRUE(database()->InsertOnlineWhiteList(&whitelist_record)); | 1127 EXPECT_TRUE(database()->InsertOnlineWhiteList(&whitelist_record)); |
| 1127 AppCacheDatabase::FallbackNameSpaceRecord fallback_namespace_record; | 1128 AppCacheDatabase::NamespaceRecord fallback_namespace_record; |
| 1128 fallback_namespace_record.cache_id = 1; | 1129 fallback_namespace_record.cache_id = 1; |
| 1129 fallback_namespace_record.fallback_entry_url = kEntryUrl2; | 1130 fallback_namespace_record.target_url = kEntryUrl2; |
| 1130 fallback_namespace_record.namespace_url = kFallbackNamespace; | 1131 fallback_namespace_record.namespace_url = kFallbackNamespace; |
| 1131 fallback_namespace_record.origin = kManifestUrl.GetOrigin(); | 1132 fallback_namespace_record.origin = kManifestUrl.GetOrigin(); |
| 1132 EXPECT_TRUE( | 1133 EXPECT_TRUE(database()->InsertNamespace(&fallback_namespace_record)); |
| 1133 database()->InsertFallbackNameSpace(&fallback_namespace_record)); | |
| 1134 whitelist_record.cache_id = 1; | 1134 whitelist_record.cache_id = 1; |
| 1135 whitelist_record.namespace_url = kOnlineNamespaceWithinFallback; | 1135 whitelist_record.namespace_url = kOnlineNamespaceWithinFallback; |
| 1136 EXPECT_TRUE(database()->InsertOnlineWhiteList(&whitelist_record)); | 1136 EXPECT_TRUE(database()->InsertOnlineWhiteList(&whitelist_record)); |
| 1137 if (drop_from_working_set) { | 1137 if (drop_from_working_set) { |
| 1138 cache_ = NULL; | 1138 cache_ = NULL; |
| 1139 group_ = NULL; | 1139 group_ = NULL; |
| 1140 } | 1140 } |
| 1141 | 1141 |
| 1142 // We should not find anything for the foreign entry. | 1142 // We should not find anything for the foreign entry. |
| 1143 PushNextTask(base::Bind(&AppCacheStorageImplTest::Verify_ExclusionNotFound, | 1143 PushNextTask(base::Bind(&AppCacheStorageImplTest::Verify_ExclusionNotFound, |
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1331 } | 1331 } |
| 1332 | 1332 |
| 1333 TEST_F(AppCacheStorageImplTest, FindMainResponseExclusionsInWorkingSet) { | 1333 TEST_F(AppCacheStorageImplTest, FindMainResponseExclusionsInWorkingSet) { |
| 1334 RunTestOnIOThread( | 1334 RunTestOnIOThread( |
| 1335 &AppCacheStorageImplTest::FindMainResponseExclusionsInWorkingSet); | 1335 &AppCacheStorageImplTest::FindMainResponseExclusionsInWorkingSet); |
| 1336 } | 1336 } |
| 1337 | 1337 |
| 1338 // That's all folks! | 1338 // That's all folks! |
| 1339 | 1339 |
| 1340 } // namespace appcache | 1340 } // namespace appcache |
| OLD | NEW |