-
Notifications
You must be signed in to change notification settings - Fork 2.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
GPP Control Module: usnat string #10117
Conversation
… suites to set up during set up
In code the first element has index 0. In the doc it starts from 1 (I think
- the spec enumerates them from 1 at least).
…On Thu, Jun 22, 2023, 5:38 PM Patrick McCann ***@***.***> wrote:
***@***.**** commented on this pull request.
------------------------------
In libraries/mspa/activityControls.js
<#10117 (comment)>:
> +}
+
+function isSensitiveConsentDenied(cd) {
+ return ['SensitiveDataProcessingOptOutNotice', 'SensitiveDataLimitUseNotice'].some(prop => cd[prop] === 2)
+}
+
+function isConsentDenied(cd) {
+ return isBasicConsentDenied(cd) ||
+ ['SaleOptOut', 'SharingOptOut', 'TargetedAdvertisingOptOut'].some(prop => cd[prop] === 1) ||
+ ['SaleOptOutNotice', 'SharingNotice', 'SharingOptOutNotice', 'TargetedAdvertisingOptOutNotice'].some(prop => cd[prop] === 2);
+}
+
+function isTransmitUfpdConsentDenied(cd) {
+ return isConsentDenied(cd) ||
+ isSensitiveConsentDenied(cd) ||
+ cd.SensitiveDataProcessing.some((val, i) => (i < 6 || i > 7) && val === 1) ||
or should this just be i !== 8?
—
Reply to this email directly, view it on GitHub
<#10117 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ACNOLVLTVNBUTOPFYVQTEB3XMRRILANCNFSM6AAAAAAZMFKZTY>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
Hopefully re-ready for review with all changes to the object parsing in @bretg ! |
export function isTransmitUfpdConsentDenied(cd) { | ||
// SensitiveDataProcessing[1-5,11]=1 OR SensitiveDataProcessing[6,7,9,10,12]<>0 OR | ||
const mustBeZero = [6, 7, 9, 10, 12]; | ||
const mustBeZeroSubtractedVector = mustBeZero.map((number) => number - 1); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure if I'm missing something with the greater logic here, but why are we subtracting 1 from the values of the arrays that indicate the SesnsitiveDataProcessing property? From the in-line comments, it'd seem we would want to check property number 6 is not equal to 0 - but this logic (from what I gather) would reduce the property number to 5. Can someone clarify?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
SensitiveDataProcessing is a 12 item array where each element can have value 0,1, or 2. Items [6, 7, 9, 10, 12] starting at array index 1 must be zero according to the design doc. I subtract 1 from each of them on this line to get [5,6,8,9,11] and then in the following line subset the javascript array to all the positions that must be zero. Then finally, we return consent denied if any of these are non-zero
The two lines above could be consolidated to mustBeZero=[5,6,8,9,11] but I was hoping to start with a constant in the design doc and manipulate from there.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The unit test for this mustBeZero function is here btw
it('should be true (consent denied to add ufpd) with consent to process biometric data, as this should not be on openrtb', () => { |
The idea is,when it comes to sensitive biometric data, prebid default is to not append to user first party data unless that consent field is N/A
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Though I can't test everything here, it seems like it's okay from what I can tell.
* share CMP client code * consentManagementGpp: fetch section data * mock out getSection for legacy tests * Make gppConsent available as an activity param; also fix various test suites to set up during set up * gppControl_usnat * load all section data (instead of trying to figure out what is applicable) * Do not expect top window to be accessible * update usnat consent interpretation * Update activityControls.js * Update activityControls.js * Update activityControls_spec.js * Update activityControls.js * Update activityControls.js * Update activityControls_spec.js * Update activityControls.js * Update activityControls.js * Update activityControls.js * Update activityControls_spec.js * Update activityControls_spec.js * Update activityControls_spec.js * Update activityControls.js * Update activityControls_spec.js * Update activityControls_spec.js * Update activityControls_spec.js * Update activityControls_spec.js * Update activityControls_spec.js * Update activityControls_spec.js * Update activityControls_spec.js * Update activityControls.js * Update activityControls_spec.js * Update activityControls_spec.js * Update activityControls_spec.js * Update activityControls.js * Update activityControls_spec.js * Update activityControls_spec.js * Update activityControls_spec.js * Update activityControls.js * Update activityControls_spec.js * Update activityControls.js * Update activityControls.js * Update activityControls.js --------- Co-authored-by: Patrick McCann <[email protected]>
* share CMP client code * consentManagementGpp: fetch section data * mock out getSection for legacy tests * Make gppConsent available as an activity param; also fix various test suites to set up during set up * gppControl_usnat * load all section data (instead of trying to figure out what is applicable) * Do not expect top window to be accessible * update usnat consent interpretation * Update activityControls.js * Update activityControls.js * Update activityControls_spec.js * Update activityControls.js * Update activityControls.js * Update activityControls_spec.js * Update activityControls.js * Update activityControls.js * Update activityControls.js * Update activityControls_spec.js * Update activityControls_spec.js * Update activityControls_spec.js * Update activityControls.js * Update activityControls_spec.js * Update activityControls_spec.js * Update activityControls_spec.js * Update activityControls_spec.js * Update activityControls_spec.js * Update activityControls_spec.js * Update activityControls_spec.js * Update activityControls.js * Update activityControls_spec.js * Update activityControls_spec.js * Update activityControls_spec.js * Update activityControls.js * Update activityControls_spec.js * Update activityControls_spec.js * Update activityControls_spec.js * Update activityControls.js * Update activityControls_spec.js * Update activityControls.js * Update activityControls.js * Update activityControls.js --------- Co-authored-by: Patrick McCann <[email protected]>
Type of change
Description of change
gppControl_usnat
module that provides a default interpretation for theusnat
GPP section (defined in this doc)More info
gppControl_usnat
module is activated together with theconsentManagementGpp
module, for now. (It has no config of its own, but it needs GPP config to exist before doing anything)