Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(364)

Side by Side Diff: third_party/WebKit/Source/core/timing/PerformanceResourceTiming.cpp

Issue 2429063002: Implement nextHopProtocol in PerformanceResourceTiming and PerformanceNavigationTiming.
Patch Set: included changes for navigation timing Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 bool allowRedirectDetails) 48 bool allowRedirectDetails)
49 : PerformanceEntry( 49 : PerformanceEntry(
50 info.initialURL().getString(), 50 info.initialURL().getString(),
51 "resource", 51 "resource",
52 PerformanceBase::monotonicTimeToDOMHighResTimeStamp(timeOrigin, 52 PerformanceBase::monotonicTimeToDOMHighResTimeStamp(timeOrigin,
53 startTime), 53 startTime),
54 PerformanceBase::monotonicTimeToDOMHighResTimeStamp( 54 PerformanceBase::monotonicTimeToDOMHighResTimeStamp(
55 timeOrigin, 55 timeOrigin,
56 info.loadFinishTime())), 56 info.loadFinishTime())),
57 m_initiatorType(info.initiatorType()), 57 m_initiatorType(info.initiatorType()),
58 m_alpnNegotiatedProtocol(info.finalResponse().alpnNegotiatedProtocol()),
59 m_connectionInfo(info.finalResponse().connectionInfo()),
58 m_timeOrigin(timeOrigin), 60 m_timeOrigin(timeOrigin),
59 m_timing(info.finalResponse().resourceLoadTiming()), 61 m_timing(info.finalResponse().resourceLoadTiming()),
60 m_lastRedirectEndTime(lastRedirectEndTime), 62 m_lastRedirectEndTime(lastRedirectEndTime),
61 m_finishTime(info.loadFinishTime()), 63 m_finishTime(info.loadFinishTime()),
62 m_transferSize(info.transferSize()), 64 m_transferSize(info.transferSize()),
63 m_encodedBodySize(info.finalResponse().encodedBodyLength()), 65 m_encodedBodySize(info.finalResponse().encodedBodyLength()),
64 m_decodedBodySize(info.finalResponse().decodedBodyLength()), 66 m_decodedBodySize(info.finalResponse().decodedBodyLength()),
65 m_didReuseConnection(info.finalResponse().connectionReused()), 67 m_didReuseConnection(info.finalResponse().connectionReused()),
66 m_allowTimingDetails(allowTimingDetails), 68 m_allowTimingDetails(allowTimingDetails),
67 m_allowRedirectDetails(allowRedirectDetails) {} 69 m_allowRedirectDetails(allowRedirectDetails) {}
(...skipping 28 matching lines...) Expand all
96 } 98 }
97 99
98 unsigned long long PerformanceResourceTiming::getDecodedBodySize() const { 100 unsigned long long PerformanceResourceTiming::getDecodedBodySize() const {
99 return m_decodedBodySize; 101 return m_decodedBodySize;
100 } 102 }
101 103
102 AtomicString PerformanceResourceTiming::initiatorType() const { 104 AtomicString PerformanceResourceTiming::initiatorType() const {
103 return m_initiatorType; 105 return m_initiatorType;
104 } 106 }
105 107
108 AtomicString PerformanceResourceTiming::alpnNegotiatedProtocol() const {
109 return m_alpnNegotiatedProtocol;
110 }
111
112 AtomicString PerformanceResourceTiming::connectionInfo() const {
113 return m_connectionInfo;
114 }
115
116 AtomicString PerformanceResourceTiming::getNextHopProtocol(
117 const AtomicString& alpnNegotiatedProtocol,
118 const AtomicString& connectionInfo) {
119 // Fallback to connectionInfo when alpnNegotiatedProtocol is unknowm.
kinuko 2017/04/18 05:46:25 unknowm -> unknown
120 AtomicString returnedProtocol = alpnNegotiatedProtocol == "unknown"
121 ? connectionInfo
122 : alpnNegotiatedProtocol;
123 // Fallback to "http/1.1" when connectionInfo is also unknown.
124 returnedProtocol =
125 returnedProtocol == "unknown" ? "http/1.1" : returnedProtocol;
126
127 if (returnedProtocol.contains("quic")) {
128 returnedProtocol = "hq";
129 }
kinuko 2017/04/18 05:46:25 nit: no braces needed for one-line body
130 return returnedProtocol;
131 }
132
133 AtomicString PerformanceResourceTiming::nextHopProtocol() const {
134 return PerformanceResourceTiming::getNextHopProtocol(alpnNegotiatedProtocol(),
135 connectionInfo());
kinuko 2017/04/18 05:46:25 nit: indent looks off (please just run git cl form
136 }
137
106 DOMHighResTimeStamp PerformanceResourceTiming::workerStart() const { 138 DOMHighResTimeStamp PerformanceResourceTiming::workerStart() const {
107 ResourceLoadTiming* timing = resourceLoadTiming(); 139 ResourceLoadTiming* timing = resourceLoadTiming();
108 if (!timing || timing->workerStart() == 0.0) 140 if (!timing || timing->workerStart() == 0.0)
109 return 0.0; 141 return 0.0;
110 142
111 return PerformanceBase::monotonicTimeToDOMHighResTimeStamp( 143 return PerformanceBase::monotonicTimeToDOMHighResTimeStamp(
112 m_timeOrigin, timing->workerStart()); 144 m_timeOrigin, timing->workerStart());
113 } 145 }
114 146
115 DOMHighResTimeStamp PerformanceResourceTiming::workerReady() const { 147 DOMHighResTimeStamp PerformanceResourceTiming::workerReady() const {
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
267 unsigned long long PerformanceResourceTiming::decodedBodySize() const { 299 unsigned long long PerformanceResourceTiming::decodedBodySize() const {
268 if (!allowTimingDetails()) 300 if (!allowTimingDetails())
269 return 0; 301 return 0;
270 302
271 return getDecodedBodySize(); 303 return getDecodedBodySize();
272 } 304 }
273 305
274 void PerformanceResourceTiming::buildJSONValue(V8ObjectBuilder& builder) const { 306 void PerformanceResourceTiming::buildJSONValue(V8ObjectBuilder& builder) const {
275 PerformanceEntry::buildJSONValue(builder); 307 PerformanceEntry::buildJSONValue(builder);
276 builder.addString("initiatorType", initiatorType()); 308 builder.addString("initiatorType", initiatorType());
309 builder.addString("nextHopProtocol", nextHopProtocol());
277 builder.addNumber("workerStart", workerStart()); 310 builder.addNumber("workerStart", workerStart());
278 builder.addNumber("redirectStart", redirectStart()); 311 builder.addNumber("redirectStart", redirectStart());
279 builder.addNumber("redirectEnd", redirectEnd()); 312 builder.addNumber("redirectEnd", redirectEnd());
280 builder.addNumber("fetchStart", fetchStart()); 313 builder.addNumber("fetchStart", fetchStart());
281 builder.addNumber("domainLookupStart", domainLookupStart()); 314 builder.addNumber("domainLookupStart", domainLookupStart());
282 builder.addNumber("domainLookupEnd", domainLookupEnd()); 315 builder.addNumber("domainLookupEnd", domainLookupEnd());
283 builder.addNumber("connectStart", connectStart()); 316 builder.addNumber("connectStart", connectStart());
284 builder.addNumber("connectEnd", connectEnd()); 317 builder.addNumber("connectEnd", connectEnd());
285 builder.addNumber("secureConnectionStart", secureConnectionStart()); 318 builder.addNumber("secureConnectionStart", secureConnectionStart());
286 builder.addNumber("requestStart", requestStart()); 319 builder.addNumber("requestStart", requestStart());
287 builder.addNumber("responseStart", responseStart()); 320 builder.addNumber("responseStart", responseStart());
288 builder.addNumber("responseEnd", responseEnd()); 321 builder.addNumber("responseEnd", responseEnd());
289 builder.addNumber("transferSize", transferSize()); 322 builder.addNumber("transferSize", transferSize());
290 builder.addNumber("encodedBodySize", encodedBodySize()); 323 builder.addNumber("encodedBodySize", encodedBodySize());
291 builder.addNumber("decodedBodySize", decodedBodySize()); 324 builder.addNumber("decodedBodySize", decodedBodySize());
292 } 325 }
293 326
294 } // namespace blink 327 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698