Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(77)

Unified Diff: third_party/WebKit/Source/core/timing/PerformanceBase.cpp

Issue 2550883003: nav timing 2 redirect allow opt-in (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/timing/PerformanceNavigationTiming.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/timing/PerformanceNavigationTiming.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698