Browse Source

LibWeb: Mark abort event as trusted before dispatching it

This matches the behavior of Firefox and Chrome.
Tim Ledbetter 1 year ago
parent
commit
130f28cf50

+ 1 - 0
Tests/LibWeb/Text/expected/abortsignal-timeout.txt

@@ -1,2 +1,3 @@
 Time passed before abort event fired is at least 10 milliseconds: true
 Reason type: TimeoutError
+onabort event isTrusted: true

+ 2 - 1
Tests/LibWeb/Text/input/abortsignal-timeout.html

@@ -4,11 +4,12 @@
         const timeout_milliseconds = 10;
         const test_start_time = performance.now();
         const signal = AbortSignal.timeout(timeout_milliseconds);
-        signal.onabort = () => {
+        signal.onabort = (event) => {
             const abort_event_time = performance.now();
             const time_taken_milliseconds = abort_event_time - test_start_time;
             println(`Time passed before abort event fired is at least ${timeout_milliseconds} milliseconds: ${time_taken_milliseconds >= timeout_milliseconds}`);
             println(`Reason type: ${signal.reason.name}`);
+            println(`onabort event isTrusted: ${event.isTrusted}`);
             done();
         };
     });

+ 3 - 1
Userland/Libraries/LibWeb/DOM/AbortSignal.cpp

@@ -64,7 +64,9 @@ void AbortSignal::signal_abort(JS::Value reason)
     m_abort_algorithms.clear();
 
     // 5. Fire an event named abort at signal.
-    dispatch_event(Event::create(realm(), HTML::EventNames::abort));
+    auto abort_event = Event::create(realm(), HTML::EventNames::abort);
+    abort_event->set_is_trusted(true);
+    dispatch_event(abort_event);
 }
 
 void AbortSignal::set_onabort(WebIDL::CallbackType* event_handler)