Index: net/cookies/cookie_monster_unittest.cc |
diff --git a/net/cookies/cookie_monster_unittest.cc b/net/cookies/cookie_monster_unittest.cc |
index 51724a9eaccefcfced515b8c867262e236174451..7ca99a3327d7af318196b920614a3dac1e3d62ab 100644 |
--- a/net/cookies/cookie_monster_unittest.cc |
+++ b/net/cookies/cookie_monster_unittest.cc |
@@ -152,13 +152,15 @@ class CookieMonsterTest : public CookieStoreTest<CookieMonsterTestTraits> { |
const base::Time& expiration_time, |
bool secure, |
bool http_only, |
+ bool first_party_only, |
CookiePriority priority) { |
DCHECK(cm); |
ResultSavingCookieCallback<bool> callback; |
cm->SetCookieWithDetailsAsync( |
url, name, value, domain, path, expiration_time, secure, http_only, |
- priority, base::Bind(&ResultSavingCookieCallback<bool>::Run, |
- base::Unretained(&callback))); |
+ first_party_only, priority, |
+ base::Bind(&ResultSavingCookieCallback<bool>::Run, |
+ base::Unretained(&callback))); |
RunFor(kTimeout); |
EXPECT_TRUE(callback.did_run()); |
return callback.result(); |
@@ -240,6 +242,7 @@ class CookieMonsterTest : public CookieStoreTest<CookieMonsterTestTraits> { |
// * Three levels of domain cookie (.b.a, .c.b.a, .d.c.b.a) |
// * Three levels of host cookie (w.b.a, w.c.b.a, w.d.c.b.a) |
// * http_only cookie (w.c.b.a) |
+ // * first-party cookie (w.c.b.a) |
// * Two secure cookies (.c.b.a, w.c.b.a) |
// * Two domain path cookies (.c.b.a/dir1, .c.b.a/dir1/dir2) |
// * Two host path cookies (w.c.b.a/dir1, w.c.b.a/dir1/dir2) |
@@ -247,64 +250,70 @@ class CookieMonsterTest : public CookieStoreTest<CookieMonsterTestTraits> { |
// Domain cookies |
EXPECT_TRUE(this->SetCookieWithDetails( |
cm.get(), url_top_level_domain_plus_1, "dom_1", "X", ".harvard.edu", |
- "/", base::Time(), false, false, COOKIE_PRIORITY_DEFAULT)); |
+ "/", base::Time(), false, false, false, COOKIE_PRIORITY_DEFAULT)); |
EXPECT_TRUE(this->SetCookieWithDetails( |
cm.get(), url_top_level_domain_plus_2, "dom_2", "X", |
- ".math.harvard.edu", "/", base::Time(), false, false, |
+ ".math.harvard.edu", "/", base::Time(), false, false, false, |
COOKIE_PRIORITY_DEFAULT)); |
EXPECT_TRUE(this->SetCookieWithDetails( |
cm.get(), url_top_level_domain_plus_3, "dom_3", "X", |
- ".bourbaki.math.harvard.edu", "/", base::Time(), false, false, |
+ ".bourbaki.math.harvard.edu", "/", base::Time(), false, false, false, |
COOKIE_PRIORITY_DEFAULT)); |
// Host cookies |
EXPECT_TRUE(this->SetCookieWithDetails( |
cm.get(), url_top_level_domain_plus_1, "host_1", "X", std::string(), |
- "/", base::Time(), false, false, COOKIE_PRIORITY_DEFAULT)); |
+ "/", base::Time(), false, false, false, COOKIE_PRIORITY_DEFAULT)); |
EXPECT_TRUE(this->SetCookieWithDetails( |
cm.get(), url_top_level_domain_plus_2, "host_2", "X", std::string(), |
- "/", base::Time(), false, false, COOKIE_PRIORITY_DEFAULT)); |
+ "/", base::Time(), false, false, false, COOKIE_PRIORITY_DEFAULT)); |
EXPECT_TRUE(this->SetCookieWithDetails( |
cm.get(), url_top_level_domain_plus_3, "host_3", "X", std::string(), |
- "/", base::Time(), false, false, COOKIE_PRIORITY_DEFAULT)); |
+ "/", base::Time(), false, false, false, COOKIE_PRIORITY_DEFAULT)); |
+ |
+ // http_only cookie |
+ EXPECT_TRUE(this->SetCookieWithDetails( |
+ cm.get(), url_top_level_domain_plus_2, "httpo_check", "x", |
+ std::string(), "/", base::Time(), false, true, false, |
+ COOKIE_PRIORITY_DEFAULT)); |
- // Http_only cookie |
+ // first-party cookie |
EXPECT_TRUE(this->SetCookieWithDetails( |
- cm.get(), url_top_level_domain_plus_2, "httpo_check", "X", |
- std::string(), "/", base::Time(), false, true, |
+ cm.get(), url_top_level_domain_plus_2, "firstp_check", "x", |
+ std::string(), "/", base::Time(), false, false, true, |
COOKIE_PRIORITY_DEFAULT)); |
// Secure cookies |
EXPECT_TRUE(this->SetCookieWithDetails( |
cm.get(), url_top_level_domain_plus_2_secure, "sec_dom", "X", |
- ".math.harvard.edu", "/", base::Time(), true, false, |
+ ".math.harvard.edu", "/", base::Time(), true, false, false, |
COOKIE_PRIORITY_DEFAULT)); |
EXPECT_TRUE(this->SetCookieWithDetails( |
cm.get(), url_top_level_domain_plus_2_secure, "sec_host", "X", |
- std::string(), "/", base::Time(), true, false, |
+ std::string(), "/", base::Time(), true, false, false, |
COOKIE_PRIORITY_DEFAULT)); |
// Domain path cookies |
EXPECT_TRUE(this->SetCookieWithDetails( |
cm.get(), url_top_level_domain_plus_2, "dom_path_1", "X", |
- ".math.harvard.edu", "/dir1", base::Time(), false, false, |
+ ".math.harvard.edu", "/dir1", base::Time(), false, false, false, |
COOKIE_PRIORITY_DEFAULT)); |
EXPECT_TRUE(this->SetCookieWithDetails( |
cm.get(), url_top_level_domain_plus_2, "dom_path_2", "X", |
- ".math.harvard.edu", "/dir1/dir2", base::Time(), false, false, |
+ ".math.harvard.edu", "/dir1/dir2", base::Time(), false, false, false, |
COOKIE_PRIORITY_DEFAULT)); |
// Host path cookies |
EXPECT_TRUE(this->SetCookieWithDetails( |
cm.get(), url_top_level_domain_plus_2, "host_path_1", "X", |
- std::string(), "/dir1", base::Time(), false, false, |
+ std::string(), "/dir1", base::Time(), false, false, false, |
COOKIE_PRIORITY_DEFAULT)); |
EXPECT_TRUE(this->SetCookieWithDetails( |
cm.get(), url_top_level_domain_plus_2, "host_path_2", "X", |
- std::string(), "/dir1/dir2", base::Time(), false, false, |
+ std::string(), "/dir1/dir2", base::Time(), false, false, false, |
COOKIE_PRIORITY_DEFAULT)); |
- EXPECT_EQ(13U, this->GetAllCookies(cm.get()).size()); |
+ EXPECT_EQ(14U, this->GetAllCookies(cm.get()).size()); |
} |
Time GetFirstCookieAccessDate(CookieMonster* cm) { |
@@ -594,6 +603,7 @@ struct CookiesInputInfo { |
const base::Time expiration_time; |
bool secure; |
bool http_only; |
+ bool first_party_only; |
CookiePriority priority; |
}; |
@@ -626,7 +636,8 @@ ACTION_P4(DeleteAllCreatedBetweenAction, |
ACTION_P3(SetCookieWithDetailsAction, cookie_monster, cc, callback) { |
cookie_monster->SetCookieWithDetailsAsync( |
cc.url, cc.name, cc.value, cc.domain, cc.path, cc.expiration_time, |
- cc.secure, cc.http_only, cc.priority, callback->AsCallback()); |
+ cc.secure, cc.http_only, cc.first_party_only, cc.priority, |
+ callback->AsCallback()); |
} |
ACTION_P2(GetAllCookiesAction, cookie_monster, callback) { |
@@ -842,6 +853,7 @@ TEST_F(DeferredCookieTaskTest, DeferredSetCookieWithDetails) { |
base::Time(), |
false, |
false, |
+ false, |
COOKIE_PRIORITY_DEFAULT}; |
BeginWithForDomainKey( |
"google.izzle", SetCookieWithDetailsAction(&cookie_monster(), cookie_info, |
@@ -857,6 +869,7 @@ TEST_F(DeferredCookieTaskTest, DeferredSetCookieWithDetails) { |
base::Time(), |
false, |
false, |
+ false, |
COOKIE_PRIORITY_DEFAULT}; |
EXPECT_CALL(set_cookies_callback, Invoke(true)) |
.WillOnce(SetCookieWithDetailsAction(&cookie_monster(), cookie_info_exp, |
@@ -1537,30 +1550,30 @@ TEST_F(CookieMonsterTest, SetCookieWithDetails) { |
EXPECT_TRUE(SetCookieWithDetails(cm.get(), url_google_foo_, "A", "B", |
std::string(), "/foo", base::Time(), false, |
- false, COOKIE_PRIORITY_DEFAULT)); |
+ false, false, COOKIE_PRIORITY_DEFAULT)); |
EXPECT_TRUE(SetCookieWithDetails(cm.get(), url_google_bar_, "C", "D", |
"google.izzle", "/bar", base::Time(), false, |
- true, COOKIE_PRIORITY_DEFAULT)); |
- EXPECT_TRUE(SetCookieWithDetails(cm.get(), url_google_, "E", "F", |
- std::string(), std::string(), base::Time(), |
true, false, COOKIE_PRIORITY_DEFAULT)); |
+ EXPECT_TRUE(SetCookieWithDetails( |
+ cm.get(), url_google_, "E", "F", std::string(), std::string(), |
+ base::Time(), true, false, false, COOKIE_PRIORITY_DEFAULT)); |
// Test that malformed attributes fail to set the cookie. |
EXPECT_FALSE(SetCookieWithDetails(cm.get(), url_google_foo_, " A", "B", |
std::string(), "/foo", base::Time(), false, |
- false, COOKIE_PRIORITY_DEFAULT)); |
+ false, false, COOKIE_PRIORITY_DEFAULT)); |
EXPECT_FALSE(SetCookieWithDetails(cm.get(), url_google_foo_, "A;", "B", |
std::string(), "/foo", base::Time(), false, |
- false, COOKIE_PRIORITY_DEFAULT)); |
+ false, false, COOKIE_PRIORITY_DEFAULT)); |
EXPECT_FALSE(SetCookieWithDetails(cm.get(), url_google_foo_, "A=", "B", |
std::string(), "/foo", base::Time(), false, |
- false, COOKIE_PRIORITY_DEFAULT)); |
- EXPECT_FALSE(SetCookieWithDetails(cm.get(), url_google_foo_, "A", "B", |
- "google.ozzzzzzle", "foo", base::Time(), |
false, false, COOKIE_PRIORITY_DEFAULT)); |
+ EXPECT_FALSE(SetCookieWithDetails( |
+ cm.get(), url_google_foo_, "A", "B", "google.ozzzzzzle", "foo", |
+ base::Time(), false, false, false, COOKIE_PRIORITY_DEFAULT)); |
EXPECT_FALSE(SetCookieWithDetails(cm.get(), url_google_foo_, "A=", "B", |
std::string(), "foo", base::Time(), false, |
- false, COOKIE_PRIORITY_DEFAULT)); |
+ false, false, COOKIE_PRIORITY_DEFAULT)); |
CookieList cookies = GetAllCookiesForURL(cm.get(), url_google_foo_); |
CookieList::iterator it = cookies.begin(); |
@@ -1627,7 +1640,7 @@ TEST_F(CookieMonsterTest, DeleteAllForHost) { |
GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure + |
std::string("/dir1/dir2/xxx")))); |
- EXPECT_EQ(5, DeleteAllForHost(cm.get(), GURL(kTopLevelDomainPlus2))); |
+ EXPECT_EQ(6, DeleteAllForHost(cm.get(), GURL(kTopLevelDomainPlus2))); |
EXPECT_EQ(8U, GetAllCookies(cm.get()).size()); |
EXPECT_EQ("dom_1=X; dom_2=X; dom_3=X; host_3=X", |
@@ -1641,7 +1654,7 @@ TEST_F(CookieMonsterTest, DeleteAllForHost) { |
std::string("/dir1/dir2/xxx")))); |
PopulateCmForDeleteAllForHost(cm); |
- EXPECT_EQ(5, DeleteAllForHost(cm.get(), GURL(kTopLevelDomainPlus2Secure))); |
+ EXPECT_EQ(6, DeleteAllForHost(cm.get(), GURL(kTopLevelDomainPlus2Secure))); |
EXPECT_EQ(8U, GetAllCookies(cm.get()).size()); |
EXPECT_EQ("dom_1=X; dom_2=X; dom_3=X; host_3=X", |
@@ -1655,7 +1668,7 @@ TEST_F(CookieMonsterTest, DeleteAllForHost) { |
std::string("/dir1/dir2/xxx")))); |
PopulateCmForDeleteAllForHost(cm); |
- EXPECT_EQ(5, DeleteAllForHost(cm.get(), GURL(kTopLevelDomainPlus2Secure + |
+ EXPECT_EQ(6, DeleteAllForHost(cm.get(), GURL(kTopLevelDomainPlus2Secure + |
std::string("/dir1/xxx")))); |
EXPECT_EQ(8U, GetAllCookies(cm.get()).size()); |
@@ -1696,13 +1709,13 @@ TEST_F(CookieMonsterTest, UniqueCreationTime) { |
options); |
SetCookieWithDetails(cm.get(), url_google_, "setCookieWithDetails1", "A", |
- ".google.com", "/", Time(), false, false, |
+ ".google.com", "/", Time(), false, false, false, |
COOKIE_PRIORITY_DEFAULT); |
SetCookieWithDetails(cm.get(), url_google_, "setCookieWithDetails2", "A", |
- ".google.com", "/", Time(), false, false, |
+ ".google.com", "/", Time(), false, false, false, |
COOKIE_PRIORITY_DEFAULT); |
SetCookieWithDetails(cm.get(), url_google_, "setCookieWithDetails3", "A", |
- ".google.com", "/", Time(), false, false, |
+ ".google.com", "/", Time(), false, false, false, |
COOKIE_PRIORITY_DEFAULT); |
// Now we check |
@@ -1770,6 +1783,7 @@ TEST_F(CookieMonsterTest, BackingStoreCommunication) { |
expires, |
false, |
false, |
+ false, |
COOKIE_PRIORITY_DEFAULT}, |
{GURL("https://www.google.com"), |
"b", |
@@ -1779,6 +1793,7 @@ TEST_F(CookieMonsterTest, BackingStoreCommunication) { |
expires + TimeDelta::FromSeconds(10), |
true, |
true, |
+ false, |
COOKIE_PRIORITY_DEFAULT}, |
{GURL("https://google.com"), |
"c", |
@@ -1788,6 +1803,7 @@ TEST_F(CookieMonsterTest, BackingStoreCommunication) { |
base::Time::Now() + base::TimeDelta::FromSeconds(100), |
true, |
false, |
+ true, |
COOKIE_PRIORITY_DEFAULT}}; |
const int INPUT_DELETE = 1; |
@@ -1798,7 +1814,8 @@ TEST_F(CookieMonsterTest, BackingStoreCommunication) { |
p < &input_info[arraysize(input_info)]; p++) { |
EXPECT_TRUE(SetCookieWithDetails(cmout.get(), p->url, p->name, p->value, |
p->domain, p->path, p->expiration_time, |
- p->secure, p->http_only, p->priority)); |
+ p->secure, p->http_only, |
+ p->first_party_only, p->priority)); |
} |
GURL del_url(input_info[INPUT_DELETE] |
.url.Resolve(input_info[INPUT_DELETE].path) |
@@ -1827,6 +1844,7 @@ TEST_F(CookieMonsterTest, BackingStoreCommunication) { |
output->CreationDate().ToInternalValue()); |
EXPECT_EQ(input->secure, output->IsSecure()); |
EXPECT_EQ(input->http_only, output->IsHttpOnly()); |
+ EXPECT_EQ(input->first_party_only, output->IsFirstPartyOnly()); |
EXPECT_TRUE(output->IsPersistent()); |
EXPECT_EQ(input->expiration_time.ToInternalValue(), |
output->ExpiryDate().ToInternalValue()); |
@@ -2101,7 +2119,7 @@ TEST_F(CookieMonsterTest, HistogramCheck) { |
expired_histogram->SnapshotSamples()); |
ASSERT_TRUE(SetCookieWithDetails( |
cm.get(), GURL("http://fake.a.url"), "a", "b", "a.url", "/", |
- base::Time::Now() + base::TimeDelta::FromMinutes(59), false, false, |
+ base::Time::Now() + base::TimeDelta::FromMinutes(59), false, false, false, |
COOKIE_PRIORITY_DEFAULT)); |
scoped_ptr<base::HistogramSamples> samples2( |
@@ -2158,11 +2176,13 @@ class MultiThreadedCookieMonsterTest : public CookieMonsterTest { |
base::Time expiration_time = base::Time(); |
bool secure = false; |
bool http_only = false; |
+ bool first_party_only = false; |
CookiePriority priority = COOKIE_PRIORITY_DEFAULT; |
cm->SetCookieWithDetailsAsync( |
url, name, value, domain, path, expiration_time, secure, http_only, |
- priority, base::Bind(&ResultSavingCookieCallback<bool>::Run, |
- base::Unretained(callback))); |
+ first_party_only, priority, |
+ base::Bind(&ResultSavingCookieCallback<bool>::Run, |
+ base::Unretained(callback))); |
} |
void DeleteAllCreatedBetweenTask(CookieMonster* cm, |
@@ -2288,7 +2308,7 @@ TEST_F(MultiThreadedCookieMonsterTest, ThreadCheckSetCookieWithDetails) { |
scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); |
EXPECT_TRUE(SetCookieWithDetails(cm.get(), url_google_foo_, "A", "B", |
std::string(), "/foo", base::Time(), false, |
- false, COOKIE_PRIORITY_DEFAULT)); |
+ false, false, COOKIE_PRIORITY_DEFAULT)); |
ResultSavingCookieCallback<bool> callback(&other_thread_); |
base::Closure task = |
base::Bind(&net::MultiThreadedCookieMonsterTest::SetCookieWithDetailsTask, |
@@ -2555,11 +2575,12 @@ TEST_F(CookieMonsterTest, ControlCharacterPurge) { |
// We have to manually build this cookie because it contains a control |
// character, and our cookie line parser rejects control characters. |
- CanonicalCookie* cc = new CanonicalCookie( |
- url, "baz", |
- "\x05" |
- "boo", |
- domain, path, now2, later, now2, false, false, COOKIE_PRIORITY_DEFAULT); |
+ CanonicalCookie* cc = |
+ new CanonicalCookie(url, "baz", |
+ "\x05" |
+ "boo", |
+ domain, path, now2, later, now2, false, false, false, |
+ COOKIE_PRIORITY_DEFAULT); |
initial_cookies.push_back(cc); |
AddCookieToList(domain, "hello=world; path=" + path, now3, &initial_cookies); |