commit 2f8f6d6d07a34d913219438a0411ca78af626d6a
parent 038928d6e58dfb58682c26f3c566e97cb0c69c51
Author: Andrea Marchesini <amarchesini@mozilla.com>
Date: Thu, 13 Nov 2025 14:34:30 +0000
Bug 1999935 - Remove nsICookieManager.addForAddOn and extensions.cookie.rejectWhenInvalid pref, r=valentin,extension-reviewers,cookie-reviewers,willdurand
Differential Revision: https://phabricator.services.mozilla.com/D272432
Diffstat:
6 files changed, 11 insertions(+), 105 deletions(-)
diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js
@@ -1802,10 +1802,6 @@ pref("extensions.install_origins.enabled", false);
pref("extensions.browser_style_mv3.supported", false);
pref("extensions.browser_style_mv3.same_as_mv2", false);
-// If set to true, browser.cookies.set() will throw exceptions if the cookie is
-// invalid. Otherwise, a warning message will be shown in the console.
-pref("extensions.cookie.rejectWhenInvalid", true);
-
// Experimental Inference API
pref("extensions.ml.enabled", true);
diff --git a/netwerk/cookie/CookieService.cpp b/netwerk/cookie/CookieService.cpp
@@ -726,46 +726,10 @@ CookieService::Add(const nsACString& aHost, const nsACString& aPath,
}
nsCOMPtr<nsICookieValidation> validation;
- nsresult rv =
- AddInternal(nullptr, aHost, aPath, aName, aValue, aIsSecure, aIsHttpOnly,
- aIsSession, aExpiry, &attrs, aSameSite, aSchemeMap,
- aIsPartitioned, /* from-http: */ true, nullptr,
- /* reject when invalid: */ true, getter_AddRefs(validation));
- if (rv != NS_ERROR_ILLEGAL_VALUE || !validation ||
- CookieValidation::Cast(validation)->Result() ==
- nsICookieValidation::eOK) {
- validation.forget(aValidation);
- return rv;
- }
-
- validation.forget(aValidation);
- return NS_OK;
-}
-
-NS_IMETHODIMP
-CookieService::AddForAddOn(const nsACString& aHost, const nsACString& aPath,
- const nsACString& aName, const nsACString& aValue,
- bool aIsSecure, bool aIsHttpOnly, bool aIsSession,
- int64_t aExpiry,
- JS::Handle<JS::Value> aOriginAttributes,
- int32_t aSameSite, nsICookie::schemeType aSchemeMap,
- bool aIsPartitioned, JSContext* aCx,
- nsICookieValidation** aValidation) {
- NS_ENSURE_ARG_POINTER(aCx);
- NS_ENSURE_ARG_POINTER(aValidation);
-
- OriginAttributes attrs;
-
- if (!aOriginAttributes.isObject() || !attrs.Init(aCx, aOriginAttributes)) {
- return NS_ERROR_INVALID_ARG;
- }
-
- nsCOMPtr<nsICookieValidation> validation;
nsresult rv = AddInternal(nullptr, aHost, aPath, aName, aValue, aIsSecure,
aIsHttpOnly, aIsSession, aExpiry, &attrs, aSameSite,
- aSchemeMap, aIsPartitioned, /* from-http: */
- true, nullptr, /* reject when invalid: */ false,
- getter_AddRefs(validation));
+ aSchemeMap, aIsPartitioned, /* from-http: */ true,
+ nullptr, getter_AddRefs(validation));
if (rv != NS_ERROR_ILLEGAL_VALUE || !validation ||
CookieValidation::Cast(validation)->Result() ==
nsICookieValidation::eOK) {
@@ -789,8 +753,7 @@ CookieService::AddNative(nsIURI* aCookieURI, const nsACString& aHost,
return AddInternal(aCookieURI, aHost, aPath, aName, aValue, aIsSecure,
aIsHttpOnly, aIsSession, aExpiry, aOriginAttributes,
aSameSite, aSchemeMap, aIsPartitioned, aFromHttp,
- aOperationID,
- /* reject when invalid: */ true, aValidation);
+ aOperationID, aValidation);
}
nsresult CookieService::AddInternal(
@@ -799,8 +762,7 @@ nsresult CookieService::AddInternal(
bool aIsHttpOnly, bool aIsSession, int64_t aExpiry,
OriginAttributes* aOriginAttributes, int32_t aSameSite,
nsICookie::schemeType aSchemeMap, bool aIsPartitioned, bool aFromHttp,
- const nsID* aOperationID, bool aRejectWhenInvalid,
- nsICookieValidation** aValidation) {
+ const nsID* aOperationID, nsICookieValidation** aValidation) {
NS_ENSURE_ARG_POINTER(aValidation);
if (NS_WARN_IF(!aOriginAttributes)) {
@@ -834,7 +796,7 @@ nsresult CookieService::AddInternal(
RefPtr<CookieValidation> cv = CookieValidation::Validate(cookieData);
- if (aRejectWhenInvalid && cv->Result() != nsICookieValidation::eOK) {
+ if (cv->Result() != nsICookieValidation::eOK) {
cv.forget(aValidation);
return NS_ERROR_ILLEGAL_VALUE;
}
diff --git a/netwerk/cookie/CookieService.h b/netwerk/cookie/CookieService.h
@@ -150,7 +150,6 @@ class CookieService final : public nsICookieService,
OriginAttributes* aOriginAttributes, int32_t aSameSite,
nsICookie::schemeType aSchemeMap, bool aIsPartitioned,
bool aFromHttp, const nsID* aOperationID,
- bool aRejectWhenInvalid,
nsICookieValidation** aValidation);
};
diff --git a/netwerk/cookie/nsICookieManager.idl b/netwerk/cookie/nsICookieManager.idl
@@ -147,24 +147,6 @@ interface nsICookieManager : nsISupports
[optional] in boolean aIsPartitioned);
/**
- * Similar to the previous method but without validation as a blocker.
- * This method is a temporary thing. See bug 1976197.
- */
- [implicit_jscontext]
- nsICookieValidation addForAddOn(in AUTF8String aHost,
- in AUTF8String aPath,
- in ACString aName,
- in AUTF8String aValue,
- in boolean aIsSecure,
- in boolean aIsHttpOnly,
- in boolean aIsSession,
- in int64_t aExpiry,
- in jsval aOriginAttributes,
- in int32_t aSameSite,
- in nsICookie_schemeType aSchemeMap,
- [optional] in boolean aIsPartitioned);
-
- /**
* This method is the non-xpcom version of add(). In case of an invalid
* cookie, it returns a nsICookieValidation object and NS_ERROR_ILLEGAL_VALUE
* as error code.
diff --git a/toolkit/components/extensions/parent/ext-cookies.js b/toolkit/components/extensions/parent/ext-cookies.js
@@ -4,13 +4,6 @@
"use strict";
-XPCOMUtils.defineLazyPreferenceGetter(
- this,
- "gCookiesRejectWhenInvalid",
- "extensions.cookie.rejectWhenInvalid",
- false
-);
-
var { ExtensionError } = ExtensionUtils;
const SAME_SITE_STATUSES = new Map([
@@ -726,15 +719,9 @@ this.cookies = class extends ExtensionAPIPersistent {
let isPartitioned = originAttributes.partitionKey?.length > 0;
- // The permission check may have modified the domain, so use
- // the new value instead.
- let fn = gCookiesRejectWhenInvalid
- ? Services.cookies.add
- : Services.cookies.addForAddOn;
-
let cv;
try {
- cv = fn(
+ cv = Services.cookies.add(
cookieAttrs.host,
path,
name,
@@ -759,13 +746,7 @@ this.cookies = class extends ExtensionAPIPersistent {
}
if (cv.result !== Ci.nsICookieValidation.eOK) {
- if (gCookiesRejectWhenInvalid) {
- return Promise.reject({ message: cv.errorString });
- }
-
- Services.console.logStringMessage(
- `Extension ${extension.id} tried to create an invalid cookie: ${cv.errorString}`
- );
+ return Promise.reject({ message: cv.errorString });
}
return self.cookies.get(details);
diff --git a/toolkit/components/extensions/test/xpcshell/test_ext_cookies_validation.js b/toolkit/components/extensions/test/xpcshell/test_ext_cookies_validation.js
@@ -1,20 +1,6 @@
"use strict";
-add_task(
- { pref_set: [["extensions.cookie.rejectWhenInvalid", true]] },
- async function test_no_reject_invalid_cookies() {
- await do_test_invalid_cookies({ failure: true });
- }
-);
-
-add_task(
- { pref_set: [["extensions.cookie.rejectWhenInvalid", false]] },
- async function test_warn_on_invalid_cookies() {
- await do_test_invalid_cookies({ failure: false });
- }
-);
-
-async function do_test_invalid_cookies(options) {
+add_task(async function do_test_invalid_cookies() {
async function backgroundScript() {
browser.test.onMessage.addListener(async message => {
let failure = true;
@@ -31,7 +17,7 @@ async function do_test_invalid_cookies(options) {
`${message.title} - correct exception`
);
} finally {
- browser.test.assertEq(failure, message.failure, message.title);
+ browser.test.assertTrue(failure, message.title);
browser.test.sendMessage("completed");
}
});
@@ -152,10 +138,10 @@ async function do_test_invalid_cookies(options) {
];
for (const test of tests) {
- extension.sendMessage({ ...options, ...test });
+ extension.sendMessage(test);
await extension.awaitMessage("completed");
}
await extension.unload();
-}
+});