Bug 1386495 - Add timeStamp to DOMEventMarkerPayload. r?mstange draft
authorKan-Ru Chen <kanru@kanru.info>
Thu, 03 Aug 2017 15:42:42 +0800
changeset 620184 a7c6bd497d4e2f6186d1e81a5f49368934108acc
parent 618757 44121dbcac6a9d3ff18ed087a09b3205e5a04db1
child 640623 d3ac0d4a01d3118f4f84d6700fbce18da35b8084
push id71957
push userbmo:kchen@mozilla.com
push dateThu, 03 Aug 2017 07:43:40 +0000
reviewersmstange
bugs1386495
milestone56.0a1
Bug 1386495 - Add timeStamp to DOMEventMarkerPayload. r?mstange MozReview-Commit-ID: B3b4laxMqQM
dom/events/EventListenerManager.cpp
tools/profiler/core/ProfilerMarkerPayload.cpp
tools/profiler/public/ProfilerMarkerPayload.h
--- a/dom/events/EventListenerManager.cpp
+++ b/dom/events/EventListenerManager.cpp
@@ -1301,16 +1301,17 @@ EventListenerManager::HandleEventInterna
               rv = HandleEventSubType(listener, *aDOMEvent, aCurrentTarget);
 
               TimeStamp endTime = TimeStamp::Now();
               uint16_t phase;
               (*aDOMEvent)->GetEventPhase(&phase);
               profiler_add_marker(
                 "DOMEvent",
                 MakeUnique<DOMEventMarkerPayload>(typeStr, phase,
+                                                  aEvent->mTimeStamp,
                                                   startTime, endTime));
             } else {
               rv = HandleEventSubType(listener, *aDOMEvent, aCurrentTarget);
             }
 
             if (NS_FAILED(rv)) {
               aEvent->mFlags.mExceptionWasRaised = true;
             }
--- a/tools/profiler/core/ProfilerMarkerPayload.cpp
+++ b/tools/profiler/core/ProfilerMarkerPayload.cpp
@@ -94,16 +94,20 @@ UserTimingMarkerPayload::StreamPayload(S
 }
 
 void
 DOMEventMarkerPayload::StreamPayload(SpliceableJSONWriter& aWriter,
                                      const TimeStamp& aProcessStartTime,
                                      UniqueStacks& aUniqueStacks)
 {
   StreamCommonProps("DOMEvent", aWriter, aProcessStartTime, aUniqueStacks);
+  if (!mTimeStamp.IsNull()) {
+    aWriter.DoubleProperty("timeStamp",
+                           (mTimeStamp - aProcessStartTime).ToMilliseconds());
+  }
   aWriter.StringProperty("eventType", NS_ConvertUTF16toUTF8(mEventType).get());
   aWriter.IntProperty("phase", mPhase);
 }
 
 void
 LayerTranslationMarkerPayload::StreamPayload(SpliceableJSONWriter& aWriter,
                                              const TimeStamp& aProcessStartTime,
                                              UniqueStacks& aUniqueStacks)
--- a/tools/profiler/public/ProfilerMarkerPayload.h
+++ b/tools/profiler/public/ProfilerMarkerPayload.h
@@ -124,26 +124,29 @@ private:
   const char* mSource;
   mozilla::UniqueFreePtr<char> mFilename;
 };
 
 class DOMEventMarkerPayload : public ProfilerMarkerPayload
 {
 public:
   DOMEventMarkerPayload(const nsAString& aEventType, uint16_t aPhase,
+                        const mozilla::TimeStamp& aTimeStamp,
                         const mozilla::TimeStamp& aStartTime,
                         const mozilla::TimeStamp& aEndTime)
     : ProfilerMarkerPayload(aStartTime, aEndTime)
+    , mTimeStamp(aTimeStamp)
     , mEventType(aEventType)
     , mPhase(aPhase)
   {}
 
   DECL_STREAM_PAYLOAD
 
 private:
+  mozilla::TimeStamp mTimeStamp;
   nsString mEventType;
   uint16_t mPhase;
 };
 
 class UserTimingMarkerPayload : public ProfilerMarkerPayload
 {
 public:
   UserTimingMarkerPayload(const nsAString& aName,