Index: net/cookies/parsed_cookie_unittest.cc |
diff --git a/net/cookies/parsed_cookie_unittest.cc b/net/cookies/parsed_cookie_unittest.cc |
index 57de115a2796878359cb86edd30439f9d017aa7c..5bd1bef65b1f54ca3fd6141fb9e09d8abae854aa 100644 |
--- a/net/cookies/parsed_cookie_unittest.cc |
+++ b/net/cookies/parsed_cookie_unittest.cc |
@@ -4,6 +4,7 @@ |
#include <string> |
+#include "net/cookies/cookie_constants.h" |
#include "net/cookies/parsed_cookie.h" |
#include "testing/gtest/include/gtest/gtest.h" |
@@ -74,10 +75,11 @@ TEST(ParsedCookieTest, TestNameless) { |
EXPECT_EQ("/", pc.Path()); |
EXPECT_EQ("", pc.Name()); |
EXPECT_EQ("BLAHHH", pc.Value()); |
+ EXPECT_EQ(PRIORITY_DEFAULT, pc.Priority()); |
} |
TEST(ParsedCookieTest, TestAttributeCase) { |
- ParsedCookie pc("BLAHHH; Path=/; sECuRe; httpONLY"); |
+ ParsedCookie pc("BLAHHH; Path=/; sECuRe; httpONLY; pRIoRitY=hIgH"); |
EXPECT_TRUE(pc.IsValid()); |
EXPECT_TRUE(pc.IsSecure()); |
EXPECT_TRUE(pc.IsHttpOnly()); |
@@ -85,7 +87,8 @@ TEST(ParsedCookieTest, TestAttributeCase) { |
EXPECT_EQ("/", pc.Path()); |
EXPECT_EQ("", pc.Name()); |
EXPECT_EQ("BLAHHH", pc.Value()); |
- EXPECT_EQ(3U, pc.NumberOfAttributes()); |
+ EXPECT_EQ(PRIORITY_HIGH, pc.Priority()); |
+ EXPECT_EQ(4U, pc.NumberOfAttributes()); |
} |
TEST(ParsedCookieTest, TestDoubleQuotedNameless) { |
@@ -96,6 +99,7 @@ TEST(ParsedCookieTest, TestDoubleQuotedNameless) { |
EXPECT_EQ("/", pc.Path()); |
EXPECT_EQ("", pc.Name()); |
EXPECT_EQ("\"BLA\\\"HHH\"", pc.Value()); |
+ EXPECT_EQ(PRIORITY_DEFAULT, pc.Priority()); |
EXPECT_EQ(2U, pc.NumberOfAttributes()); |
} |
@@ -104,6 +108,7 @@ TEST(ParsedCookieTest, QuoteOffTheEnd) { |
EXPECT_TRUE(pc.IsValid()); |
EXPECT_EQ("a", pc.Name()); |
EXPECT_EQ("\"B", pc.Value()); |
+ EXPECT_EQ(PRIORITY_DEFAULT, pc.Priority()); |
EXPECT_EQ(0U, pc.NumberOfAttributes()); |
} |
@@ -112,6 +117,7 @@ TEST(ParsedCookieTest, MissingName) { |
EXPECT_TRUE(pc.IsValid()); |
EXPECT_EQ("", pc.Name()); |
EXPECT_EQ("ABC", pc.Value()); |
+ EXPECT_EQ(PRIORITY_DEFAULT, pc.Priority()); |
EXPECT_EQ(0U, pc.NumberOfAttributes()); |
} |
@@ -122,6 +128,7 @@ TEST(ParsedCookieTest, MissingValue) { |
EXPECT_EQ("", pc.Value()); |
EXPECT_TRUE(pc.HasPath()); |
EXPECT_EQ("/wee", pc.Path()); |
+ EXPECT_EQ(PRIORITY_DEFAULT, pc.Priority()); |
EXPECT_EQ(1U, pc.NumberOfAttributes()); |
} |
@@ -134,6 +141,7 @@ TEST(ParsedCookieTest, Whitespace) { |
EXPECT_FALSE(pc.HasDomain()); |
EXPECT_TRUE(pc.IsSecure()); |
EXPECT_TRUE(pc.IsHttpOnly()); |
+ EXPECT_EQ(PRIORITY_DEFAULT, pc.Priority()); |
// We parse anything between ; as attributes, so we end up with two |
// attributes with an empty string name and value. |
EXPECT_EQ(4U, pc.NumberOfAttributes()); |
@@ -147,6 +155,7 @@ TEST(ParsedCookieTest, MultipleEquals) { |
EXPECT_FALSE(pc.HasDomain()); |
EXPECT_TRUE(pc.IsSecure()); |
EXPECT_TRUE(pc.IsHttpOnly()); |
+ EXPECT_EQ(PRIORITY_DEFAULT, pc.Priority()); |
EXPECT_EQ(4U, pc.NumberOfAttributes()); |
} |
@@ -161,6 +170,7 @@ TEST(ParsedCookieTest, QuotedTrailingWhitespace) { |
EXPECT_TRUE(pc.HasExpires()); |
EXPECT_TRUE(pc.HasPath()); |
EXPECT_EQ("/", pc.Path()); |
+ EXPECT_EQ(PRIORITY_DEFAULT, pc.Priority()); |
EXPECT_EQ(2U, pc.NumberOfAttributes()); |
} |
@@ -174,6 +184,7 @@ TEST(ParsedCookieTest, TrailingWhitespace) { |
EXPECT_TRUE(pc.HasExpires()); |
EXPECT_TRUE(pc.HasPath()); |
EXPECT_EQ("/", pc.Path()); |
+ EXPECT_EQ(PRIORITY_DEFAULT, pc.Priority()); |
EXPECT_EQ(2U, pc.NumberOfAttributes()); |
} |
@@ -249,10 +260,10 @@ TEST(ParsedCookieTest, ParseTokensAndValues) { |
TEST(ParsedCookieTest, SerializeCookieLine) { |
const char input[] = "ANCUUID=zohNumRKgI0oxyhSsV3Z7D ; " |
"expires=Sun, 18-Apr-2027 21:06:29 GMT ; " |
- "path=/ ; "; |
+ "path=/ ; priority=low ; "; |
const char output[] = "ANCUUID=zohNumRKgI0oxyhSsV3Z7D; " |
"expires=Sun, 18-Apr-2027 21:06:29 GMT; " |
- "path=/"; |
+ "path=/; priority=low"; |
ParsedCookie pc(input); |
EXPECT_EQ(output, pc.ToCookieLine()); |
} |
@@ -331,9 +342,11 @@ TEST(ParsedCookieTest, SetAttributes) { |
EXPECT_TRUE(pc.SetMaxAge("12345")); |
EXPECT_TRUE(pc.SetIsSecure(true)); |
EXPECT_TRUE(pc.SetIsHttpOnly(true)); |
+ EXPECT_TRUE(pc.SetIsHttpOnly(true)); |
+ EXPECT_TRUE(pc.SetPriority("HIGH")); |
EXPECT_EQ("name=value; domain=domain.com; path=/; " |
"expires=Sun, 18-Apr-2027 21:06:29 GMT; max-age=12345; secure; " |
- "httponly", |
+ "httponly; priority=HIGH", |
pc.ToCookieLine()); |
EXPECT_TRUE(pc.HasDomain()); |
EXPECT_TRUE(pc.HasPath()); |
@@ -341,6 +354,7 @@ TEST(ParsedCookieTest, SetAttributes) { |
EXPECT_TRUE(pc.HasMaxAge()); |
EXPECT_TRUE(pc.IsSecure()); |
EXPECT_TRUE(pc.IsHttpOnly()); |
+ EXPECT_EQ(PRIORITY_HIGH, pc.Priority()); |
// Clear one attribute from the middle. |
EXPECT_TRUE(pc.SetPath("/foo")); |
@@ -351,7 +365,14 @@ TEST(ParsedCookieTest, SetAttributes) { |
EXPECT_TRUE(pc.IsHttpOnly()); |
EXPECT_EQ("name=value; domain=domain.com; path=/foo; " |
"expires=Sun, 18-Apr-2027 21:06:29 GMT; max-age=12345; secure; " |
- "httponly", |
+ "httponly; priority=HIGH", |
+ pc.ToCookieLine()); |
+ |
+ // Set priority to medium. |
+ EXPECT_TRUE(pc.SetPriority("medium")); |
+ EXPECT_EQ("name=value; domain=domain.com; path=/foo; " |
+ "expires=Sun, 18-Apr-2027 21:06:29 GMT; max-age=12345; secure; " |
+ "httponly; priority=medium", |
pc.ToCookieLine()); |
// Clear the rest and change the name and value. |
@@ -363,6 +384,7 @@ TEST(ParsedCookieTest, SetAttributes) { |
EXPECT_TRUE(pc.SetIsHttpOnly(false)); |
EXPECT_TRUE(pc.SetName("name2")); |
EXPECT_TRUE(pc.SetValue("value2")); |
+ EXPECT_TRUE(pc.SetPriority(std::string())); |
EXPECT_FALSE(pc.HasDomain()); |
EXPECT_FALSE(pc.HasPath()); |
EXPECT_FALSE(pc.HasExpires()); |
@@ -372,4 +394,44 @@ TEST(ParsedCookieTest, SetAttributes) { |
EXPECT_EQ("name2=value2", pc.ToCookieLine()); |
} |
+TEST(ParsedCookieTest, SetPriority) { |
+ ParsedCookie pc("name=value"); |
+ EXPECT_TRUE(pc.IsValid()); |
+ |
+ // Test basic assumptions in CookiePriority. |
+ EXPECT_EQ(PRIORITY_DEFAULT, PRIORITY_MEDIUM); |
+ EXPECT_EQ("low", CookiePriorityToString(PRIORITY_LOW)); |
+ EXPECT_EQ("medium", CookiePriorityToString(PRIORITY_MEDIUM)); |
+ EXPECT_EQ("high", CookiePriorityToString(PRIORITY_HIGH)); |
+ |
+ EXPECT_EQ("name=value", pc.ToCookieLine()); |
+ EXPECT_EQ(PRIORITY_DEFAULT, pc.Priority()); |
+ |
+ // Test each priority, expect case-insensitive compare. |
+ EXPECT_TRUE(pc.SetPriority("high")); |
+ EXPECT_EQ("name=value; priority=high", pc.ToCookieLine()); |
+ EXPECT_EQ(PRIORITY_HIGH, pc.Priority()); |
+ |
+ EXPECT_TRUE(pc.SetPriority("mEDium")); |
+ EXPECT_EQ("name=value; priority=mEDium", pc.ToCookieLine()); |
+ EXPECT_EQ(PRIORITY_MEDIUM, pc.Priority()); |
+ |
+ EXPECT_TRUE(pc.SetPriority("LOW")); |
+ EXPECT_EQ("name=value; priority=LOW", pc.ToCookieLine()); |
+ EXPECT_EQ(PRIORITY_LOW, pc.Priority()); |
+ |
+ // Interpret invalid priority values as PRIORITY_DEFAULT. |
+ EXPECT_TRUE(pc.SetPriority("Blah")); |
+ EXPECT_EQ("name=value; priority=Blah", pc.ToCookieLine()); |
+ EXPECT_EQ(PRIORITY_DEFAULT, pc.Priority()); |
+ |
+ EXPECT_TRUE(pc.SetPriority("lowerest")); |
+ EXPECT_EQ("name=value; priority=lowerest", pc.ToCookieLine()); |
+ EXPECT_EQ(PRIORITY_DEFAULT, pc.Priority()); |
+ |
+ EXPECT_TRUE(pc.SetPriority("")); |
+ EXPECT_EQ("name=value", pc.ToCookieLine()); |
+ EXPECT_EQ(PRIORITY_DEFAULT, pc.Priority()); |
+} |
+ |
} // namespace net |