Title: [281492] trunk
Revision
281492
Author
[email protected]
Date
2021-08-24 05:57:41 -0700 (Tue, 24 Aug 2021)

Log Message

Move cancel dialog task to `defaultKeyboardEventHandler`.
https://bugs.webkit.org/show_bug.cgi?id=228845

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Updated test expectations.

* web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-keydown-preventDefault-expected.txt:

Source/WebCore:

Test: imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-keydown-preventDefault.html

Allows preventDefault() on keydown event to prevent cancelation.

Also rename HTMLDialogElement::cancel to HTMLDialogElement::queueCancelTask to reflect better what the function does.

* html/HTMLDialogElement.cpp:
(WebCore::HTMLDialogElement::queueCancelTask):
(WebCore::HTMLDialogElement::cancel): Deleted.
* html/HTMLDialogElement.h:
* page/EventHandler.cpp:
(WebCore::EventHandler::internalKeyEvent):
(WebCore::EventHandler::defaultKeyboardEventHandler):

Modified Paths

Diff

Modified: trunk/LayoutTests/imported/w3c/ChangeLog (281491 => 281492)


--- trunk/LayoutTests/imported/w3c/ChangeLog	2021-08-24 10:07:43 UTC (rev 281491)
+++ trunk/LayoutTests/imported/w3c/ChangeLog	2021-08-24 12:57:41 UTC (rev 281492)
@@ -1,5 +1,16 @@
 2021-08-24  Tim Nguyen  <[email protected]>
 
+        Move cancel dialog task to `defaultKeyboardEventHandler`.
+        https://bugs.webkit.org/show_bug.cgi?id=228845
+
+        Reviewed by Antti Koivisto.
+
+        Updated test expectations.
+
+        * web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-keydown-preventDefault-expected.txt:
+
+2021-08-24  Tim Nguyen  <[email protected]>
+
         Implement inert attribute behind feature flag
         https://bugs.webkit.org/show_bug.cgi?id=165279
 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-keydown-preventDefault-expected.txt (281491 => 281492)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-keydown-preventDefault-expected.txt	2021-08-24 10:07:43 UTC (rev 281491)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-keydown-preventDefault-expected.txt	2021-08-24 12:57:41 UTC (rev 281492)
@@ -1,7 +1,7 @@
 Test cancel event with preventDefault on keydown event for dialog element
 
+Hello World
 
-Harness Error (TIMEOUT), message = null
 
-NOTRUN Test cancel event with preventDefault on keydown event for dialog element
+PASS Test cancel event with preventDefault on keydown event for dialog element
 

Modified: trunk/Source/WebCore/ChangeLog (281491 => 281492)


--- trunk/Source/WebCore/ChangeLog	2021-08-24 10:07:43 UTC (rev 281491)
+++ trunk/Source/WebCore/ChangeLog	2021-08-24 12:57:41 UTC (rev 281492)
@@ -1,3 +1,24 @@
+2021-08-24  Tim Nguyen  <[email protected]>
+
+        Move cancel dialog task to `defaultKeyboardEventHandler`.
+        https://bugs.webkit.org/show_bug.cgi?id=228845
+
+        Reviewed by Antti Koivisto.
+
+        Test: imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-keydown-preventDefault.html
+
+        Allows preventDefault() on keydown event to prevent cancelation.
+
+        Also rename HTMLDialogElement::cancel to HTMLDialogElement::queueCancelTask to reflect better what the function does.
+
+        * html/HTMLDialogElement.cpp:
+        (WebCore::HTMLDialogElement::queueCancelTask):
+        (WebCore::HTMLDialogElement::cancel): Deleted.
+        * html/HTMLDialogElement.h:
+        * page/EventHandler.cpp:
+        (WebCore::EventHandler::internalKeyEvent):
+        (WebCore::EventHandler::defaultKeyboardEventHandler):
+
 2021-08-24  Philippe Normand  <[email protected]>
 
         REGRESSION(r281305) [GStreamer] fast/mediastream/getDisplayMedia-frame-rate.html timeouts

Modified: trunk/Source/WebCore/html/HTMLDialogElement.cpp (281491 => 281492)


--- trunk/Source/WebCore/html/HTMLDialogElement.cpp	2021-08-24 10:07:43 UTC (rev 281491)
+++ trunk/Source/WebCore/html/HTMLDialogElement.cpp	2021-08-24 12:57:41 UTC (rev 281492)
@@ -95,7 +95,7 @@
     });
 }
 
-void HTMLDialogElement::cancel()
+void HTMLDialogElement::queueCancelTask()
 {
     document().eventLoop().queueTask(TaskSource::UserInteraction, [protectedThis = GCReachableRef { *this }] {
         auto cancelEvent = Event::create(eventNames().cancelEvent, Event::CanBubble::No, Event::IsCancelable::Yes);

Modified: trunk/Source/WebCore/html/HTMLDialogElement.h (281491 => 281492)


--- trunk/Source/WebCore/html/HTMLDialogElement.h	2021-08-24 10:07:43 UTC (rev 281491)
+++ trunk/Source/WebCore/html/HTMLDialogElement.h	2021-08-24 12:57:41 UTC (rev 281492)
@@ -43,10 +43,10 @@
     ExceptionOr<void> showModal();
     void close(const String&);
 
-    void cancel();
-
     bool isModal() const { return m_isModal; };
 
+    void queueCancelTask();
+
 private:
     HTMLDialogElement(const QualifiedName&, Document&);
 

Modified: trunk/Source/WebCore/page/EventHandler.cpp (281491 => 281492)


--- trunk/Source/WebCore/page/EventHandler.cpp	2021-08-24 10:07:43 UTC (rev 281491)
+++ trunk/Source/WebCore/page/EventHandler.cpp	2021-08-24 12:57:41 UTC (rev 281492)
@@ -3520,13 +3520,6 @@
         }
     }
 
-    if (auto* activeModalDialog = m_frame.document()->activeModalDialog()) {
-        if (initialKeyEvent.type() == PlatformEvent::KeyDown && initialKeyEvent.windowsVirtualKeyCode() == VK_ESCAPE) {
-            activeModalDialog->cancel();
-            return true;
-        }
-    }
-
 #if ENABLE(FULLSCREEN_API)
     if (m_frame.document()->fullscreenManager().isFullscreen()) {
         if (initialKeyEvent.type() == PlatformEvent::KeyDown && initialKeyEvent.windowsVirtualKeyCode() == VK_ESCAPE) {
@@ -3807,7 +3800,10 @@
         m_frame.editor().handleKeyboardEvent(event);
         if (event.defaultHandled())
             return;
-        if (event.keyIdentifier() == "U+0009")
+        if (event.key() == "Escape") {
+            if (auto* activeModalDialog = m_frame.document()->activeModalDialog())
+                activeModalDialog->queueCancelTask();
+        } else if (event.keyIdentifier() == "U+0009")
             defaultTabEventHandler(event);
         else if (event.keyIdentifier() == "U+0008")
             defaultBackspaceEventHandler(event);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to