Forráskód Böngészése

LibWeb: Implement user navigation involvement helper for MouseEvents

Andrew Kaster 1 éve
szülő
commit
567bb0f6a2

+ 15 - 0
Userland/Libraries/LibWeb/HTML/Navigable.cpp

@@ -8,6 +8,7 @@
 #include <LibWeb/Crypto/Crypto.h>
 #include <LibWeb/DOM/Document.h>
 #include <LibWeb/DOM/DocumentLoading.h>
+#include <LibWeb/DOM/Event.h>
 #include <LibWeb/Fetch/Fetching/Fetching.h>
 #include <LibWeb/Fetch/Infrastructure/FetchAlgorithms.h>
 #include <LibWeb/Fetch/Infrastructure/FetchController.h>
@@ -2099,4 +2100,18 @@ void Navigable::paint(Painting::RecordingPainter& recording_painter, PaintConfig
     }
 }
 
+// https://html.spec.whatwg.org/multipage/browsing-the-web.html#event-uni
+UserNavigationInvolvement user_navigation_involvement(DOM::Event const& event)
+{
+    // For convenience at certain call sites, the user navigation involvement for an Event event is defined as follows:
+
+    // 1. Assert: this algorithm is being called as part of an activation behavior definition.
+    // 2. Assert: event's type is "click".
+    VERIFY(event.type() == "click"_fly_string);
+
+    // 3. If event's isTrusted is initialized to true, then return "activation".
+    // 4. Return "none".
+    return event.is_trusted() ? UserNavigationInvolvement::Activation : UserNavigationInvolvement::None;
+}
+
 }

+ 1 - 0
Userland/Libraries/LibWeb/HTML/Navigable.h

@@ -227,5 +227,6 @@ HashTable<Navigable*>& all_navigables();
 bool navigation_must_be_a_replace(AK::URL const& url, DOM::Document const& document);
 void finalize_a_cross_document_navigation(JS::NonnullGCPtr<Navigable>, HistoryHandlingBehavior, JS::NonnullGCPtr<SessionHistoryEntry>);
 void perform_url_and_history_update_steps(DOM::Document& document, AK::URL new_url, Optional<SerializationRecord> = {}, HistoryHandlingBehavior history_handling = HistoryHandlingBehavior::Reload);
+UserNavigationInvolvement user_navigation_involvement(DOM::Event const&);
 
 }