diff --git a/index.bs b/index.bs index ab39d711ca..49095a3ef2 100644 --- a/index.bs +++ b/index.bs @@ -944,7 +944,6 @@ An aggregatable source registration time configuration is one of the -

Attribution trigger

An attribution trigger is a [=struct=] with the following items: @@ -1300,7 +1299,6 @@ A destination rate-limit result is one of the following:
  • "hit reporting limit" - # Storage # {#storage} A user agent holds an attribution source cache, which is a [=set=] of [=attribution sources=]. @@ -2295,7 +2293,7 @@ an [=aggregation coordinator=] |aggregationCoordinator|, and a [=moment=] |now|: :: |contributions| : [=aggregatable debug report/aggregation coordinator=] :: |aggregationCoordinator| - + 1. [=Queue a task=] to [=attempt to deliver an aggregatable debug report=] with |report|. To obtain and deliver an aggregatable debug report on registration given a [=list=] |contributions|, @@ -2382,7 +2380,6 @@ To obtain a randomized source response given a [=randomized response 1. Return the result of [=obtaining a randomized response=] with null, |possibleValues|, and |pickRate|. -

    Computing channel capacity

    To compute the channel capacity of a source given a [=randomized response output configuration=] |config| and a double |epsilon|: @@ -3134,10 +3131,15 @@ and an optional [=boolean=] |isNoised| (default false): 1. Run [=obtain and deliver an aggregatable debug report on source registration=] with |dataTypes|, |source|, and |isNoised|. +To delete expired sources given a [=moment=] |now|: + +1. [=set/iterate|For each=] |source| of the [=attribution source cache=]: + 1. If |source|'s [=attribution source/expiry time=] is less than |now|, + [=set/remove=] |source| from the [=attribution source cache=]. + To process an attribution source given an [=attribution source=] |source|: -1. Let |cache| be the user agent's [=attribution source cache=]. -1. [=list/Remove=] all [=attribution sources=] |entry| in |cache| where |entry|'s [=attribution source/expiry time=] is less than |source|'s [=attribution source/source time=]. +1. [=Delete expired sources=] with |source|'s [=attribution source/source time=]. 1. Let |randomizedResponseConfig| be a new [=randomized response output configuration=] whose items are: : [=randomized response output configuration/max attributions per source=] @@ -3164,7 +3166,7 @@ To process an attribution source given an [=attribution source=] |sou |source|'s [=attribution source/randomized response=] is null, [=attribution source/randomized response=]'s [=list/size=] otherwise. 1. Let |pendingSourcesForSourceOrigin| be the [=set=] of all - [=attribution sources=] |pendingSource| of |cache| where |pendingSource|'s + [=attribution sources=] |pendingSource| of the [=attribution source cache=] where |pendingSource|'s [=attribution source/source origin=] and |source|'s [=attribution source/source origin=] are [=same origin=]. 1. If |pendingSourcesForSourceOrigin|'s [=list/size=] is greater than or equal @@ -3261,7 +3263,7 @@ To process an attribution source given an [=attribution source=] |sou |debugDataTypes|. 1. Run [=obtain and deliver debug reports on source registration=] with |debugDataTypes|, |source|, and |isNoised|. -1. [=set/Append=] |source| to |cache|. +1. [=set/Append=] |source| to the [=attribution source cache=]. Note: Because a fake report does not have a "real" effective destination, we need to subtract from the privacy budget of all possible destinations. @@ -3431,7 +3433,7 @@ To parse aggregatable key-values given a [=map=] |map| and a positive rules for parsing non-negative integers to |value|["[=trigger-registration JSON key/filtering_id=]"]. 1. If |filteringId| is an error, return null. 1. If |filteringId| is not in [=the exclusive range|the range=] - 0 to 256|maxBytes|, exclusive, return null. + 0 to 256|maxBytes|, exclusive, return null. 1. [=map/Set=] |out|[|key|] to a new [=aggregatable key value=] whose items are : [=aggregatable key value/value=] :: |value|["[=trigger-registration JSON key/value=]"] @@ -3515,7 +3517,7 @@ a [=moment=] |triggerTime|, and a [=boolean=] |fenced|: with |value|. 1. If |aggregatableTriggerData| is null, return null. 1. Let |filteringIdsMaxBytes| be the result of [=parsing aggregatable filtering ID max bytes=] with |value|. -1. If |filteringIdsMaxBytes| is null, return null. +1. If |filteringIdsMaxBytes| is null, return null. 1. Let |aggregatableValuesConfigurations| be the result of running [=parse aggregatable values=] with |value| and |filteringIdsMaxBytes|. 1. If |aggregatableValuesConfigurations| is null, return null. @@ -4197,7 +4199,7 @@ To trigger attribution given an [=attribution trigger=] |tri 1. [=list/Remove=] all [=attribution rate-limit records=] |entry| from the [=attribution rate-limit cache=] if the result of running [=can attribution rate-limit record be removed=] with |entry| and |trigger|'s [=attribution trigger/trigger time=] is true. -Issue(1287): Consider replacing |debugDataSet| with a [=list=]. +Issue(1287): Consider replacing |debugDataSet| with a [=list=].

    Establishing report delivery time

    @@ -4264,7 +4266,7 @@ a 64-bit integer priority |priority|, and a [=trigger spec map=] [=map/entry=] : [=event-level report/report ID=] :: The result of [=generating a random UUID=]. : [=event-level report/attribution debug info=] - :: (|source|'s [=attribution source/debug key=], |triggerDebugKey|). + :: (|source|'s [=attribution source/debug key=], |triggerDebugKey|). 1. Return |report|.

    Obtaining an aggregatable report's required budget

    @@ -4401,7 +4403,6 @@ an [=attribution trigger=] |trigger|: 1. Set |reports|[i]'s [=aggregatable attribution report/report ID=] to |verifications|[i]'s [=trigger verification/id=]. 1. Set |reports|[i]'s [=aggregatable attribution report/serialized private state token=] to |verifications|[i]'s [=trigger verification/token=]. - To generate null attribution reports and assign private state tokens given an [=attribution trigger=] |trigger| and an optional [=aggregatable attribution report=] report defaulting to null: @@ -4466,7 +4467,7 @@ of running the following steps: 1. If |report| is an:
    : [=aggregatable attribution report=] - :: + :: 1. If the result of [=checking if attribution debugging can be enabled=] with |report|'s [=aggregatable attribution report/attribution debug info=] is true, return enabled. @@ -4502,7 +4503,7 @@ of running the following steps: Note: The inclusion of "`report_id`" in the shared info is intended to allow the report recipient to perform deduplication and prevent double counting, in the event that the user agent retries - reports on failure. + reports on failure. : "`reporting_origin`" :: |reportingOrigin|, [=serialization of an origin|serialized=] @@ -4510,7 +4511,7 @@ of running the following steps: :: |report|'s [=aggregatable report/report time=] in seconds since the UNIX epoch, [=serialize an integer|serialized=] : "`version`" :: "`1.0`" - + Note: The "`version`" value needs to be bumped if the aggregation service upgrades. 1. If |report|'s [=aggregatable report/debug mode=] is enabled, @@ -4963,7 +4964,6 @@ an [=origin=] |contextOrigin|, and a [=boolean=] |fenced|: :: |body| 1. Run [=obtain and deliver a verbose debug report=] with « |data| », |origin|, and |fenced|. - # Report Verification Algorithms # {#report-verification} "Sec-Attribution-Reporting-Private-State-Token" is a [=structured header=] used