Skip to content

Thoughts on/review of CloseWatcher proposal and relation to synthesized events #184

@domenic

Description

@domenic

Hi AOM folks,

I'm working on a proposal called close watchers which is intended to allow web developers to more easily handle "close signals" such as the Esc key or the Android back button in a uniform, cross-platform way.

My current explainer indicates that accessibility-tech "dismiss" gestures (so far I know about VoiceOver's) might want to trigger this path. But as pointed out in w3ctag/design-reviews#594 (comment), this seems to conflict with the plans in https://github.com/WICG/aom/blob/gh-pages/explainer.md#user-action-events-from-assistive-technology to have such gestures synthesize an Esc key press.

I'd be happy to remove the idea of AT directly firing close signals at CloseWatcher instances, and instead have the synthesized Esc key presses trigger the close signal indirectly instead. In both cases developers could use the CloseWatcher interface just fine to uniformize their handling of such close signals across platforms. But I wanted to get your take, as the experts in the space.

Concretely, the difference would be:

  • Direct variant: making a dismiss gesture triggers any active CloseWatcher. No esc key presses are synthesized.
  • Indirect variant: making a dismiss gesture fires a key event for the Esc key press. If that is not canceled, then the key event in turn triggers any active CloseWatcher.

For privacy my initial guess is that either option is reasonable, but a determined attacker could still distinguish AT users from non-AT users in some situations:

  • For the direct variant, they would notice that CloseWatcher is triggered without any corresponding key event. Since iOS has no other situation where this could occur, except for AT users, the site could detect AT usage
  • For the indirect variant: any Esc keypress events on iPhones automatically indicate to the site an AT user, since Esc keypresses are otherwise impossible there

I don't know enough about dismiss gestures on other operating systems or devices to comment on those, but I suspect there's a similar tradeoff.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions