| Index: net/cookies/cookie_monster_unittest.cc
|
| diff --git a/net/cookies/cookie_monster_unittest.cc b/net/cookies/cookie_monster_unittest.cc
|
| index 839add8b11e4147c779687651827365bc798a282..82ae3a2d57c2a3ac16b4bc2efd8a42b50cba4e0c 100644
|
| --- a/net/cookies/cookie_monster_unittest.cc
|
| +++ b/net/cookies/cookie_monster_unittest.cc
|
| @@ -100,6 +100,7 @@ struct CookieMonsterTestTraits {
|
| static const bool filters_schemes = true;
|
| static const bool has_path_prefix_bug = false;
|
| static const int creation_time_granularity_in_ms = 0;
|
| + static const bool enforces_prefixes = true;
|
| };
|
|
|
| INSTANTIATE_TYPED_TEST_CASE_P(CookieMonster,
|
| @@ -160,7 +161,7 @@ class CookieMonsterTest : public CookieStoreTest<CookieMonsterTestTraits> {
|
| ResultSavingCookieCallback<bool> callback;
|
| cm->SetCookieWithDetailsAsync(
|
| url, name, value, domain, path, expiration_time, secure, http_only,
|
| - first_party_only, priority,
|
| + first_party_only, false /* enforce prefixes */, priority,
|
| base::Bind(&ResultSavingCookieCallback<bool>::Run,
|
| base::Unretained(&callback)));
|
| RunFor(kTimeout);
|
| @@ -670,8 +671,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.first_party_only, cc.priority,
|
| - callback->AsCallback());
|
| + cc.secure, cc.http_only, cc.first_party_only,
|
| + false /* enforce prefixes */, cc.priority, callback->AsCallback());
|
| }
|
|
|
| ACTION_P2(GetAllCookiesAction, cookie_monster, callback) {
|
| @@ -2475,7 +2476,7 @@ class MultiThreadedCookieMonsterTest : public CookieMonsterTest {
|
| CookiePriority priority = COOKIE_PRIORITY_DEFAULT;
|
| cm->SetCookieWithDetailsAsync(
|
| url, name, value, domain, path, expiration_time, secure, http_only,
|
| - first_party_only, priority,
|
| + first_party_only, false /* enforce prefixes */, priority,
|
| base::Bind(&ResultSavingCookieCallback<bool>::Run,
|
| base::Unretained(callback)));
|
| }
|
| @@ -2966,6 +2967,29 @@ TEST_F(CookieMonsterTest, CookieSourceHistogram) {
|
| CookieMonster::COOKIE_SOURCE_NONSECURE_COOKIE_NONCRYPTOGRAPHIC_SCHEME, 1);
|
| }
|
|
|
| +TEST_F(CookieMonsterTest, SecureCookiePrefix) {
|
| + scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL));
|
| + // A $Secure- cookie must be Secure.
|
| + EXPECT_FALSE(SetCookie(cm.get(), https_www_google_.url(), "$Secure-A=B"));
|
| + EXPECT_FALSE(
|
| + SetCookie(cm.get(), https_www_google_.url(), "$Secure-A=B; httponly"));
|
| +
|
| + // A typoed prefix does not have to be Secure.
|
| + EXPECT_TRUE(
|
| + SetCookie(cm.get(), https_www_google_.url(), "$secure-A=B; Secure"));
|
| + EXPECT_TRUE(SetCookie(cm.get(), https_www_google_.url(), "$secure-A=C;"));
|
| + EXPECT_TRUE(
|
| + SetCookie(cm.get(), https_www_google_.url(), "$SecureA=B; Secure"));
|
| + EXPECT_TRUE(SetCookie(cm.get(), https_www_google_.url(), "$SecureA=C;"));
|
| +
|
| + EXPECT_TRUE(
|
| + SetCookie(cm.get(), https_www_google_.url(), "$Secure-A=B; Secure"));
|
| +
|
| + // A $Secure- cookie can't be set on a non-secure origin.
|
| + EXPECT_FALSE(
|
| + SetCookie(cm.get(), http_www_google_.url(), "$Secure-A=B; Secure"));
|
| +}
|
| +
|
| class CookieMonsterNotificationTest : public CookieMonsterTest {
|
| public:
|
| CookieMonsterNotificationTest()
|
|
|