Index: third_party/WebKit/Source/core/timing/PerformanceServerTiming.cpp |
diff --git a/third_party/WebKit/Source/core/timing/PerformanceServerTiming.cpp b/third_party/WebKit/Source/core/timing/PerformanceServerTiming.cpp |
index 120613c1a004af37ed673a7f47916b422cc173e1..597b765b1e2986673ccd4a755c5fa41dbde2e952 100644 |
--- a/third_party/WebKit/Source/core/timing/PerformanceServerTiming.cpp |
+++ b/third_party/WebKit/Source/core/timing/PerformanceServerTiming.cpp |
@@ -5,18 +5,20 @@ |
#include "core/timing/PerformanceServerTiming.h" |
#include "bindings/core/v8/V8ObjectBuilder.h" |
-#include "core/timing/PerformanceBase.h" |
+#include "platform/loader/fetch/ResourceTimingInfo.h" |
#include "platform/wtf/text/WTFString.h" |
namespace blink { |
-PerformanceServerTiming::PerformanceServerTiming(const String& name, |
- const String& metric, |
- double duration, |
- const String& description) |
- : PerformanceEntry(name, "server", 0.0, duration), |
- metric_(metric), |
- description_(description) {} |
+PerformanceServerTiming::PerformanceServerTiming( |
+ const String& metric, |
+ double value, |
+ const String& description, |
+ ShouldAllowTimingDetails shouldAllowTimingDetails) |
+ : metric_(metric), |
+ value_(value), |
+ description_(description), |
+ shouldAllowTimingDetails_(shouldAllowTimingDetails) {} |
PerformanceServerTiming::~PerformanceServerTiming() {} |
@@ -24,14 +26,41 @@ String PerformanceServerTiming::metric() const { |
return metric_; |
} |
+double PerformanceServerTiming::value() const { |
+ return shouldAllowTimingDetails_ == ShouldAllowTimingDetails::Yes ? value_ |
+ : 0.0; |
+} |
+ |
String PerformanceServerTiming::description() const { |
- return description_; |
+ return shouldAllowTimingDetails_ == ShouldAllowTimingDetails::Yes |
+ ? description_ |
+ : ""; |
} |
-void PerformanceServerTiming::BuildJSONValue(V8ObjectBuilder& builder) const { |
- PerformanceEntry::BuildJSONValue(builder); |
+ScriptValue PerformanceServerTiming::toJSONForBinding( |
+ ScriptState* script_state) const { |
+ V8ObjectBuilder builder(script_state); |
builder.AddString("metric", metric()); |
+ builder.AddNumber("value", value()); |
builder.AddString("description", description()); |
+ return builder.GetScriptValue(); |
+} |
+ |
+PerformanceServerTimingVector PerformanceServerTiming::ParseServerTiming( |
+ const ResourceTimingInfo& info, |
+ ShouldAllowTimingDetails shouldAllowTimingDetails) { |
+ PerformanceServerTimingVector entries; |
+ if (RuntimeEnabledFeatures::ServerTimingEnabled()) { |
+ const ResourceResponse& response = info.FinalResponse(); |
+ std::unique_ptr<ServerTimingHeaderVector> headers = ParseServerTimingHeader( |
+ response.HttpHeaderField(HTTPNames::Server_Timing)); |
+ for (const auto& header : *headers) { |
+ entries.push_back(new PerformanceServerTiming( |
+ header->metric, header->value, header->description, |
+ shouldAllowTimingDetails)); |
+ } |
+ } |
+ return entries; |
} |
} // namespace blink |