mirror of
https://github.com/servo/servo.git
synced 2025-08-15 10:25:32 +01:00
script: Implement getModifierState
for mouse event (#38535)
Implement missing idl function `getModifierState` for mouse event. The
implementation is exactly the same as in keyboard event
https://w3c.github.io/uievents/#dom-keyboardevent-getmodifierstate.
6651f37c05/components/script/dom/keyboardevent.rs (L267-L283)
Testing: Fix
`./tests/wpt/tests/infrastructure/testdriver/actions/actionsWithKeyPressed.html`
---------
Signed-off-by: PotatoCP <Kenzie.Raditya.Tirtarahardja@huawei.com>
This commit is contained in:
parent
2e2bfc6067
commit
c0d884ddb2
3 changed files with 20 additions and 16 deletions
|
@ -527,4 +527,23 @@ impl MouseEventMethods<crate::DomTypeHolder> for MouseEvent {
|
||||||
fn IsTrusted(&self) -> bool {
|
fn IsTrusted(&self) -> bool {
|
||||||
self.uievent.IsTrusted()
|
self.uievent.IsTrusted()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <https://w3c.github.io/uievents/#dom-mouseevent-getmodifierstate>
|
||||||
|
fn GetModifierState(&self, key_arg: DOMString) -> bool {
|
||||||
|
self.modifiers.get().contains(match &*key_arg {
|
||||||
|
"Alt" => Modifiers::ALT,
|
||||||
|
"AltGraph" => Modifiers::ALT_GRAPH,
|
||||||
|
"CapsLock" => Modifiers::CAPS_LOCK,
|
||||||
|
"Control" => Modifiers::CONTROL,
|
||||||
|
"Fn" => Modifiers::FN,
|
||||||
|
"FnLock" => Modifiers::FN_LOCK,
|
||||||
|
"Meta" => Modifiers::META,
|
||||||
|
"NumLock" => Modifiers::NUM_LOCK,
|
||||||
|
"ScrollLock" => Modifiers::SCROLL_LOCK,
|
||||||
|
"Shift" => Modifiers::SHIFT,
|
||||||
|
"Symbol" => Modifiers::SYMBOL,
|
||||||
|
"SymbolLock" => Modifiers::SYMBOL_LOCK,
|
||||||
|
_ => return false,
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,7 @@ interface MouseEvent : UIEvent {
|
||||||
readonly attribute EventTarget? relatedTarget;
|
readonly attribute EventTarget? relatedTarget;
|
||||||
// Introduced in DOM Level 3
|
// Introduced in DOM Level 3
|
||||||
readonly attribute unsigned short buttons;
|
readonly attribute unsigned short buttons;
|
||||||
//boolean getModifierState (DOMString keyArg);
|
boolean getModifierState (DOMString keyArg);
|
||||||
|
|
||||||
[Pref="dom_mouse_event_which_enabled"]
|
[Pref="dom_mouse_event_which_enabled"]
|
||||||
readonly attribute long which;
|
readonly attribute long which;
|
||||||
|
|
15
tests/wpt/meta/uievents/idlharness.window.js.ini
vendored
15
tests/wpt/meta/uievents/idlharness.window.js.ini
vendored
|
@ -11,24 +11,9 @@
|
||||||
[UIEvent interface: new FocusEvent("event") must inherit property "which" with the proper type]
|
[UIEvent interface: new FocusEvent("event") must inherit property "which" with the proper type]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[MouseEvent interface: operation getModifierState(DOMString)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[MouseEvent interface: operation initMouseEvent(DOMString, optional boolean, optional boolean, optional Window?, optional long, optional long, optional long, optional long, optional long, optional boolean, optional boolean, optional boolean, optional boolean, optional short, optional EventTarget?)]
|
[MouseEvent interface: operation initMouseEvent(DOMString, optional boolean, optional boolean, optional Window?, optional long, optional long, optional long, optional long, optional long, optional boolean, optional boolean, optional boolean, optional boolean, optional short, optional EventTarget?)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[MouseEvent interface: new MouseEvent("event") must inherit property "getModifierState(DOMString)" with the proper type]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[MouseEvent interface: calling getModifierState(DOMString) on new MouseEvent("event") with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[MouseEvent interface: new WheelEvent("event") must inherit property "getModifierState(DOMString)" with the proper type]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[MouseEvent interface: calling getModifierState(DOMString) on new WheelEvent("event") with too few arguments must throw TypeError]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[InputEvent interface: attribute inputType]
|
[InputEvent interface: attribute inputType]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue