tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 44614fee5f456bf9fe4b75d43b96f84b5bb3e7df
parent d16c83fddd2d33ba8d911df0b058efa44cd1ec61
Author: Tim Huang <tihuang@mozilla.com>
Date:   Wed, 17 Dec 2025 08:56:18 +0000

Bug 2005485 - Record tracking cookie blocked in the tracking DB when trackers access partitioned cookies. r=manuel

Differential Revision: https://phabricator.services.mozilla.com/D275978

Diffstat:
Mbrowser/base/content/test/protectionsUI/browser_protectionsUI_tracker_cookies_subview.js | 32++++++++++++++++++++++++++++++++
Mbrowser/base/content/test/protectionsUI/cookieServer.sjs | 2--
Mtoolkit/components/antitracking/TrackingDBService.sys.mjs | 4+++-
3 files changed, 35 insertions(+), 3 deletions(-)

diff --git a/browser/base/content/test/protectionsUI/browser_protectionsUI_tracker_cookies_subview.js b/browser/base/content/test/protectionsUI/browser_protectionsUI_tracker_cookies_subview.js @@ -127,3 +127,35 @@ add_task(async function testTrackerCookiesSubView() { BrowserTestUtils.removeTab(tab); }); + +// Verify that the partitioned tracker cookies are recorded in the tracking DB. +add_task(async function testPartitionedTrackerCookiesInTrackingDB() { + await TrackingDBService.clearAll(); + + // Open a tab which embeds a third-party tracker iframe which sets a cookie. + let tab = await BrowserTestUtils.openNewForegroundTab({ + url: TEST_PAGE, + gBrowser, + }); + + let promise = BrowserTestUtils.waitForCondition(async () => { + let foundTrackerCookieEvent = false; + let events = await TrackingDBService.getEventsByDateRange(0, Date.now()); + + for (let event of events) { + let type = event.getResultByName("type"); + if (type == Ci.nsITrackingDBService.TRACKING_COOKIES_ID) { + foundTrackerCookieEvent = true; + break; + } + } + + return foundTrackerCookieEvent; + }); + + BrowserTestUtils.removeTab(tab); + + await promise; + + ok(true, "Partitioned tracker cookies are recorded in the tracking DB"); +}); diff --git a/browser/base/content/test/protectionsUI/cookieServer.sjs b/browser/base/content/test/protectionsUI/cookieServer.sjs @@ -27,8 +27,6 @@ function handleRequest(request, response) { "Set-Cookie", "foopy=1; SameSite=None; Secure; Partitioned" ); - - dump(" ==== TIM: cookie served\n"); } else { response.setHeader("Set-Cookie", "foopy=1"); response.write("cookie served"); diff --git a/toolkit/components/antitracking/TrackingDBService.sys.mjs b/toolkit/components/antitracking/TrackingDBService.sys.mjs @@ -245,7 +245,9 @@ TrackingDBService.prototype = { // If a tracking cookie was blocked attribute it to tracking cookies. // This includes social tracking cookies since STP is not enabled. state & Ci.nsIWebProgressListener.STATE_COOKIES_BLOCKED_TRACKER || - state & Ci.nsIWebProgressListener.STATE_COOKIES_BLOCKED_SOCIALTRACKER + state & + Ci.nsIWebProgressListener.STATE_COOKIES_BLOCKED_SOCIALTRACKER || + state & Ci.nsIWebProgressListener.STATE_COOKIES_PARTITIONED_TRACKER ) { result = Ci.nsITrackingDBService.TRACKING_COOKIES_ID; } else if (