| Index: third_party/WebKit/Source/core/timing/PerformanceResourceTiming.cpp
|
| diff --git a/third_party/WebKit/Source/core/timing/PerformanceResourceTiming.cpp b/third_party/WebKit/Source/core/timing/PerformanceResourceTiming.cpp
|
| index 7133ad561a1b9eee906ec447e51fe621d8a93547..20cb2496ab821e3bc7e9a438554b0b5f4ed2c3e1 100644
|
| --- a/third_party/WebKit/Source/core/timing/PerformanceResourceTiming.cpp
|
| +++ b/third_party/WebKit/Source/core/timing/PerformanceResourceTiming.cpp
|
| @@ -45,7 +45,8 @@ PerformanceResourceTiming::PerformanceResourceTiming(
|
| double start_time,
|
| double last_redirect_end_time,
|
| bool allow_timing_details,
|
| - bool allow_redirect_details)
|
| + bool allow_redirect_details,
|
| + PerformanceServerTimingVector& serverTiming)
|
| : PerformanceEntry(info.InitialURL().GetString(),
|
| "resource",
|
| PerformanceBase::MonotonicTimeToDOMHighResTimeStamp(
|
| @@ -69,14 +70,18 @@ PerformanceResourceTiming::PerformanceResourceTiming(
|
| did_reuse_connection_(info.FinalResponse().ConnectionReused()),
|
| allow_timing_details_(allow_timing_details),
|
| allow_redirect_details_(allow_redirect_details),
|
| - allow_negative_value_(info.NegativeAllowed()) {}
|
| + allow_negative_value_(info.NegativeAllowed()),
|
| + serverTiming_(serverTiming) {}
|
|
|
| // This constructor is for PerformanceNavigationTiming.
|
| -PerformanceResourceTiming::PerformanceResourceTiming(const String& name,
|
| - const String& entry_type,
|
| - double start_time,
|
| - double duration)
|
| - : PerformanceEntry(name, entry_type, start_time, duration) {}
|
| +PerformanceResourceTiming::PerformanceResourceTiming(
|
| + const String& name,
|
| + const String& entry_type,
|
| + double start_time,
|
| + double duration,
|
| + PerformanceServerTimingVector& serverTiming)
|
| + : PerformanceEntry(name, entry_type, start_time, duration),
|
| + serverTiming_(serverTiming) {}
|
|
|
| PerformanceResourceTiming::~PerformanceResourceTiming() {}
|
|
|
| @@ -307,8 +312,13 @@ unsigned long long PerformanceResourceTiming::decodedBodySize() const {
|
| return GetDecodedBodySize();
|
| }
|
|
|
| -void PerformanceResourceTiming::BuildJSONValue(V8ObjectBuilder& builder) const {
|
| - PerformanceEntry::BuildJSONValue(builder);
|
| +PerformanceServerTimingVector PerformanceResourceTiming::serverTiming() const {
|
| + return serverTiming_;
|
| +}
|
| +
|
| +void PerformanceResourceTiming::BuildJSONValue(ScriptState* script_state,
|
| + V8ObjectBuilder& builder) const {
|
| + PerformanceEntry::BuildJSONValue(script_state, builder);
|
| builder.AddString("initiatorType", initiatorType());
|
| builder.AddString("nextHopProtocol", nextHopProtocol());
|
| builder.AddNumber("workerStart", workerStart());
|
| @@ -326,6 +336,17 @@ void PerformanceResourceTiming::BuildJSONValue(V8ObjectBuilder& builder) const {
|
| builder.AddNumber("transferSize", transferSize());
|
| builder.AddNumber("encodedBodySize", encodedBodySize());
|
| builder.AddNumber("decodedBodySize", decodedBodySize());
|
| +
|
| + Vector<ScriptValue> serverTiming;
|
| + for (unsigned i = 0; i < serverTiming_.size(); i++) {
|
| + serverTiming.push_back(serverTiming_[i]->toJSONForBinding(script_state));
|
| + }
|
| + builder.Add("serverTiming", serverTiming);
|
| +}
|
| +
|
| +DEFINE_TRACE(PerformanceResourceTiming) {
|
| + visitor->Trace(serverTiming_);
|
| + PerformanceEntry::Trace(visitor);
|
| }
|
|
|
| } // namespace blink
|
|
|