Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
- Manifest: netwerk/cookie/test/browser/browser.toml
"use strict";
const EMPTYNAMEVALUE_PATH = "browser/netwerk/cookie/test/browser/";
const EMPTYNAMEVALUE_TOP_PAGE =
EMPTYNAMEVALUE_DOMAIN + EMPTYNAMEVALUE_PATH + "cookie_empty_name_value.sjs";
add_setup(async function () {
Services.cookies.removeAll();
registerCleanupFunction(async function () {
Services.cookies.removeAll();
});
});
add_task(async _ => {
const expected = [];
const consoleListener = {
observe(what) {
if (!(what instanceof Ci.nsIConsoleMessage)) {
return;
}
info("Console Listener: " + what);
for (let i = expected.length - 1; i >= 0; --i) {
const e = expected[i];
if (what.message.includes(e.match)) {
ok(true, "Message received: " + e.match);
expected.splice(i, 1);
e.resolve();
}
}
},
};
Services.console.registerListener(consoleListener);
registerCleanupFunction(() =>
Services.console.unregisterListener(consoleListener)
);
const netPromises = [
new Promise(resolve => {
expected.push({
resolve,
match:
"Cookie with an empty name and an empty value has been rejected.",
});
}),
];
// Let's open our tab.
const tab = await BrowserTestUtils.openNewForegroundTab(
gBrowser,
EMPTYNAMEVALUE_TOP_PAGE
);
const browser = gBrowser.getBrowserForTab(tab);
// Let's wait for the first set of console events.
await Promise.all(netPromises);
await SpecialPowers.spawn(browser, [], () => {
Assert.strictEqual(content.document.cookie, "", "No cookies set");
});
// the DOM list of events.
const domPromises = [
new Promise(resolve => {
expected.push({
resolve,
match:
"Cookie with an empty name and an empty value has been rejected.",
});
}),
];
// Let's use document.cookie
await SpecialPowers.spawn(browser, [], () => {
content.document.cookie = " ; path=/; secure";
});
// Let's wait for the dom events.
await Promise.all(domPromises);
await SpecialPowers.spawn(browser, [], () => {
Assert.strictEqual(content.document.cookie, "", "No cookies set");
});
// Let's close the tab.
BrowserTestUtils.removeTab(tab);
});