Bug 1425462 Address performance.timing.navigationStart
MozReview-Commit-ID: LH7G4BrKj86
--- a/dom/performance/PerformanceTiming.h
+++ b/dom/performance/PerformanceTiming.h
@@ -117,17 +117,17 @@ public:
// PerformanceNavigation WebIDL methods
DOMTimeMilliSec NavigationStart() const
{
if (!nsContentUtils::IsPerformanceTimingEnabled() ||
nsContentUtils::ShouldResistFingerprinting()) {
return 0;
}
return nsRFPService::ReduceTimePrecisionAsMSecs(
- GetDOMTiming()->GetNavigationStart());
+ GetDOMTiming()->GetNavigationStart(), 0, false);
}
DOMTimeMilliSec UnloadEventStart()
{
if (!nsContentUtils::IsPerformanceTimingEnabled() ||
nsContentUtils::ShouldResistFingerprinting()) {
return 0;
}
--- a/toolkit/components/resistfingerprinting/nsRFPService.cpp
+++ b/toolkit/components/resistfingerprinting/nsRFPService.cpp
@@ -151,48 +151,49 @@ nsRFPService::IsTimerPrecisionReductionE
#define INIT_STACKTRACE() \
void* callstack[4]; \
int frames = backtrace(callstack, 4); \
char** thisCaller = backtrace_symbols(callstack, frames);
#define CALLER(caller) \
((strstr(caller[1], "Performance3Now") != NULL) ? "performance.now()" : \
((strstr(caller[1], "Performance10TimeOrigin") != NULL) ? "performance.timeOrigin)" : \
+ ((strstr(caller[1], "PerformanceTiming15NavigationStartEv") != NULL) ? "performance.timing.navigationStart" : \
((strstr(caller[1], "dom5Event13TimeStampImplEv") != NULL) ? "Event.timeStamp" : \
((strstr(caller[3], "Animation21DispatchPlaybackEvent") != NULL && strstr(caller[2], "AnimationTimeline22GetCurrentTimeAsDouble") != NULL) ? "AnimationTimeline::GetCurrentTimeAsDouble" : \
((strstr(caller[3], "Animation21DispatchPlaybackEvent") != NULL && strstr(caller[2], "Animation22GetCurrentTimeAsDouble") != NULL) ? "Animation::DispatchPlaybackEvent() -> Animation::GetCurrentTimeAsDouble()" : \
- "")))))
+ ""))))))
// I think these circumstances are okay
#define CALLER_CAN_GO_BACKWARDS() \
((strcmp("performance.now()", CALLER(lastCaller)) == 0 && \
strcmp("AnimationTimeline::GetCurrentTimeAsDouble", CALLER(thisCaller)) == 0) ? true : false \
)
#define LOG_TIMESTAMP(aTime, timeOrigin) \
MOZ_LOG(gResistFingerprintingLog, LogLevel::Debug, \
("Parent: %d Combined Timestamp: %f Raw: %f Caller: %s", XRE_IsParentProcess(), (aTime + timeOrigin), aTime, CALLER(thisCaller))); \
- if (canJitter && timeOrigin != 0) { \
+ if (timeOrigin != 0) { \
if (aTime + timeOrigin < lastSeenTimestamp && !CALLER_CAN_GO_BACKWARDS()) { \
MOZ_LOG(gResistFingerprintingLog, LogLevel::Debug, \
("===============> TIME WENT BACKWARDS!! Last: %f This: %f", lastSeenTimestamp, (aTime + timeOrigin))); \
} else if (aTime + timeOrigin < lastSeenTimestamp) { \
MOZ_LOG(gResistFingerprintingLog, LogLevel::Debug, \
(" > Time went backwards, but we think its okay. Last: %f This: %f", lastSeenTimestamp, (aTime + timeOrigin))); \
} \
lastSeenTimestamp = (aTime + timeOrigin); \
}
#define PRINT_STACKTRACE() \
if (strcmp(CALLER(thisCaller), "") == 0) { \
for (int i = 0; i < frames; ++i) { \
MOZ_LOG(gResistFingerprintingLog, LogLevel::Debug, (" %s\n", thisCaller[i])); \
} \
} \
- if (canJitter && timeOrigin != 0) { \
+ if (timeOrigin != 0) { \
free(lastCaller); \
lastCaller = thisCaller; \
}
static double lastSeenTimestamp = 0;
static char** lastCaller = NULL;
#endif