Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 9 additions & 7 deletions api.bs
Original file line number Diff line number Diff line change
Expand Up @@ -1598,7 +1598,7 @@ after the [=common matching logic=] is applied and privacy budgeting occurs.
To <dfn>do attribution and fill a histogram</dfn>, given
[=validated conversion options=] |options|,
[=site=] |topLevelSite|,
[=site=] |intermediarySite|,
[=site=] or `undefined` |intermediarySite|,
and [=moment=] |now|:

1. Let |matchedImpressions| be an [=set/is empty|empty=] [=set=].
Expand Down Expand Up @@ -1688,7 +1688,7 @@ To <dfn>create an all-zero histogram</dfn>, given an integer |size|:
To perform <dfn>common matching logic</dfn>, given
[=validated conversion options=] |options|,
[=site=] |topLevelSite|,
[=site=] |intermediarySite|,
[=site=] or `undefined` |intermediarySite|,
[=epoch index=] |epoch|, and [=moment=] |now|:

1. Let |matching| be an [=set/is empty|empty=] [=set=].
Expand Down Expand Up @@ -1716,11 +1716,11 @@ To perform <dfn>common matching logic</dfn>, given
and [=set/contains|does not contain=] |topLevelSite|,
[=iteration/continue=].

1. If |intermediarySite| is not `undefined`, let |caller| be |intermediarySite|.
Otherwise, let |caller| be |topLevelSite|.
1. Let |conversionCaller| be |intermediarySite| if it is not `undefined`,
|topLevelSite| otherwise.

1. If |impression|'s [=impression/conversion callers=] [=set/is empty|is not empty=]
and [=set/contains|does not contain=] |caller|,
and [=set/contains|does not contain=] |conversionCaller|,
[=iteration/continue=].

1. If |options|' [=validated conversion options/match values=] [=set/is empty|is not empty=]
Expand All @@ -1732,9 +1732,11 @@ To perform <dfn>common matching logic</dfn>, given
[=list/contains|does not contain=] |impression|'s [=impression/impression site=],
[=iteration/continue=].

1. Let |impressionCaller| be |impression|'s [=impression/intermediary site=]
if it is not `undefined`, |impression|'s [=impression/impression site=] otherwise.

1. If |options|' [=validated conversion options/impression callers=] [=set/is empty|is not empty=]
and [=set/contains|does not contain=] |impression|'s [=impression/intermediary site=]
or |impression|'s [=impression/impression site=],
and [=set/contains|does not contain=] |impressionCaller|,
[=iteration/continue=].

1. [=set/Append=] |impression| to |matching|.
Expand Down
14 changes: 8 additions & 6 deletions impl/src/backend.ts
Original file line number Diff line number Diff line change
Expand Up @@ -392,10 +392,10 @@ export class Backend {
) {
continue;
}
let caller = intermediarySite ?? topLevelSite;
const conversionCaller = intermediarySite ?? topLevelSite;
if (
impression.conversionCallers.size > 0 &&
!impression.conversionCallers.has(caller)
!impression.conversionCallers.has(conversionCaller)
) {
continue;
}
Expand All @@ -408,10 +408,12 @@ export class Backend {
) {
continue;
}
// TODO: The wording from Step 4.10 of
// https://w3c.github.io/ppa/#common-matching-logic is a bit ambiguous.
caller = impression.intermediarySite ?? impression.impressionSite;
if (impressionCallers.size > 0 && !impressionCallers.has(caller)) {
const impressionCaller =
impression.intermediarySite ?? impression.impressionSite;
if (
impressionCallers.size > 0 &&
!impressionCallers.has(impressionCaller)
) {
continue;
}
matching.add(impression);
Expand Down