Prechádzať zdrojové kódy

LibWeb: Add a testing helper to send a single named key to an element

Unlike internals.sendText(), this allows sending keys like the escape
key.
Timothy Flynn 11 mesiacov pred
rodič
commit
53f775afb9

+ 8 - 0
Userland/Libraries/LibWeb/Internals/Internals.cpp

@@ -72,6 +72,14 @@ void Internals::send_text(HTML::HTMLElement& target, String const& text)
         page.handle_keydown(UIEvents::code_point_to_key_code(code_point), 0, code_point);
 }
 
+void Internals::send_key(HTML::HTMLElement& target, String const& key_name)
+{
+    auto key_code = UIEvents::key_code_from_string(key_name);
+    target.focus();
+
+    global_object().browsing_context()->page().handle_keydown(key_code, 0, 0);
+}
+
 void Internals::commit_text()
 {
     global_object().browsing_context()->page().handle_keydown(UIEvents::Key_Return, 0, 0);

+ 1 - 0
Userland/Libraries/LibWeb/Internals/Internals.h

@@ -25,6 +25,7 @@ public:
     JS::Object* hit_test(double x, double y);
 
     void send_text(HTML::HTMLElement&, String const&);
+    void send_key(HTML::HTMLElement&, String const&);
     void commit_text();
 
     void click(double x, double y);

+ 1 - 0
Userland/Libraries/LibWeb/Internals/Internals.idl

@@ -10,6 +10,7 @@ interface Internals {
     object hitTest(double x, double y);
 
     undefined sendText(HTMLElement target, DOMString text);
+    undefined sendKey(HTMLElement target, DOMString keyName);
     undefined commitText();
 
     undefined click(double x, double y);