ampproject / ampproject/amphtml

[amp-consent] Granular consents change detection doesn't work. New selection is not saved in the amp-store local storage and the update request is not sent

Open
#38,350 2 comments 0 reactions 0 assignees View on GitHub
Component: amp-consent P1: High Priority Type: Bug WG: components
Dominant language
JavaScript
Stars
14.9k
Forks
4.1k
PR merge metrics
No merged PRs in 30d

Description

### Description

There's an issue with detecting change of granular consents when user wants to update his settings.
None of the following actions are triggered:
- update of the local storage,
- update request to the onUpdateHref endpoint,
- data-block-on-consent-purposes reflecting updated purpose consent settings

Only changing general consent alternately (accept, reject, accept, reject) triggers all these changes.
It would be good to include granular consents to change detection or add some possibility to do it manually.

By manually I mean something like:
`tap:siteConsent.accept(isDirty/forceUpdate=true)`
and for consents in iframe (promptUISrc):
`window.parent.postMessage({ type: 'consent-response', action: 'accept', purposeConsents, isDirty/forceUpdate: true }, "*");`

### Reproduction Steps

**Repro 1.** Granular consents not saved in the amp-store in local storage
[Granular consents example playground](https://playground.amp.dev/?url=https%3A%2F%2Fpreview.amp.dev%2Fdocumentation%2Fexamples%2Fuser-consent%2Fgranular_user_consent&format=websites)

Scenario:
1. Open example from the link above
2. In the preview save your settings
3. Check your local storage value. You can also decode base64 value in the console with:
`decodeURIComponent(atob(localStorage['amp-store:https://playground.amp.dev']))`
4. Reprompt settings dialog with "I do!" button
5. Change your settings
6. The list of choices (See the results of your consent choices here) doesn't reflect new selection
7. Check again local storage value
8. If you change the second button action tap:siteConsent.dismiss with tap:siteConsent.reject and click buttons alternately you will notice changes (to make data-block-on-consent-purposes reflect new granular consents just refresh the preview)

**Repro 2.** Update request is not sent

[Modified granular consents example playground](https://playground.amp.dev/?format=websites#share=PCEtLQogICMjIEludHJvZHVjdGlvbgoKICAqR3JhbnVsYXIgY29uc2VudCogYWxsb3dzIHVzZXJzIHRvIG1ha2UgYSBzZXQgb2YgY29uc2VudCBjaG9pY2VzIG9uIHlvdXIgcGFnZS4gKkdsb2JhbCBjb25zZW50KiBhbGxvd3MgdGhlbSB0byBtYWtlIGEgc2luZ2xlIGNob2ljZSBmb3IgdGhlIHBhZ2UuIFRoZSBgYW1wLWNvbnNlbnRgIGNvbXBvbmVudCBhbGxvd3MgeW91IHRvIHNldCB1cCBncmFudWxhciBjb25zZW50LCBnbG9iYWwgY29uc2VudCwgb3IgYm90aCBzaW11bHRhbmVvdXNseS4gSW4gdGhpcyBzYW1wbGUsIHdlJ2xsIHNob3cgeW91IGhvdyB0byB1c2UgZ3JhbnVsYXIgY29uc2VudC4KLS0+PCEtLSAtLT4KPCFkb2N0eXBlIGh0bWw+CjxodG1sIOKaoSBsYW5nPSJlbiI+CjxoZWFkPgo8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CiAgICA8dGl0bGU+R3JhbnVsYXIgVXNlciBDb25zZW50PC90aXRsZT4KICAgIDxsaW5rIHJlbD0iY2Fub25pY2FsIiBocmVmPSJzZWxmLmh0bWwiPgogICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCxtaW5pbXVtLXNjYWxlPTEsaW5pdGlhbC1zY2FsZT0xIj4KICAgIDxzdHlsZSBhbXAtYm9pbGVycGxhdGU+Ym9keXstd2Via2l0LWFuaW1hdGlvbjotYW1wLXN0YXJ0IDhzIHN0ZXBzKDEsZW5kKSAwcyAxIG5vcm1hbCBib3RoOy1tb3otYW5pbWF0aW9uOi1hbXAtc3RhcnQgOHMgc3RlcHMoMSxlbmQpIDBzIDEgbm9ybWFsIGJvdGg7LW1zLWFuaW1hdGlvbjotYW1wLXN0YXJ0IDhzIHN0ZXBzKDEsZW5kKSAwcyAxIG5vcm1hbCBib3RoO2FuaW1hdGlvbjotYW1wLXN0YXJ0IDhzIHN0ZXBzKDEsZW5kKSAwcyAxIG5vcm1hbCBib3RofUAtd2Via2l0LWtleWZyYW1lcyAtYW1wLXN0YXJ0e2Zyb217dmlzaWJpbGl0eTpoaWRkZW59dG97dmlzaWJpbGl0eTp2aXNpYmxlfX1ALW1vei1rZXlmcmFtZXMgLWFtcC1zdGFydHtmcm9te3Zpc2liaWxpdHk6aGlkZGVufXRve3Zpc2liaWxpdHk6dmlzaWJsZX19QC1tcy1rZXlmcmFtZXMgLWFtcC1zdGFydHtmcm9te3Zpc2liaWxpdHk6aGlkZGVufXRve3Zpc2liaWxpdHk6dmlzaWJsZX19QC1vLWtleWZyYW1lcyAtYW1wLXN0YXJ0e2Zyb217dmlzaWJpbGl0eTpoaWRkZW59dG97dmlzaWJpbGl0eTp2aXNpYmxlfX1Aa2V5ZnJhbWVzIC1hbXAtc3RhcnR7ZnJvbXt2aXNpYmlsaXR5OmhpZGRlbn10b3t2aXNpYmlsaXR5OnZpc2libGV9fTwvc3R5bGU+PG5vc2NyaXB0PjxzdHlsZSBhbXAtYm9pbGVycGxhdGU9IiI+Ym9keXstd2Via2l0LWFuaW1hdGlvbjpub25lOy1tb3otYW5pbWF0aW9uOm5vbmU7LW1zLWFuaW1hdGlvbjpub25lO2FuaW1hdGlvbjpub25lfTwvc3R5bGU+PC9ub3NjcmlwdD4KCiAgICA8c2NyaXB0IGFzeW5jIHNyYz0iaHR0cHM6Ly9jZG4uYW1wcHJvamVjdC5vcmcvdjAuanMiPjwvc2NyaXB0PgogICAgPCEtLSAjIyBTZXR1cCAtLT4KICAgIDwhLS0gRmlyc3QsIHlvdSBuZWVkIHRvIGltcG9ydCB0aGUgc2NyaXB0IGZvciB0aGUgYGFtcC1jb25zZW50YCBleHRlbnNpb24uIC0tPgogICAgPHNjcmlwdCBhc3luYyBjdXN0b20tZWxlbWVudD0iYW1wLWNvbnNlbnQiIHNyYz0iaHR0cHM6Ly9jZG4uYW1wcHJvamVjdC5vcmcvdjAvYW1wLWNvbnNlbnQtMC4xLmpzIj48L3NjcmlwdD4KICAgIDwhLS0gYGFtcC1jb25zZW50YCBhbGxvd3MgeW91IHRvIGJsb2NrIEFNUCBjb21wb25lbnRzIHVudGlsIHRoZSB1c2VyIGdpdmVzIHRoZWlyIGNvbnNlbnQuIFdlJ2xsIGRlbW9uc3RyYXRlIHRoaXMgd2l0aCBgYW1wLWZpdC10ZXh0YCBjb21wb25lbnRzLCBzbyBsZXQncyBpbXBvcnQgdGhhdCBzY3JpcHQgdG9vLiAtLT4KICAgIDxzY3JpcHQgYXN5bmMgY3VzdG9tLWVsZW1lbnQ9ImFtcC1maXQtdGV4dCIgc3JjPSJodHRwczovL2Nkbi5hbXBwcm9qZWN0Lm9yZy92MC9hbXAtZml0LXRleHQtMC4xLmpzIj48L3NjcmlwdD4KCiAgICA8c3R5bGUgYW1wLWN1c3RvbT4KICAgICAgYW1wLWZpdC10ZXh0IHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7CiAgICAgIH0KCiAgICAgIC5jb25zZW50TGFiZWwgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICAuY29uc2VudExhYmVsIGlucHV0IHsKICAgICAgICBtYXJnaW4tbGVmdDogMTJweDsKICAgICAgfQoKICAgICAgLm5vdGUgewogICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgfQoKICAgICAgI2NvbnNlbnREZW1vQXJlYSB7CiAgICAgICAgYm9yZGVyOiBkb3R0ZWQgMnB4IGdyZWVuOwogICAgICAgIHBhZGRpbmc6IDJweCAxMHB4OwogICAgICB9CgogICAgICAjY29uc2VudFBvcHVwIHsKICAgICAgICBoZWlnaHQ6IDEwMHZoOwogICAgICAgIHdpZHRoOiAxMDB2dzsKICAgICAgICBwYWRkaW5nOiA1JSAwOwogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC42KTsKICAgICAgfQoKICAgICAgI2NvbnNlbnREaWFsb2cgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgICBwYWRkaW5nOiAxMnB4IDI0cHggMjRweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgbWF4LXdpZHRoOiA3MDBweDsKICAgICAgICB3aWR0aDogOTUlOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlMGYwZmZjMDsKICAgICAgfQoKICAgICAgLmNob2ljZXMgewogICAgICAgIHBhZGRpbmctdG9wOiAxMHB4OwogICAgICB9CgogICAgICAuY2hvaWNlQnV0dG9uIHsKICAgICAgICBtYXJnaW4tdG9wOiAzNnB4OwogICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgICAgfQoKICAgICAgLmRpc21pc3NCdXR0b24gewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICByaWdodDogMjRweDsKICAgICAgICB0b3A6IDE2cHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICB9CgogICAgICAvKiBjb21wZW5zYXRlIGZvciBuZWdhdGl2ZSBtYXJnaW4gd2hlbiB3ZSdyZSBpbiB0aGUgQU1QIHBsYXlncm91bmQgKi8KICAgICAgLmRpc21pc3NCdXR0b24gewogICAgICAgIHRvcDogMjRweDsKICAgICAgICByaWdodDogMzhweDsKICAgICAgfQoKICAgICAgI3JlcHJvbXB0RGlhbG9nIHsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcGFkZGluZzogNXB4OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7CiAgICAgICAgY29sb3I6ICNkZGQ7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgbWF4LXdpZHRoOiA2MDBweDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgIH0KCiAgICAgICNjb250ZW50IHsKICAgICAgICBwYWRkaW5nOiAyNHB4OwogICAgICB9CgogICAgICAjbWFya2V0aW5nQ29udGVudCB7CiAgICAgICAgY29sb3I6IGJsdWU7CiAgICAgIH0KCiAgICAgICNjb252ZXJzaW9uQ29udGVudCB7CiAgICAgICAgY29sb3I6IGdyZWVuOwogICAgICB9CgogICAgICAjYW5hbHl0aWNzQ29udGVudCB7CiAgICAgICAgY29sb3I6IG9yYW5nZTsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L2hlYWQ+CiAgPCEtLSBZb3UgbmVlZCB0byBjaG9vc2UgbmFtZXMgZm9yIHlvdXIgY29uc2VudCBwdXJwb3Nlcy4gSGVyZSwgd2UnbGwgY2FsbCB0aGVtIGBwdXJwb3NlLW1hcmtldGluZ2AsIGBwdXJwb3NlLWFuYWx5dGljc2AsIGFuZCBgcHVycG9zZS1tYXJrZXRpbmdgLiAtLT4KICA8IS0tIC0tPgogIDxib2R5PgogICAgPCEtLSBUaGVuLCB5b3UnbGwgY3JlYXRlIGFuIGA8YW1wLWNvbnNlbnQ+YCBjb21wb25lbnQgY29udGFpbmluZyB0aGUgZm9sbG93aW5nOgogIC0gYSBKU09OIGNvbmZpZ3VyYXRpb24gb2JqZWN0CiAgLSB0aGUgY29uc2VudCBVSSwgd2hpY2ggbGV0cyB0aGUgdXNlciBtYWtlIGNvbnNlbnQgY2hvaWNlcwogIC0gb3B0aW9uYWxseSwgYSByZXByb21wdCBVSSwgd2hpY2ggYWxsb3dzIHRoZSB1c2VyIHRvIHNob3cgdGhlIGNvbnNlbnQgVUkgYWdhaW4KLS0+CiAgICA8IS0tCiAgIyMgQ29uZmlndXJhdGlvbiBvYmplY3QKICBbVGhlIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vYW1wLmRldi9kb2N1bWVudGF0aW9uL2NvbXBvbmVudHMvYW1wLWNvbnNlbnQvI2NvbnNlbnQtY29uZmlndXJhdGlvbikgbGlzdHMgYWxsIHRoZSBrZXlzIHRoYXQgdGhpcyBvYmplY3QgY2FuIGNvbnRhaW4uIEhlcmUsIHdlJ3ZlIHVzZWQgdGhlc2U6CgotIFtgY29uc2VudEluc3RhbmNlSWRgXShodHRwczovL2FtcC5kZXYvZG9jdW1lbnRhdGlvbi9jb21wb25lbnRzL2FtcC1jb25zZW50LyNjb25zZW50LWluc3RhbmNlLWlkKS4gVGhpcyBpcyByZXF1aXJlZC4KLSBbYGNvbnNlbnRSZXF1aXJlZGBdKGh0dHBzOi8vYW1wLmRldi9kb2N1bWVudGF0aW9uL2NvbXBvbmVudHMvYW1wLWNvbnNlbnQvI2NvbnNlbnRyZXF1aXJlZCkuIEJ5IHNldHRpbmcgdGhpcyB0byBgdHJ1ZWAsIHdlJ3JlIHNheWluZyBjb25zZW50IHdpbGwgYmUgcmVxdWlyZWQuIFRvIGZldGNoIHRoaXMgaW5mb3JtYXRpb24gZnJvbSBhbiBlbmRwb2ludCwgd2UnZCB1c2UgYHJlbW90ZWAuCi0gW2Bwcm9tcHRVSWBdKGh0dHBzOi8vYW1wLmRldi9kb2N1bWVudGF0aW9uL2NvbXBvbmVudHMvYW1wLWNvbnNlbnQvI3Byb21wdHVpKS4gU3BlY2lmaWVzIHRoZSBgaWRgIG9mIHRoZSBkaWFsb2cgd2hlcmUgdGhlIHVzZXIgY2FuIG1ha2UgY29uc2VudCBjaG9pY2VzLgotIFtgcG9zdFByb21wdFVJYF0oaHR0cHM6Ly9hbXAuZGV2L2RvY3VtZW50YXRpb24vY29tcG9uZW50cy9hbXAtY29uc2VudC8jcG9zdC1wcm9tcHQtdWktKG9wdGlvbmFsKSkuIFRoZSBgaWRgIG9mIHRoZSBhcmVhIHRoYXQgYWxsb3dzIHRoZSB1c2VyIHRvIHNlZSB0aGF0IGRpYWxvZyBhZ2Fpbi4KLSBbYHVpQ29uZmlnYF0oaHR0cHM6Ly9hbXAuZGV2L2RvY3VtZW50YXRpb24vY29tcG9uZW50cy9hbXAtY29uc2VudC8jdWljb25maWcpLiBJbmNsdWRpbmcgYCJvdmVybGF5IjogdHJ1ZWAgaGVyZSB0ZWxscyBgYW1wLWNvbnNlbnRgIHRvIGRhcmtlbiB0aGUgYXJlYSBvdXRzaWRlIHRoZSBjb25zZW50IGRpYWxvZyB3aGVuIHRoZSBkaWFsb2cncyBvcGVuLgoKICBgYGBqc29uCiAgewogICAgImNvbnNlbnRJbnN0YW5jZUlkIjogImNvbnNlbnQxIiwKICAgICJjb25zZW50UmVxdWlyZWQiOiB0cnVlLAogICAgInByb21wdFVJIjogImNvbnNlbnREaWFsb2ciLAogICAgInBvc3RQcm9tcHRVSSI6ICJyZXByb21wdERpYWxvZyIsCiAgICAidWlDb25maWciOiB7CiAgICAgICJvdmVybGF5IjogdHJ1ZQogICAgfSwKICAgICJwdXJwb3NlQ29uc2VudFJlcXVpcmVkIjogWyJwdXJwb3NlLWFuYWx5dGljcyIsICJwdXJwb3NlLW1hcmtldGluZyJdCiAgfQogIGBgYAoKICAjIyBDb25zZW50IGRpYWxvZwogIFRoaXMgd2lsbCB0eXBpY2FsbHkgY29udGFpbiBhIHNldCBvZiBpbnB1dHMsIG9mdGVuIGNoZWNrYm94ZXMsIHRoYXQgbGV0IHRoZSB1c2VyIG1ha2UgY29uc2VudCBjaG9pY2VzLiBJdCB3aWxsIGxpa2VseSBhbHNvIGhhdmUgYnV0dG9ucyB0byBsZXQgdGhlbSBzYXZlIHRoZWlyIGNob2ljZXMsIHNhdmUgb3IgcmVqZWN0IGV2ZXJ5dGhpbmcsIG9yIHNpbXBseSBkaXNtaXNzIHRoZSBkaWFsb2cuCiAgV2hlbiB0aGUgdXNlciBtYWtlcyBhIGNvbnNlbnQgY2hvaWNlLCB1c2UgdGhlIGBzZXRQdXJwb3NlKClgIGFjdGlvbiB0byB0ZW1wb3JhcmlseSBzdG9yZSB0aGF0IGluZm9ybWF0aW9uLiBUaGlzIGFjdGlvbiB0YWtlcyB0aGUgZm9ybSBgc2V0UHVycG9zZSh7cHVycG9zZSB0eXBlfT17Ym9vbGVhbiB2YWx1ZX0pYC4KCiAgSGVyZSwgZm9yIGV4YW1wbGUsIGlmIHRoZSB1c2VyIGNsaWNrcyBvdXIgY2hlY2tib3ggZm9yIG1hcmtldGluZyBjb29raWVzLCB3ZSBzZXQgb3VyIGBwdXJwb3NlLW1hcmtldGluZ2AgcHVycG9zZSBhY2NvcmRpbmdseToKCiAgYGBgCiAgc2V0UHVycG9zZShwdXJwb3NlLW1hcmtldGluZz1ldmVudC5jaGVja2VkKQogIGBgYAoKICBXZSBzZXQgdGhhdCBwdXJwb3NlIHdoZW4gQU1QIGZpcmVzIHRoZSBgY2hhbmdlYCBldmVudCBvbiB0aGUgY29ycmVzcG9uZGluZyBjaGVja2JveC4gSGVyZSdzIGhvdyB0aGF0IGxvb2tzOgoKICBgYGBodG1sCiAgPGlucHV0CiAgICBpZD0iY29uc2VudC1wdXJwb3NlLWFuYWx5dGljcyIKICAgIHR5cGU9ImNoZWNrYm94IgogICAgb249ImNoYW5nZTpjb25zZW50MS5zZXRQdXJwb3NlKHB1cnBvc2UtbWFya2V0aW5nPWV2ZW50LmNoZWNrZWQpIgogID4KICBgYGAKCiAgVG8gc2F2ZSB0aGUgdXNlcidzIGNob2ljZXMsIHVzZSB0aGUgYGFjY2VwdGAgYWN0aW9uLiBUbyBoaWRlIHRoZSBjb25zZW50IFVJIHdpdGhvdXQgc2F2aW5nIGNob2ljZXMsIHVzZSB0aGUgYGRpc21pc3NgIGFjdGlvbi4gWW91ciB1c2VyIG1heSBtYWtlIGEgc2VsZWN0aW9uIGZvciBzb21lIGNvbnNlbnQgcHVycG9zZXMsIGJ1dCBub3QgYWxsIG9mIHRoZW0uIFlvdSBjYW4gc2V0IHRoZWlyIGNob2ljZSBmb3IgdGhlIHJlbWFpbmluZyBjb25zZW50IHB1cnBvc2VzIGJ5IHBhc3NpbmcgYGFjY2VwdGAgdGhlIGFyZ3VtZW50IGAocHVycG9zZUNvbnNlbnREZWZhdWx0PXtmYWxzZXx0cnVlfSlgLgoKICBIZXJlJ3MgaG93IHRoZXNlIGJ1dHRvbnMgbG9vayBpbiBvdXIgc2FtcGxlOgoKICBgYGBodG1sCiAgPGJ1dHRvbiBjbGFzcz0iY2hvaWNlQnV0dG9uIiBvbj0idGFwOnNpdGVDb25zZW50LmFjY2VwdChwdXJwb3NlQ29uc2VudERlZmF1bHQ9ZmFsc2UpIj4KICAgIFNhdmUKICA8L2J1dHRvbj4KICA8YnV0dG9uIGNsYXNzPSJjaG9pY2VCdXR0b24iIG9uPSJ0YXA6c2l0ZUNvbnNlbnQuZGlzbWlzcyI+CiAgICBEaXNtaXNzCiAgPC9idXR0b24+CiAgYGBgCgogICMjIFBvc3QtcHJvbXB0IFVJCiAgRmluYWxseSwgeW91IGNhbiBjcmVhdGUgYW4gYXJlYSB0aGF0IHRoZSB1c2VyIGNhbiB1c2UgdG8gc2hvdyB0aGUgY29uc2VudCBVSSBhZ2Fpbi4gVXNlIHRoZSBgcHJvbXB0YCBhY3Rpb24gdG8gbWFrZSB0aGlzIGhhcHBlbi4gSGVyZSdzIGhvdyB0aGF0IGxvb2tzIGluIHRoaXMgc2FtcGxlOgoKICBgYGBodG1sCiAgPGRpdiBpZD0icmVwcm9tcHREaWFsb2ciPgogICAgRG8geW91IHdhbnQgdG8gbWFrZSB5b3VyIGNvbnNlbnQgY2hvaWNlcyBhZ2Fpbj8KICAgIDxidXR0b24gb249InRhcDpzaXRlQ29uc2VudC5wcm9tcHQiPkkgZG8hPC9idXR0b24+CiAgPC9kaXY+CiAgYGBgCgogIEhlcmUncyBvdXIgZW50aXJlICZsdDthbXAtY29uc2VudCZndDsgY29tcG9uZW50LgotLT4KICAgIDxhbXAtY29uc2VudCBsYXlvdXQ9Im5vZGlzcGxheSIgaWQ9InNpdGVDb25zZW50Ij4KICAgICAgPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qc29uIj4KICAgICAgICB7CiAgICAgICAgICAiY29uc2VudEluc3RhbmNlSWQiOiAiY29uc2VudDEiLAogICAgICAgICAgImNvbnNlbnRSZXF1aXJlZCI6IHRydWUsCiAgICAgICAgICAicHJvbXB0VUkiOiAiY29uc2VudFBvcHVwIiwKICAgICAgICAgICJwb3N0UHJvbXB0VUkiOiAicmVwcm9tcHREaWFsb2ciLAogICAgICAgICAgInVpQ29uZmlnIjogewogICAgICAgICAgICAib3ZlcmxheSI6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICAicHVycG9zZUNvbnNlbnRSZXF1aXJlZCI6IFsicHVycG9zZS1hbmFseXRpY3MiLCAicHVycG9zZS1tYXJrZXRpbmciXSwKICAgICAgICAgICJvblVwZGF0ZUhyZWYiOiAiaHR0cHM6Ly9leGFtcGxlLmNvbS91cGRhdGUtY29uc2VudCIKICAgICAgICB9CiAgICAgIDwvc2NyaXB0PgogICAgICA8ZGl2IGlkPSJjb25zZW50UG9wdXAiPgogICAgICAgIDxkaXYgaWQ9ImNvbnNlbnREaWFsb2ciPgogICAgICAgICAgPGRpdiBjbGFzcz0iZGlzbWlzc0J1dHRvbiIgcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgb249InRhcDpzaXRlQ29uc2VudC5kaXNtaXNzIj4KICAgICAgICAgICAg8J2XqwogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8aDM+WW91ciBwcml2YWN5PC9oMz4KICAgICAgICAgIDxwPgogICAgICAgICAgICBZb3UgY2FuIGNvbnRyb2wgdGhlIHdheXMgaW4gd2hpY2ggd2UgaW1wcm92ZSBhbmQgcGVyc29uYWxpemUgeW91cgogICAgICAgICAgICBleHBlcmllbmNlLiBQbGVhc2UgY2hvb3NlIHdoZXRoZXIgeW91IHdpc2ggdG8gYWxsb3cgdGhlIGZvbGxvd2luZzoKICAgICAgICAgIDwvcD4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNob2ljZXMiPgogICAgICAgICAgICA8bGFiZWwgY2xhc3M9ImNvbnNlbnRMYWJlbCIgZm9yPSJjb25zZW50LXB1cnBvc2UtbWFya2V0aW5nIj4KICAgICAgICAgICAgICA8aW5wdXQgaWQ9ImNvbnNlbnQtcHVycG9zZS1tYXJrZXRpbmciIHR5cGU9ImNoZWNrYm94IiBvbj0iY2hhbmdlOnNpdGVDb25zZW50LnNldFB1cnBvc2UocHVycG9zZS1tYXJrZXRpbmc9ZXZlbnQuY2hlY2tlZCkiPgogICAgICAgICAgICAgIE1hcmtldGluZyBjb29raWVzCiAgICAgICAgICAgIDwvbGFiZWw+CiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iY29uc2VudExhYmVsIiBmb3I9ImNvbnNlbnQtcHVycG9zZS1jb252ZXJzaW9uIj4KICAgICAgICAgICAgICA8aW5wdXQgaWQ9ImNvbnNlbnQtcHVycG9zZS1jb252ZXJzaW9uIiB0eXBlPSJjaGVja2JveCIgb249ImNoYW5nZTpzaXRlQ29uc2VudC5zZXRQdXJwb3NlKHB1cnBvc2UtY29udmVyc2lvbj1ldmVudC5jaGVja2VkKSI+CiAgICAgICAgICAgICAgQ29udmVyc2lvbiB0cmFja2luZyBjb29raWVzCiAgICAgICAgICAgIDwvbGFiZWw+CiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iY29uc2VudExhYmVsIiBmb3I9ImNvbnNlbnQtcHVycG9zZS1hbmFseXRpY3MiPgogICAgICAgICAgICAgIDxpbnB1dCBpZD0iY29uc2VudC1wdXJwb3NlLWFuYWx5dGljcyIgdHlwZT0iY2hlY2tib3giIG9uPSJjaGFuZ2U6c2l0ZUNvbnNlbnQuc2V0UHVycG9zZShwdXJwb3NlLWFuYWx5dGljcz1ldmVudC5jaGVja2VkKSI+CiAgICAgICAgICAgICAgQW5hbHl0aWNzCiAgICAgICAgICAgIDwvbGFiZWw+CgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjaG9pY2VCdXR0b24iIG9uPSJ0YXA6c2l0ZUNvbnNlbnQuYWNjZXB0KHB1cnBvc2VDb25zZW50RGVmYXVsdD1mYWxzZSkiPgogICAgICAgICAgICAgIAlTYXZlCiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjaG9pY2VCdXR0b24iIG9uPSJ0YXA6c2l0ZUNvbnNlbnQucmVqZWN0Ij4KCQkJCVJlamVjdAogICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHA+CiAgICAgICAgICAgIENsaWNrICJTYXZlIiB0byBzYXZlIHlvdXIgY2hvaWNlcy4KICAgICAgICAgICAgPGJyPgogICAgICAgICAgICBDbGljayAiRGlzbWlzcyIgdG8gZ2V0IHJpZCBvZiB0aGlzIGRpYWxvZyBib3ggd2l0aG91dCBzYXZpbmcgeW91cgogICAgICAgICAgICBjaG9pY2VzLgogICAgICAgICAgPC9wPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBpZD0icmVwcm9tcHREaWFsb2ciPgogICAgICAgIERvIHlvdSB3YW50IHRvIG1ha2UgeW91ciBjb25zZW50IGNob2ljZXMgYWdhaW4/CiAgICAgICAgPGJ1dHRvbiBvbj0idGFwOnNpdGVDb25zZW50LnByb21wdCI+SSBkbyE8L2J1dHRvbj4KICAgICAgPC9kaXY+CiAgICA8L2FtcC1jb25zZW50PgoKICAgIDwhLS0KICAjIyBCbG9ja2luZyBjb21wb25lbnRzCgogIFlvdSBjYW4gbGFiZWwgYW55IEFNUCBjb21wb25lbnQgdG8gYmUgYmxvY2tlZCBpZiB0aGUgdXNlciBoYXNuJ3QgYWNjZXB0ZWQgdGhlIHJpZ2h0IGNvbnNlbnQgcHVycG9zZXMuIFNwZWNpZnkgdGhlc2UgcHVycG9zZXMgaW4gYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBpbiB0aGUgYGRhdGEtYmxvY2stb24tY29uc2VudC1wdXJwb3Nlc2AgYXR0cmlidXRlLgotLT4KCiAgICA8ZGl2IGlkPSJjb25zZW50RGVtb0FyZWEiPgogICAgICA8cCBjbGFzcz0ibm90ZSI+KFNlZSB0aGUgcmVzdWx0cyBvZiB5b3VyIGNvbnNlbnQgY2hvaWNlcyBoZXJlKTwvcD4KICAgICAgPGFtcC1maXQtdGV4dCBpZD0ibWFya2V0aW5nQ29udGVudCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSI1MCIgbGF5b3V0PSJmaXhlZCIgZGF0YS1ibG9jay1vbi1jb25zZW50LXB1cnBvc2VzPSJwdXJwb3NlLW1hcmtldGluZyI+CiAgICAgICAgSSdtIHNob3duIGlmIHlvdSBhbGxvdyBtYXJrZXRpbmcgY29va2llcy4KICAgICAgPC9hbXAtZml0LXRleHQ+CiAgICAgIDxhbXAtZml0LXRleHQgaWQ9ImNvbnZlcnNpb25Db250ZW50IiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjUwIiBsYXlvdXQ9ImZpeGVkIiBkYXRhLWJsb2NrLW9uLWNvbnNlbnQtcHVycG9zZXM9InB1cnBvc2UtbWFya2V0aW5nLHB1cnBvc2UtYW5hbHl0aWNzIj4KICAgICAgICBJJ20gc2hvd24gaWYgeW91IGFsbG93IG1hcmtldGluZyBBTkQgYW5hbHl0aWNzIGNvb2tpZXMuCiAgICAgIDwvYW1wLWZpdC10ZXh0PgogICAgICA8YW1wLWZpdC10ZXh0IGlkPSJhbmFseXRpY3NDb250ZW50IiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjUwIiBsYXlvdXQ9ImZpeGVkIiBkYXRhLWJsb2NrLW9uLWNvbnNlbnQtcHVycG9zZXM9InB1cnBvc2UtYW5hbHl0aWNzIj4KICAgICAgICBJJ20gc2hvd24gaWYgeW91IGFsbG93IGFuYWx5dGljcyBjb29raWVzLgogICAgICA8L2FtcC1maXQtdGV4dD4KICAgIDwvZGl2PgogICAgPCEtLSAtLT4KICAgIDxkaXYgaWQ9ImNvbnRlbnQiPgogICAgICA8cD5IZXJlJ3Mgc29tZSBjb250ZW50LjwvcD4KICAgICAgPHA+SGVyZSdzIGV2ZW4gbW9yZSBjb250ZW50LjwvcD4KICAgICAgPHA+QW5kLCB5ZXMsIGhlcmUncyBzdGlsbCBtb3JlIGFtYXppbmcgY29udGVudCE8L3A+CiAgICA8L2Rpdj4KPC9ib2R5PjwvaHRtbD4=)

It's the same example with additionaly:

- config for onUpdateHref

- 'reject' action instead of 'dismiss'

Scenario:
1. Open example from the link above
2. Inspect outgoing requests (e.g. in chrome browser open devtools and check network tab)
3. In the preview save any selection
4. Update your granular consents with reprompt (click 'I do!', change something and click 'Save')
5. You won't notice any update request until you change general consent (accept to reject or reject to accept)

### Relevant Logs

_No response_

### Browser(s) Affected

_No response_

### OS(s) Affected

_No response_

### Device(s) Affected

_No response_

### AMP Version Affected

2206221455000

Contributor guide

Open the contributing guide

Research direction

Start with the amp-consent component and reproduce the behavior using the linked granular consents playground examples. Trace how granular selections are compared when accept is invoked, then verify that changed selections update amp-store local storage, send the onUpdateHref request, and update data-block-on-consent-purposes.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
frontend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.