From 26a029d407be480d791972afb5975cf62c9360a6 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 02:47:55 +0200 Subject: Adding upstream version 124.0.1. Signed-off-by: Daniel Baumann --- .../cookiebanners/nsICookieBannerService.idl | 163 +++++++++++++++++++++ 1 file changed, 163 insertions(+) create mode 100644 toolkit/components/cookiebanners/nsICookieBannerService.idl (limited to 'toolkit/components/cookiebanners/nsICookieBannerService.idl') diff --git a/toolkit/components/cookiebanners/nsICookieBannerService.idl b/toolkit/components/cookiebanners/nsICookieBannerService.idl new file mode 100644 index 0000000000..b58e726310 --- /dev/null +++ b/toolkit/components/cookiebanners/nsICookieBannerService.idl @@ -0,0 +1,163 @@ +/* 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/. */ + +#include "nsISupports.idl" +#include "nsIClickRule.idl" +#include "nsICookieBannerRule.idl" +#include "nsICookieRule.idl" +#include "nsIURI.idl" +webidl BrowsingContext; + +/** + * Service singleton which owns the cookie banner feature. + * This service owns the cookie banner handling rules. + * It initializes both the component for importing rules + * (nsICookieBannerListService) and injecting cookies (nsICookieInjector). + */ +[scriptable, uuid(eac9cdc4-ecee-49f2-91da-7627e15c1f3c)] +interface nsICookieBannerService : nsISupports { + + /** + * Modes for cookie banner handling + * MODE_DISABLED - No cookie banner handling, service disabled. + * MODE_REJECT - Only handle banners where selecting "reject all" is possible. + * MODE_REJECT_OR_ACCEPT - Prefer selecting "reject all", if not possible + * fall back to "accept all". + * MODE_UNSET - This represents the service mode is unset, the setting should + * fall back to default setting. This is used for the per-domain preferences. + */ + cenum Modes : 8 { + MODE_DISABLED, + MODE_REJECT, + MODE_REJECT_OR_ACCEPT, + MODE_UNSET, + }; + + /** + * Whether the feature / service is enabled. + */ + readonly attribute boolean isEnabled; + + /** + * Getter for a list of all cookie banner rules. This includes both opt-in and opt-out rules. + */ + readonly attribute Array rules; + + /** + * Clears all imported rules. They will be imported again on startup and when + * enabling the service. This is currently only used for testing. + * + * doImport - Whether to import initial rule list after reset. Passing false + * will result in an empty rule list. + */ + void resetRules([optional] in boolean doImport); + + /** + * Look up all cookie rules for a given top-level URI. Depending on the MODE_ + * this will return none, only reject rules or accept rules if there is no + * reject rule available. + */ + Array getCookiesForURI(in nsIURI aURI, in bool aIsPrivateBrowsing); + + /** + * Look up the click rules for a given domain. + */ + Array getClickRulesForDomain(in ACString aDomain, + in bool aIsTopLevel); + + /** + * Insert a cookie banner rule for a domain. If there was previously a rule + * stored with the same domain it will be overwritten. + */ + void insertRule(in nsICookieBannerRule aRule); + + /** + * Remove a cookie banner rule. + */ + void removeRule(in nsICookieBannerRule aRule); + + /** + * Computes whether we have a rule for the given browsing context or any of + * its children. This takes the current cookie banner service mode into + * consideration and whether the BC is in private browsing mode. + * + * This method only takes the global service mode into account. It will ignore + * any per-site mode overrides. It is meant for callers to find out whether an + * applicable rule exists, even if users have disabled the feature for the + * given site. + */ + boolean hasRuleForBrowsingContextTree(in BrowsingContext aBrowsingContext); + + /** + * Get the domain preference of the given top-level URI. It will return the + * service mode if there is a site preference for the given URI. Otherwise, it + * will return MODE_UNSET. + */ + nsICookieBannerService_Modes getDomainPref(in nsIURI aTopLevelURI, + in boolean aIsPrivate); + + /** + * Set the domain preference of the given top-level URI. + */ + void setDomainPref(in nsIURI aTopLevelURI, + in nsICookieBannerService_Modes aMode, + in boolean aIsPrivate); + + /** + * Set the domain preference of the given top-level URI. It will persist the + * domain preference for private browsing. + * + * WARNING: setting permanent domain preference _will_ leak data in private + * browsing. Only use if you understand the consequences and trade-offs. If + * you are unsure, |setDomainPref| is very likely what you want to use + * instead. + */ + void setDomainPrefAndPersistInPrivateBrowsing(in nsIURI aTopLevelURI, + in nsICookieBannerService_Modes aMode); + + /** + * Remove the domain preference of the given top-level URI. + */ + void removeDomainPref(in nsIURI aTopLevelURI, in boolean aIsPrivate); + + /** + * Remove all domain preferences. + */ + void removeAllDomainPrefs(in boolean aIsPrivate); + + /** + * Return true if we should stop cookie banner clicking for the given site in + * this session. + */ + boolean shouldStopBannerClickingForSite(in ACString aSite, + in bool aIsTopLevel, + in bool aIsPrivate); + + /** + * Mark that the cookie banner handling code was executed for the given site + * for this session. + */ + void markSiteExecuted(in ACString aSite, + in bool aIsTopLevel, + in bool aIsPrivate); + + /* + * Remove the executed record for a given site under the private browsing + * session or the normal session. + */ + void removeExecutedRecordForSite(in ACString aSite, in bool aIsPrivate); + + /** + * Remove all the record of sites where cookie banner handling has been + * executed under the private browsing session or normal session. + */ + void removeAllExecutedRecords(in bool aIsPrivate); + + /** + * Clears the in-memory set that we use to maintain the domains that we have + * reported telemetry. This function will clear the entry for the given + * domain. If the domain was not given, it will clear all set. + */ + void resetDomainTelemetryRecord([optional] in ACString aDomain); +}; -- cgit v1.2.3