Chromium Code Reviews| 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 "net/cookies/cookie_store_unittest.h" | 5 #include "net/cookies/cookie_store_unittest.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 57 virtual void Flush(const base::Closure& callback) { | 57 virtual void Flush(const base::Closure& callback) { |
| 58 if (!callback.is_null()) | 58 if (!callback.is_null()) |
| 59 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback); | 59 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback); |
| 60 } | 60 } |
| 61 MOCK_METHOD0(SetForceKeepSessionState, void()); | 61 MOCK_METHOD0(SetForceKeepSessionState, void()); |
| 62 | 62 |
| 63 private: | 63 private: |
| 64 virtual ~NewMockPersistentCookieStore() {} | 64 virtual ~NewMockPersistentCookieStore() {} |
| 65 }; | 65 }; |
| 66 | 66 |
| 67 // False means 'less than or equal', so we test both ways for full equal. | |
| 68 MATCHER_P(CookieEquals, expected, "") { | |
| 69 return !(arg.FullCompare(expected) || expected.FullCompare(arg)); | |
| 70 } | |
| 71 | |
| 67 const char kTopLevelDomainPlus1[] = "http://www.harvard.edu"; | 72 const char kTopLevelDomainPlus1[] = "http://www.harvard.edu"; |
| 68 const char kTopLevelDomainPlus2[] = "http://www.math.harvard.edu"; | 73 const char kTopLevelDomainPlus2[] = "http://www.math.harvard.edu"; |
| 69 const char kTopLevelDomainPlus2Secure[] = "https://www.math.harvard.edu"; | 74 const char kTopLevelDomainPlus2Secure[] = "https://www.math.harvard.edu"; |
| 70 const char kTopLevelDomainPlus3[] = "http://www.bourbaki.math.harvard.edu"; | 75 const char kTopLevelDomainPlus3[] = "http://www.bourbaki.math.harvard.edu"; |
| 71 const char kOtherDomain[] = "http://www.mit.edu"; | 76 const char kOtherDomain[] = "http://www.mit.edu"; |
| 72 | 77 |
| 78 bool AlwaysTrueCookiePredicate(CanonicalCookie* to_save, | |
| 79 const CanonicalCookie& cookie) { | |
| 80 if (to_save) | |
| 81 *to_save = cookie; | |
| 82 return true; | |
| 83 } | |
| 84 | |
| 85 bool AlwaysFalseCookiePredicate(CanonicalCookie* to_save, | |
| 86 const CanonicalCookie& cookie) { | |
| 87 if (to_save) | |
| 88 *to_save = cookie; | |
| 89 return false; | |
| 90 } | |
| 91 | |
| 73 struct CookieMonsterTestTraits { | 92 struct CookieMonsterTestTraits { |
| 74 static scoped_ptr<CookieStore> Create() { | 93 static scoped_ptr<CookieStore> Create() { |
| 75 return make_scoped_ptr(new CookieMonster(nullptr, nullptr)); | 94 return make_scoped_ptr(new CookieMonster(nullptr, nullptr)); |
| 76 } | 95 } |
| 77 | 96 |
| 78 static const bool supports_http_only = true; | 97 static const bool supports_http_only = true; |
| 79 static const bool supports_non_dotted_domains = true; | 98 static const bool supports_non_dotted_domains = true; |
| 80 static const bool preserves_trailing_dots = true; | 99 static const bool preserves_trailing_dots = true; |
| 81 static const bool filters_schemes = true; | 100 static const bool filters_schemes = true; |
| 82 static const bool has_path_prefix_bug = false; | 101 static const bool has_path_prefix_bug = false; |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 143 DCHECK(cm); | 162 DCHECK(cm); |
| 144 ResultSavingCookieCallback<int> callback; | 163 ResultSavingCookieCallback<int> callback; |
| 145 cm->DeleteAllCreatedBetweenAsync( | 164 cm->DeleteAllCreatedBetweenAsync( |
| 146 delete_begin, delete_end, | 165 delete_begin, delete_end, |
| 147 base::Bind(&ResultSavingCookieCallback<int>::Run, | 166 base::Bind(&ResultSavingCookieCallback<int>::Run, |
| 148 base::Unretained(&callback))); | 167 base::Unretained(&callback))); |
| 149 callback.WaitUntilDone(); | 168 callback.WaitUntilDone(); |
| 150 return callback.result(); | 169 return callback.result(); |
| 151 } | 170 } |
| 152 | 171 |
| 153 int DeleteAllCreatedBetweenForHost(CookieMonster* cm, | 172 int DeleteAllCreatedBetweenWithPredicate( |
| 154 const base::Time delete_begin, | 173 CookieMonster* cm, |
| 155 const base::Time delete_end, | 174 const base::Time delete_begin, |
| 156 const GURL& url) { | 175 const base::Time delete_end, |
| 176 const base::Callback<bool(const CanonicalCookie&)>& predicate) { | |
| 157 DCHECK(cm); | 177 DCHECK(cm); |
| 158 ResultSavingCookieCallback<int> callback; | 178 ResultSavingCookieCallback<int> callback; |
| 159 cm->DeleteAllCreatedBetweenForHostAsync( | 179 cm->DeleteAllCreatedBetweenWithPredicateAsync( |
| 160 delete_begin, delete_end, url, | 180 delete_begin, delete_end, predicate, |
| 161 base::Bind(&ResultSavingCookieCallback<int>::Run, | 181 base::Bind(&ResultSavingCookieCallback<int>::Run, |
| 162 base::Unretained(&callback))); | 182 base::Unretained(&callback))); |
| 163 callback.WaitUntilDone(); | 183 callback.WaitUntilDone(); |
| 164 return callback.result(); | 184 return callback.result(); |
| 165 } | 185 } |
| 166 | 186 |
| 167 // Helper for DeleteAllForHost test; repopulates CM with same layout | 187 // Helper for DeleteAllForHost test; repopulates CM with same layout |
| 168 // each time. | 188 // each time. |
| 169 void PopulateCmForDeleteAllForHost(CookieMonster* cm) { | 189 void PopulateCmForDeleteAllForHost(CookieMonster* cm) { |
| 170 GURL url_top_level_domain_plus_1(kTopLevelDomainPlus1); | 190 GURL url_top_level_domain_plus_1(kTopLevelDomainPlus1); |
| (...skipping 489 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 660 cc.url, cc.name, cc.value, cc.domain, cc.path, base::Time(), | 680 cc.url, cc.name, cc.value, cc.domain, cc.path, base::Time(), |
| 661 cc.expiration_time, base::Time(), cc.secure, cc.http_only, cc.same_site, | 681 cc.expiration_time, base::Time(), cc.secure, cc.http_only, cc.same_site, |
| 662 false /* enforces strict secure cookies */, cc.priority, | 682 false /* enforces strict secure cookies */, cc.priority, |
| 663 callback->AsCallback()); | 683 callback->AsCallback()); |
| 664 } | 684 } |
| 665 | 685 |
| 666 ACTION_P2(GetAllCookiesAction, cookie_monster, callback) { | 686 ACTION_P2(GetAllCookiesAction, cookie_monster, callback) { |
| 667 cookie_monster->GetAllCookiesAsync(callback->AsCallback()); | 687 cookie_monster->GetAllCookiesAsync(callback->AsCallback()); |
| 668 } | 688 } |
| 669 | 689 |
| 670 ACTION_P5(DeleteAllCreatedBetweenForHostAction, | 690 ACTION_P5(DeleteAllCreatedBetweenWithPredicateAction, |
| 671 cookie_monster, | 691 cookie_monster, |
| 672 delete_begin, | 692 delete_begin, |
| 673 delete_end, | 693 delete_end, |
| 674 url, | 694 predicate, |
| 675 callback) { | 695 callback) { |
| 676 cookie_monster->DeleteAllCreatedBetweenForHostAsync( | 696 cookie_monster->DeleteAllCreatedBetweenWithPredicateAsync( |
| 677 delete_begin, delete_end, url, callback->AsCallback()); | 697 delete_begin, delete_end, predicate, callback->AsCallback()); |
| 678 } | 698 } |
| 679 | 699 |
| 680 ACTION_P3(DeleteCanonicalCookieAction, cookie_monster, cookie, callback) { | 700 ACTION_P3(DeleteCanonicalCookieAction, cookie_monster, cookie, callback) { |
| 681 cookie_monster->DeleteCanonicalCookieAsync(cookie, callback->AsCallback()); | 701 cookie_monster->DeleteCanonicalCookieAsync(cookie, callback->AsCallback()); |
| 682 } | 702 } |
| 683 | 703 |
| 684 ACTION_P2(DeleteAllAction, cookie_monster, callback) { | 704 ACTION_P2(DeleteAllAction, cookie_monster, callback) { |
| 685 cookie_monster->DeleteAllAsync(callback->AsCallback()); | 705 cookie_monster->DeleteAllAsync(callback->AsCallback()); |
| 686 } | 706 } |
| 687 | 707 |
| (...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1043 .WillOnce(DeleteAllCreatedBetweenAction(&cookie_monster(), base::Time(), | 1063 .WillOnce(DeleteAllCreatedBetweenAction(&cookie_monster(), base::Time(), |
| 1044 base::Time::Now(), | 1064 base::Time::Now(), |
| 1045 &delete_callback)); | 1065 &delete_callback)); |
| 1046 base::RunLoop loop; | 1066 base::RunLoop loop; |
| 1047 EXPECT_CALL(delete_callback, Invoke(false)).WillOnce(QuitRunLoop(&loop)); | 1067 EXPECT_CALL(delete_callback, Invoke(false)).WillOnce(QuitRunLoop(&loop)); |
| 1048 | 1068 |
| 1049 CompleteLoading(); | 1069 CompleteLoading(); |
| 1050 loop.Run(); | 1070 loop.Run(); |
| 1051 } | 1071 } |
| 1052 | 1072 |
| 1053 TEST_F(DeferredCookieTaskTest, DeferredDeleteAllForHostCreatedBetweenCookies) { | 1073 TEST_F(DeferredCookieTaskTest, |
| 1074 DeferredDeleteAllWithPredicateCreatedBetweenCookies) { | |
| 1054 MockDeleteCallback delete_callback; | 1075 MockDeleteCallback delete_callback; |
| 1055 | 1076 |
| 1056 BeginWithForDomainKey(http_www_google_.domain(), | 1077 base::Callback<bool(const CanonicalCookie&)> predicate = |
| 1057 DeleteAllCreatedBetweenForHostAction( | 1078 base::Bind(&AlwaysTrueCookiePredicate, nullptr); |
| 1058 &cookie_monster(), base::Time(), base::Time::Now(), | 1079 |
| 1059 http_www_google_.url(), &delete_callback)); | 1080 BeginWith(DeleteAllCreatedBetweenWithPredicateAction( |
| 1081 &cookie_monster(), base::Time(), base::Time::Now(), predicate, | |
| 1082 &delete_callback)); | |
| 1060 | 1083 |
| 1061 WaitForLoadCall(); | 1084 WaitForLoadCall(); |
| 1062 | 1085 |
| 1063 EXPECT_CALL(delete_callback, Invoke(false)) | 1086 EXPECT_CALL(delete_callback, Invoke(false)) |
| 1064 .WillOnce(DeleteAllCreatedBetweenForHostAction( | 1087 .WillOnce(DeleteAllCreatedBetweenWithPredicateAction( |
| 1065 &cookie_monster(), base::Time(), base::Time::Now(), | 1088 &cookie_monster(), base::Time(), base::Time::Now(), predicate, |
| 1066 http_www_google_.url(), &delete_callback)); | 1089 &delete_callback)); |
| 1067 base::RunLoop loop; | 1090 base::RunLoop loop; |
| 1068 EXPECT_CALL(delete_callback, Invoke(false)).WillOnce(QuitRunLoop(&loop)); | 1091 EXPECT_CALL(delete_callback, Invoke(false)).WillOnce(QuitRunLoop(&loop)); |
| 1069 | 1092 |
| 1070 CompleteLoading(); | 1093 CompleteLoading(); |
| 1071 loop.Run(); | 1094 loop.Run(); |
| 1072 } | 1095 } |
| 1073 | 1096 |
| 1074 TEST_F(DeferredCookieTaskTest, DeferredDeleteCanonicalCookie) { | 1097 TEST_F(DeferredCookieTaskTest, DeferredDeleteCanonicalCookie) { |
| 1075 std::vector<CanonicalCookie*> cookies; | 1098 std::vector<CanonicalCookie*> cookies; |
| 1076 CanonicalCookie cookie = BuildCanonicalCookie( | 1099 CanonicalCookie cookie = BuildCanonicalCookie( |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1180 } | 1203 } |
| 1181 | 1204 |
| 1182 TEST_F(CookieMonsterTest, TestCookieDeleteAllCreatedBetweenTimestamps) { | 1205 TEST_F(CookieMonsterTest, TestCookieDeleteAllCreatedBetweenTimestamps) { |
| 1183 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr)); | 1206 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr)); |
| 1184 Time now = Time::Now(); | 1207 Time now = Time::Now(); |
| 1185 | 1208 |
| 1186 // Nothing has been added so nothing should be deleted. | 1209 // Nothing has been added so nothing should be deleted. |
| 1187 EXPECT_EQ(0, DeleteAllCreatedBetween(cm.get(), now - TimeDelta::FromDays(99), | 1210 EXPECT_EQ(0, DeleteAllCreatedBetween(cm.get(), now - TimeDelta::FromDays(99), |
| 1188 Time())); | 1211 Time())); |
| 1189 | 1212 |
| 1190 // Create 3 cookies with creation date of today, yesterday and the day before. | 1213 // Create 5 cookies with different creation dates. |
| 1191 EXPECT_TRUE( | 1214 EXPECT_TRUE( |
| 1192 cm->SetCookieWithCreationTime(http_www_google_.url(), "T-0=Now", now)); | 1215 cm->SetCookieWithCreationTime(http_www_google_.url(), "T-0=Now", now)); |
| 1193 EXPECT_TRUE(cm->SetCookieWithCreationTime( | 1216 EXPECT_TRUE(cm->SetCookieWithCreationTime( |
| 1194 http_www_google_.url(), "T-1=Yesterday", now - TimeDelta::FromDays(1))); | 1217 http_www_google_.url(), "T-1=Yesterday", now - TimeDelta::FromDays(1))); |
| 1195 EXPECT_TRUE(cm->SetCookieWithCreationTime( | 1218 EXPECT_TRUE(cm->SetCookieWithCreationTime( |
| 1196 http_www_google_.url(), "T-2=DayBefore", now - TimeDelta::FromDays(2))); | 1219 http_www_google_.url(), "T-2=DayBefore", now - TimeDelta::FromDays(2))); |
| 1197 EXPECT_TRUE(cm->SetCookieWithCreationTime( | 1220 EXPECT_TRUE(cm->SetCookieWithCreationTime( |
| 1198 http_www_google_.url(), "T-3=ThreeDays", now - TimeDelta::FromDays(3))); | 1221 http_www_google_.url(), "T-3=ThreeDays", now - TimeDelta::FromDays(3))); |
| 1199 EXPECT_TRUE(cm->SetCookieWithCreationTime( | 1222 EXPECT_TRUE(cm->SetCookieWithCreationTime( |
| 1200 http_www_google_.url(), "T-7=LastWeek", now - TimeDelta::FromDays(7))); | 1223 http_www_google_.url(), "T-7=LastWeek", now - TimeDelta::FromDays(7))); |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 1212 EXPECT_EQ( | 1235 EXPECT_EQ( |
| 1213 1, DeleteAllCreatedBetween(cm.get(), now - TimeDelta::FromDays(7), now)); | 1236 1, DeleteAllCreatedBetween(cm.get(), now - TimeDelta::FromDays(7), now)); |
| 1214 | 1237 |
| 1215 // Delete the last (now) item. | 1238 // Delete the last (now) item. |
| 1216 EXPECT_EQ(1, DeleteAllCreatedBetween(cm.get(), Time(), Time())); | 1239 EXPECT_EQ(1, DeleteAllCreatedBetween(cm.get(), Time(), Time())); |
| 1217 | 1240 |
| 1218 // Really make sure everything is gone. | 1241 // Really make sure everything is gone. |
| 1219 EXPECT_EQ(0, DeleteAll(cm.get())); | 1242 EXPECT_EQ(0, DeleteAll(cm.get())); |
| 1220 } | 1243 } |
| 1221 | 1244 |
| 1245 TEST_F(CookieMonsterTest, | |
| 1246 TestCookieDeleteAllCreatedBetweenTimestampsWithPredicate) { | |
| 1247 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr)); | |
| 1248 Time now = Time::Now(); | |
| 1249 | |
| 1250 CanonicalCookie test_cookie; | |
| 1251 base::Callback<bool(const CanonicalCookie&)> true_predicate = | |
| 1252 base::Bind(&AlwaysTrueCookiePredicate, &test_cookie); | |
| 1253 | |
| 1254 base::Callback<bool(const CanonicalCookie&)> false_predicate = | |
| 1255 base::Bind(&AlwaysFalseCookiePredicate, &test_cookie); | |
| 1256 | |
| 1257 // Nothing has been added so nothing should be deleted. | |
| 1258 EXPECT_EQ( | |
| 1259 0, DeleteAllCreatedBetweenWithPredicate( | |
| 1260 cm.get(), now - TimeDelta::FromDays(99), Time(), true_predicate)); | |
| 1261 | |
| 1262 // Create 5 cookies with different creation dates. | |
| 1263 EXPECT_TRUE( | |
| 1264 cm->SetCookieWithCreationTime(http_www_google_.url(), "T-0=Now", now)); | |
| 1265 EXPECT_TRUE(cm->SetCookieWithCreationTime( | |
| 1266 http_www_google_.url(), "T-1=Yesterday", now - TimeDelta::FromDays(1))); | |
| 1267 EXPECT_TRUE(cm->SetCookieWithCreationTime( | |
| 1268 http_www_google_.url(), "T-2=DayBefore", now - TimeDelta::FromDays(2))); | |
| 1269 EXPECT_TRUE(cm->SetCookieWithCreationTime( | |
| 1270 http_www_google_.url(), "T-3=ThreeDays", now - TimeDelta::FromDays(3))); | |
| 1271 EXPECT_TRUE(cm->SetCookieWithCreationTime( | |
| 1272 http_www_google_.url(), "T-7=LastWeek", now - TimeDelta::FromDays(7))); | |
| 1273 | |
|
Mike West
2016/04/02 05:12:40
Nit: Could you add a test for a null predicate her
dmurph
2016/04/04 18:28:32
Sure. This also is tested by the cookie_store_unit
| |
| 1274 // Try to delete threedays and the daybefore, but we should do nothing due | |
| 1275 // to the predicate. | |
| 1276 EXPECT_EQ(0, DeleteAllCreatedBetweenWithPredicate( | |
| 1277 cm.get(), now - TimeDelta::FromDays(3), | |
| 1278 now - TimeDelta::FromDays(1), false_predicate)); | |
| 1279 // Same as above, but we use the true_predicate, so it works. | |
| 1280 EXPECT_EQ(2, DeleteAllCreatedBetweenWithPredicate( | |
| 1281 cm.get(), now - TimeDelta::FromDays(3), | |
| 1282 now - TimeDelta::FromDays(1), true_predicate)); | |
| 1283 | |
| 1284 // Try to delete yesterday, also make sure that delete_end is not | |
| 1285 // inclusive. | |
| 1286 EXPECT_EQ(0, | |
| 1287 DeleteAllCreatedBetweenWithPredicate( | |
| 1288 cm.get(), now - TimeDelta::FromDays(2), now, false_predicate)); | |
| 1289 EXPECT_EQ(1, | |
| 1290 DeleteAllCreatedBetweenWithPredicate( | |
| 1291 cm.get(), now - TimeDelta::FromDays(2), now, true_predicate)); | |
| 1292 // Check our cookie values. | |
| 1293 scoped_ptr<CanonicalCookie> expected_cookie = | |
| 1294 CanonicalCookie::Create(http_www_google_.url(), "T-1=Yesterday", | |
| 1295 now - TimeDelta::FromDays(1), CookieOptions()); | |
| 1296 EXPECT_THAT(test_cookie, CookieEquals(*expected_cookie)) | |
| 1297 << "Actual:\n" | |
| 1298 << test_cookie.DebugString() << "\nExpected:\n" | |
| 1299 << expected_cookie->DebugString(); | |
| 1300 | |
| 1301 // Make sure the delete_begin is inclusive. | |
| 1302 EXPECT_EQ(0, | |
| 1303 DeleteAllCreatedBetweenWithPredicate( | |
| 1304 cm.get(), now - TimeDelta::FromDays(7), now, false_predicate)); | |
| 1305 EXPECT_EQ(1, | |
| 1306 DeleteAllCreatedBetweenWithPredicate( | |
| 1307 cm.get(), now - TimeDelta::FromDays(7), now, true_predicate)); | |
| 1308 | |
| 1309 // Delete the last (now) item. | |
| 1310 EXPECT_EQ(0, DeleteAllCreatedBetweenWithPredicate(cm.get(), Time(), Time(), | |
| 1311 false_predicate)); | |
| 1312 EXPECT_EQ(1, DeleteAllCreatedBetweenWithPredicate(cm.get(), Time(), Time(), | |
| 1313 true_predicate)); | |
| 1314 expected_cookie = CanonicalCookie::Create(http_www_google_.url(), "T-0=Now", | |
| 1315 now, CookieOptions()); | |
| 1316 EXPECT_THAT(test_cookie, CookieEquals(*expected_cookie)) | |
| 1317 << "Actual:\n" | |
| 1318 << test_cookie.DebugString() << "\nExpected:\n" | |
| 1319 << expected_cookie->DebugString(); | |
| 1320 | |
| 1321 // Really make sure everything is gone. | |
| 1322 EXPECT_EQ(0, DeleteAll(cm.get())); | |
| 1323 } | |
| 1324 | |
| 1222 static const int kAccessDelayMs = kLastAccessThresholdMilliseconds + 20; | 1325 static const int kAccessDelayMs = kLastAccessThresholdMilliseconds + 20; |
| 1223 | 1326 |
| 1224 TEST_F(CookieMonsterTest, TestLastAccess) { | 1327 TEST_F(CookieMonsterTest, TestLastAccess) { |
| 1225 scoped_ptr<CookieMonster> cm( | 1328 scoped_ptr<CookieMonster> cm( |
| 1226 new CookieMonster(nullptr, nullptr, kLastAccessThresholdMilliseconds)); | 1329 new CookieMonster(nullptr, nullptr, kLastAccessThresholdMilliseconds)); |
| 1227 | 1330 |
| 1228 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=B")); | 1331 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=B")); |
| 1229 const Time last_access_date(GetFirstCookieAccessDate(cm.get())); | 1332 const Time last_access_date(GetFirstCookieAccessDate(cm.get())); |
| 1230 | 1333 |
| 1231 // Reading the cookie again immediately shouldn't update the access date, | 1334 // Reading the cookie again immediately shouldn't update the access date, |
| (...skipping 404 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1636 EXPECT_EQ("a", delegate->changes()[0].first.Name()); | 1739 EXPECT_EQ("a", delegate->changes()[0].first.Name()); |
| 1637 EXPECT_EQ("val1", delegate->changes()[0].first.Value()); | 1740 EXPECT_EQ("val1", delegate->changes()[0].first.Value()); |
| 1638 EXPECT_EQ(http_www_google_.url().host(), | 1741 EXPECT_EQ(http_www_google_.url().host(), |
| 1639 delegate->changes()[1].first.Domain()); | 1742 delegate->changes()[1].first.Domain()); |
| 1640 EXPECT_FALSE(delegate->changes()[1].second); | 1743 EXPECT_FALSE(delegate->changes()[1].second); |
| 1641 EXPECT_EQ("a", delegate->changes()[1].first.Name()); | 1744 EXPECT_EQ("a", delegate->changes()[1].first.Name()); |
| 1642 EXPECT_EQ("val2", delegate->changes()[1].first.Value()); | 1745 EXPECT_EQ("val2", delegate->changes()[1].first.Value()); |
| 1643 delegate->reset(); | 1746 delegate->reset(); |
| 1644 } | 1747 } |
| 1645 | 1748 |
| 1646 TEST_F(CookieMonsterTest, DeleteAllForHost) { | |
| 1647 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr)); | |
| 1648 | |
| 1649 // Test probes: | |
| 1650 // * Non-secure URL, mid-level (http://w.c.b.a) | |
| 1651 // * Secure URL, mid-level (https://w.c.b.a) | |
| 1652 // * URL with path, mid-level (https:/w.c.b.a/dir1/xx) | |
| 1653 // All three tests should nuke only the midlevel host cookie, | |
| 1654 // the http_only cookie, the host secure cookie, and the two host | |
| 1655 // path cookies. http_only, secure, and paths are ignored by | |
| 1656 // this call, and domain cookies arent touched. | |
| 1657 PopulateCmForDeleteAllForHost(cm.get()); | |
| 1658 EXPECT_EQ("dom_1=X; dom_2=X; dom_3=X; host_3=X", | |
| 1659 GetCookies(cm.get(), GURL(kTopLevelDomainPlus3))); | |
| 1660 EXPECT_EQ("dom_1=X; dom_2=X; host_2=X; sec_dom=X; sec_host=X", | |
| 1661 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure))); | |
| 1662 EXPECT_EQ("dom_1=X; host_1=X", | |
| 1663 GetCookies(cm.get(), GURL(kTopLevelDomainPlus1))); | |
| 1664 EXPECT_EQ( | |
| 1665 "dom_path_2=X; host_path_2=X; dom_path_1=X; host_path_1=X; " | |
| 1666 "dom_1=X; dom_2=X; host_2=X; sec_dom=X; sec_host=X", | |
| 1667 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure + | |
| 1668 std::string("/dir1/dir2/xxx")))); | |
| 1669 | |
| 1670 EXPECT_EQ(6, DeleteAllCreatedBetweenForHost(cm.get(), base::Time(), | |
| 1671 base::Time::Now(), | |
| 1672 GURL(kTopLevelDomainPlus2))); | |
| 1673 EXPECT_EQ(8U, GetAllCookies(cm.get()).size()); | |
| 1674 | |
| 1675 EXPECT_EQ("dom_1=X; dom_2=X; dom_3=X; host_3=X", | |
| 1676 GetCookies(cm.get(), GURL(kTopLevelDomainPlus3))); | |
| 1677 EXPECT_EQ("dom_1=X; dom_2=X; sec_dom=X", | |
| 1678 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure))); | |
| 1679 EXPECT_EQ("dom_1=X; host_1=X", | |
| 1680 GetCookies(cm.get(), GURL(kTopLevelDomainPlus1))); | |
| 1681 EXPECT_EQ("dom_path_2=X; dom_path_1=X; dom_1=X; dom_2=X; sec_dom=X", | |
| 1682 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure + | |
| 1683 std::string("/dir1/dir2/xxx")))); | |
| 1684 | |
| 1685 PopulateCmForDeleteAllForHost(cm.get()); | |
| 1686 EXPECT_EQ(6, DeleteAllCreatedBetweenForHost( | |
| 1687 cm.get(), base::Time(), base::Time::Now(), | |
| 1688 GURL(kTopLevelDomainPlus2Secure))); | |
| 1689 EXPECT_EQ(8U, GetAllCookies(cm.get()).size()); | |
| 1690 | |
| 1691 EXPECT_EQ("dom_1=X; dom_2=X; dom_3=X; host_3=X", | |
| 1692 GetCookies(cm.get(), GURL(kTopLevelDomainPlus3))); | |
| 1693 EXPECT_EQ("dom_1=X; dom_2=X; sec_dom=X", | |
| 1694 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure))); | |
| 1695 EXPECT_EQ("dom_1=X; host_1=X", | |
| 1696 GetCookies(cm.get(), GURL(kTopLevelDomainPlus1))); | |
| 1697 EXPECT_EQ("dom_path_2=X; dom_path_1=X; dom_1=X; dom_2=X; sec_dom=X", | |
| 1698 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure + | |
| 1699 std::string("/dir1/dir2/xxx")))); | |
| 1700 | |
| 1701 PopulateCmForDeleteAllForHost(cm.get()); | |
| 1702 EXPECT_EQ(6, | |
| 1703 DeleteAllCreatedBetweenForHost( | |
| 1704 cm.get(), base::Time(), base::Time::Now(), | |
| 1705 GURL(kTopLevelDomainPlus2Secure + std::string("/dir1/xxx")))); | |
| 1706 EXPECT_EQ(8U, GetAllCookies(cm.get()).size()); | |
| 1707 | |
| 1708 EXPECT_EQ("dom_1=X; dom_2=X; dom_3=X; host_3=X", | |
| 1709 GetCookies(cm.get(), GURL(kTopLevelDomainPlus3))); | |
| 1710 EXPECT_EQ("dom_1=X; dom_2=X; sec_dom=X", | |
| 1711 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure))); | |
| 1712 EXPECT_EQ("dom_1=X; host_1=X", | |
| 1713 GetCookies(cm.get(), GURL(kTopLevelDomainPlus1))); | |
| 1714 EXPECT_EQ("dom_path_2=X; dom_path_1=X; dom_1=X; dom_2=X; sec_dom=X", | |
| 1715 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure + | |
| 1716 std::string("/dir1/dir2/xxx")))); | |
| 1717 } | |
| 1718 | |
| 1719 TEST_F(CookieMonsterTest, UniqueCreationTime) { | 1749 TEST_F(CookieMonsterTest, UniqueCreationTime) { |
| 1720 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr)); | 1750 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr)); |
| 1721 CookieOptions options; | 1751 CookieOptions options; |
| 1722 | 1752 |
| 1723 // Add in three cookies through every public interface to the | 1753 // Add in three cookies through every public interface to the |
| 1724 // CookieMonster and confirm that none of them have duplicate | 1754 // CookieMonster and confirm that none of them have duplicate |
| 1725 // creation times. | 1755 // creation times. |
| 1726 | 1756 |
| 1727 // SetCookieWithCreationTime and SetCookieWithCreationTimeAndOptions | 1757 // SetCookieWithCreationTime and SetCookieWithCreationTimeAndOptions |
| 1728 // are not included as they aren't going to be public for very much | 1758 // are not included as they aren't going to be public for very much |
| (...skipping 1458 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3187 monster()->AddCallbackForCookie( | 3217 monster()->AddCallbackForCookie( |
| 3188 test_url_, "abc", | 3218 test_url_, "abc", |
| 3189 base::Bind(&RecordCookieChanges, &cookies1, nullptr))); | 3219 base::Bind(&RecordCookieChanges, &cookies1, nullptr))); |
| 3190 SetCookie(monster(), test_url_, "abc=def"); | 3220 SetCookie(monster(), test_url_, "abc=def"); |
| 3191 base::MessageLoop::current()->RunUntilIdle(); | 3221 base::MessageLoop::current()->RunUntilIdle(); |
| 3192 EXPECT_EQ(1U, cookies0.size()); | 3222 EXPECT_EQ(1U, cookies0.size()); |
| 3193 EXPECT_EQ(1U, cookies0.size()); | 3223 EXPECT_EQ(1U, cookies0.size()); |
| 3194 } | 3224 } |
| 3195 | 3225 |
| 3196 } // namespace net | 3226 } // namespace net |
| OLD | NEW |