OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2012 Google Inc. All rights reserved. |
3 * Copyright (C) 2012 Intel Inc. All rights reserved. | 3 * Copyright (C) 2012 Intel Inc. All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions are | 6 * modification, are permitted provided that the following conditions are |
7 * met: | 7 * met: |
8 * | 8 * |
9 * * Redistributions of source code must retain the above copyright | 9 * * Redistributions of source code must retain the above copyright |
10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
(...skipping 27 matching lines...) Expand all Loading... |
38 #include "platform/loader/fetch/ResourceTimingInfo.h" | 38 #include "platform/loader/fetch/ResourceTimingInfo.h" |
39 | 39 |
40 namespace blink { | 40 namespace blink { |
41 | 41 |
42 PerformanceResourceTiming::PerformanceResourceTiming( | 42 PerformanceResourceTiming::PerformanceResourceTiming( |
43 const ResourceTimingInfo& info, | 43 const ResourceTimingInfo& info, |
44 double time_origin, | 44 double time_origin, |
45 double start_time, | 45 double start_time, |
46 double last_redirect_end_time, | 46 double last_redirect_end_time, |
47 bool allow_timing_details, | 47 bool allow_timing_details, |
48 bool allow_redirect_details) | 48 bool allow_redirect_details, |
| 49 PerformanceServerTimingVector& serverTiming) |
49 : PerformanceEntry(info.InitialURL().GetString(), | 50 : PerformanceEntry(info.InitialURL().GetString(), |
50 "resource", | 51 "resource", |
51 PerformanceBase::MonotonicTimeToDOMHighResTimeStamp( | 52 PerformanceBase::MonotonicTimeToDOMHighResTimeStamp( |
52 time_origin, | 53 time_origin, |
53 start_time, | 54 start_time, |
54 info.NegativeAllowed()), | 55 info.NegativeAllowed()), |
55 PerformanceBase::MonotonicTimeToDOMHighResTimeStamp( | 56 PerformanceBase::MonotonicTimeToDOMHighResTimeStamp( |
56 time_origin, | 57 time_origin, |
57 info.LoadFinishTime(), | 58 info.LoadFinishTime(), |
58 info.NegativeAllowed())), | 59 info.NegativeAllowed())), |
59 initiator_type_(info.InitiatorType()), | 60 initiator_type_(info.InitiatorType()), |
60 alpn_negotiated_protocol_(info.FinalResponse().AlpnNegotiatedProtocol()), | 61 alpn_negotiated_protocol_(info.FinalResponse().AlpnNegotiatedProtocol()), |
61 connection_info_(info.FinalResponse().ConnectionInfoString()), | 62 connection_info_(info.FinalResponse().ConnectionInfoString()), |
62 time_origin_(time_origin), | 63 time_origin_(time_origin), |
63 timing_(info.FinalResponse().GetResourceLoadTiming()), | 64 timing_(info.FinalResponse().GetResourceLoadTiming()), |
64 last_redirect_end_time_(last_redirect_end_time), | 65 last_redirect_end_time_(last_redirect_end_time), |
65 finish_time_(info.LoadFinishTime()), | 66 finish_time_(info.LoadFinishTime()), |
66 transfer_size_(info.TransferSize()), | 67 transfer_size_(info.TransferSize()), |
67 encoded_body_size_(info.FinalResponse().EncodedBodyLength()), | 68 encoded_body_size_(info.FinalResponse().EncodedBodyLength()), |
68 decoded_body_size_(info.FinalResponse().DecodedBodyLength()), | 69 decoded_body_size_(info.FinalResponse().DecodedBodyLength()), |
69 did_reuse_connection_(info.FinalResponse().ConnectionReused()), | 70 did_reuse_connection_(info.FinalResponse().ConnectionReused()), |
70 allow_timing_details_(allow_timing_details), | 71 allow_timing_details_(allow_timing_details), |
71 allow_redirect_details_(allow_redirect_details), | 72 allow_redirect_details_(allow_redirect_details), |
72 allow_negative_value_(info.NegativeAllowed()) {} | 73 allow_negative_value_(info.NegativeAllowed()), |
| 74 serverTiming_(serverTiming) {} |
73 | 75 |
74 // This constructor is for PerformanceNavigationTiming. | 76 // This constructor is for PerformanceNavigationTiming. |
75 PerformanceResourceTiming::PerformanceResourceTiming(const String& name, | 77 PerformanceResourceTiming::PerformanceResourceTiming( |
76 const String& entry_type, | 78 const String& name, |
77 double start_time, | 79 const String& entry_type, |
78 double duration) | 80 double start_time, |
79 : PerformanceEntry(name, entry_type, start_time, duration) {} | 81 double duration, |
| 82 PerformanceServerTimingVector& serverTiming) |
| 83 : PerformanceEntry(name, entry_type, start_time, duration), |
| 84 serverTiming_(serverTiming) {} |
80 | 85 |
81 PerformanceResourceTiming::~PerformanceResourceTiming() {} | 86 PerformanceResourceTiming::~PerformanceResourceTiming() {} |
82 | 87 |
83 ResourceLoadTiming* PerformanceResourceTiming::GetResourceLoadTiming() const { | 88 ResourceLoadTiming* PerformanceResourceTiming::GetResourceLoadTiming() const { |
84 return timing_.Get(); | 89 return timing_.Get(); |
85 } | 90 } |
86 | 91 |
87 bool PerformanceResourceTiming::AllowTimingDetails() const { | 92 bool PerformanceResourceTiming::AllowTimingDetails() const { |
88 return allow_timing_details_; | 93 return allow_timing_details_; |
89 } | 94 } |
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
300 return GetEncodedBodySize(); | 305 return GetEncodedBodySize(); |
301 } | 306 } |
302 | 307 |
303 unsigned long long PerformanceResourceTiming::decodedBodySize() const { | 308 unsigned long long PerformanceResourceTiming::decodedBodySize() const { |
304 if (!AllowTimingDetails()) | 309 if (!AllowTimingDetails()) |
305 return 0; | 310 return 0; |
306 | 311 |
307 return GetDecodedBodySize(); | 312 return GetDecodedBodySize(); |
308 } | 313 } |
309 | 314 |
310 void PerformanceResourceTiming::BuildJSONValue(V8ObjectBuilder& builder) const { | 315 PerformanceServerTimingVector PerformanceResourceTiming::serverTiming() const { |
311 PerformanceEntry::BuildJSONValue(builder); | 316 return serverTiming_; |
| 317 } |
| 318 |
| 319 void PerformanceResourceTiming::BuildJSONValue(ScriptState* script_state, |
| 320 V8ObjectBuilder& builder) const { |
| 321 PerformanceEntry::BuildJSONValue(script_state, builder); |
312 builder.AddString("initiatorType", initiatorType()); | 322 builder.AddString("initiatorType", initiatorType()); |
313 builder.AddString("nextHopProtocol", nextHopProtocol()); | 323 builder.AddString("nextHopProtocol", nextHopProtocol()); |
314 builder.AddNumber("workerStart", workerStart()); | 324 builder.AddNumber("workerStart", workerStart()); |
315 builder.AddNumber("redirectStart", redirectStart()); | 325 builder.AddNumber("redirectStart", redirectStart()); |
316 builder.AddNumber("redirectEnd", redirectEnd()); | 326 builder.AddNumber("redirectEnd", redirectEnd()); |
317 builder.AddNumber("fetchStart", fetchStart()); | 327 builder.AddNumber("fetchStart", fetchStart()); |
318 builder.AddNumber("domainLookupStart", domainLookupStart()); | 328 builder.AddNumber("domainLookupStart", domainLookupStart()); |
319 builder.AddNumber("domainLookupEnd", domainLookupEnd()); | 329 builder.AddNumber("domainLookupEnd", domainLookupEnd()); |
320 builder.AddNumber("connectStart", connectStart()); | 330 builder.AddNumber("connectStart", connectStart()); |
321 builder.AddNumber("connectEnd", connectEnd()); | 331 builder.AddNumber("connectEnd", connectEnd()); |
322 builder.AddNumber("secureConnectionStart", secureConnectionStart()); | 332 builder.AddNumber("secureConnectionStart", secureConnectionStart()); |
323 builder.AddNumber("requestStart", requestStart()); | 333 builder.AddNumber("requestStart", requestStart()); |
324 builder.AddNumber("responseStart", responseStart()); | 334 builder.AddNumber("responseStart", responseStart()); |
325 builder.AddNumber("responseEnd", responseEnd()); | 335 builder.AddNumber("responseEnd", responseEnd()); |
326 builder.AddNumber("transferSize", transferSize()); | 336 builder.AddNumber("transferSize", transferSize()); |
327 builder.AddNumber("encodedBodySize", encodedBodySize()); | 337 builder.AddNumber("encodedBodySize", encodedBodySize()); |
328 builder.AddNumber("decodedBodySize", decodedBodySize()); | 338 builder.AddNumber("decodedBodySize", decodedBodySize()); |
| 339 |
| 340 Vector<ScriptValue> serverTiming; |
| 341 for (unsigned i = 0; i < serverTiming_.size(); i++) { |
| 342 serverTiming.push_back(serverTiming_[i]->toJSONForBinding(script_state)); |
| 343 } |
| 344 builder.Add("serverTiming", serverTiming); |
| 345 } |
| 346 |
| 347 DEFINE_TRACE(PerformanceResourceTiming) { |
| 348 visitor->Trace(serverTiming_); |
| 349 PerformanceEntry::Trace(visitor); |
329 } | 350 } |
330 | 351 |
331 } // namespace blink | 352 } // namespace blink |
OLD | NEW |