Hrm; the TAG had (many years ago, when I served) noted big problems with the shape of this API. It's surprising we're taking it as-is.
On Tuesday, August 8, 2023 at 9:08:43 AM UTC-7 Chris Fredrickson wrote: > Hi Alex, > > I hear you about the method names. However since Safari, Firefox, and Edge > had all previously shipped this API using these names and web developers > have already begun using it, it would have been disruptive for Chrome to > force a rename. We opted to limit the disruption we caused to improving the > ergonomics and security posture of the API instead (1 > <https://github.com/privacycg/storage-access/pull/138>, 2 > <https://github.com/privacycg/storage-access/pull/141>, 3 > <https://github.com/privacycg/storage-access/pull/132>, 4 > <https://github.com/privacycg/storage-access/pull/159>, 5 > <https://github.com/privacycg/storage-access/pull/169>, 6 > <https://github.com/privacycg/storage-access/pull/174>), since that was > indeed disruptive but there was at least cross-browser interest in making > those changes. > > Re: navigator vs document, there was previous discussion of this here > <https://github.com/privacycg/storage-access/issues/22>. We did not > specifically ask the TAG about which object they preferred, but they closed > their review with no comments. Considering that each document's access is > independent of access obtained by other documents (due to the per-frame > security model), the choice of document makes some sense to me, personally > - but there may be some best practice I'm unaware of. > > FWIW, Chrome is exploring > <https://github.com/privacycg/storage-access/issues/102#issuecomment-1550967682> > > ways to use document.requestStorageAccess() to provide access to > unpartitioned DOM storage in the future, in which case the current name > would be more appropriate. > > Chris > > On Monday, August 7, 2023 at 6:46:41 PM UTC-4 Alex Russell wrote: > >> Hey Chris, >> >> Thanks for the details here. >> >> Can you perhaps outline why we didn't take the opportunity here to rename >> this to better represent what the API actually does? E.g., >> `requestUnpartitionedCookieAccess()`? And was any effort made to move the >> API to a more suitable object; e.g. `navigator`? Was this discussed with >> the TAG? >> >> Best, >> >> Alex >> >> >> >> On Monday, August 7, 2023 at 11:47:45 AM UTC-7 Chris Fredrickson wrote: >> >>> Hi Mike, >>> >>> Sure. MDN has a section >>> <https://developer.mozilla.org/en-US/docs/Web/API/Storage_Access_API#browser_storage_access_policy_variations> >>> >>> (which may be incomplete or outdated) on the implementation differences >>> between Safari, Firefox, and Chromium-based browsers. But specifically >>> related to the prompt requirements, there are two aspects that may cause >>> compat issues: >>> >>> 1. >>> >>> Permission lifetime. Storage Access grants have different lifetimes >>> in different browsers, so web developers may have to show a prompt more >>> often than they expect: >>> 1. >>> >>> Firefox: 30 calendar days. >>> 2. >>> >>> Chrome: 30 calendar days. >>> 3. >>> >>> Safari: 30 days of browser usage. >>> 2. >>> >>> User interaction requirement. Whether a user gesture is required by >>> document.requestStorageAccess() is inconsistent across browsers: >>> 1. >>> >>> Firefox: always requires user interaction. (This is a nonstandard >>> behavior, but it appears Firefox is being updated >>> <https://phabricator.services.mozilla.com/D183175> to not require >>> user interaction in some cases.) >>> 2. >>> >>> Chrome: requires user interaction unless the user has already >>> granted access. >>> 3. >>> >>> Safari: always >>> >>> <https://github.com/privacycg/storage-access/issues/172#issuecomment-1521653447> >>> >>> requires user interaction. (This is a nonstandard behavior.) >>> >>> >>> Since Firefox and Safari currently impose stricter user interaction >>> requirements than what the spec dictates, this could lead to compat issues >>> if web developers assume that browsers don't impose additional >>> browser-specific constraints. >>> >>> There's one additional aspect, where web developers may not need to call >>> document.requestStorageAccess() at all in certain situations in some >>> browsers (which could lead to broken experiences if web developers assume >>> they can always omit the explicit call): >>> >>> >>> - Firefox: if foo.example has obtained storage access while embedded >>> under bar.example, and the user loads a bar.example page that includes a >>> foo.example iframe, then that iframe will load with implicit storage >>> access >>> -- without having to call document.requestStorageAccess() first. (This >>> is a >>> deviation from the specification, but this part of the spec was changed >>> relatively recently >>> <https://github.com/privacycg/storage-access/issues/113> for >>> security reasons; Firefox is planning >>> <https://bugzilla.mozilla.org/show_bug.cgi?id=1837648> to >>> incorporate the recent changes.) >>> >>> Chris >>> >>> On Wednesday, August 2, 2023 at 5:02:35 PM UTC-4 Mike Taylor wrote: >>> >>>> >>>> On 8/2/23 4:47 PM, Chris Fredrickson wrote: >>>> >>>> Contact emails >>>> >>>> cfred...@chromium.org, johann...@chromium.org, shuu...@chromium.org >>>> >>>> Explainer >>>> >>>> https://github.com/privacycg/storage-access/blob/main/README.md >>>> >>>> >>>> https://github.com/cfredric/chrome-storage-access-api/blob/main/README.md >>>> >>>> Specification >>>> >>>> https://privacycg.github.io/storage-access >>>> >>>> Summary >>>> >>>> The Storage Access API provides a means for authenticated cross-site >>>> embeds to check whether access to unpartitioned cookies is blocked and >>>> request access if it is blocked. This request may be surfaced to the user >>>> as a prompt, or auto-granted/auto-denied. Chrome will support the Storage >>>> Access API by implementing all the behaviors listed in the specification, >>>> i.e. with user prompts, and additionally having its own >>>> user-agent-specific >>>> behaviors. Chrome’s implementation is available for testing >>>> <https://github.com/cfredric/chrome-storage-access-api#testing-instructions> >>>> >>>> starting in Chrome 117. >>>> >>>> The Storage Access API is related to other cookie-focused projects like >>>> CHIPS <https://developer.chrome.com/en/docs/privacy-sandbox/chips/> >>>> and First-Party Sets <https://github.com/WICG/first-party-sets> as >>>> preparation for phasing out third-party cookies >>>> <https://developer.chrome.com/en/docs/privacy-sandbox/third-party-cookie-phase-out/> >>>> >>>> in Chrome. >>>> >>>> Note that Edge previously sent an I2I >>>> <https://groups.google.com/a/chromium.org/g/blink-dev/c/e5fu5Q06ntA/m/UUqPuA8hEQAJ> >>>> >>>> for the Storage Access API feature (with their own user-agent-specific >>>> behavior), and Chrome has previously sent an I2S >>>> <https://groups.google.com/a/chromium.org/g/blink-dev/c/V9PzoCvIIIs/m/CZ4JT7YaAgAJ> >>>> >>>> for support for the Storage Access API gated on First-Party Sets >>>> membership >>>> (without user prompts). This I2S is intended for support for the API >>>> across >>>> sites that are not within the same First-Party Set. >>>> >>>> Blink component >>>> >>>> Blink>StorageAccessAPI >>>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EStorageAccessAPI> >>>> >>>> TAG review >>>> >>>> https://github.com/w3ctag/design-reviews/issues/807 (review of overall >>>> API, not of prompts) >>>> >>>> TAG review status >>>> >>>> Positive >>>> <https://github.com/w3ctag/design-reviews/issues/807#issuecomment-1431464692> >>>> >>>> Risks >>>> >>>> Interoperability and Compatibility >>>> >>>> There is minor compatibility risk as Firefox and Safari already differ >>>> slightly in their user-agent-specific prompt requirements. Chrome's >>>> planned behavior >>>> <https://github.com/cfredric/chrome-storage-access-api> is closest to >>>> Safari's current behavior, and we aim to standardize as much of this >>>> user-agent-specific behavior as possible over time. >>>> >>>> Could you elaborate on the differences for prompt requirements, and how >>>> that might lead to compat issues? >>>> >>>> >>>> >>>> Gecko: Shipping >>>> >>>> WebKit: Shipping >>>> >>>> Web developers: There has been great developer interest in the Storage >>>> Access API, given that it provides the only predictable way of working >>>> with >>>> cross-site cookies in many browsers. Various developers have chimed in on >>>> https://github.com/whatwg/html/issues/3338 and filed issues on >>>> https://github.com/privacycg/storage-access. >>>> >>>> Other signals: Edge has shipped Blink's previous implementations of >>>> this API, which differ from Chrome's plans. We have kept (and intend to >>>> continue keeping) Edge engineers in the loop about these changes and there >>>> will be feature flags to control Blink's behavior. >>>> >>>> WebView application risks >>>> >>>> Does this intent deprecate or change behavior of existing APIs, such >>>> that it has potentially high risk for Android WebView-based applications? >>>> No. >>>> >>>> >>>> Debuggability >>>> >>>> None >>>> >>>> Will this feature be supported on all six Blink platforms (Windows, >>>> Mac, Linux, Chrome OS, Android, and Android WebView)? >>>> >>>> No. It will be supported on all Blink platforms except Android WebView >>>> initially. We may add WebView support in the future. >>>> >>>> Is this feature fully tested by web-platform-tests >>>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md> >>>> ? >>>> >>>> No. Browser UI is not testable by WPTs, since that is UA-specific. (The >>>> Storage Access API spec itself is tested by WPTs >>>> <https://wpt.fyi/results/storage-access-api>.) >>>> >>>> Flag name on chrome://flags >>>> >>>> #storage-access-api, #permission-storage-access-api >>>> >>>> Finch feature name >>>> >>>> StorageAccessAPI, PermissionStorageAccessAPI >>>> >>>> Non-finch justification >>>> >>>> None >>>> >>>> Requires code in //chrome? >>>> >>>> True >>>> >>>> Estimated milestones >>>> Shipping on desktop: 117 >>>> Shipping on Android: 120 >>>> >>>> Anticipated spec changes >>>> >>>> Some minor changes are expected in order to properly take user settings >>>> into account: https://github.com/privacycg/storage-access/pull/174 and >>>> an analogous change for document.requestStorageAccess. >>>> >>>> There is ongoing discussion >>>> <https://github.com/privacycg/storage-access/issues/102> on how to >>>> offer access to unpartitioned DOM storage via this API. >>>> >>>> The spec has been in incubation being co-developed by all three browser >>>> engines for a while and is close to graduation as tracked here: >>>> https://github.com/whatwg/html/issues/9000. >>>> >>>> >>>> Link to entry on the Chrome Platform Status >>>> >>>> https://chromestatus.com/feature/5085655327047680 >>>> >>>> Links to previous Intent discussions >>>> >>>> Intent to prototype: Intent to Prototype: Storage Access API with >>>> Prompts >>>> <https://groups.google.com/a/chromium.org/g/blink-dev/c/zt-nqGpURNY/m/FF6ciM6qAwAJ> >>>> >>>> This intent message was generated by Chrome Platform Status >>>> <https://chromestatus.com/>. >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "blink-dev" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to blink-dev+unsubscr...@chromium.org. >>>> To view this discussion on the web visit >>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/5e44f071-97ba-41e0-a0cd-7bd3a210d6bdn%40chromium.org >>>> >>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/5e44f071-97ba-41e0-a0cd-7bd3a210d6bdn%40chromium.org?utm_medium=email&utm_source=footer> >>>> . >>>> >>>> -- You received this message because you are subscribed to the Google Groups "blink-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscr...@chromium.org. To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/8884e737-21c8-4c01-9cc3-caaf125e52e2n%40chromium.org.