w3ctag / design-reviews

W3C specs and API reviews
Creative Commons Zero v1.0 Universal
332 stars 56 forks source link

isInputPending #475

Closed acomminos closed 4 years ago

acomminos commented 4 years ago

Hello TAG!

I'm requesting a TAG review of isInputPending. There was some prior discussion here, however it appears to have pivoted to discuss the postTask family of APIs.

In a nutshell, isInputPending is an API for developers to provide more intelligent cooperative multitasking by allowing developers to yield efficiently when there is pending user input to be handled.

Further details:

You should also know that...

We'd prefer the TAG provide feedback as (please delete all but the desired option):

💬 leave review feedback as a comment in this issue and @-notify @acomminos, @n8schloss

dbaron commented 4 years ago

Also worth noting that #415 has some discussion that's probably relevant to isInputPending.

dbaron commented 4 years ago

We just looked at this in the TAG's breakout B today.

One thing we're curious about is what else is on navigator.scheduling (since it looks new to us) and whether that's the right place for this API (and isFramePending, #415).

@plinss is also a little concerned about describing a new category of events off in this corner of the world of web specs (rather than, say, DOM). (I also find that part of the spec a bit confusing; it's not clear to me what ContinuousEvent is (is it a name developers can type that means something?).)

plinss commented 4 years ago

Also the note in the spec about requiring the options to be instantiated once is a bit weird. I understand the performance impact, but maybe that should be a suggestion for authors rather than a 'requirement'.

cynthia commented 4 years ago

There are some input-but-not-quite case events (e.g. GamepadEvent - https://w3c.github.io/gamepad/#gamepadevent-interface) that feel like it could benefit from this, although it does seem to be very focused on standard input for webapps.

acomminos commented 4 years ago

Thank you for the feedback!

One thing we're curious about is what else is on navigator.scheduling (since it looks new to us) and whether that's the right place for this API (and isFramePending, #415).

One of the concerns raised in the Web Perf WG was cluttering namespaces with these scheduling APIs, so we put them behind the navigator.scheduling interface to mitigate this. We're definitely open to other suggestions here.

[...] a little concerned about describing a new category of events off in this corner of the world of web specs (rather than, say, DOM)

We weren't aware of any other specs that could benefit from reusing this definition, and figured that having a lightweight standalone definition would be acceptable. The closest analogue that I'm aware of is pointer events' definition of events which may have a coalesced events list (but we wanted a superset of this).

[...] it's not clear to me what ContinuousEvent is (is it a name developers can type that means something?).)

No, it's just a definition of a class of events. I'll make this clearer, as this is not intended to be web-exposed.

Also the note in the spec about requiring the options to be instantiated once is a bit weird. I understand the performance impact, but maybe that should be a suggestion for authors rather than a 'requirement'.

Sounds good to me. I'll drop this requirement and replace it with a default options struct, with some additional implementer guidance.

There are some input-but-not-quite case events (e.g. GamepadEvent - https://w3c.github.io/gamepad/#gamepadevent-interface) that feel like it could benefit from this, although it does seem to be very focused on standard input for webapps.

I'm not quite sure use of isInputPending would align with the intended use of GamepadEvent (as it's intended to be polled during a rAF), though I'm sure other continuous-like event types may eventually want to be queryable by isInputPending.

dbaron commented 4 years ago

No, it's just a definition of a class of events. I'll make this clearer, as this is not intended to be web-exposed.

Thanks. The current draft is a lot clearer.

dbaron commented 4 years ago

The TAG discussed this briefly at our plenary meeting today, and we're happy with closing this. We've been glad to see your responses to the comments we had. Thanks for requesting review from the TAG.

We hope you'll continue to get appropriate feedback and advance this proposal through the appropriate standards process.