Index: content/browser/devtools/protocol/devtools_protocol_browsertest.cc |
diff --git a/content/browser/devtools/protocol/devtools_protocol_browsertest.cc b/content/browser/devtools/protocol/devtools_protocol_browsertest.cc |
index bcbf2b4d8e74b68d6cde093e8cb824131682df76..f4aae0107a1927cd404e4e87dc413b473c79caf3 100644 |
--- a/content/browser/devtools/protocol/devtools_protocol_browsertest.cc |
+++ b/content/browser/devtools/protocol/devtools_protocol_browsertest.cc |
@@ -1448,4 +1448,64 @@ IN_PROC_BROWSER_TEST_F(SitePerProcessDevToolsProtocolTest, TargetNoDiscovery) { |
EXPECT_EQ(target_id, temp); |
} |
+IN_PROC_BROWSER_TEST_F(DevToolsProtocolTest, SetAndGetCookies) { |
+ ASSERT_TRUE(embedded_test_server()->Start()); |
+ GURL test_url = embedded_test_server()->GetURL("/title1.html"); |
+ NavigateToURLBlockUntilNavigationsComplete(shell(), test_url, 1); |
+ Attach(); |
+ |
+ // Set two cookies, one of which matches the loaded URL and another that |
+ // doesn't. |
+ std::unique_ptr<base::DictionaryValue> command_params; |
+ command_params.reset(new base::DictionaryValue()); |
+ command_params->SetString("url", test_url.spec()); |
+ command_params->SetString("name", "cookie_for_this_url"); |
+ command_params->SetString("value", "mendacious"); |
+ SendCommand("Network.setCookie", std::move(command_params), false); |
+ |
+ command_params.reset(new base::DictionaryValue()); |
+ command_params->SetString("url", "https://www.chromium.org"); |
+ command_params->SetString("name", "cookie_for_another_url"); |
+ command_params->SetString("value", "polyglottal"); |
+ SendCommand("Network.setCookie", std::move(command_params), false); |
+ |
+ // First get the cookies for just the loaded URL. |
+ SendCommand("Network.getCookies", nullptr, true); |
+ |
+ base::ListValue* cookies; |
+ EXPECT_TRUE(result_->HasKey("cookies")); |
+ EXPECT_TRUE(result_->GetList("cookies", &cookies)); |
+ EXPECT_EQ(1u, cookies->GetSize()); |
+ |
+ base::DictionaryValue* cookie; |
+ std::string name; |
+ std::string value; |
+ EXPECT_TRUE(cookies->GetDictionary(0, &cookie)); |
+ EXPECT_TRUE(cookie->GetString("name", &name)); |
+ EXPECT_TRUE(cookie->GetString("value", &value)); |
+ EXPECT_EQ("cookie_for_this_url", name); |
+ EXPECT_EQ("mendacious", value); |
+ |
+ // Then get all the cookies in the cookie jar. |
+ command_params.reset(new base::DictionaryValue()); |
+ command_params->SetBoolean("global", true); |
+ SendCommand("Network.getCookies", std::move(command_params), true); |
+ |
+ EXPECT_TRUE(result_->HasKey("cookies")); |
+ EXPECT_TRUE(result_->GetList("cookies", &cookies)); |
+ EXPECT_EQ(2u, cookies->GetSize()); |
+ |
+ EXPECT_TRUE(cookies->GetDictionary(0, &cookie)); |
dgozman
2016/12/07 19:25:05
Bots show that order is unpredictable here :-)
Sami
2016/12/08 10:52:10
So it seems :) Fixed.
|
+ EXPECT_TRUE(cookie->GetString("name", &name)); |
+ EXPECT_TRUE(cookie->GetString("value", &value)); |
+ EXPECT_EQ("cookie_for_this_url", name); |
+ EXPECT_EQ("mendacious", value); |
+ |
+ EXPECT_TRUE(cookies->GetDictionary(1, &cookie)); |
+ EXPECT_TRUE(cookie->GetString("name", &name)); |
+ EXPECT_TRUE(cookie->GetString("value", &value)); |
+ EXPECT_EQ("cookie_for_another_url", name); |
+ EXPECT_EQ("polyglottal", value); |
+} |
+ |
} // namespace content |