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

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

Issue 2962113002: Updates to Server-Timing in accordance with with spec changes (Closed)
Patch Set: fix web-platform-tests Created 3 years, 5 months 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 904e27f9a98dc3e16ee837a97b18e4e2dacbc0a8..42bf9344641b571ea88596bd364c6f9db6e98ef9 100644
--- a/third_party/WebKit/Source/core/timing/PerformanceBase.cpp
+++ b/third_party/WebKit/Source/core/timing/PerformanceBase.cpp
@@ -42,7 +42,6 @@
#include "core/timing/PerformanceLongTaskTiming.h"
#include "core/timing/PerformanceObserver.h"
#include "core/timing/PerformanceResourceTiming.h"
-#include "core/timing/PerformanceServerTiming.h"
#include "core/timing/PerformanceUserTiming.h"
#include "platform/RuntimeEnabledFeatures.h"
#include "platform/loader/fetch/ResourceResponse.h"
@@ -66,7 +65,6 @@ using PerformanceObserverVector = HeapVector<Member<PerformanceObserver>>;
static const size_t kDefaultResourceTimingBufferSize = 150;
static const size_t kDefaultFrameTimingBufferSize = 150;
-static const size_t kServerTimingBufferSize = 150;
PerformanceBase::PerformanceBase(double time_origin,
RefPtr<WebTaskRunner> task_runner)
@@ -107,7 +105,6 @@ PerformanceEntryVector PerformanceBase::getEntries() {
entries.AppendVector(user_timing_->GetMeasures());
}
- entries.AppendVector(server_timing_buffer_);
if (first_paint_timing_)
entries.push_back(first_paint_timing_);
if (first_contentful_paint_timing_)
@@ -151,9 +148,6 @@ PerformanceEntryVector PerformanceBase::getEntriesByType(
if (user_timing_)
entries.AppendVector(user_timing_->GetMeasures());
break;
- case PerformanceEntry::kServer:
- entries.AppendVector(server_timing_buffer_);
- break;
case PerformanceEntry::kPaint:
if (first_paint_timing_)
entries.push_back(first_paint_timing_);
@@ -216,15 +210,6 @@ PerformanceEntryVector PerformanceBase::getEntriesByName(
entries.AppendVector(user_timing_->GetMeasures(name));
}
- if (entry_type.IsNull() || type == PerformanceEntry::kServer) {
- // This is inefficient, but this buffer has a max size of
- // 150 entries (controlled by kServerTimingBufferSize).
- for (const auto& entry : server_timing_buffer_) {
- if (entry->name() == name)
- entries.push_back(entry);
- }
- }
-
std::sort(entries.begin(), entries.end(),
PerformanceEntry::StartTimeCompareLessThan);
return entries;
@@ -306,45 +291,6 @@ bool PerformanceBase::AllowsTimingRedirect(
return true;
}
-void PerformanceBase::AddServerTiming(const ResourceResponse& response,
- ShouldAddToBuffer shouldAddToBuffer) {
- if (shouldAddToBuffer == ShouldAddToBuffer::Never &&
- !HasObserverFor(PerformanceEntry::kServer)) {
- return;
- }
-
- ExecutionContext* context = GetExecutionContext();
- SecurityOrigin* securityOrigin = GetSecurityOrigin(context);
- if (!securityOrigin) {
- return;
- }
- bool allowTimingDetails = PassesTimingAllowCheck(
- response, *securityOrigin,
- response.HttpHeaderField(HTTPNames::Timing_Allow_Origin), context);
-
- std::unique_ptr<ServerTimingHeaderVector> headers = ParseServerTimingHeader(
- response.HttpHeaderField(HTTPNames::Server_Timing));
- if ((*headers).size() == 0) {
- return;
- }
-
- PerformanceEntryVector entries;
- for (const auto& header : *headers) {
- PerformanceEntry* entry = PerformanceServerTiming::create(
- response.Url().GetString(), header->metric,
- allowTimingDetails ? header->duration : 0.0,
- allowTimingDetails ? header->description : "");
- entries.push_back(*entry);
- }
-
- NotifyObserversOfEntries(entries);
- if (shouldAddToBuffer == ShouldAddToBuffer::Always &&
- server_timing_buffer_.size() + entries.size() <=
- kServerTimingBufferSize) {
- server_timing_buffer_.AppendVector(entries);
- }
-}
-
void PerformanceBase::AddResourceTiming(const ResourceTimingInfo& info) {
if (IsResourceTimingBufferFull() &&
!HasObserverFor(PerformanceEntry::kResource))
@@ -360,9 +306,15 @@ void PerformanceBase::AddResourceTiming(const ResourceTimingInfo& info) {
info.OriginalTimingAllowOrigin(), context);
double start_time = info.InitialTime();
+ PerformanceServerTimingVector serverTiming =
+ PerformanceServerTiming::ParseServerTiming(
+ info, allow_timing_details
+ ? PerformanceServerTiming::ShouldAllowTimingDetails::Yes
+ : PerformanceServerTiming::ShouldAllowTimingDetails::No);
+
if (info.RedirectChain().IsEmpty()) {
PerformanceEntry* entry = PerformanceResourceTiming::Create(
- info, TimeOrigin(), start_time, allow_timing_details);
+ info, TimeOrigin(), start_time, allow_timing_details, serverTiming);
NotifyObserversOfEntry(*entry);
if (!IsResourceTimingBufferFull())
AddResourceTimingBuffer(*entry);
@@ -387,7 +339,7 @@ void PerformanceBase::AddResourceTiming(const ResourceTimingInfo& info) {
PerformanceEntry* entry = PerformanceResourceTiming::Create(
info, TimeOrigin(), start_time, last_redirect_end_time,
- allow_timing_details, allow_redirect_details);
+ allow_timing_details, allow_redirect_details, serverTiming);
NotifyObserversOfEntry(*entry);
if (!IsResourceTimingBufferFull())
AddResourceTimingBuffer(*entry);
@@ -612,7 +564,6 @@ DEFINE_TRACE(PerformanceBase) {
visitor->Trace(resource_timing_buffer_);
visitor->Trace(navigation_timing_);
visitor->Trace(user_timing_);
- visitor->Trace(server_timing_buffer_);
visitor->Trace(first_paint_timing_);
visitor->Trace(first_contentful_paint_timing_);
visitor->Trace(observers_);
« no previous file with comments | « third_party/WebKit/Source/core/timing/PerformanceBase.h ('k') | third_party/WebKit/Source/core/timing/PerformanceEntry.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698