WebDriver:ElementSendKeys to use action primitives

NEW
Unassigned

Status

enhancement
P2
normal
2 years ago
2 months ago

People

(Reporter: whimboo, Unassigned, NeedInfo)

Tracking

(Depends on 2 bugs, Blocks 12 bugs)

Trunk
Points:
---
Dependency tree / graph

Firefox Tracking Flags

(Not tracked)

Details

The webdriver spec says that send keys has to use the action primitives for synthesizing the key codes. Right now it's using its own implementation.
[Mass Change 2018-01-15] Moving bugs to backlog
Priority: -- → P3
Blocks: webdriver
OS: Unspecified → All
Priority: P3 → P2
Hardware: Unspecified → All
Version: Version 3 → Trunk
Summary: sendkeys() has to use the action primitives → Use action primitives for WebDriver:ElementSendKeys
Summary: Use action primitives for WebDriver:ElementSendKeys → WebDriver:ElementSendKeys to use action primitives
Blocks: 1068733
Blocks: 1255260
Depends on: 1405370
Blocks: 1068728
Blocks: 1333069
Blocks: 1494661
To solve this we cannot simply refactor `event.sendKeysToElement()` because this is still in use by the `legacySendKeysToElement()` method. And this we have to keep for a while, until we can be sure to remove the `moz:webdriverClick` compat flag.

As such the entry point which would need that change is `interaction.webdriverSendKeysToElement()`.

Once we got rid of all the old cruft, we can then remove no longer used methods.
Assignee: nobody → hskupin
Status: NEW → ASSIGNED
Priority: P2 → P1
(In reply to Henrik Skupin (:whimboo) from comment #2)

> To solve this we cannot simply refactor
> `event.sendKeysToElement()` because this is still in use by the
> `legacySendKeysToElement()` method. And this we have to keep for
> a while, until we can be sure to remove the `moz:webdriverClick`
> compat flag.

Would it be easier to duplicate sendKeysToElement inside
legacyaction.js to unblock this?

It of course depends on how difficult it is to remove legacy actions
completely, but I wouldn’t want to block anything related to
WebDriver conformance on the count of legacy actions.
(In reply to Andreas Tolfsen ❲:ato❳ from comment #3)
> Would it be easier to duplicate sendKeysToElement inside
> legacyaction.js to unblock this?

I don't see anything related to `sendKeysToElement` for legacy actions. Those only support `keyDown` and `keyUp`.

> It of course depends on how difficult it is to remove legacy actions
> completely, but I wouldn’t want to block anything related to
> WebDriver conformance on the count of legacy actions.

I have already made a bit of progress on that bug by Tuesday and the implementation is actually more complex as I have thought. But anyway, nothing from the legacy actions should block it. We will only have to leave `event.sendKeysToElement()` in-place for now, and can remove it later once legacy actions are no longer a thing.

For the first implementation here I will drop the part of splitting the string by grapheme clusters, similar what Maja did earlier for the initial actions implemenatation. I will file a follow-up bug to get this implemented afterward, also because it won't be a regression due to we aren't doing it those days.
Blocks: 1496323
Also note that our event.js module is kinda outdated and doesn't contain any of the composition related key ynthesizing methods yet. I will have to sync the file with the latest version of EventUtils.js:

https://dxr.mozilla.org/mozilla-central/source/testing/mochitest/tests/SimpleTest/EventUtils.js
James, there is an open action for you from our meeting at TPAC in updating the WebDriver specification for https://github.com/w3c/webdriver/issues/1322. Could you please have a look at it? Thanks.
Flags: needinfo?(james)
Depends on: 1354578

We cannot actually do this switch without having chrome support for Actions (bug 1365886).

Depends on: 1365886
Assignee: hskupin → nobody
Status: ASSIGNED → NEW
Type: defect → enhancement
Priority: P1 → P2
You need to log in before you can comment on or make changes to this bug.