Jelajahi Sumber

LibWeb: Set timestamp for DOM Events

Shannon Booth 1 tahun lalu
induk
melakukan
ccd16c847e

+ 1 - 2
Userland/Libraries/LibWeb/DOM/Document.cpp

@@ -1661,10 +1661,9 @@ WebIDL::ExceptionOr<JS::NonnullGCPtr<Event>> Document::create_event(StringView i
     // NOTE: These are done in the if-chain above
     // 5. Let event be the result of creating an event given constructor.
     // 6. Initialize event’s type attribute to the empty string.
+    // 7. Initialize event’s timeStamp attribute to the result of calling current high resolution time with this’s relevant global object.
     // NOTE: This is handled by each constructor.
 
-    // FIXME: 7. Initialize event’s timeStamp attribute to the result of calling current high resolution time with this’s relevant global object.
-
     // 8. Initialize event’s isTrusted attribute to false.
     event->set_is_trusted(false);
 

+ 5 - 0
Userland/Libraries/LibWeb/DOM/Event.cpp

@@ -11,6 +11,7 @@
 #include <LibWeb/DOM/Event.h>
 #include <LibWeb/DOM/Node.h>
 #include <LibWeb/DOM/ShadowRoot.h>
+#include <LibWeb/HighResolutionTime/TimeOrigin.h>
 
 namespace Web::DOM {
 
@@ -26,13 +27,16 @@ WebIDL::ExceptionOr<JS::NonnullGCPtr<Event>> Event::construct_impl(JS::Realm& re
     return create(realm, event_name, event_init);
 }
 
+// https://dom.spec.whatwg.org/#inner-event-creation-steps
 Event::Event(JS::Realm& realm, FlyString const& type)
     : PlatformObject(realm)
     , m_type(type)
     , m_initialized(true)
+    , m_time_stamp(HighResolutionTime::current_high_resolution_time(HTML::relevant_global_object(*this)))
 {
 }
 
+// https://dom.spec.whatwg.org/#inner-event-creation-steps
 Event::Event(JS::Realm& realm, FlyString const& type, EventInit const& event_init)
     : PlatformObject(realm)
     , m_type(type)
@@ -40,6 +44,7 @@ Event::Event(JS::Realm& realm, FlyString const& type, EventInit const& event_ini
     , m_cancelable(event_init.cancelable)
     , m_composed(event_init.composed)
     , m_initialized(true)
+    , m_time_stamp(HighResolutionTime::current_high_resolution_time(HTML::relevant_global_object(*this)))
 {
 }