| 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..c6e228fae207390fa561739e6ec6cebed0e89054 100644
|
| --- a/content/browser/devtools/protocol/devtools_protocol_browsertest.cc
|
| +++ b/content/browser/devtools/protocol/devtools_protocol_browsertest.cc
|
| @@ -1448,4 +1448,71 @@ 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());
|
| +
|
| + // Note: the cookies will be returned in unspecified order.
|
| + size_t found = 0;
|
| + for (size_t i = 0; i < cookies->GetSize(); i++) {
|
| + EXPECT_TRUE(cookies->GetDictionary(i, &cookie));
|
| + EXPECT_TRUE(cookie->GetString("name", &name));
|
| + if (name == "cookie_for_this_url") {
|
| + EXPECT_TRUE(cookie->GetString("value", &value));
|
| + EXPECT_EQ("mendacious", value);
|
| + found++;
|
| + } else if (name == "cookie_for_another_url") {
|
| + EXPECT_TRUE(cookie->GetString("value", &value));
|
| + EXPECT_EQ("polyglottal", value);
|
| + found++;
|
| + } else {
|
| + FAIL();
|
| + }
|
| + }
|
| + EXPECT_EQ(2u, found);
|
| +}
|
| +
|
| } // namespace content
|
|
|