| 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 |