Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(595)

Side by Side Diff: webkit/appcache/appcache_storage_impl_unittest.cc

Issue 7720022: Third-party appcache blocking. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Keeping up to date with trunk. Created 9 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « webkit/appcache/appcache_storage_impl.cc ('k') | webkit/appcache/appcache_update_job.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/message_loop.h" 7 #include "base/message_loop.h"
8 #include "base/threading/thread.h" 8 #include "base/threading/thread.h"
9 #include "base/synchronization/waitable_event.h" 9 #include "base/synchronization/waitable_event.h"
10 #include "net/base/net_errors.h" 10 #include "net/base/net_errors.h"
11 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
12 #include "webkit/appcache/appcache.h" 12 #include "webkit/appcache/appcache.h"
13 #include "webkit/appcache/appcache_database.h" 13 #include "webkit/appcache/appcache_database.h"
14 #include "webkit/appcache/appcache_entry.h" 14 #include "webkit/appcache/appcache_entry.h"
15 #include "webkit/appcache/appcache_group.h" 15 #include "webkit/appcache/appcache_group.h"
16 #include "webkit/appcache/appcache_policy.h"
17 #include "webkit/appcache/appcache_service.h" 16 #include "webkit/appcache/appcache_service.h"
18 #include "webkit/appcache/appcache_storage_impl.h" 17 #include "webkit/appcache/appcache_storage_impl.h"
19 #include "webkit/quota/quota_manager.h" 18 #include "webkit/quota/quota_manager.h"
20 #include "webkit/tools/test_shell/simple_appcache_system.h" 19 #include "webkit/tools/test_shell/simple_appcache_system.h"
21 20
22 namespace appcache { 21 namespace appcache {
23 22
24 namespace { 23 namespace {
25 24
26 const base::Time kZeroTime; 25 const base::Time kZeroTime;
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 80
82 } // namespace 81 } // namespace
83 82
84 class AppCacheStorageImplTest : public testing::Test { 83 class AppCacheStorageImplTest : public testing::Test {
85 public: 84 public:
86 class MockStorageDelegate : public AppCacheStorage::Delegate { 85 class MockStorageDelegate : public AppCacheStorage::Delegate {
87 public: 86 public:
88 explicit MockStorageDelegate(AppCacheStorageImplTest* test) 87 explicit MockStorageDelegate(AppCacheStorageImplTest* test)
89 : loaded_cache_id_(0), stored_group_success_(false), 88 : loaded_cache_id_(0), stored_group_success_(false),
90 would_exceed_quota_(false), obsoleted_success_(false), 89 would_exceed_quota_(false), obsoleted_success_(false),
91 found_cache_id_(kNoCacheId), found_blocked_by_policy_(false), 90 found_cache_id_(kNoCacheId), test_(test) {
92 test_(test) {
93 } 91 }
94 92
95 void OnCacheLoaded(AppCache* cache, int64 cache_id) { 93 void OnCacheLoaded(AppCache* cache, int64 cache_id) {
96 loaded_cache_ = cache; 94 loaded_cache_ = cache;
97 loaded_cache_id_ = cache_id; 95 loaded_cache_id_ = cache_id;
98 test_->ScheduleNextTask(); 96 test_->ScheduleNextTask();
99 } 97 }
100 98
101 void OnGroupLoaded(AppCacheGroup* group, const GURL& manifest_url) { 99 void OnGroupLoaded(AppCacheGroup* group, const GURL& manifest_url) {
102 loaded_group_ = group; 100 loaded_group_ = group;
(...skipping 14 matching lines...) Expand all
117 115
118 void OnGroupMadeObsolete(AppCacheGroup* group, bool success) { 116 void OnGroupMadeObsolete(AppCacheGroup* group, bool success) {
119 obsoleted_group_ = group; 117 obsoleted_group_ = group;
120 obsoleted_success_ = success; 118 obsoleted_success_ = success;
121 test_->ScheduleNextTask(); 119 test_->ScheduleNextTask();
122 } 120 }
123 121
124 void OnMainResponseFound(const GURL& url, const AppCacheEntry& entry, 122 void OnMainResponseFound(const GURL& url, const AppCacheEntry& entry,
125 const GURL& fallback_url, 123 const GURL& fallback_url,
126 const AppCacheEntry& fallback_entry, 124 const AppCacheEntry& fallback_entry,
127 int64 cache_id, const GURL& manifest_url, 125 int64 cache_id, const GURL& manifest_url) {
128 bool was_blocked_by_policy) {
129 found_url_ = url; 126 found_url_ = url;
130 found_entry_ = entry; 127 found_entry_ = entry;
131 found_fallback_url_ = fallback_url; 128 found_fallback_url_ = fallback_url;
132 found_fallback_entry_ = fallback_entry; 129 found_fallback_entry_ = fallback_entry;
133 found_cache_id_ = cache_id; 130 found_cache_id_ = cache_id;
134 found_manifest_url_ = manifest_url; 131 found_manifest_url_ = manifest_url;
135 found_blocked_by_policy_ = was_blocked_by_policy;
136 test_->ScheduleNextTask(); 132 test_->ScheduleNextTask();
137 } 133 }
138 134
139 scoped_refptr<AppCache> loaded_cache_; 135 scoped_refptr<AppCache> loaded_cache_;
140 int64 loaded_cache_id_; 136 int64 loaded_cache_id_;
141 scoped_refptr<AppCacheGroup> loaded_group_; 137 scoped_refptr<AppCacheGroup> loaded_group_;
142 GURL loaded_manifest_url_; 138 GURL loaded_manifest_url_;
143 scoped_refptr<AppCache> loaded_groups_newest_cache_; 139 scoped_refptr<AppCache> loaded_groups_newest_cache_;
144 scoped_refptr<AppCacheGroup> stored_group_; 140 scoped_refptr<AppCacheGroup> stored_group_;
145 bool stored_group_success_; 141 bool stored_group_success_;
146 bool would_exceed_quota_; 142 bool would_exceed_quota_;
147 scoped_refptr<AppCacheGroup> obsoleted_group_; 143 scoped_refptr<AppCacheGroup> obsoleted_group_;
148 bool obsoleted_success_; 144 bool obsoleted_success_;
149 GURL found_url_; 145 GURL found_url_;
150 AppCacheEntry found_entry_; 146 AppCacheEntry found_entry_;
151 GURL found_fallback_url_; 147 GURL found_fallback_url_;
152 AppCacheEntry found_fallback_entry_; 148 AppCacheEntry found_fallback_entry_;
153 int64 found_cache_id_; 149 int64 found_cache_id_;
154 GURL found_manifest_url_; 150 GURL found_manifest_url_;
155 bool found_blocked_by_policy_;
156 AppCacheStorageImplTest* test_; 151 AppCacheStorageImplTest* test_;
157 }; 152 };
158 153
159 class MockAppCachePolicy : public AppCachePolicy {
160 public:
161 explicit MockAppCachePolicy(AppCacheStorageImplTest* test)
162 : can_load_return_value_(true), can_create_return_value_(0),
163 callback_(NULL), test_(test) {
164 }
165
166 virtual bool CanLoadAppCache(const GURL& manifest_url) {
167 requested_manifest_url_ = manifest_url;
168 return can_load_return_value_;
169 }
170
171 virtual int CanCreateAppCache(const GURL& manifest_url,
172 net::CompletionCallback* callback) {
173 requested_manifest_url_ = manifest_url;
174 callback_ = callback;
175 if (can_create_return_value_ == net::ERR_IO_PENDING)
176 test_->ScheduleNextTask();
177 return can_create_return_value_;
178 }
179
180 bool can_load_return_value_;
181 int can_create_return_value_;
182 GURL requested_manifest_url_;
183 net::CompletionCallback* callback_;
184 AppCacheStorageImplTest* test_;
185 };
186
187 class MockQuotaManager : public quota::QuotaManager { 154 class MockQuotaManager : public quota::QuotaManager {
188 public: 155 public:
189 MockQuotaManager() 156 MockQuotaManager()
190 : QuotaManager(true /* is_incognito */, FilePath(), 157 : QuotaManager(true /* is_incognito */, FilePath(),
191 io_thread->message_loop_proxy(), 158 io_thread->message_loop_proxy(),
192 db_thread->message_loop_proxy(), 159 db_thread->message_loop_proxy(),
193 NULL), 160 NULL),
194 async_(false) {} 161 async_(false) {}
195 162
196 virtual void GetUsageAndQuota( 163 virtual void GetUsageAndQuota(
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
302 } 269 }
303 270
304 static void TearDownTestCase() { 271 static void TearDownTestCase() {
305 SimpleAppCacheSystem::set_thread_provider(NULL); 272 SimpleAppCacheSystem::set_thread_provider(NULL);
306 io_thread.reset(NULL); 273 io_thread.reset(NULL);
307 db_thread.reset(NULL); 274 db_thread.reset(NULL);
308 } 275 }
309 276
310 // Test harness -------------------------------------------------- 277 // Test harness --------------------------------------------------
311 278
312 AppCacheStorageImplTest() 279 AppCacheStorageImplTest() {
313 : ALLOW_THIS_IN_INITIALIZER_LIST(policy_(this)) {
314 } 280 }
315 281
316 template <class Method> 282 template <class Method>
317 void RunTestOnIOThread(Method method) { 283 void RunTestOnIOThread(Method method) {
318 test_finished_event_ .reset(new base::WaitableEvent(false, false)); 284 test_finished_event_ .reset(new base::WaitableEvent(false, false));
319 io_thread->message_loop()->PostTask( 285 io_thread->message_loop()->PostTask(
320 FROM_HERE, new WrapperTask<Method>(this, method)); 286 FROM_HERE, new WrapperTask<Method>(this, method));
321 test_finished_event_->Wait(); 287 test_finished_event_->Wait();
322 } 288 }
323 289
(...skipping 539 matching lines...) Expand 10 before | Expand all | Expand 10 after
863 PushNextTask(NewRunnableMethod( 829 PushNextTask(NewRunnableMethod(
864 this, &AppCacheStorageImplTest::Verify_FindNoMainResponse)); 830 this, &AppCacheStorageImplTest::Verify_FindNoMainResponse));
865 831
866 // Conduct the test. 832 // Conduct the test.
867 storage()->FindResponseForMainRequest(kEntryUrl, GURL(), delegate()); 833 storage()->FindResponseForMainRequest(kEntryUrl, GURL(), delegate());
868 EXPECT_NE(kEntryUrl, delegate()->found_url_); 834 EXPECT_NE(kEntryUrl, delegate()->found_url_);
869 } 835 }
870 836
871 void Verify_FindNoMainResponse() { 837 void Verify_FindNoMainResponse() {
872 EXPECT_EQ(kEntryUrl, delegate()->found_url_); 838 EXPECT_EQ(kEntryUrl, delegate()->found_url_);
873 // If the request was blocked by a policy, the manifest url is still valid. 839 EXPECT_TRUE(delegate()->found_manifest_url_.is_empty());
874 EXPECT_TRUE(delegate()->found_manifest_url_.is_empty() ||
875 delegate()->found_blocked_by_policy_);
876 EXPECT_EQ(kNoCacheId, delegate()->found_cache_id_); 840 EXPECT_EQ(kNoCacheId, delegate()->found_cache_id_);
877 EXPECT_EQ(kNoResponseId, delegate()->found_entry_.response_id()); 841 EXPECT_EQ(kNoResponseId, delegate()->found_entry_.response_id());
878 EXPECT_EQ(kNoResponseId, delegate()->found_fallback_entry_.response_id()); 842 EXPECT_EQ(kNoResponseId, delegate()->found_fallback_entry_.response_id());
879 EXPECT_TRUE(delegate()->found_fallback_url_.is_empty()); 843 EXPECT_TRUE(delegate()->found_fallback_url_.is_empty());
880 EXPECT_EQ(0, delegate()->found_entry_.types()); 844 EXPECT_EQ(0, delegate()->found_entry_.types());
881 EXPECT_EQ(0, delegate()->found_fallback_entry_.types()); 845 EXPECT_EQ(0, delegate()->found_fallback_entry_.types());
882 TestFinished(); 846 TestFinished();
883 } 847 }
884 848
885 // BasicFindMainResponse ------------------------------- 849 // BasicFindMainResponse -------------------------------
886 850
887 void BasicFindMainResponseInDatabase() { 851 void BasicFindMainResponseInDatabase() {
888 BasicFindMainResponse(true, false); 852 BasicFindMainResponse(true);
889 } 853 }
890 854
891 void BasicFindMainResponseInWorkingSet() { 855 void BasicFindMainResponseInWorkingSet() {
892 BasicFindMainResponse(false, false); 856 BasicFindMainResponse(false);
893 } 857 }
894 858
895 void BlockFindMainResponseWithPolicyCheck() { 859 void BasicFindMainResponse(bool drop_from_working_set) {
896 BasicFindMainResponse(true, true);
897 }
898
899 void BasicFindMainResponse(bool drop_from_working_set,
900 bool block_with_policy_check) {
901 PushNextTask(NewRunnableMethod( 860 PushNextTask(NewRunnableMethod(
902 this, &AppCacheStorageImplTest::Verify_BasicFindMainResponse)); 861 this, &AppCacheStorageImplTest::Verify_BasicFindMainResponse));
903 862
904 policy_.can_load_return_value_ = !block_with_policy_check;
905 service()->set_appcache_policy(&policy_);
906
907 // Setup some preconditions. Create a complete cache with an entry 863 // Setup some preconditions. Create a complete cache with an entry
908 // in storage. 864 // in storage.
909 MakeCacheAndGroup(kManifestUrl, 1, 1, true); 865 MakeCacheAndGroup(kManifestUrl, 1, 1, true);
910 cache_->AddEntry(kEntryUrl, AppCacheEntry(AppCacheEntry::EXPLICIT, 1)); 866 cache_->AddEntry(kEntryUrl, AppCacheEntry(AppCacheEntry::EXPLICIT, 1));
911 AppCacheDatabase::EntryRecord entry_record; 867 AppCacheDatabase::EntryRecord entry_record;
912 entry_record.cache_id = 1; 868 entry_record.cache_id = 1;
913 entry_record.url = kEntryUrl; 869 entry_record.url = kEntryUrl;
914 entry_record.flags = AppCacheEntry::EXPLICIT; 870 entry_record.flags = AppCacheEntry::EXPLICIT;
915 entry_record.response_id = 1; 871 entry_record.response_id = 1;
916 EXPECT_TRUE(database()->InsertEntry(&entry_record)); 872 EXPECT_TRUE(database()->InsertEntry(&entry_record));
917 873
918 // Optionally drop the cache/group pair from the working set. 874 // Optionally drop the cache/group pair from the working set.
919 if (drop_from_working_set) { 875 if (drop_from_working_set) {
920 EXPECT_TRUE(cache_->HasOneRef()); 876 EXPECT_TRUE(cache_->HasOneRef());
921 cache_ = NULL; 877 cache_ = NULL;
922 EXPECT_TRUE(group_->HasOneRef()); 878 EXPECT_TRUE(group_->HasOneRef());
923 group_ = NULL; 879 group_ = NULL;
924 } 880 }
925 881
926 // Conduct the test. 882 // Conduct the test.
927 storage()->FindResponseForMainRequest(kEntryUrl, GURL(), delegate()); 883 storage()->FindResponseForMainRequest(kEntryUrl, GURL(), delegate());
928 EXPECT_NE(kEntryUrl, delegate()->found_url_); 884 EXPECT_NE(kEntryUrl, delegate()->found_url_);
929 } 885 }
930 886
931 void Verify_BasicFindMainResponse() { 887 void Verify_BasicFindMainResponse() {
932 EXPECT_EQ(kManifestUrl, policy_.requested_manifest_url_); 888 EXPECT_EQ(kEntryUrl, delegate()->found_url_);
933 if (policy_.can_load_return_value_) { 889 EXPECT_EQ(kManifestUrl, delegate()->found_manifest_url_);
934 EXPECT_EQ(kEntryUrl, delegate()->found_url_); 890 EXPECT_EQ(1, delegate()->found_cache_id_);
935 EXPECT_EQ(kManifestUrl, delegate()->found_manifest_url_); 891 EXPECT_EQ(1, delegate()->found_entry_.response_id());
936 EXPECT_FALSE(delegate()->found_blocked_by_policy_); 892 EXPECT_TRUE(delegate()->found_entry_.IsExplicit());
937 EXPECT_EQ(1, delegate()->found_cache_id_); 893 EXPECT_FALSE(delegate()->found_fallback_entry_.has_response_id());
938 EXPECT_EQ(1, delegate()->found_entry_.response_id()); 894 TestFinished();
939 EXPECT_TRUE(delegate()->found_entry_.IsExplicit());
940 EXPECT_FALSE(delegate()->found_fallback_entry_.has_response_id());
941 TestFinished();
942 } else {
943 Verify_FindNoMainResponse();
944 }
945 } 895 }
946 896
947 // BasicFindMainFallbackResponse ------------------------------- 897 // BasicFindMainFallbackResponse -------------------------------
948 898
949 void BasicFindMainFallbackResponseInDatabase() { 899 void BasicFindMainFallbackResponseInDatabase() {
950 BasicFindMainFallbackResponse(true); 900 BasicFindMainFallbackResponse(true);
951 } 901 }
952 902
953 void BasicFindMainFallbackResponseInWorkingSet() { 903 void BasicFindMainFallbackResponseInWorkingSet() {
954 BasicFindMainFallbackResponse(false); 904 BasicFindMainFallbackResponse(false);
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
994 944
995 // Conduct the test. The test url is in both fallback namespace urls, 945 // Conduct the test. The test url is in both fallback namespace urls,
996 // but should match the longer of the two. 946 // but should match the longer of the two.
997 storage()->FindResponseForMainRequest(kFallbackTestUrl, GURL(), delegate()); 947 storage()->FindResponseForMainRequest(kFallbackTestUrl, GURL(), delegate());
998 EXPECT_NE(kFallbackTestUrl, delegate()->found_url_); 948 EXPECT_NE(kFallbackTestUrl, delegate()->found_url_);
999 } 949 }
1000 950
1001 void Verify_BasicFindMainFallbackResponse() { 951 void Verify_BasicFindMainFallbackResponse() {
1002 EXPECT_EQ(kFallbackTestUrl, delegate()->found_url_); 952 EXPECT_EQ(kFallbackTestUrl, delegate()->found_url_);
1003 EXPECT_EQ(kManifestUrl, delegate()->found_manifest_url_); 953 EXPECT_EQ(kManifestUrl, delegate()->found_manifest_url_);
1004 EXPECT_FALSE(delegate()->found_blocked_by_policy_);
1005 EXPECT_EQ(1, delegate()->found_cache_id_); 954 EXPECT_EQ(1, delegate()->found_cache_id_);
1006 EXPECT_FALSE(delegate()->found_entry_.has_response_id()); 955 EXPECT_FALSE(delegate()->found_entry_.has_response_id());
1007 EXPECT_EQ(2, delegate()->found_fallback_entry_.response_id()); 956 EXPECT_EQ(2, delegate()->found_fallback_entry_.response_id());
1008 EXPECT_EQ(kEntryUrl2, delegate()->found_fallback_url_); 957 EXPECT_EQ(kEntryUrl2, delegate()->found_fallback_url_);
1009 EXPECT_TRUE(delegate()->found_fallback_entry_.IsFallback()); 958 EXPECT_TRUE(delegate()->found_fallback_entry_.IsFallback());
1010 TestFinished(); 959 TestFinished();
1011 } 960 }
1012 961
1013 // FindMainResponseWithMultipleHits ------------------------------- 962 // FindMainResponseWithMultipleHits -------------------------------
1014 963
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
1069 fallback_namespace_record.origin = manifest_url.GetOrigin(); 1018 fallback_namespace_record.origin = manifest_url.GetOrigin();
1070 EXPECT_TRUE( 1019 EXPECT_TRUE(
1071 database()->InsertFallbackNameSpace(&fallback_namespace_record)); 1020 database()->InsertFallbackNameSpace(&fallback_namespace_record));
1072 cache_->fallback_namespaces_.push_back( 1021 cache_->fallback_namespaces_.push_back(
1073 FallbackNamespace(kFallbackNamespace, kEntryUrl2)); 1022 FallbackNamespace(kFallbackNamespace, kEntryUrl2));
1074 } 1023 }
1075 1024
1076 void Verify_FindMainResponseWithMultipleHits() { 1025 void Verify_FindMainResponseWithMultipleHits() {
1077 EXPECT_EQ(kEntryUrl, delegate()->found_url_); 1026 EXPECT_EQ(kEntryUrl, delegate()->found_url_);
1078 EXPECT_EQ(kManifestUrl3, delegate()->found_manifest_url_); 1027 EXPECT_EQ(kManifestUrl3, delegate()->found_manifest_url_);
1079 EXPECT_FALSE(delegate()->found_blocked_by_policy_);
1080 EXPECT_EQ(3, delegate()->found_cache_id_); 1028 EXPECT_EQ(3, delegate()->found_cache_id_);
1081 EXPECT_EQ(3, delegate()->found_entry_.response_id()); 1029 EXPECT_EQ(3, delegate()->found_entry_.response_id());
1082 EXPECT_TRUE(delegate()->found_entry_.IsExplicit()); 1030 EXPECT_TRUE(delegate()->found_entry_.IsExplicit());
1083 EXPECT_FALSE(delegate()->found_fallback_entry_.has_response_id()); 1031 EXPECT_FALSE(delegate()->found_fallback_entry_.has_response_id());
1084 1032
1085 // Conduct another test perferring kManifestUrl 1033 // Conduct another test perferring kManifestUrl
1086 delegate_.reset(new MockStorageDelegate(this)); 1034 delegate_.reset(new MockStorageDelegate(this));
1087 PushNextTask(NewRunnableMethod(this, 1035 PushNextTask(NewRunnableMethod(this,
1088 &AppCacheStorageImplTest::Verify_FindMainResponseWithMultipleHits2)); 1036 &AppCacheStorageImplTest::Verify_FindMainResponseWithMultipleHits2));
1089 storage()->FindResponseForMainRequest(kEntryUrl, kManifestUrl, delegate()); 1037 storage()->FindResponseForMainRequest(kEntryUrl, kManifestUrl, delegate());
1090 EXPECT_NE(kEntryUrl, delegate()->found_url_); 1038 EXPECT_NE(kEntryUrl, delegate()->found_url_);
1091 } 1039 }
1092 1040
1093 void Verify_FindMainResponseWithMultipleHits2() { 1041 void Verify_FindMainResponseWithMultipleHits2() {
1094 EXPECT_EQ(kEntryUrl, delegate()->found_url_); 1042 EXPECT_EQ(kEntryUrl, delegate()->found_url_);
1095 EXPECT_EQ(kManifestUrl, delegate()->found_manifest_url_); 1043 EXPECT_EQ(kManifestUrl, delegate()->found_manifest_url_);
1096 EXPECT_FALSE(delegate()->found_blocked_by_policy_);
1097 EXPECT_EQ(1, delegate()->found_cache_id_); 1044 EXPECT_EQ(1, delegate()->found_cache_id_);
1098 EXPECT_EQ(1, delegate()->found_entry_.response_id()); 1045 EXPECT_EQ(1, delegate()->found_entry_.response_id());
1099 EXPECT_TRUE(delegate()->found_entry_.IsExplicit()); 1046 EXPECT_TRUE(delegate()->found_entry_.IsExplicit());
1100 EXPECT_FALSE(delegate()->found_fallback_entry_.has_response_id()); 1047 EXPECT_FALSE(delegate()->found_fallback_entry_.has_response_id());
1101 1048
1102 // Conduct the another test perferring kManifestUrl2 1049 // Conduct the another test perferring kManifestUrl2
1103 delegate_.reset(new MockStorageDelegate(this)); 1050 delegate_.reset(new MockStorageDelegate(this));
1104 PushNextTask(NewRunnableMethod(this, 1051 PushNextTask(NewRunnableMethod(this,
1105 &AppCacheStorageImplTest::Verify_FindMainResponseWithMultipleHits3)); 1052 &AppCacheStorageImplTest::Verify_FindMainResponseWithMultipleHits3));
1106 storage()->FindResponseForMainRequest(kEntryUrl, kManifestUrl2, delegate()); 1053 storage()->FindResponseForMainRequest(kEntryUrl, kManifestUrl2, delegate());
1107 EXPECT_NE(kEntryUrl, delegate()->found_url_); 1054 EXPECT_NE(kEntryUrl, delegate()->found_url_);
1108 } 1055 }
1109 1056
1110 void Verify_FindMainResponseWithMultipleHits3() { 1057 void Verify_FindMainResponseWithMultipleHits3() {
1111 EXPECT_EQ(kEntryUrl, delegate()->found_url_); 1058 EXPECT_EQ(kEntryUrl, delegate()->found_url_);
1112 EXPECT_EQ(kManifestUrl2, delegate()->found_manifest_url_); 1059 EXPECT_EQ(kManifestUrl2, delegate()->found_manifest_url_);
1113 EXPECT_FALSE(delegate()->found_blocked_by_policy_);
1114 EXPECT_EQ(2, delegate()->found_cache_id_); 1060 EXPECT_EQ(2, delegate()->found_cache_id_);
1115 EXPECT_EQ(2, delegate()->found_entry_.response_id()); 1061 EXPECT_EQ(2, delegate()->found_entry_.response_id());
1116 EXPECT_TRUE(delegate()->found_entry_.IsExplicit()); 1062 EXPECT_TRUE(delegate()->found_entry_.IsExplicit());
1117 EXPECT_FALSE(delegate()->found_fallback_entry_.has_response_id()); 1063 EXPECT_FALSE(delegate()->found_fallback_entry_.has_response_id());
1118 1064
1119 // Conduct another test with no preferred manifest that hits the fallback. 1065 // Conduct another test with no preferred manifest that hits the fallback.
1120 delegate_.reset(new MockStorageDelegate(this)); 1066 delegate_.reset(new MockStorageDelegate(this));
1121 PushNextTask(NewRunnableMethod(this, 1067 PushNextTask(NewRunnableMethod(this,
1122 &AppCacheStorageImplTest::Verify_FindMainResponseWithMultipleHits4)); 1068 &AppCacheStorageImplTest::Verify_FindMainResponseWithMultipleHits4));
1123 storage()->FindResponseForMainRequest( 1069 storage()->FindResponseForMainRequest(
1124 kFallbackTestUrl, GURL(), delegate()); 1070 kFallbackTestUrl, GURL(), delegate());
1125 EXPECT_NE(kFallbackTestUrl, delegate()->found_url_); 1071 EXPECT_NE(kFallbackTestUrl, delegate()->found_url_);
1126 } 1072 }
1127 1073
1128 void Verify_FindMainResponseWithMultipleHits4() { 1074 void Verify_FindMainResponseWithMultipleHits4() {
1129 EXPECT_EQ(kFallbackTestUrl, delegate()->found_url_); 1075 EXPECT_EQ(kFallbackTestUrl, delegate()->found_url_);
1130 EXPECT_EQ(kManifestUrl3, delegate()->found_manifest_url_); 1076 EXPECT_EQ(kManifestUrl3, delegate()->found_manifest_url_);
1131 EXPECT_FALSE(delegate()->found_blocked_by_policy_);
1132 EXPECT_EQ(3, delegate()->found_cache_id_); 1077 EXPECT_EQ(3, delegate()->found_cache_id_);
1133 EXPECT_FALSE(delegate()->found_entry_.has_response_id()); 1078 EXPECT_FALSE(delegate()->found_entry_.has_response_id());
1134 EXPECT_EQ(3 + kFallbackEntryIdOffset, 1079 EXPECT_EQ(3 + kFallbackEntryIdOffset,
1135 delegate()->found_fallback_entry_.response_id()); 1080 delegate()->found_fallback_entry_.response_id());
1136 EXPECT_TRUE(delegate()->found_fallback_entry_.IsFallback()); 1081 EXPECT_TRUE(delegate()->found_fallback_entry_.IsFallback());
1137 EXPECT_EQ(kEntryUrl2, delegate()->found_fallback_url_); 1082 EXPECT_EQ(kEntryUrl2, delegate()->found_fallback_url_);
1138 1083
1139 // Conduct another test preferring kManifestUrl2 that hits the fallback. 1084 // Conduct another test preferring kManifestUrl2 that hits the fallback.
1140 delegate_.reset(new MockStorageDelegate(this)); 1085 delegate_.reset(new MockStorageDelegate(this));
1141 PushNextTask(NewRunnableMethod(this, 1086 PushNextTask(NewRunnableMethod(this,
1142 &AppCacheStorageImplTest::Verify_FindMainResponseWithMultipleHits5)); 1087 &AppCacheStorageImplTest::Verify_FindMainResponseWithMultipleHits5));
1143 storage()->FindResponseForMainRequest( 1088 storage()->FindResponseForMainRequest(
1144 kFallbackTestUrl, kManifestUrl2, delegate()); 1089 kFallbackTestUrl, kManifestUrl2, delegate());
1145 EXPECT_NE(kFallbackTestUrl, delegate()->found_url_); 1090 EXPECT_NE(kFallbackTestUrl, delegate()->found_url_);
1146 } 1091 }
1147 1092
1148 void Verify_FindMainResponseWithMultipleHits5() { 1093 void Verify_FindMainResponseWithMultipleHits5() {
1149 EXPECT_EQ(kFallbackTestUrl, delegate()->found_url_); 1094 EXPECT_EQ(kFallbackTestUrl, delegate()->found_url_);
1150 EXPECT_EQ(kManifestUrl2, delegate()->found_manifest_url_); 1095 EXPECT_EQ(kManifestUrl2, delegate()->found_manifest_url_);
1151 EXPECT_FALSE(delegate()->found_blocked_by_policy_);
1152 EXPECT_EQ(2, delegate()->found_cache_id_); 1096 EXPECT_EQ(2, delegate()->found_cache_id_);
1153 EXPECT_FALSE(delegate()->found_entry_.has_response_id()); 1097 EXPECT_FALSE(delegate()->found_entry_.has_response_id());
1154 EXPECT_EQ(2 + kFallbackEntryIdOffset, 1098 EXPECT_EQ(2 + kFallbackEntryIdOffset,
1155 delegate()->found_fallback_entry_.response_id()); 1099 delegate()->found_fallback_entry_.response_id());
1156 EXPECT_TRUE(delegate()->found_fallback_entry_.IsFallback()); 1100 EXPECT_TRUE(delegate()->found_fallback_entry_.IsFallback());
1157 EXPECT_EQ(kEntryUrl2, delegate()->found_fallback_url_); 1101 EXPECT_EQ(kEntryUrl2, delegate()->found_fallback_url_);
1158 1102
1159 TestFinished(); 1103 TestFinished();
1160 } 1104 }
1161 1105
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
1212 // We should not find anything for the foreign entry. 1156 // We should not find anything for the foreign entry.
1213 PushNextTask(NewRunnableMethod( 1157 PushNextTask(NewRunnableMethod(
1214 this, &AppCacheStorageImplTest::Verify_ExclusionNotFound, 1158 this, &AppCacheStorageImplTest::Verify_ExclusionNotFound,
1215 kEntryUrl, 1)); 1159 kEntryUrl, 1));
1216 storage()->FindResponseForMainRequest(kEntryUrl, GURL(), delegate()); 1160 storage()->FindResponseForMainRequest(kEntryUrl, GURL(), delegate());
1217 } 1161 }
1218 1162
1219 void Verify_ExclusionNotFound(GURL expected_url, int phase) { 1163 void Verify_ExclusionNotFound(GURL expected_url, int phase) {
1220 EXPECT_EQ(expected_url, delegate()->found_url_); 1164 EXPECT_EQ(expected_url, delegate()->found_url_);
1221 EXPECT_TRUE(delegate()->found_manifest_url_.is_empty()); 1165 EXPECT_TRUE(delegate()->found_manifest_url_.is_empty());
1222 EXPECT_FALSE(delegate()->found_blocked_by_policy_);
1223 EXPECT_EQ(kNoCacheId, delegate()->found_cache_id_); 1166 EXPECT_EQ(kNoCacheId, delegate()->found_cache_id_);
1224 EXPECT_EQ(kNoResponseId, delegate()->found_entry_.response_id()); 1167 EXPECT_EQ(kNoResponseId, delegate()->found_entry_.response_id());
1225 EXPECT_EQ(kNoResponseId, delegate()->found_fallback_entry_.response_id()); 1168 EXPECT_EQ(kNoResponseId, delegate()->found_fallback_entry_.response_id());
1226 EXPECT_TRUE(delegate()->found_fallback_url_.is_empty()); 1169 EXPECT_TRUE(delegate()->found_fallback_url_.is_empty());
1227 EXPECT_EQ(0, delegate()->found_entry_.types()); 1170 EXPECT_EQ(0, delegate()->found_entry_.types());
1228 EXPECT_EQ(0, delegate()->found_fallback_entry_.types()); 1171 EXPECT_EQ(0, delegate()->found_fallback_entry_.types());
1229 1172
1230 if (phase == 1) { 1173 if (phase == 1) {
1231 // We should not find anything for the online namespace. 1174 // We should not find anything for the online namespace.
1232 PushNextTask(NewRunnableMethod(this, 1175 PushNextTask(NewRunnableMethod(this,
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
1302 1245
1303 storage()->usage_map_[manifest_url.GetOrigin()] = 1246 storage()->usage_map_[manifest_url.GetOrigin()] =
1304 default_entry.response_size(); 1247 default_entry.response_size();
1305 } 1248 }
1306 } 1249 }
1307 1250
1308 // Data members -------------------------------------------------- 1251 // Data members --------------------------------------------------
1309 1252
1310 scoped_ptr<base::WaitableEvent> test_finished_event_; 1253 scoped_ptr<base::WaitableEvent> test_finished_event_;
1311 std::stack<Task*> task_stack_; 1254 std::stack<Task*> task_stack_;
1312 MockAppCachePolicy policy_;
1313 scoped_ptr<AppCacheService> service_; 1255 scoped_ptr<AppCacheService> service_;
1314 scoped_ptr<MockStorageDelegate> delegate_; 1256 scoped_ptr<MockStorageDelegate> delegate_;
1315 scoped_refptr<MockQuotaManagerProxy> mock_quota_manager_proxy_; 1257 scoped_refptr<MockQuotaManagerProxy> mock_quota_manager_proxy_;
1316 scoped_refptr<AppCacheGroup> group_; 1258 scoped_refptr<AppCacheGroup> group_;
1317 scoped_refptr<AppCache> cache_; 1259 scoped_refptr<AppCache> cache_;
1318 scoped_refptr<AppCache> cache2_; 1260 scoped_refptr<AppCache> cache2_;
1319 }; 1261 };
1320 1262
1321 1263
1322 TEST_F(AppCacheStorageImplTest, LoadCache_Miss) { 1264 TEST_F(AppCacheStorageImplTest, LoadCache_Miss) {
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
1375 TEST_F(AppCacheStorageImplTest, BasicFindMainResponseInDatabase) { 1317 TEST_F(AppCacheStorageImplTest, BasicFindMainResponseInDatabase) {
1376 RunTestOnIOThread( 1318 RunTestOnIOThread(
1377 &AppCacheStorageImplTest::BasicFindMainResponseInDatabase); 1319 &AppCacheStorageImplTest::BasicFindMainResponseInDatabase);
1378 } 1320 }
1379 1321
1380 TEST_F(AppCacheStorageImplTest, BasicFindMainResponseInWorkingSet) { 1322 TEST_F(AppCacheStorageImplTest, BasicFindMainResponseInWorkingSet) {
1381 RunTestOnIOThread( 1323 RunTestOnIOThread(
1382 &AppCacheStorageImplTest::BasicFindMainResponseInWorkingSet); 1324 &AppCacheStorageImplTest::BasicFindMainResponseInWorkingSet);
1383 } 1325 }
1384 1326
1385 TEST_F(AppCacheStorageImplTest, BlockFindMainResponseWithPolicyCheck) {
1386 RunTestOnIOThread(
1387 &AppCacheStorageImplTest::BlockFindMainResponseWithPolicyCheck);
1388 }
1389
1390 TEST_F(AppCacheStorageImplTest, BasicFindMainFallbackResponseInDatabase) { 1327 TEST_F(AppCacheStorageImplTest, BasicFindMainFallbackResponseInDatabase) {
1391 RunTestOnIOThread( 1328 RunTestOnIOThread(
1392 &AppCacheStorageImplTest::BasicFindMainFallbackResponseInDatabase); 1329 &AppCacheStorageImplTest::BasicFindMainFallbackResponseInDatabase);
1393 } 1330 }
1394 1331
1395 TEST_F(AppCacheStorageImplTest, BasicFindMainFallbackResponseInWorkingSet) { 1332 TEST_F(AppCacheStorageImplTest, BasicFindMainFallbackResponseInWorkingSet) {
1396 RunTestOnIOThread( 1333 RunTestOnIOThread(
1397 &AppCacheStorageImplTest::BasicFindMainFallbackResponseInWorkingSet); 1334 &AppCacheStorageImplTest::BasicFindMainFallbackResponseInWorkingSet);
1398 } 1335 }
1399 1336
(...skipping 12 matching lines...) Expand all
1412 &AppCacheStorageImplTest::FindMainResponseExclusionsInWorkingSet); 1349 &AppCacheStorageImplTest::FindMainResponseExclusionsInWorkingSet);
1413 } 1350 }
1414 1351
1415 // That's all folks! 1352 // That's all folks!
1416 1353
1417 } // namespace appcache 1354 } // namespace appcache
1418 1355
1419 // AppCacheStorageImplTest is expected to always live longer than the 1356 // AppCacheStorageImplTest is expected to always live longer than the
1420 // runnable methods. This lets us call NewRunnableMethod on its instances. 1357 // runnable methods. This lets us call NewRunnableMethod on its instances.
1421 DISABLE_RUNNABLE_METHOD_REFCOUNT(appcache::AppCacheStorageImplTest); 1358 DISABLE_RUNNABLE_METHOD_REFCOUNT(appcache::AppCacheStorageImplTest);
OLDNEW
« no previous file with comments | « webkit/appcache/appcache_storage_impl.cc ('k') | webkit/appcache/appcache_update_job.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698