From 18b10d2655e799f6a66fd590e20c06dba946bda4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20C=C3=A1ceres?= Date: Fri, 18 Nov 2022 15:41:35 +1300 Subject: [PATCH 1/4] RFC: Consume User Activation --- rfcs/consume_user_activation.md | 41 +++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 rfcs/consume_user_activation.md diff --git a/rfcs/consume_user_activation.md b/rfcs/consume_user_activation.md new file mode 100644 index 00000000..1834f254 --- /dev/null +++ b/rfcs/consume_user_activation.md @@ -0,0 +1,41 @@ +# RFC: Consume user activation + +Editor: Marcos Caceres, Apple Inc. + +## Summary + +Tests in WPT are currently relying on various indirect means to "[consume user activation](https://html.spec.whatwg.org/#consume-user-activation)" [HTML]. +Some of these means are non-standard in as far as they are not specified to consume user activation, meaning that the tests are inshrining non-standard behavior for conformance purposes. + +The workarounds being used are as follows, with several drawbacks: + +* Using Fullscreen API: non-standard, takes significant time to put an element into fullscreen. +* Using window.open() and window.close() - non-standard, not mobile friendly. +* Using Payment Request API - not widely implemented (e.g., not exposed in Gecko). + +We also looked at a range of other possible APIs that consume user activation, and found [none to be suitable](https://github.com/web-platform-tests/wpt/issues/36727#issuecomment-1296349964). + +## Details + +We would like to propose the addition of an async function `test_driver.consume_user_activation()` method that returns a `Promse` (representing if the activation was consumed or not). For example: + +``` +const consume = await test_driver.consume_user_activation(); +``` + +The `consume_user_activation()` method can take a `Window` context (which defaults to the current Window object). Allowing consumption to happen at a particular window, if required. + +The `consume_user_activation()` method would be implemented via the proposed addition of “[Consume user activation of Window](https://github.com/w3c/webdriver/pull/1695)” to the Web Driver specification. + +This prposal has several advantages: + * it's fast - no opening windows or waiting for fullscreen to enter/exit. + * it's lightweight - it doesn't create new browsing contexts. + * it's mobile friendly - as above. + * it's build for purpose - no more using other APIs to indirectly achieve the desired outcome. + * It's really simple - it compliments `.bless()` and other user activaton functionality already available. + +[An implementation](https://github.com/WebKit/WebKit/pull/6539) is available in WebKit. + +## Risks + +None known. From 087b33c9220b04b4470733b4c14502e8f4b0db89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20C=C3=A1ceres?= Date: Sat, 19 Nov 2022 03:45:03 +1300 Subject: [PATCH 2/4] Update rfcs/consume_user_activation.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Philip Jägenstedt --- rfcs/consume_user_activation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/consume_user_activation.md b/rfcs/consume_user_activation.md index 1834f254..6d5c0809 100644 --- a/rfcs/consume_user_activation.md +++ b/rfcs/consume_user_activation.md @@ -1,4 +1,4 @@ -# RFC: Consume user activation +# RFC 128: Consume user activation Editor: Marcos Caceres, Apple Inc. From 4932248e4dfe1f3e1105bba15eb233109392603f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20C=C3=A1ceres?= Date: Sat, 19 Nov 2022 03:45:53 +1300 Subject: [PATCH 3/4] Update rfcs/consume_user_activation.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Philip Jägenstedt --- rfcs/consume_user_activation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/consume_user_activation.md b/rfcs/consume_user_activation.md index 6d5c0809..dfeb2ce8 100644 --- a/rfcs/consume_user_activation.md +++ b/rfcs/consume_user_activation.md @@ -32,7 +32,7 @@ This prposal has several advantages: * it's lightweight - it doesn't create new browsing contexts. * it's mobile friendly - as above. * it's build for purpose - no more using other APIs to indirectly achieve the desired outcome. - * It's really simple - it compliments `.bless()` and other user activaton functionality already available. + * It's really simple - it complements `.bless()` and other user activation functionality already available. [An implementation](https://github.com/WebKit/WebKit/pull/6539) is available in WebKit. From 1359a587275bacc3d110985ea1bf2126f6bca5e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20C=C3=A1ceres?= Date: Sat, 19 Nov 2022 03:48:07 +1300 Subject: [PATCH 4/4] Update rfcs/consume_user_activation.md --- rfcs/consume_user_activation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/consume_user_activation.md b/rfcs/consume_user_activation.md index dfeb2ce8..d0623bd6 100644 --- a/rfcs/consume_user_activation.md +++ b/rfcs/consume_user_activation.md @@ -9,7 +9,7 @@ Some of these means are non-standard in as far as they are not specified to cons The workarounds being used are as follows, with several drawbacks: -* Using Fullscreen API: non-standard, takes significant time to put an element into fullscreen. +* Using Fullscreen API: it takes significant time to put an element into fullscreen. * Using window.open() and window.close() - non-standard, not mobile friendly. * Using Payment Request API - not widely implemented (e.g., not exposed in Gecko).