Bug 1386495 - Add timeStamp to DOMEventMarkerPayload. r?mstange
MozReview-Commit-ID: B3b4laxMqQM
--- 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,