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(1, &intercept_records, &fallback_records)
; |
707 EXPECT_TRUE(fallback_records.empty()); | 707 EXPECT_TRUE(fallback_records.empty()); |
708 std::vector<AppCacheDatabase::OnlineWhiteListRecord> whitelist_records; | 708 std::vector<AppCacheDatabase::OnlineWhiteListRecord> whitelist_records; |
709 database()->FindOnlineWhiteListForCache(1, &whitelist_records); | 709 database()->FindOnlineWhiteListForCache(1, &whitelist_records); |
710 EXPECT_TRUE(whitelist_records.empty()); | 710 EXPECT_TRUE(whitelist_records.empty()); |
711 | 711 |
712 // Verify quota bookkeeping | 712 // Verify quota bookkeeping |
713 EXPECT_TRUE(storage()->usage_map_.empty()); | 713 EXPECT_TRUE(storage()->usage_map_.empty()); |
714 EXPECT_EQ(1, mock_quota_manager_proxy_->notify_storage_modified_count_); | 714 EXPECT_EQ(1, mock_quota_manager_proxy_->notify_storage_modified_count_); |
715 EXPECT_EQ(kOrigin, mock_quota_manager_proxy_->last_origin_); | 715 EXPECT_EQ(kOrigin, mock_quota_manager_proxy_->last_origin_); |
716 EXPECT_EQ(-kDefaultEntrySize, mock_quota_manager_proxy_->last_delta_); | 716 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( | 882 PushNextTask(base::Bind( |
883 &AppCacheStorageImplTest::Verify_BasicFindMainFallbackResponse, | 883 &AppCacheStorageImplTest::Verify_BasicFindMainFallbackResponse, |
884 base::Unretained(this))); | 884 base::Unretained(this))); |
885 | 885 |
886 // Setup some preconditions. Create a complete cache with a | 886 // Setup some preconditions. Create a complete cache with a |
887 // fallback namespace and entry. | 887 // fallback namespace and entry. |
888 MakeCacheAndGroup(kManifestUrl, 2, 1, true); | 888 MakeCacheAndGroup(kManifestUrl, 2, 1, true); |
889 cache_->AddEntry(kEntryUrl, AppCacheEntry(AppCacheEntry::FALLBACK, 1)); | 889 cache_->AddEntry(kEntryUrl, AppCacheEntry(AppCacheEntry::FALLBACK, 1)); |
890 cache_->AddEntry(kEntryUrl2, AppCacheEntry(AppCacheEntry::FALLBACK, 2)); | 890 cache_->AddEntry(kEntryUrl2, AppCacheEntry(AppCacheEntry::FALLBACK, 2)); |
891 cache_->fallback_namespaces_.push_back( | 891 cache_->fallback_namespaces_.push_back( |
892 FallbackNamespace(kFallbackNamespace2, kEntryUrl2)); | 892 Namespace(FALLBACK_NAMESPACE, kFallbackNamespace2, kEntryUrl2)); |
893 cache_->fallback_namespaces_.push_back( | 893 cache_->fallback_namespaces_.push_back( |
894 FallbackNamespace(kFallbackNamespace, kEntryUrl)); | 894 Namespace(FALLBACK_NAMESPACE, kFallbackNamespace, kEntryUrl)); |
895 AppCacheDatabase::CacheRecord cache_record; | 895 AppCacheDatabase::CacheRecord cache_record; |
896 std::vector<AppCacheDatabase::EntryRecord> entries; | 896 std::vector<AppCacheDatabase::EntryRecord> entries; |
897 std::vector<AppCacheDatabase::FallbackNameSpaceRecord> fallbacks; | 897 std::vector<AppCacheDatabase::NamespaceRecord> intercepts; |
| 898 std::vector<AppCacheDatabase::NamespaceRecord> fallbacks; |
898 std::vector<AppCacheDatabase::OnlineWhiteListRecord> whitelists; | 899 std::vector<AppCacheDatabase::OnlineWhiteListRecord> whitelists; |
899 cache_->ToDatabaseRecords(group_, | 900 cache_->ToDatabaseRecords(group_, |
900 &cache_record, &entries, &fallbacks, &whitelists); | 901 &cache_record, &entries, &intercepts, &fallbacks, &whitelists); |
901 | 902 |
902 std::vector<AppCacheDatabase::EntryRecord>::const_iterator iter = | 903 std::vector<AppCacheDatabase::EntryRecord>::const_iterator iter = |
903 entries.begin(); | 904 entries.begin(); |
904 while (iter != entries.end()) { | 905 while (iter != entries.end()) { |
905 // MakeCacheAndGroup has inserted the default entry record already | 906 // MakeCacheAndGroup has inserted the default entry record already |
906 if (iter->url != kDefaultEntryUrl) | 907 if (iter->url != kDefaultEntryUrl) |
907 EXPECT_TRUE(database()->InsertEntry(&(*iter))); | 908 EXPECT_TRUE(database()->InsertEntry(&(*iter))); |
908 ++iter; | 909 ++iter; |
909 } | 910 } |
910 | 911 |
911 EXPECT_TRUE(database()->InsertFallbackNameSpaceRecords(fallbacks)); | 912 EXPECT_TRUE(database()->InsertNamespaceRecords(fallbacks)); |
912 EXPECT_TRUE(database()->InsertOnlineWhiteListRecords(whitelists)); | 913 EXPECT_TRUE(database()->InsertOnlineWhiteListRecords(whitelists)); |
913 if (drop_from_working_set) { | 914 if (drop_from_working_set) { |
914 EXPECT_TRUE(cache_->HasOneRef()); | 915 EXPECT_TRUE(cache_->HasOneRef()); |
915 cache_ = NULL; | 916 cache_ = NULL; |
916 EXPECT_TRUE(group_->HasOneRef()); | 917 EXPECT_TRUE(group_->HasOneRef()); |
917 group_ = NULL; | 918 group_ = NULL; |
918 } | 919 } |
919 | 920 |
920 // Conduct the test. The test url is in both fallback namespace urls, | 921 // Conduct the test. The test url is in both fallback namespace urls, |
921 // but should match the longer of the two. | 922 // but should match the longer of the two. |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
981 | 982 |
982 // Add a fallback entry and namespace | 983 // Add a fallback entry and namespace |
983 entry_record.cache_id = id; | 984 entry_record.cache_id = id; |
984 entry_record.url = kEntryUrl2; | 985 entry_record.url = kEntryUrl2; |
985 entry_record.flags = AppCacheEntry::FALLBACK; | 986 entry_record.flags = AppCacheEntry::FALLBACK; |
986 entry_record.response_id = id + kFallbackEntryIdOffset; | 987 entry_record.response_id = id + kFallbackEntryIdOffset; |
987 EXPECT_TRUE(database()->InsertEntry(&entry_record)); | 988 EXPECT_TRUE(database()->InsertEntry(&entry_record)); |
988 cache_->AddEntry( | 989 cache_->AddEntry( |
989 entry_record.url, | 990 entry_record.url, |
990 AppCacheEntry(entry_record.flags, entry_record.response_id)); | 991 AppCacheEntry(entry_record.flags, entry_record.response_id)); |
991 AppCacheDatabase::FallbackNameSpaceRecord fallback_namespace_record; | 992 AppCacheDatabase::NamespaceRecord fallback_namespace_record; |
992 fallback_namespace_record.cache_id = id; | 993 fallback_namespace_record.cache_id = id; |
993 fallback_namespace_record.fallback_entry_url = entry_record.url; | 994 fallback_namespace_record.target_url = entry_record.url; |
994 fallback_namespace_record.namespace_url = kFallbackNamespace; | 995 fallback_namespace_record.namespace_url = kFallbackNamespace; |
995 fallback_namespace_record.origin = manifest_url.GetOrigin(); | 996 fallback_namespace_record.origin = manifest_url.GetOrigin(); |
996 EXPECT_TRUE( | 997 EXPECT_TRUE(database()->InsertNamespace(&fallback_namespace_record)); |
997 database()->InsertFallbackNameSpace(&fallback_namespace_record)); | |
998 cache_->fallback_namespaces_.push_back( | 998 cache_->fallback_namespaces_.push_back( |
999 FallbackNamespace(kFallbackNamespace, kEntryUrl2)); | 999 Namespace(FALLBACK_NAMESPACE, kFallbackNamespace, kEntryUrl2)); |
1000 } | 1000 } |
1001 | 1001 |
1002 void Verify_FindMainResponseWithMultipleHits() { | 1002 void Verify_FindMainResponseWithMultipleHits() { |
1003 EXPECT_EQ(kEntryUrl, delegate()->found_url_); | 1003 EXPECT_EQ(kEntryUrl, delegate()->found_url_); |
1004 EXPECT_EQ(kManifestUrl3, delegate()->found_manifest_url_); | 1004 EXPECT_EQ(kManifestUrl3, delegate()->found_manifest_url_); |
1005 EXPECT_EQ(3, delegate()->found_cache_id_); | 1005 EXPECT_EQ(3, delegate()->found_cache_id_); |
1006 EXPECT_EQ(3, delegate()->found_group_id_); | 1006 EXPECT_EQ(3, delegate()->found_group_id_); |
1007 EXPECT_EQ(3, delegate()->found_entry_.response_id()); | 1007 EXPECT_EQ(3, delegate()->found_entry_.response_id()); |
1008 EXPECT_TRUE(delegate()->found_entry_.IsExplicit()); | 1008 EXPECT_TRUE(delegate()->found_entry_.IsExplicit()); |
1009 EXPECT_FALSE(delegate()->found_fallback_entry_.has_response_id()); | 1009 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) { | 1102 void FindMainResponseExclusions(bool drop_from_working_set) { |
1103 // Setup some preconditions. Create a complete cache with a | 1103 // Setup some preconditions. Create a complete cache with a |
1104 // foreign entry, an online namespace, and a second online | 1104 // foreign entry, an online namespace, and a second online |
1105 // namespace nested within a fallback namespace. | 1105 // namespace nested within a fallback namespace. |
1106 MakeCacheAndGroup(kManifestUrl, 1, 1, true); | 1106 MakeCacheAndGroup(kManifestUrl, 1, 1, true); |
1107 cache_->AddEntry(kEntryUrl, | 1107 cache_->AddEntry(kEntryUrl, |
1108 AppCacheEntry(AppCacheEntry::EXPLICIT | AppCacheEntry::FOREIGN, 1)); | 1108 AppCacheEntry(AppCacheEntry::EXPLICIT | AppCacheEntry::FOREIGN, 1)); |
1109 cache_->online_whitelist_namespaces_.push_back(kOnlineNamespace); | 1109 cache_->online_whitelist_namespaces_.push_back(kOnlineNamespace); |
1110 cache_->AddEntry(kEntryUrl2, AppCacheEntry(AppCacheEntry::FALLBACK, 2)); | 1110 cache_->AddEntry(kEntryUrl2, AppCacheEntry(AppCacheEntry::FALLBACK, 2)); |
1111 cache_->fallback_namespaces_.push_back( | 1111 cache_->fallback_namespaces_.push_back( |
1112 FallbackNamespace(kFallbackNamespace, kEntryUrl2)); | 1112 Namespace(FALLBACK_NAMESPACE, kFallbackNamespace, kEntryUrl2)); |
1113 cache_->online_whitelist_namespaces_.push_back(kOnlineNamespace); | 1113 cache_->online_whitelist_namespaces_.push_back(kOnlineNamespace); |
1114 cache_->online_whitelist_namespaces_.push_back( | 1114 cache_->online_whitelist_namespaces_.push_back( |
1115 kOnlineNamespaceWithinFallback); | 1115 kOnlineNamespaceWithinFallback); |
1116 | 1116 |
1117 AppCacheDatabase::EntryRecord entry_record; | 1117 AppCacheDatabase::EntryRecord entry_record; |
1118 entry_record.cache_id = 1; | 1118 entry_record.cache_id = 1; |
1119 entry_record.url = kEntryUrl; | 1119 entry_record.url = kEntryUrl; |
1120 entry_record.flags = AppCacheEntry::EXPLICIT | AppCacheEntry::FOREIGN; | 1120 entry_record.flags = AppCacheEntry::EXPLICIT | AppCacheEntry::FOREIGN; |
1121 entry_record.response_id = 1; | 1121 entry_record.response_id = 1; |
1122 EXPECT_TRUE(database()->InsertEntry(&entry_record)); | 1122 EXPECT_TRUE(database()->InsertEntry(&entry_record)); |
1123 AppCacheDatabase::OnlineWhiteListRecord whitelist_record; | 1123 AppCacheDatabase::OnlineWhiteListRecord whitelist_record; |
1124 whitelist_record.cache_id = 1; | 1124 whitelist_record.cache_id = 1; |
1125 whitelist_record.namespace_url = kOnlineNamespace; | 1125 whitelist_record.namespace_url = kOnlineNamespace; |
1126 EXPECT_TRUE(database()->InsertOnlineWhiteList(&whitelist_record)); | 1126 EXPECT_TRUE(database()->InsertOnlineWhiteList(&whitelist_record)); |
1127 AppCacheDatabase::FallbackNameSpaceRecord fallback_namespace_record; | 1127 AppCacheDatabase::NamespaceRecord fallback_namespace_record; |
1128 fallback_namespace_record.cache_id = 1; | 1128 fallback_namespace_record.cache_id = 1; |
1129 fallback_namespace_record.fallback_entry_url = kEntryUrl2; | 1129 fallback_namespace_record.target_url = kEntryUrl2; |
1130 fallback_namespace_record.namespace_url = kFallbackNamespace; | 1130 fallback_namespace_record.namespace_url = kFallbackNamespace; |
1131 fallback_namespace_record.origin = kManifestUrl.GetOrigin(); | 1131 fallback_namespace_record.origin = kManifestUrl.GetOrigin(); |
1132 EXPECT_TRUE( | 1132 EXPECT_TRUE(database()->InsertNamespace(&fallback_namespace_record)); |
1133 database()->InsertFallbackNameSpace(&fallback_namespace_record)); | |
1134 whitelist_record.cache_id = 1; | 1133 whitelist_record.cache_id = 1; |
1135 whitelist_record.namespace_url = kOnlineNamespaceWithinFallback; | 1134 whitelist_record.namespace_url = kOnlineNamespaceWithinFallback; |
1136 EXPECT_TRUE(database()->InsertOnlineWhiteList(&whitelist_record)); | 1135 EXPECT_TRUE(database()->InsertOnlineWhiteList(&whitelist_record)); |
1137 if (drop_from_working_set) { | 1136 if (drop_from_working_set) { |
1138 cache_ = NULL; | 1137 cache_ = NULL; |
1139 group_ = NULL; | 1138 group_ = NULL; |
1140 } | 1139 } |
1141 | 1140 |
1142 // We should not find anything for the foreign entry. | 1141 // We should not find anything for the foreign entry. |
1143 PushNextTask(base::Bind(&AppCacheStorageImplTest::Verify_ExclusionNotFound, | 1142 PushNextTask(base::Bind(&AppCacheStorageImplTest::Verify_ExclusionNotFound, |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1331 } | 1330 } |
1332 | 1331 |
1333 TEST_F(AppCacheStorageImplTest, FindMainResponseExclusionsInWorkingSet) { | 1332 TEST_F(AppCacheStorageImplTest, FindMainResponseExclusionsInWorkingSet) { |
1334 RunTestOnIOThread( | 1333 RunTestOnIOThread( |
1335 &AppCacheStorageImplTest::FindMainResponseExclusionsInWorkingSet); | 1334 &AppCacheStorageImplTest::FindMainResponseExclusionsInWorkingSet); |
1336 } | 1335 } |
1337 | 1336 |
1338 // That's all folks! | 1337 // That's all folks! |
1339 | 1338 |
1340 } // namespace appcache | 1339 } // namespace appcache |
OLD | NEW |