зеркало из https://github.com/mozilla/gecko-dev.git
93 строки
2.8 KiB
JavaScript
93 строки
2.8 KiB
JavaScript
"use strict";
|
|
|
|
const { HttpServer } = ChromeUtils.import("resource://testing-common/httpd.js");
|
|
const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
|
|
|
|
const TEST_DOMAIN = "www.example.com";
|
|
XPCOMUtils.defineLazyGetter(this, "URL", function() {
|
|
return (
|
|
"http://" + TEST_DOMAIN + ":" + httpserv.identity.primaryPort + "/path"
|
|
);
|
|
});
|
|
|
|
const responseBody1 = "response";
|
|
function requestHandler(metadata, response) {
|
|
response.setHeader("Content-Type", "text/plain");
|
|
response.setHeader("Set-Cookie", "tom=cool; Max-Age=10", true);
|
|
response.bodyOutputStream.write(responseBody1, responseBody1.length);
|
|
}
|
|
|
|
let httpserv = null;
|
|
|
|
function run_test() {
|
|
httpserv = new HttpServer();
|
|
httpserv.registerPathHandler("/path", requestHandler);
|
|
httpserv.start(-1);
|
|
httpserv.identity.add("http", TEST_DOMAIN, httpserv.identity.primaryPort);
|
|
|
|
registerCleanupFunction(() => {
|
|
Services.cookies.removeCookiesWithOriginAttributes("{}", TEST_DOMAIN);
|
|
Services.prefs.clearUserPref("network.dns.localDomains");
|
|
Services.prefs.clearUserPref("network.cookie.cookieBehavior");
|
|
Services.prefs.clearUserPref(
|
|
"network.cookieSettings.unblocked_for_testing"
|
|
);
|
|
|
|
httpserv.stop();
|
|
httpserv = null;
|
|
});
|
|
|
|
Services.prefs.setBoolPref(
|
|
"network.cookieSettings.unblocked_for_testing",
|
|
true
|
|
);
|
|
Services.prefs.setCharPref("network.dns.localDomains", TEST_DOMAIN);
|
|
Services.prefs.setIntPref("network.cookie.cookieBehavior", 0);
|
|
Services.cookies.removeCookiesWithOriginAttributes("{}", TEST_DOMAIN);
|
|
|
|
// Sends back the URL to the child script
|
|
do_await_remote_message("start-test").then(() => {
|
|
do_send_remote_message("start-test-done", URL);
|
|
});
|
|
|
|
// Sends back the cookie count for the domain
|
|
// Should only be one - from Set-Cookie
|
|
do_await_remote_message("check-cookie-count").then(() => {
|
|
do_send_remote_message(
|
|
"check-cookie-count-done",
|
|
Services.cookies.countCookiesFromHost(TEST_DOMAIN)
|
|
);
|
|
});
|
|
|
|
// Sends back the cookie count for the domain
|
|
// There should be 2 cookies. One from the Set-Cookie header, the other set
|
|
// manually.
|
|
do_await_remote_message("second-check-cookie-count").then(() => {
|
|
do_send_remote_message(
|
|
"second-check-cookie-count-done",
|
|
Services.cookies.countCookiesFromHost(TEST_DOMAIN)
|
|
);
|
|
});
|
|
|
|
// Sets a cookie for the test domain
|
|
do_await_remote_message("set-cookie").then(() => {
|
|
const expiry = Date.now() + 24 * 60 * 60;
|
|
Services.cookies.add(
|
|
TEST_DOMAIN,
|
|
"/",
|
|
"cookieName",
|
|
"cookieValue",
|
|
false,
|
|
false,
|
|
false,
|
|
expiry,
|
|
{},
|
|
Ci.nsICookie.SAMESITE_NONE
|
|
);
|
|
do_send_remote_message("set-cookie-done");
|
|
});
|
|
|
|
// Run the actual test logic
|
|
run_test_in_child("child_cookie_header.js");
|
|
}
|