Thanks! On Wed, May 31, 2023 at 7:21 AM Rick Byers <rby...@chromium.org> wrote:
> LGTM3 > > Thanks for ensuring the behavior changes are behind a kill-switch! > > Rick > > On Wed, May 31, 2023, 5:10 a.m. Yoav Weiss <yoavwe...@chromium.org> wrote: > >> LGTM2 (% Mike's question) >> >> On Wed, May 31, 2023 at 5:04 AM Mike West <mk...@chromium.org> wrote: >> >>> LGTM1. >>> >>> The risks you point to seem minor, and following along with Safari's >>> implementation makes it more likely that we can land the feature in a way >>> that sticks. Do you have insight into Mozilla's implementation progress? >>> >> I don't. The tracking bug is https://bugzilla.mozilla.org/show_bug.cgi?id=1830781, but it doesn't have much activity yet. Re: Safari, I just looked at their implementation and they haven't yet replaced "follow" with the new algorithm. I can follow up / file a separate bug for the fetch integration, or maybe wait until this rolls out and sticks? -mike >>> >>> >>> On Fri, May 26, 2023 at 12:47 AM Scott Haseley <shase...@chromium.org> >>> wrote: >>> >>>> Contact emailsshase...@chromium.org >>>> >>>> Explainer >>>> https://github.com/shaseley/abort-signal-any/blob/main/README.md >>>> >>>> Specificationhttps://dom.spec.whatwg.org/#dom-abortsignal-any >>>> https://wicg.github.io/scheduling-apis/#dom-tasksignal-any (TaskSignal >>>> specialization) >>>> >>>> Design docs >>>> https://docs.google.com/document/d/1LvmsBLV85p-PhSGvTH-YwgD6onuhh1VXLg8jPlH32H4/edit#heading=h.xp6e50wyimb4 >>>> >>>> Summary >>>> >>>> AbortSignal.any(signals) returns a signal that is aborted when any of >>>> the source signals are aborted. Developers can use this to combine >>>> independent abort sources, e.g. timeouts specified with >>>> AbortSignal.timeout() and signals associated with user input, and pass them >>>> to async APIs like fetch(). >>>> >>>> Comments >>>> This intent also includes TaskSignal.any(), which is a specialization >>>> of AbortSignal.any() (TaskSignal inherits from AbortSignal) for >>>> https://wicg.github.io/scheduling-apis/. The specialization behaves >>>> the same for abort, but returns a TaskSignal with the priority bit >>>> initialized from the additional optional parameter. TaskSignal is only >>>> implemented in Chromium, and this is a small addition to keep the API in >>>> sync with the base class. >>>> >>>> Blink componentBlink>DOM >>>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EDOM> >>>> >>>> TAG reviewhttps://github.com/w3ctag/design-reviews/issues/737 >>>> >>>> TAG review statusIssues addressed >>>> >>>> Risks >>>> >>>> >>>> Interoperability and Compatibility >>>> >>>> There's a slight compat risk resulting from spec changes associated >>>> with the new feature. >>>> >>>> >>>> Signals could previously be combined (in specs) similarly using the >>>> "follow" algorithm, which was replaced with a new algorithm for creating a >>>> dependent signal. The new algorithm changes the order the abort event is >>>> propagated between source and dependent signals, which was done to optimize >>>> memory management (one of the API goals) and limit complexity. This is >>>> observable in two ways: 1. In fetch, `new Request(url, {signal})` and >>>> `request.clone()` made a "copy" of the input signal using "follow", so the >>>> relative order of 'abort' events between 'signal' and `request.signal` can >>>> change. For example: ``` // Previously, handler2 ran before handler1, if >>>> the signal is aborted. signal.addEventListener('abort', handler1); const r >>>> = new Request(url, {signal}); r.signal.addEventListener('abort', handler2); >>>> ``` `clone()` is similar (one WPT test was changed for the new >>>> expectation). 2. Our cache.addAll() implementation had an unspecced use of >>>> "follow" that could result in 'abort' events firing when they shouldn't >>>> have. This was fixed. The risk seems low here, and we didn't think changing >>>> the API implementation to ensure this order was worth the >>>> complexity/optimization limitations. The feature can be disabled via kill >>>> switch (AbortSignalAny) if necessary. >>>> >>>> >>>> *Gecko*: Positive ( >>>> https://github.com/mozilla/standards-positions/issues/774) >>>> >>>> *WebKit*: Shipped/Shipping ( >>>> https://bugs.webkit.org/show_bug.cgi?id=256176) >>>> >>>> *Web developers*: No signals >>>> >>>> Probably "mildly positive": >>>> - 4 stars on implementation bug (crbug.com/13233910) >>>> - Discussion/motivation on DOM issue ( >>>> https://github.com/whatwg/dom/issues/920 >>>> - A couple libraries implement something similar ( >>>> https://www.reddit.com/r/javascript/comments/ve96pn/abortcontroller_is_your_friend/ >>>> ) >>>> >>>> *Other signals*: >>>> Implemented in Node.js: https://github.com/nodejs/node/pull/47821 >>>> >>>> Ergonomics >>>> >>>> This is designed to be used with other AbortSignal APIs >>>> (AbortController and AbortSignal.timeout), and improves ergonomics of >>>> handling multiple signals. >>>> >>>> >>>> Activation >>>> >>>> The feature would benefit from a polyfill. >>>> >>>> >>>> Security >>>> >>>> None. >>>> https://github.com/shaseley/abort-signal-any/blob/main/tag-questionnaire.md >>>> >>>> >>>> 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? >>>> >>>> See compat section. >>>> >>>> >>>> Debuggability >>>> >>>> Basic support only. >>>> >>>> >>>> Will this feature be supported on all six Blink platforms (Windows, >>>> Mac, Linux, Chrome OS, Android, and Android WebView)?Yes >>>> >>>> Is this feature fully tested by web-platform-tests >>>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md> >>>> ?Yes >>>> >>>> Flag name--enable-blink-features=AbortSignalAny >>>> >>>> Requires code in //chrome?False >>>> >>>> Tracking bug >>>> https://bugs.chromium.org/p/chromium/issues/detail?id=1323391 >>>> >>>> Estimated milestones >>>> Shipping on desktop 116 >>>> Shipping on Android 116 >>>> Shipping on WebView 116 >>>> >>>> Anticipated spec changes >>>> >>>> Open questions about a feature may be a source of future web compat or >>>> interop issues. Please list open issues (e.g. links to known github issues >>>> in the project for the feature specification) whose resolution may >>>> introduce web compat/interop risk (e.g., changing to naming or structure of >>>> the API in a non-backward-compatible way). >>>> >>>> >>>> Link to entry on the Chrome Platform Status >>>> https://chromestatus.com/feature/5202879349522432 >>>> >>>> Links to previous Intent discussionsIntent to prototype: >>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAKXGoJ2siKxHbAB3YL%2BX1%2BNvRvOXGYKCc_Ybyq7azqd-_AS4rg%40mail.gmail.com >>>> >>>> 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/CAKXGoJ3%3DYz%3Di2cdJJUQVc4Uxh1Up2AaWj1Uw50qHBjiU_8PP6w%40mail.gmail.com >>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAKXGoJ3%3DYz%3Di2cdJJUQVc4Uxh1Up2AaWj1Uw50qHBjiU_8PP6w%40mail.gmail.com?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/CAKXHy%3DdPLTWx4a-5z7USY6CjVC8smwYYaq-%2ByGKe9w99HKieeg%40mail.gmail.com >>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAKXHy%3DdPLTWx4a-5z7USY6CjVC8smwYYaq-%2ByGKe9w99HKieeg%40mail.gmail.com?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/CAL5BFfXOwYLx2jx%2B67MC532_d40p0giB3xA0n8sUFrsC0XUzsg%40mail.gmail.com >> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAL5BFfXOwYLx2jx%2B67MC532_d40p0giB3xA0n8sUFrsC0XUzsg%40mail.gmail.com?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/CAKXGoJ31nKNK9gSAxmNRoRmJn4m5HRc2%2BuFK8ERPgDJxgk%2BTeQ%40mail.gmail.com.