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 fdf6d454012e2353ad6299b342697162202dac5b..8d5ec6964bf1df7db807ed68f5360f1072f763e2 100644 |
--- a/third_party/WebKit/Source/core/timing/PerformanceBase.cpp |
+++ b/third_party/WebKit/Source/core/timing/PerformanceBase.cpp |
@@ -345,6 +345,7 @@ void PerformanceBase::addNavigationTiming(LocalFrame* frame) { |
const ResourceResponse& finalResponse = documentLoader->response(); |
ResourceTimingInfo* resourceTimingInfo = |
documentLoader->getMainResourceTimingInfo(); |
+ |
// Don't create navigation timing instance when resourceTimingInfo |
// is null, which could happen when it is an iframe navigation restored |
// from history, since its location may have been changed after initial |
@@ -361,6 +362,18 @@ void PerformanceBase::addNavigationTiming(LocalFrame* frame) { |
double lastRedirectEndTime = documentLoadTiming.redirectEnd(); |
double finishTime = documentLoadTiming.loadEventEnd(); |
+ SecurityOrigin* securityOrigin = nullptr; |
+ ExecutionContext* context = getExecutionContext(); |
+ if (context) |
+ securityOrigin = context->getSecurityOrigin(); |
+ if (!securityOrigin) |
+ return; |
panicker
2016/12/05 19:11:52
Factor code above into a helper method getSecurity
sunjian
2016/12/06 19:46:44
Done.
|
+ |
+ const Vector<ResourceResponse>& redirectChain = |
panicker
2016/12/05 19:11:52
no need for temp variable?
sunjian
2016/12/06 19:46:44
Done.
|
+ resourceTimingInfo->redirectChain(); |
+ bool allowRedirectDetails = allowsTimingRedirect(redirectChain, finalResponse, |
panicker
2016/12/05 19:11:52
let's add a unittest for allowTimingRedirect(..)
sunjian
2016/12/06 19:46:44
Done.
|
+ *securityOrigin, context); |
+ |
unsigned long long transferSize = resourceTimingInfo->transferSize(); |
unsigned long long encodedBodyLength = finalResponse.encodedBodyLength(); |
unsigned long long decodedBodyLength = finalResponse.decodedBodyLength(); |
@@ -378,7 +391,7 @@ void PerformanceBase::addNavigationTiming(LocalFrame* frame) { |
documentTiming ? documentTiming->domComplete() : 0, type, |
documentLoadTiming.redirectStart(), documentLoadTiming.redirectEnd(), |
documentLoadTiming.fetchStart(), documentLoadTiming.responseEnd(), |
- documentLoadTiming.hasCrossOriginRedirect(), |
+ allowRedirectDetails, |
documentLoadTiming.hasSameOriginAsPreviousDocument(), resourceLoadTiming, |
lastRedirectEndTime, finishTime, transferSize, encodedBodyLength, |
decodedBodyLength, didReuseConnection); |