diff --git a/dom/performance/Performance.cpp b/dom/performance/Performance.cpp index f3523293a4..bf36707be8 100755 --- a/dom/performance/Performance.cpp +++ b/dom/performance/Performance.cpp @@ -300,6 +300,28 @@ Performance::ClearMarks(const Optional& aName) ClearUserEntries(aName, NS_LITERAL_STRING("mark")); } +// To be removed once bug 1124165 lands +bool +Performance::IsPerformanceTimingAttribute(const nsAString& aName) const +{ + // Note that toJSON is added to this list due to bug 1047848 + static const char* attributes[] = + {"navigationStart", "unloadEventStart", "unloadEventEnd", "redirectStart", + "redirectEnd", "fetchStart", "domainLookupStart", "domainLookupEnd", + "connectStart", "secureConnectionStart", "connectEnd", "requestStart", "responseStart", + "responseEnd", "domLoading", "domInteractive", + "domContentLoadedEventStart", "domContentLoadedEventEnd", "domComplete", + "loadEventStart", "loadEventEnd", nullptr}; + + for (uint32_t i = 0; attributes[i]; ++i) { + if (aName.EqualsASCII(attributes[i])) { + return true; + } + } + + return false; +} + DOMHighResTimeStamp Performance::ConvertMarkToTimestampWithString(const nsAString& aName, ErrorResult& aRv) diff --git a/dom/performance/Performance.h b/dom/performance/Performance.h index 6bdd42a8e8..75d164c214 100644 --- a/dom/performance/Performance.h +++ b/dom/performance/Performance.h @@ -117,7 +117,9 @@ public: virtual nsITimedChannel* GetChannel() const = 0; - virtual bool IsPerformanceTimingAttribute(const nsAString& aName) + bool IsPerformanceTimingAttribute(const nsAString& aName) const; + + virtual bool IsGlobalObjectWindow() const { return false; } diff --git a/dom/performance/PerformanceMainThread.cpp b/dom/performance/PerformanceMainThread.cpp index acb69ea358..a4dbf88799 100644 --- a/dom/performance/PerformanceMainThread.cpp +++ b/dom/performance/PerformanceMainThread.cpp @@ -177,28 +177,6 @@ PerformanceMainThread::AddEntry(nsIHttpChannel* channel, } } -// To be removed once bug 1124165 lands -bool -PerformanceMainThread::IsPerformanceTimingAttribute(const nsAString& aName) -{ - // Note that toJSON is added to this list due to bug 1047848 - static const char* attributes[] = - {"navigationStart", "unloadEventStart", "unloadEventEnd", "redirectStart", - "redirectEnd", "fetchStart", "domainLookupStart", "domainLookupEnd", - "connectStart", "secureConnectionStart", "connectEnd", "requestStart", "responseStart", - "responseEnd", "domLoading", "domInteractive", - "domContentLoadedEventStart", "domContentLoadedEventEnd", "domComplete", - "loadEventStart", "loadEventEnd", nullptr}; - - for (uint32_t i = 0; attributes[i]; ++i) { - if (aName.EqualsASCII(attributes[i])) { - return true; - } - } - - return false; -} - DOMHighResTimeStamp PerformanceMainThread::GetPerformanceTimingFromString(const nsAString& aProperty) { diff --git a/dom/performance/PerformanceMainThread.h b/dom/performance/PerformanceMainThread.h index 35fd4ab0e2..702483e9de 100644 --- a/dom/performance/PerformanceMainThread.h +++ b/dom/performance/PerformanceMainThread.h @@ -57,6 +57,11 @@ public: const Optional& aEntryType, nsTArray>& aRetval) override; + bool IsGlobalObjectWindow() const override + { + return true; + } + protected: ~PerformanceMainThread(); @@ -67,8 +72,6 @@ protected: void InsertUserEntry(PerformanceEntry* aEntry) override; - bool IsPerformanceTimingAttribute(const nsAString& aName) override; - DOMHighResTimeStamp GetPerformanceTimingFromString(const nsAString& aTimingName) override; diff --git a/dom/performance/PerformanceMark.cpp b/dom/performance/PerformanceMark.cpp index cd6d1bb39d..bf8d930c5d 100644 --- a/dom/performance/PerformanceMark.cpp +++ b/dom/performance/PerformanceMark.cpp @@ -52,7 +52,8 @@ already_AddRefed PerformanceMark::Constructor( return nullptr; } - if (performance->IsPerformanceTimingAttribute(aMarkName)) { + if (performance->IsGlobalObjectWindow() && + performance->IsPerformanceTimingAttribute(aMarkName)) { aRv.ThrowTypeError(); return nullptr; }