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

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

Issue 2550883003: nav timing 2 redirect allow opt-in (Closed)
Patch Set: sync 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
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 f4f2607af01ce25251ea6010c011eae78acd4232..2b8ea03f51329215022d97cac1c29240c8a2927a 100644
--- a/third_party/WebKit/Source/core/timing/PerformanceBase.cpp
+++ b/third_party/WebKit/Source/core/timing/PerformanceBase.cpp
@@ -50,6 +50,16 @@
namespace blink {
+namespace {
+
+SecurityOrigin* getSecurityOrigin(ExecutionContext* context) {
+ if (context)
+ return context->getSecurityOrigin();
+ return nullptr;
+}
+
+} // namespace
+
using PerformanceObserverVector = HeapVector<Member<PerformanceObserver>>;
static const size_t defaultResourceTimingBufferSize = 150;
@@ -225,7 +235,7 @@ void PerformanceBase::setFrameTimingBufferSize(unsigned size) {
dispatchEvent(Event::create(EventTypeNames::frametimingbufferfull));
}
-static bool passesTimingAllowCheck(
+bool PerformanceBase::passesTimingAllowCheck(
const ResourceResponse& response,
const SecurityOrigin& initiatorSecurityOrigin,
const AtomicString& originalTimingAllowOrigin,
@@ -263,10 +273,11 @@ static bool passesTimingAllowCheck(
return false;
}
-static bool allowsTimingRedirect(const Vector<ResourceResponse>& redirectChain,
- const ResourceResponse& finalResponse,
- const SecurityOrigin& initiatorSecurityOrigin,
- ExecutionContext* context) {
+bool PerformanceBase::allowsTimingRedirect(
+ const Vector<ResourceResponse>& redirectChain,
+ const ResourceResponse& finalResponse,
+ const SecurityOrigin& initiatorSecurityOrigin,
+ ExecutionContext* context) {
if (!passesTimingAllowCheck(finalResponse, initiatorSecurityOrigin,
AtomicString(), context))
return false;
@@ -284,10 +295,8 @@ void PerformanceBase::addResourceTiming(const ResourceTimingInfo& info) {
if (isResourceTimingBufferFull() &&
!hasObserverFor(PerformanceEntry::Resource))
return;
- SecurityOrigin* securityOrigin = nullptr;
ExecutionContext* context = getExecutionContext();
- if (context)
- securityOrigin = context->getSecurityOrigin();
+ SecurityOrigin* securityOrigin = getSecurityOrigin(context);
if (!securityOrigin)
return;
@@ -357,6 +366,15 @@ void PerformanceBase::addNavigationTiming(LocalFrame* frame) {
double lastRedirectEndTime = documentLoadTiming.redirectEnd();
double finishTime = documentLoadTiming.loadEventEnd();
+ ExecutionContext* context = getExecutionContext();
+ SecurityOrigin* securityOrigin = getSecurityOrigin(context);
+ if (!securityOrigin)
+ return;
+
+ bool allowRedirectDetails =
+ allowsTimingRedirect(navigationTimingInfo->redirectChain(), finalResponse,
+ *securityOrigin, context);
+
unsigned long long transferSize = navigationTimingInfo->transferSize();
unsigned long long encodedBodyLength = finalResponse.encodedBodyLength();
unsigned long long decodedBodyLength = finalResponse.decodedBodyLength();
@@ -374,7 +392,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 | « third_party/WebKit/Source/core/timing/PerformanceBase.h ('k') | third_party/WebKit/Source/core/timing/PerformanceBaseTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698