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

Side by Side Diff: net/cookies/cookie_monster_unittest.cc

Issue 1844243002: [CookieStore] Upgrading host-based deleting to predicate-based deleting. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: removed url-based deletion on ios Created 4 years, 8 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
OLDNEW
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 19 matching lines...) Expand all
30 #include "net/cookies/cookie_monster.h" 30 #include "net/cookies/cookie_monster.h"
31 #include "net/cookies/cookie_monster_store_test.h" // For CookieStore mock 31 #include "net/cookies/cookie_monster_store_test.h" // For CookieStore mock
32 #include "net/cookies/cookie_util.h" 32 #include "net/cookies/cookie_util.h"
33 #include "net/cookies/parsed_cookie.h" 33 #include "net/cookies/parsed_cookie.h"
34 #include "testing/gmock/include/gmock/gmock.h" 34 #include "testing/gmock/include/gmock/gmock.h"
35 #include "testing/gtest/include/gtest/gtest.h" 35 #include "testing/gtest/include/gtest/gtest.h"
36 #include "url/gurl.h" 36 #include "url/gurl.h"
37 37
38 namespace net { 38 namespace net {
39 39
40 using CookiePredicate = CookieStore::CookiePredicate;
40 using base::Time; 41 using base::Time;
41 using base::TimeDelta; 42 using base::TimeDelta;
42 43
43 namespace { 44 namespace {
44 45
45 // TODO(erikwright): Replace the pre-existing MockPersistentCookieStore (and 46 // TODO(erikwright): Replace the pre-existing MockPersistentCookieStore (and
46 // brethren) with this one, and remove the 'New' prefix. 47 // brethren) with this one, and remove the 'New' prefix.
47 class NewMockPersistentCookieStore 48 class NewMockPersistentCookieStore
48 : public CookieMonster::PersistentCookieStore { 49 : public CookieMonster::PersistentCookieStore {
49 public: 50 public:
50 MOCK_METHOD1(Load, void(const LoadedCallback& loaded_callback)); 51 MOCK_METHOD1(Load, void(const LoadedCallback& loaded_callback));
51 MOCK_METHOD2(LoadCookiesForKey, 52 MOCK_METHOD2(LoadCookiesForKey,
52 void(const std::string& key, 53 void(const std::string& key,
53 const LoadedCallback& loaded_callback)); 54 const LoadedCallback& loaded_callback));
54 MOCK_METHOD1(AddCookie, void(const CanonicalCookie& cc)); 55 MOCK_METHOD1(AddCookie, void(const CanonicalCookie& cc));
55 MOCK_METHOD1(UpdateCookieAccessTime, void(const CanonicalCookie& cc)); 56 MOCK_METHOD1(UpdateCookieAccessTime, void(const CanonicalCookie& cc));
56 MOCK_METHOD1(DeleteCookie, void(const CanonicalCookie& cc)); 57 MOCK_METHOD1(DeleteCookie, void(const CanonicalCookie& cc));
57 virtual void Flush(const base::Closure& callback) { 58 virtual void Flush(const base::Closure& callback) {
58 if (!callback.is_null()) 59 if (!callback.is_null())
59 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback); 60 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback);
60 } 61 }
61 MOCK_METHOD0(SetForceKeepSessionState, void()); 62 MOCK_METHOD0(SetForceKeepSessionState, void());
62 63
63 private: 64 private:
64 virtual ~NewMockPersistentCookieStore() {} 65 virtual ~NewMockPersistentCookieStore() {}
65 }; 66 };
66 67
68 // False means 'less than or equal', so we test both ways for full equal.
69 MATCHER_P(CookieEquals, expected, "") {
70 return !(arg.FullCompare(expected) || expected.FullCompare(arg));
71 }
72
67 const char kTopLevelDomainPlus1[] = "http://www.harvard.edu"; 73 const char kTopLevelDomainPlus1[] = "http://www.harvard.edu";
68 const char kTopLevelDomainPlus2[] = "http://www.math.harvard.edu"; 74 const char kTopLevelDomainPlus2[] = "http://www.math.harvard.edu";
69 const char kTopLevelDomainPlus2Secure[] = "https://www.math.harvard.edu"; 75 const char kTopLevelDomainPlus2Secure[] = "https://www.math.harvard.edu";
70 const char kTopLevelDomainPlus3[] = "http://www.bourbaki.math.harvard.edu"; 76 const char kTopLevelDomainPlus3[] = "http://www.bourbaki.math.harvard.edu";
71 const char kOtherDomain[] = "http://www.mit.edu"; 77 const char kOtherDomain[] = "http://www.mit.edu";
72 78
79 bool AlwaysTrueCookiePredicate(CanonicalCookie* to_save,
80 const CanonicalCookie& cookie) {
81 if (to_save)
82 *to_save = cookie;
83 return true;
84 }
85
86 bool AlwaysFalseCookiePredicate(CanonicalCookie* to_save,
87 const CanonicalCookie& cookie) {
88 if (to_save)
89 *to_save = cookie;
90 return false;
91 }
92
73 struct CookieMonsterTestTraits { 93 struct CookieMonsterTestTraits {
74 static scoped_ptr<CookieStore> Create() { 94 static scoped_ptr<CookieStore> Create() {
75 return make_scoped_ptr(new CookieMonster(nullptr, nullptr)); 95 return make_scoped_ptr(new CookieMonster(nullptr, nullptr));
76 } 96 }
77 97
78 static const bool supports_http_only = true; 98 static const bool supports_http_only = true;
79 static const bool supports_non_dotted_domains = true; 99 static const bool supports_non_dotted_domains = true;
80 static const bool preserves_trailing_dots = true; 100 static const bool preserves_trailing_dots = true;
81 static const bool filters_schemes = true; 101 static const bool filters_schemes = true;
82 static const bool has_path_prefix_bug = false; 102 static const bool has_path_prefix_bug = false;
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 DCHECK(cm); 163 DCHECK(cm);
144 ResultSavingCookieCallback<int> callback; 164 ResultSavingCookieCallback<int> callback;
145 cm->DeleteAllCreatedBetweenAsync( 165 cm->DeleteAllCreatedBetweenAsync(
146 delete_begin, delete_end, 166 delete_begin, delete_end,
147 base::Bind(&ResultSavingCookieCallback<int>::Run, 167 base::Bind(&ResultSavingCookieCallback<int>::Run,
148 base::Unretained(&callback))); 168 base::Unretained(&callback)));
149 callback.WaitUntilDone(); 169 callback.WaitUntilDone();
150 return callback.result(); 170 return callback.result();
151 } 171 }
152 172
153 int DeleteAllCreatedBetweenForHost(CookieMonster* cm, 173 int DeleteAllCreatedBetweenWithPredicate(CookieMonster* cm,
154 const base::Time delete_begin, 174 const base::Time delete_begin,
155 const base::Time delete_end, 175 const base::Time delete_end,
156 const GURL& url) { 176 const CookiePredicate& 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
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
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 CookiePredicate predicate = base::Bind(&AlwaysTrueCookiePredicate, nullptr);
1057 DeleteAllCreatedBetweenForHostAction( 1078
1058 &cookie_monster(), base::Time(), base::Time::Now(), 1079 BeginWith(DeleteAllCreatedBetweenWithPredicateAction(
1059 http_www_google_.url(), &delete_callback)); 1080 &cookie_monster(), base::Time(), base::Time::Now(), predicate,
1081 &delete_callback));
1060 1082
1061 WaitForLoadCall(); 1083 WaitForLoadCall();
1062 1084
1063 EXPECT_CALL(delete_callback, Invoke(false)) 1085 EXPECT_CALL(delete_callback, Invoke(false))
1064 .WillOnce(DeleteAllCreatedBetweenForHostAction( 1086 .WillOnce(DeleteAllCreatedBetweenWithPredicateAction(
1065 &cookie_monster(), base::Time(), base::Time::Now(), 1087 &cookie_monster(), base::Time(), base::Time::Now(), predicate,
1066 http_www_google_.url(), &delete_callback)); 1088 &delete_callback));
1067 base::RunLoop loop; 1089 base::RunLoop loop;
1068 EXPECT_CALL(delete_callback, Invoke(false)).WillOnce(QuitRunLoop(&loop)); 1090 EXPECT_CALL(delete_callback, Invoke(false)).WillOnce(QuitRunLoop(&loop));
1069 1091
1070 CompleteLoading(); 1092 CompleteLoading();
1071 loop.Run(); 1093 loop.Run();
1072 } 1094 }
1073 1095
1074 TEST_F(DeferredCookieTaskTest, DeferredDeleteCanonicalCookie) { 1096 TEST_F(DeferredCookieTaskTest, DeferredDeleteCanonicalCookie) {
1075 std::vector<CanonicalCookie*> cookies; 1097 std::vector<CanonicalCookie*> cookies;
1076 CanonicalCookie cookie = BuildCanonicalCookie( 1098 CanonicalCookie cookie = BuildCanonicalCookie(
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
1180 } 1202 }
1181 1203
1182 TEST_F(CookieMonsterTest, TestCookieDeleteAllCreatedBetweenTimestamps) { 1204 TEST_F(CookieMonsterTest, TestCookieDeleteAllCreatedBetweenTimestamps) {
1183 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr)); 1205 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
1184 Time now = Time::Now(); 1206 Time now = Time::Now();
1185 1207
1186 // Nothing has been added so nothing should be deleted. 1208 // Nothing has been added so nothing should be deleted.
1187 EXPECT_EQ(0, DeleteAllCreatedBetween(cm.get(), now - TimeDelta::FromDays(99), 1209 EXPECT_EQ(0, DeleteAllCreatedBetween(cm.get(), now - TimeDelta::FromDays(99),
1188 Time())); 1210 Time()));
1189 1211
1190 // Create 3 cookies with creation date of today, yesterday and the day before. 1212 // Create 5 cookies with different creation dates.
1191 EXPECT_TRUE( 1213 EXPECT_TRUE(
1192 cm->SetCookieWithCreationTime(http_www_google_.url(), "T-0=Now", now)); 1214 cm->SetCookieWithCreationTime(http_www_google_.url(), "T-0=Now", now));
1193 EXPECT_TRUE(cm->SetCookieWithCreationTime( 1215 EXPECT_TRUE(cm->SetCookieWithCreationTime(
1194 http_www_google_.url(), "T-1=Yesterday", now - TimeDelta::FromDays(1))); 1216 http_www_google_.url(), "T-1=Yesterday", now - TimeDelta::FromDays(1)));
1195 EXPECT_TRUE(cm->SetCookieWithCreationTime( 1217 EXPECT_TRUE(cm->SetCookieWithCreationTime(
1196 http_www_google_.url(), "T-2=DayBefore", now - TimeDelta::FromDays(2))); 1218 http_www_google_.url(), "T-2=DayBefore", now - TimeDelta::FromDays(2)));
1197 EXPECT_TRUE(cm->SetCookieWithCreationTime( 1219 EXPECT_TRUE(cm->SetCookieWithCreationTime(
1198 http_www_google_.url(), "T-3=ThreeDays", now - TimeDelta::FromDays(3))); 1220 http_www_google_.url(), "T-3=ThreeDays", now - TimeDelta::FromDays(3)));
1199 EXPECT_TRUE(cm->SetCookieWithCreationTime( 1221 EXPECT_TRUE(cm->SetCookieWithCreationTime(
1200 http_www_google_.url(), "T-7=LastWeek", now - TimeDelta::FromDays(7))); 1222 http_www_google_.url(), "T-7=LastWeek", now - TimeDelta::FromDays(7)));
(...skipping 11 matching lines...) Expand all
1212 EXPECT_EQ( 1234 EXPECT_EQ(
1213 1, DeleteAllCreatedBetween(cm.get(), now - TimeDelta::FromDays(7), now)); 1235 1, DeleteAllCreatedBetween(cm.get(), now - TimeDelta::FromDays(7), now));
1214 1236
1215 // Delete the last (now) item. 1237 // Delete the last (now) item.
1216 EXPECT_EQ(1, DeleteAllCreatedBetween(cm.get(), Time(), Time())); 1238 EXPECT_EQ(1, DeleteAllCreatedBetween(cm.get(), Time(), Time()));
1217 1239
1218 // Really make sure everything is gone. 1240 // Really make sure everything is gone.
1219 EXPECT_EQ(0, DeleteAll(cm.get())); 1241 EXPECT_EQ(0, DeleteAll(cm.get()));
1220 } 1242 }
1221 1243
1244 TEST_F(CookieMonsterTest,
1245 TestCookieDeleteAllCreatedBetweenTimestampsWithPredicate) {
1246 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
1247 Time now = Time::Now();
1248
1249 CanonicalCookie test_cookie;
1250 CookiePredicate true_predicate =
1251 base::Bind(&AlwaysTrueCookiePredicate, &test_cookie);
1252
1253 CookiePredicate false_predicate =
1254 base::Bind(&AlwaysFalseCookiePredicate, &test_cookie);
1255
1256 // Nothing has been added so nothing should be deleted.
1257 EXPECT_EQ(
1258 0, DeleteAllCreatedBetweenWithPredicate(
1259 cm.get(), now - TimeDelta::FromDays(99), Time(), true_predicate));
1260
1261 // Create 5 cookies with different creation dates.
1262 EXPECT_TRUE(
1263 cm->SetCookieWithCreationTime(http_www_google_.url(), "T-0=Now", now));
1264 EXPECT_TRUE(cm->SetCookieWithCreationTime(
1265 http_www_google_.url(), "T-1=Yesterday", now - TimeDelta::FromDays(1)));
1266 EXPECT_TRUE(cm->SetCookieWithCreationTime(
1267 http_www_google_.url(), "T-2=DayBefore", now - TimeDelta::FromDays(2)));
1268 EXPECT_TRUE(cm->SetCookieWithCreationTime(
1269 http_www_google_.url(), "T-3=ThreeDays", now - TimeDelta::FromDays(3)));
1270 EXPECT_TRUE(cm->SetCookieWithCreationTime(
1271 http_www_google_.url(), "T-7=LastWeek", now - TimeDelta::FromDays(7)));
1272
1273 // Try to delete threedays and the daybefore, but we should do nothing due
1274 // to the predicate.
1275 EXPECT_EQ(0, DeleteAllCreatedBetweenWithPredicate(
1276 cm.get(), now - TimeDelta::FromDays(3),
1277 now - TimeDelta::FromDays(1), false_predicate));
1278 // Same as above with a null predicate, so it shouldn't delete anything.
1279 EXPECT_EQ(0, DeleteAllCreatedBetweenWithPredicate(
1280 cm.get(), now - TimeDelta::FromDays(3),
1281 now - TimeDelta::FromDays(1), CookiePredicate()));
1282 // Same as above, but we use the true_predicate, so it works.
1283 EXPECT_EQ(2, DeleteAllCreatedBetweenWithPredicate(
1284 cm.get(), now - TimeDelta::FromDays(3),
1285 now - TimeDelta::FromDays(1), true_predicate));
1286
1287 // Try to delete yesterday, also make sure that delete_end is not
1288 // inclusive.
1289 EXPECT_EQ(0,
1290 DeleteAllCreatedBetweenWithPredicate(
1291 cm.get(), now - TimeDelta::FromDays(2), now, false_predicate));
1292 EXPECT_EQ(1,
1293 DeleteAllCreatedBetweenWithPredicate(
1294 cm.get(), now - TimeDelta::FromDays(2), now, true_predicate));
1295 // Check our cookie values.
1296 scoped_ptr<CanonicalCookie> expected_cookie =
1297 CanonicalCookie::Create(http_www_google_.url(), "T-1=Yesterday",
1298 now - TimeDelta::FromDays(1), CookieOptions());
1299 EXPECT_THAT(test_cookie, CookieEquals(*expected_cookie))
1300 << "Actual:\n"
1301 << test_cookie.DebugString() << "\nExpected:\n"
1302 << expected_cookie->DebugString();
1303
1304 // Make sure the delete_begin is inclusive.
1305 EXPECT_EQ(0,
1306 DeleteAllCreatedBetweenWithPredicate(
1307 cm.get(), now - TimeDelta::FromDays(7), now, false_predicate));
1308 EXPECT_EQ(1,
1309 DeleteAllCreatedBetweenWithPredicate(
1310 cm.get(), now - TimeDelta::FromDays(7), now, true_predicate));
1311
1312 // Delete the last (now) item.
1313 EXPECT_EQ(0, DeleteAllCreatedBetweenWithPredicate(cm.get(), Time(), Time(),
1314 false_predicate));
1315 EXPECT_EQ(1, DeleteAllCreatedBetweenWithPredicate(cm.get(), Time(), Time(),
1316 true_predicate));
1317 expected_cookie = CanonicalCookie::Create(http_www_google_.url(), "T-0=Now",
1318 now, CookieOptions());
1319 EXPECT_THAT(test_cookie, CookieEquals(*expected_cookie))
1320 << "Actual:\n"
1321 << test_cookie.DebugString() << "\nExpected:\n"
1322 << expected_cookie->DebugString();
1323
1324 // Really make sure everything is gone.
1325 EXPECT_EQ(0, DeleteAll(cm.get()));
1326 }
1327
1222 static const int kAccessDelayMs = kLastAccessThresholdMilliseconds + 20; 1328 static const int kAccessDelayMs = kLastAccessThresholdMilliseconds + 20;
1223 1329
1224 TEST_F(CookieMonsterTest, TestLastAccess) { 1330 TEST_F(CookieMonsterTest, TestLastAccess) {
1225 scoped_ptr<CookieMonster> cm( 1331 scoped_ptr<CookieMonster> cm(
1226 new CookieMonster(nullptr, nullptr, kLastAccessThresholdMilliseconds)); 1332 new CookieMonster(nullptr, nullptr, kLastAccessThresholdMilliseconds));
1227 1333
1228 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=B")); 1334 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=B"));
1229 const Time last_access_date(GetFirstCookieAccessDate(cm.get())); 1335 const Time last_access_date(GetFirstCookieAccessDate(cm.get()));
1230 1336
1231 // Reading the cookie again immediately shouldn't update the access date, 1337 // Reading the cookie again immediately shouldn't update the access date,
(...skipping 404 matching lines...) Expand 10 before | Expand all | Expand 10 after
1636 EXPECT_EQ("a", delegate->changes()[0].first.Name()); 1742 EXPECT_EQ("a", delegate->changes()[0].first.Name());
1637 EXPECT_EQ("val1", delegate->changes()[0].first.Value()); 1743 EXPECT_EQ("val1", delegate->changes()[0].first.Value());
1638 EXPECT_EQ(http_www_google_.url().host(), 1744 EXPECT_EQ(http_www_google_.url().host(),
1639 delegate->changes()[1].first.Domain()); 1745 delegate->changes()[1].first.Domain());
1640 EXPECT_FALSE(delegate->changes()[1].second); 1746 EXPECT_FALSE(delegate->changes()[1].second);
1641 EXPECT_EQ("a", delegate->changes()[1].first.Name()); 1747 EXPECT_EQ("a", delegate->changes()[1].first.Name());
1642 EXPECT_EQ("val2", delegate->changes()[1].first.Value()); 1748 EXPECT_EQ("val2", delegate->changes()[1].first.Value());
1643 delegate->reset(); 1749 delegate->reset();
1644 } 1750 }
1645 1751
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) { 1752 TEST_F(CookieMonsterTest, UniqueCreationTime) {
1720 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr)); 1753 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
1721 CookieOptions options; 1754 CookieOptions options;
1722 1755
1723 // Add in three cookies through every public interface to the 1756 // Add in three cookies through every public interface to the
1724 // CookieMonster and confirm that none of them have duplicate 1757 // CookieMonster and confirm that none of them have duplicate
1725 // creation times. 1758 // creation times.
1726 1759
1727 // SetCookieWithCreationTime and SetCookieWithCreationTimeAndOptions 1760 // SetCookieWithCreationTime and SetCookieWithCreationTimeAndOptions
1728 // are not included as they aren't going to be public for very much 1761 // 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
3187 monster()->AddCallbackForCookie( 3220 monster()->AddCallbackForCookie(
3188 test_url_, "abc", 3221 test_url_, "abc",
3189 base::Bind(&RecordCookieChanges, &cookies1, nullptr))); 3222 base::Bind(&RecordCookieChanges, &cookies1, nullptr)));
3190 SetCookie(monster(), test_url_, "abc=def"); 3223 SetCookie(monster(), test_url_, "abc=def");
3191 base::MessageLoop::current()->RunUntilIdle(); 3224 base::MessageLoop::current()->RunUntilIdle();
3192 EXPECT_EQ(1U, cookies0.size()); 3225 EXPECT_EQ(1U, cookies0.size());
3193 EXPECT_EQ(1U, cookies0.size()); 3226 EXPECT_EQ(1U, cookies0.size());
3194 } 3227 }
3195 3228
3196 } // namespace net 3229 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698