| Index: third_party/WebKit/Source/core/timing/PerformanceBase.cpp
|
| diff --git a/third_party/WebKit/Source/core/timing/PerformanceBase.cpp b/third_party/WebKit/Source/core/timing/PerformanceBase.cpp
|
| index 6b4549c0f17b88f333c8f331616bcea357620c66..bd4fdc9ea7ce6af551bc02585e57cf5dbc2a0123 100644
|
| --- a/third_party/WebKit/Source/core/timing/PerformanceBase.cpp
|
| +++ b/third_party/WebKit/Source/core/timing/PerformanceBase.cpp
|
| @@ -39,7 +39,6 @@
|
| #include "core/loader/DocumentLoadTiming.h"
|
| #include "core/loader/DocumentLoader.h"
|
| #include "core/timing/PerformanceLongTaskTiming.h"
|
| -#include "core/timing/PerformanceNavigationTiming.h"
|
| #include "core/timing/PerformanceObserver.h"
|
| #include "core/timing/PerformanceResourceTiming.h"
|
| #include "core/timing/PerformanceUserTiming.h"
|
| @@ -68,6 +67,27 @@ PerformanceBase::PerformanceBase(double timeOrigin)
|
|
|
| PerformanceBase::~PerformanceBase() {}
|
|
|
| +PerformanceNavigationTiming::NavigationType PerformanceBase::getNavigationType(
|
| + NavigationType type,
|
| + const Document* document) {
|
| + if (document &&
|
| + document->pageVisibilityState() == PageVisibilityStatePrerender) {
|
| + return PerformanceNavigationTiming::NavigationType::Prerender;
|
| + }
|
| + switch (type) {
|
| + case NavigationTypeReload:
|
| + return PerformanceNavigationTiming::NavigationType::Reload;
|
| + case NavigationTypeBackForward:
|
| + return PerformanceNavigationTiming::NavigationType::BackForward;
|
| + case NavigationTypeLinkClicked:
|
| + case NavigationTypeFormSubmitted:
|
| + case NavigationTypeFormResubmitted:
|
| + case NavigationTypeOther:
|
| + return PerformanceNavigationTiming::NavigationType::Navigate;
|
| + }
|
| + NOTREACHED();
|
| +}
|
| +
|
| const AtomicString& PerformanceBase::interfaceName() const {
|
| return EventTargetNames::Performance;
|
| }
|
| @@ -336,6 +356,8 @@ void PerformanceBase::addNavigationTiming(LocalFrame* frame) {
|
| unsigned long long encodedBodyLength = finalResponse.encodedBodyLength();
|
| unsigned long long decodedBodyLength = finalResponse.decodedBodyLength();
|
| bool didReuseConnection = finalResponse.connectionReused();
|
| + PerformanceNavigationTiming::NavigationType type =
|
| + getNavigationType(documentLoader->getNavigationType(), frame->document());
|
|
|
| m_navigationTiming = new PerformanceNavigationTiming(
|
| timeOrigin(), documentLoadTiming.unloadEventStart(),
|
| @@ -344,10 +366,9 @@ void PerformanceBase::addNavigationTiming(LocalFrame* frame) {
|
| documentTiming ? documentTiming->domInteractive() : 0,
|
| documentTiming ? documentTiming->domContentLoadedEventStart() : 0,
|
| documentTiming ? documentTiming->domContentLoadedEventEnd() : 0,
|
| - documentTiming ? documentTiming->domComplete() : 0,
|
| - documentLoader->getNavigationType(), documentLoadTiming.redirectStart(),
|
| - documentLoadTiming.redirectEnd(), documentLoadTiming.fetchStart(),
|
| - documentLoadTiming.responseEnd(),
|
| + documentTiming ? documentTiming->domComplete() : 0, type,
|
| + documentLoadTiming.redirectStart(), documentLoadTiming.redirectEnd(),
|
| + documentLoadTiming.fetchStart(), documentLoadTiming.responseEnd(),
|
| documentLoadTiming.hasCrossOriginRedirect(),
|
| documentLoadTiming.hasSameOriginAsPreviousDocument(), resourceLoadTiming,
|
| lastRedirectEndTime, finishTime, transferSize, encodedBodyLength,
|
|
|