From cb38883dfa6b6499ff20e30ca4e39d0881bd27f0 Mon Sep 17 00:00:00 2001 From: Sean Feng Date: Fri, 18 Mar 2022 16:08:12 +0000 Subject: [PATCH] Bug 1751678 - Make FetchStart uses StarTime when TAO check fails for PerformanceResourceTiming r=smaug Given the recent Fetch spec updates, Step 8.1 in https://fetch.spec.whatwg.org/#finalize-and-report-timing specifies that start time(StartTime) and post-redirect start time(FetchStart) should be start time when TAO check fails. Differential Revision: https://phabricator.services.mozilla.com/D141366 --- dom/performance/PerformanceResourceTiming.cpp | 7 +++++++ dom/performance/PerformanceResourceTiming.h | 4 +--- .../cross-origin-start-end-time-with-redirects.html.ini | 4 ---- .../object-not-found-after-cross-origin-redirect.html.ini | 7 ------- 4 files changed, 8 insertions(+), 14 deletions(-) delete mode 100644 testing/web-platform/meta/resource-timing/cross-origin-start-end-time-with-redirects.html.ini delete mode 100644 testing/web-platform/meta/resource-timing/object-not-found-after-cross-origin-redirect.html.ini diff --git a/dom/performance/PerformanceResourceTiming.cpp b/dom/performance/PerformanceResourceTiming.cpp index a899c4b21a33..40a0b773821a 100644 --- a/dom/performance/PerformanceResourceTiming.cpp +++ b/dom/performance/PerformanceResourceTiming.cpp @@ -41,6 +41,13 @@ PerformanceResourceTiming::PerformanceResourceTiming( PerformanceResourceTiming::~PerformanceResourceTiming() = default; +DOMHighResTimeStamp PerformanceResourceTiming::FetchStart() const { + if (mTimingData->TimingAllowed()) { + return mTimingData->FetchStartHighRes(mPerformance); + } + return StartTime(); +} + DOMHighResTimeStamp PerformanceResourceTiming::StartTime() const { // Force the start time to be the earliest of: // - RedirectStart diff --git a/dom/performance/PerformanceResourceTiming.h b/dom/performance/PerformanceResourceTiming.h index ad9d0e494363..b2829507acab 100644 --- a/dom/performance/PerformanceResourceTiming.h +++ b/dom/performance/PerformanceResourceTiming.h @@ -56,9 +56,7 @@ class PerformanceResourceTiming : public PerformanceEntry { return mTimingData->WorkerStartHighRes(mPerformance); } - DOMHighResTimeStamp FetchStart() const { - return mTimingData->FetchStartHighRes(mPerformance); - } + DOMHighResTimeStamp FetchStart() const; DOMHighResTimeStamp RedirectStart(Maybe& aSubjectPrincipal, bool aEnsureSameOriginAndIgnoreTAO) const { diff --git a/testing/web-platform/meta/resource-timing/cross-origin-start-end-time-with-redirects.html.ini b/testing/web-platform/meta/resource-timing/cross-origin-start-end-time-with-redirects.html.ini deleted file mode 100644 index 3444477127d7..000000000000 --- a/testing/web-platform/meta/resource-timing/cross-origin-start-end-time-with-redirects.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[cross-origin-start-end-time-with-redirects.html] - [Verify that cross-origin resources don't implicitly expose their redirect timings] - expected: FAIL - diff --git a/testing/web-platform/meta/resource-timing/object-not-found-after-cross-origin-redirect.html.ini b/testing/web-platform/meta/resource-timing/object-not-found-after-cross-origin-redirect.html.ini deleted file mode 100644 index 7e4f53232f35..000000000000 --- a/testing/web-platform/meta/resource-timing/object-not-found-after-cross-origin-redirect.html.ini +++ /dev/null @@ -1,7 +0,0 @@ -[object-not-found-after-cross-origin-redirect.html] - expected: - if (os == "win") and fission: OK - if os == "mac": OK - [OK, ERROR] - [Verify that cross-origin object resources don't implicitly expose their redirect timings] - expected: FAIL