mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-19 08:15:31 +00:00
Bug 1631676 - Part 1: add cookie behavior pref getter; r=baku
Differential Revision: https://phabricator.services.mozilla.com/D74049
This commit is contained in:
parent
85a927675b
commit
0c371a2e76
@ -30,6 +30,20 @@
|
||||
|
||||
using namespace mozilla::dom;
|
||||
|
||||
// static
|
||||
uint32_t nsICookieManager::GetCookieBehavior() {
|
||||
bool isFirstPartyIsolated = OriginAttributes::IsFirstPartyEnabled();
|
||||
uint32_t cookieBehavior =
|
||||
mozilla::StaticPrefs::network_cookie_cookieBehavior();
|
||||
|
||||
if (isFirstPartyIsolated &&
|
||||
cookieBehavior ==
|
||||
nsICookieService::BEHAVIOR_REJECT_TRACKER_AND_PARTITION_FOREIGN) {
|
||||
cookieBehavior = nsICookieService::BEHAVIOR_REJECT_TRACKER;
|
||||
}
|
||||
return cookieBehavior;
|
||||
}
|
||||
|
||||
namespace mozilla {
|
||||
namespace net {
|
||||
|
||||
@ -249,6 +263,13 @@ CookieService::Observe(nsISupports* /*aSubject*/, const char* aTopic,
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
CookieService::GetCookieBehavior(uint32_t* aCookieBehavior) {
|
||||
NS_ENSURE_ARG_POINTER(aCookieBehavior);
|
||||
*aCookieBehavior = nsICookieManager::GetCookieBehavior();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
CookieService::GetCookieStringForPrincipal(nsIPrincipal* aPrincipal,
|
||||
nsACString& aCookie) {
|
||||
|
@ -46,6 +46,14 @@ interface nsICookieManager : nsISupports
|
||||
*/
|
||||
readonly attribute Array<nsICookie> sessionCookies;
|
||||
|
||||
/**
|
||||
* Returns current effective value of the "network.cookie.cookieBehavior".
|
||||
*/
|
||||
readonly attribute uint32_t cookieBehavior;
|
||||
%{C++
|
||||
static uint32_t GetCookieBehavior();
|
||||
%}
|
||||
|
||||
/**
|
||||
* Called to remove an individual cookie from the cookie list, specified
|
||||
* by host, name, and path. If the cookie cannot be found, no exception
|
||||
|
@ -0,0 +1,40 @@
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
// Note: This test may cause intermittents if run at exactly midnight.
|
||||
|
||||
"use strict";
|
||||
|
||||
const PREF_FPI = "privacy.firstparty.isolate";
|
||||
const PREF_COOKIE_BEHAVIOR = "network.cookie.cookieBehavior";
|
||||
|
||||
registerCleanupFunction(() => {
|
||||
Services.prefs.clearUserPref(PREF_FPI);
|
||||
Services.prefs.clearUserPref(PREF_COOKIE_BEHAVIOR);
|
||||
});
|
||||
|
||||
add_task(function test_FPI_off() {
|
||||
Services.prefs.setBoolPref(PREF_FPI, false);
|
||||
|
||||
for (let i = 0; i <= Ci.nsICookieService.BEHAVIOR_LAST; ++i) {
|
||||
Services.prefs.setIntPref(PREF_COOKIE_BEHAVIOR, i);
|
||||
equal(Services.prefs.getIntPref(PREF_COOKIE_BEHAVIOR), i);
|
||||
equal(Services.cookies.cookieBehavior, i);
|
||||
}
|
||||
});
|
||||
|
||||
add_task(function test_FPI_on() {
|
||||
Services.prefs.setBoolPref(PREF_FPI, true);
|
||||
|
||||
for (let i = 0; i <= Ci.nsICookieService.BEHAVIOR_LAST; ++i) {
|
||||
Services.prefs.setIntPref(PREF_COOKIE_BEHAVIOR, i);
|
||||
equal(Services.prefs.getIntPref(PREF_COOKIE_BEHAVIOR), i);
|
||||
equal(
|
||||
Services.cookies.cookieBehavior,
|
||||
i == Ci.nsICookieService.BEHAVIOR_REJECT_TRACKER_AND_PARTITION_FOREIGN
|
||||
? Ci.nsICookieService.BEHAVIOR_REJECT_TRACKER
|
||||
: i
|
||||
);
|
||||
}
|
||||
});
|
@ -1,6 +1,7 @@
|
||||
[DEFAULT]
|
||||
head = head.js ../../../../components/url-classifier/tests/unit/head_urlclassifier.js
|
||||
|
||||
[test_cookie_behavior.js]
|
||||
[test_purge_trackers.js]
|
||||
[test_tracking_db_service.js]
|
||||
[test_rejectForeignAllowList.js]
|
||||
|
Loading…
Reference in New Issue
Block a user