Bug 1670811 - Tests for browsingData.remove with cookieStoreId r=extension-reviewers,mixedpuppy,rpl
Depends on D93277 Differential Revision: https://phabricator.services.mozilla.com/D93332
This commit is contained in:
@@ -0,0 +1,192 @@
|
||||
/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
|
||||
/* vim: set sts=2 sw=2 et tw=80: */
|
||||
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
||||
"use strict";
|
||||
|
||||
// "Normal" cookie
|
||||
const COOKIE_NORMAL = {
|
||||
host: "example.com",
|
||||
name: "test_cookie",
|
||||
path: "/",
|
||||
originAttributes: {},
|
||||
};
|
||||
// Private browsing cookie
|
||||
const COOKIE_PRIVATE = {
|
||||
host: "example.net",
|
||||
name: "test_cookie",
|
||||
path: "/",
|
||||
originAttributes: {
|
||||
privateBrowsingId: 1,
|
||||
},
|
||||
};
|
||||
// "firefox-container-1" cookie
|
||||
const COOKIE_CONTAINER = {
|
||||
host: "example.org",
|
||||
name: "test_cookie",
|
||||
path: "/",
|
||||
originAttributes: {
|
||||
userContextId: 1,
|
||||
},
|
||||
};
|
||||
|
||||
function cookieExists(cookie) {
|
||||
return Services.cookies.cookieExists(
|
||||
cookie.host,
|
||||
cookie.path,
|
||||
cookie.name,
|
||||
cookie.originAttributes
|
||||
);
|
||||
}
|
||||
|
||||
function addCookie(cookie) {
|
||||
const THE_FUTURE = Date.now() + 5 * 60;
|
||||
|
||||
Services.cookies.add(
|
||||
cookie.host,
|
||||
cookie.path,
|
||||
cookie.name,
|
||||
"test",
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
THE_FUTURE,
|
||||
cookie.originAttributes,
|
||||
Ci.nsICookie.SAMESITE_NONE,
|
||||
Ci.nsICookie.SCHEME_HTTPS
|
||||
);
|
||||
|
||||
ok(cookieExists(cookie), `Cookie ${cookie.name} was created.`);
|
||||
}
|
||||
|
||||
async function setUpCookies() {
|
||||
Services.cookies.removeAll();
|
||||
|
||||
addCookie(COOKIE_NORMAL);
|
||||
addCookie(COOKIE_PRIVATE);
|
||||
addCookie(COOKIE_CONTAINER);
|
||||
}
|
||||
|
||||
add_task(async function testCookies() {
|
||||
Services.prefs.setBoolPref("privacy.userContext.enabled", true);
|
||||
|
||||
function background() {
|
||||
browser.test.onMessage.addListener(async (msg, options) => {
|
||||
if (msg == "removeCookies") {
|
||||
await browser.browsingData.removeCookies(options);
|
||||
} else {
|
||||
await browser.browsingData.remove(options, { cookies: true });
|
||||
}
|
||||
browser.test.sendMessage("cookiesRemoved");
|
||||
});
|
||||
}
|
||||
|
||||
let extension = ExtensionTestUtils.loadExtension({
|
||||
background,
|
||||
manifest: {
|
||||
permissions: ["browsingData"],
|
||||
},
|
||||
});
|
||||
|
||||
async function testRemovalMethod(method) {
|
||||
// Clear only "normal"/default cookies.
|
||||
await setUpCookies();
|
||||
|
||||
extension.sendMessage(method, { cookieStoreId: "firefox-default" });
|
||||
await extension.awaitMessage("cookiesRemoved");
|
||||
|
||||
ok(!cookieExists(COOKIE_NORMAL), "Normal cookie was removed");
|
||||
ok(cookieExists(COOKIE_PRIVATE), "Private cookie was not removed");
|
||||
ok(cookieExists(COOKIE_CONTAINER), "Container cookie was not removed");
|
||||
|
||||
// Clear container cookie
|
||||
await setUpCookies();
|
||||
|
||||
extension.sendMessage(method, { cookieStoreId: "firefox-container-1" });
|
||||
await extension.awaitMessage("cookiesRemoved");
|
||||
|
||||
ok(cookieExists(COOKIE_NORMAL), "Normal cookie was not removed");
|
||||
ok(cookieExists(COOKIE_PRIVATE), "Private cookie was not removed");
|
||||
ok(!cookieExists(COOKIE_CONTAINER), "Container cookie was removed");
|
||||
|
||||
// Clear private cookie
|
||||
await setUpCookies();
|
||||
|
||||
extension.sendMessage(method, { cookieStoreId: "firefox-private" });
|
||||
await extension.awaitMessage("cookiesRemoved");
|
||||
|
||||
ok(cookieExists(COOKIE_NORMAL), "Normal cookie was not removed");
|
||||
ok(!cookieExists(COOKIE_PRIVATE), "Private cookie was removed");
|
||||
ok(cookieExists(COOKIE_CONTAINER), "Container cookie was not removed");
|
||||
|
||||
// Clear container cookie with correct hostname
|
||||
await setUpCookies();
|
||||
|
||||
extension.sendMessage(method, {
|
||||
cookieStoreId: "firefox-container-1",
|
||||
hostnames: ["example.org"],
|
||||
});
|
||||
await extension.awaitMessage("cookiesRemoved");
|
||||
|
||||
ok(cookieExists(COOKIE_NORMAL), "Normal cookie was not removed");
|
||||
ok(cookieExists(COOKIE_PRIVATE), "Private cookie was not removed");
|
||||
ok(!cookieExists(COOKIE_CONTAINER), "Container cookie was removed");
|
||||
|
||||
// Clear container cookie with incorrect hostname; nothing is removed
|
||||
await setUpCookies();
|
||||
|
||||
extension.sendMessage(method, {
|
||||
cookieStoreId: "firefox-container-1",
|
||||
hostnames: ["example.com"],
|
||||
});
|
||||
await extension.awaitMessage("cookiesRemoved");
|
||||
|
||||
ok(cookieExists(COOKIE_NORMAL), "Normal cookie was not removed");
|
||||
ok(cookieExists(COOKIE_PRIVATE), "Private cookie was not removed");
|
||||
ok(cookieExists(COOKIE_CONTAINER), "Container cookie was not removed");
|
||||
|
||||
// Clear private cookie with correct hostname
|
||||
await setUpCookies();
|
||||
|
||||
extension.sendMessage(method, {
|
||||
cookieStoreId: "firefox-private",
|
||||
hostnames: ["example.net"],
|
||||
});
|
||||
await extension.awaitMessage("cookiesRemoved");
|
||||
|
||||
ok(cookieExists(COOKIE_NORMAL), "Normal cookie was not removed");
|
||||
ok(!cookieExists(COOKIE_PRIVATE), "Private cookie was removed");
|
||||
ok(cookieExists(COOKIE_CONTAINER), "Container cookie was not removed");
|
||||
|
||||
// Clear private cookie with incorrect hostname; nothing is removed
|
||||
await setUpCookies();
|
||||
|
||||
extension.sendMessage(method, {
|
||||
cookieStoreId: "firefox-private",
|
||||
hostnames: ["example.com"],
|
||||
});
|
||||
await extension.awaitMessage("cookiesRemoved");
|
||||
|
||||
ok(cookieExists(COOKIE_NORMAL), "Normal cookie was not removed");
|
||||
ok(cookieExists(COOKIE_PRIVATE), "Private cookie was not removed");
|
||||
ok(cookieExists(COOKIE_CONTAINER), "Container cookie was not removed");
|
||||
|
||||
// Clear private cookie by hostname
|
||||
await setUpCookies();
|
||||
|
||||
extension.sendMessage(method, {
|
||||
hostnames: ["example.net"],
|
||||
});
|
||||
await extension.awaitMessage("cookiesRemoved");
|
||||
|
||||
ok(cookieExists(COOKIE_NORMAL), "Normal cookie was not removed");
|
||||
ok(!cookieExists(COOKIE_PRIVATE), "Private cookie was removed");
|
||||
ok(cookieExists(COOKIE_CONTAINER), "Container cookie was not removed");
|
||||
}
|
||||
|
||||
await extension.startup();
|
||||
|
||||
await testRemovalMethod("removeCookies");
|
||||
await testRemovalMethod("remove");
|
||||
|
||||
await extension.unload();
|
||||
});
|
||||
@@ -7,6 +7,7 @@ dupe-manifest =
|
||||
[test_ext_bookmarks.js]
|
||||
[test_ext_browsingData.js]
|
||||
[test_ext_browsingData_cookies_cache.js]
|
||||
[test_ext_browsingData_cookies_cookieStoreId.js]
|
||||
[test_ext_browsingData_downloads.js]
|
||||
[test_ext_browsingData_passwords.js]
|
||||
skip-if = tsan # Times out, bug 1612707
|
||||
|
||||
Reference in New Issue
Block a user