| 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_);
|
|
|