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

Side by Side Diff: net/quic/quic_connection_logger.cc

Issue 1545233002: Convert Pass()→std::move() in //net (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 12 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
« no previous file with comments | « net/quic/quic_chromium_client_session_test.cc ('k') | net/quic/quic_end_to_end_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/quic/quic_connection_logger.h" 5 #include "net/quic/quic_connection_logger.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 #include <utility>
9 10
10 #include "base/bind.h" 11 #include "base/bind.h"
11 #include "base/callback.h" 12 #include "base/callback.h"
12 #include "base/metrics/histogram_macros.h" 13 #include "base/metrics/histogram_macros.h"
13 #include "base/metrics/sparse_histogram.h" 14 #include "base/metrics/sparse_histogram.h"
14 #include "base/profiler/scoped_tracker.h" 15 #include "base/profiler/scoped_tracker.h"
15 #include "base/strings/string_number_conversions.h" 16 #include "base/strings/string_number_conversions.h"
16 #include "base/values.h" 17 #include "base/values.h"
17 #include "net/cert/cert_verify_result.h" 18 #include "net/cert/cert_verify_result.h"
18 #include "net/cert/x509_certificate.h" 19 #include "net/cert/x509_certificate.h"
(...skipping 18 matching lines...) Expand all
37 38
38 scoped_ptr<base::Value> NetLogQuicPacketCallback( 39 scoped_ptr<base::Value> NetLogQuicPacketCallback(
39 const IPEndPoint* self_address, 40 const IPEndPoint* self_address,
40 const IPEndPoint* peer_address, 41 const IPEndPoint* peer_address,
41 size_t packet_size, 42 size_t packet_size,
42 NetLogCaptureMode /* capture_mode */) { 43 NetLogCaptureMode /* capture_mode */) {
43 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); 44 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
44 dict->SetString("self_address", self_address->ToString()); 45 dict->SetString("self_address", self_address->ToString());
45 dict->SetString("peer_address", peer_address->ToString()); 46 dict->SetString("peer_address", peer_address->ToString());
46 dict->SetInteger("size", packet_size); 47 dict->SetInteger("size", packet_size);
47 return dict.Pass(); 48 return std::move(dict);
48 } 49 }
49 50
50 scoped_ptr<base::Value> NetLogQuicPacketSentCallback( 51 scoped_ptr<base::Value> NetLogQuicPacketSentCallback(
51 const SerializedPacket& serialized_packet, 52 const SerializedPacket& serialized_packet,
52 TransmissionType transmission_type, 53 TransmissionType transmission_type,
53 size_t packet_size, 54 size_t packet_size,
54 QuicTime sent_time, 55 QuicTime sent_time,
55 NetLogCaptureMode /* capture_mode */) { 56 NetLogCaptureMode /* capture_mode */) {
56 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); 57 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
57 dict->SetInteger("transmission_type", transmission_type); 58 dict->SetInteger("transmission_type", transmission_type);
58 dict->SetString("packet_number", 59 dict->SetString("packet_number",
59 base::Uint64ToString(serialized_packet.packet_number)); 60 base::Uint64ToString(serialized_packet.packet_number));
60 dict->SetInteger("size", packet_size); 61 dict->SetInteger("size", packet_size);
61 dict->SetString("sent_time_us", 62 dict->SetString("sent_time_us",
62 base::Int64ToString(sent_time.ToDebuggingValue())); 63 base::Int64ToString(sent_time.ToDebuggingValue()));
63 return dict.Pass(); 64 return std::move(dict);
64 } 65 }
65 66
66 scoped_ptr<base::Value> NetLogQuicPacketRetransmittedCallback( 67 scoped_ptr<base::Value> NetLogQuicPacketRetransmittedCallback(
67 QuicPacketNumber old_packet_number, 68 QuicPacketNumber old_packet_number,
68 QuicPacketNumber new_packet_number, 69 QuicPacketNumber new_packet_number,
69 NetLogCaptureMode /* capture_mode */) { 70 NetLogCaptureMode /* capture_mode */) {
70 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); 71 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
71 dict->SetString("old_packet_number", base::Uint64ToString(old_packet_number)); 72 dict->SetString("old_packet_number", base::Uint64ToString(old_packet_number));
72 dict->SetString("new_packet_number", base::Uint64ToString(new_packet_number)); 73 dict->SetString("new_packet_number", base::Uint64ToString(new_packet_number));
73 return dict.Pass(); 74 return std::move(dict);
74 } 75 }
75 76
76 scoped_ptr<base::Value> NetLogQuicDuplicatePacketCallback( 77 scoped_ptr<base::Value> NetLogQuicDuplicatePacketCallback(
77 QuicPacketNumber packet_number, 78 QuicPacketNumber packet_number,
78 NetLogCaptureMode /* capture_mode */) { 79 NetLogCaptureMode /* capture_mode */) {
79 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); 80 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
80 dict->SetString("packet_number", base::Uint64ToString(packet_number)); 81 dict->SetString("packet_number", base::Uint64ToString(packet_number));
81 return dict.Pass(); 82 return std::move(dict);
82 } 83 }
83 84
84 scoped_ptr<base::Value> NetLogQuicPacketHeaderCallback( 85 scoped_ptr<base::Value> NetLogQuicPacketHeaderCallback(
85 const QuicPacketHeader* header, 86 const QuicPacketHeader* header,
86 NetLogCaptureMode /* capture_mode */) { 87 NetLogCaptureMode /* capture_mode */) {
87 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); 88 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
88 dict->SetString("connection_id", 89 dict->SetString("connection_id",
89 base::Uint64ToString(header->public_header.connection_id)); 90 base::Uint64ToString(header->public_header.connection_id));
90 dict->SetInteger("reset_flag", header->public_header.reset_flag); 91 dict->SetInteger("reset_flag", header->public_header.reset_flag);
91 dict->SetInteger("version_flag", header->public_header.version_flag); 92 dict->SetInteger("version_flag", header->public_header.version_flag);
92 dict->SetString("packet_number", base::Uint64ToString(header->packet_number)); 93 dict->SetString("packet_number", base::Uint64ToString(header->packet_number));
93 dict->SetInteger("entropy_flag", header->entropy_flag); 94 dict->SetInteger("entropy_flag", header->entropy_flag);
94 dict->SetInteger("fec_flag", header->fec_flag); 95 dict->SetInteger("fec_flag", header->fec_flag);
95 dict->SetInteger("fec_group", static_cast<int>(header->fec_group)); 96 dict->SetInteger("fec_group", static_cast<int>(header->fec_group));
96 return dict.Pass(); 97 return std::move(dict);
97 } 98 }
98 99
99 scoped_ptr<base::Value> NetLogQuicStreamFrameCallback( 100 scoped_ptr<base::Value> NetLogQuicStreamFrameCallback(
100 const QuicStreamFrame* frame, 101 const QuicStreamFrame* frame,
101 NetLogCaptureMode /* capture_mode */) { 102 NetLogCaptureMode /* capture_mode */) {
102 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); 103 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
103 dict->SetInteger("stream_id", frame->stream_id); 104 dict->SetInteger("stream_id", frame->stream_id);
104 dict->SetBoolean("fin", frame->fin); 105 dict->SetBoolean("fin", frame->fin);
105 dict->SetString("offset", base::Uint64ToString(frame->offset)); 106 dict->SetString("offset", base::Uint64ToString(frame->offset));
106 dict->SetInteger("length", frame->frame_length); 107 dict->SetInteger("length", frame->frame_length);
107 return dict.Pass(); 108 return std::move(dict);
108 } 109 }
109 110
110 scoped_ptr<base::Value> NetLogQuicAckFrameCallback( 111 scoped_ptr<base::Value> NetLogQuicAckFrameCallback(
111 const QuicAckFrame* frame, 112 const QuicAckFrame* frame,
112 NetLogCaptureMode /* capture_mode */) { 113 NetLogCaptureMode /* capture_mode */) {
113 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); 114 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
114 dict->SetString("largest_observed", 115 dict->SetString("largest_observed",
115 base::Uint64ToString(frame->largest_observed)); 116 base::Uint64ToString(frame->largest_observed));
116 dict->SetString( 117 dict->SetString(
117 "delta_time_largest_observed_us", 118 "delta_time_largest_observed_us",
(...skipping 14 matching lines...) Expand all
132 const PacketTimeVector& received_times = frame->received_packet_times; 133 const PacketTimeVector& received_times = frame->received_packet_times;
133 for (PacketTimeVector::const_iterator it = received_times.begin(); 134 for (PacketTimeVector::const_iterator it = received_times.begin();
134 it != received_times.end(); ++it) { 135 it != received_times.end(); ++it) {
135 base::DictionaryValue* info = new base::DictionaryValue(); 136 base::DictionaryValue* info = new base::DictionaryValue();
136 info->SetInteger("packet_number", static_cast<int>(it->first)); 137 info->SetInteger("packet_number", static_cast<int>(it->first));
137 info->SetString("received", 138 info->SetString("received",
138 base::Int64ToString(it->second.ToDebuggingValue())); 139 base::Int64ToString(it->second.ToDebuggingValue()));
139 received->Append(info); 140 received->Append(info);
140 } 141 }
141 142
142 return dict.Pass(); 143 return std::move(dict);
143 } 144 }
144 145
145 scoped_ptr<base::Value> NetLogQuicRstStreamFrameCallback( 146 scoped_ptr<base::Value> NetLogQuicRstStreamFrameCallback(
146 const QuicRstStreamFrame* frame, 147 const QuicRstStreamFrame* frame,
147 NetLogCaptureMode /* capture_mode */) { 148 NetLogCaptureMode /* capture_mode */) {
148 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); 149 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
149 dict->SetInteger("stream_id", frame->stream_id); 150 dict->SetInteger("stream_id", frame->stream_id);
150 dict->SetInteger("quic_rst_stream_error", frame->error_code); 151 dict->SetInteger("quic_rst_stream_error", frame->error_code);
151 return dict.Pass(); 152 return std::move(dict);
152 } 153 }
153 154
154 scoped_ptr<base::Value> NetLogQuicConnectionCloseFrameCallback( 155 scoped_ptr<base::Value> NetLogQuicConnectionCloseFrameCallback(
155 const QuicConnectionCloseFrame* frame, 156 const QuicConnectionCloseFrame* frame,
156 NetLogCaptureMode /* capture_mode */) { 157 NetLogCaptureMode /* capture_mode */) {
157 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); 158 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
158 dict->SetInteger("quic_error", frame->error_code); 159 dict->SetInteger("quic_error", frame->error_code);
159 dict->SetString("details", frame->error_details); 160 dict->SetString("details", frame->error_details);
160 return dict.Pass(); 161 return std::move(dict);
161 } 162 }
162 163
163 scoped_ptr<base::Value> NetLogQuicWindowUpdateFrameCallback( 164 scoped_ptr<base::Value> NetLogQuicWindowUpdateFrameCallback(
164 const QuicWindowUpdateFrame* frame, 165 const QuicWindowUpdateFrame* frame,
165 NetLogCaptureMode /* capture_mode */) { 166 NetLogCaptureMode /* capture_mode */) {
166 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); 167 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
167 dict->SetInteger("stream_id", frame->stream_id); 168 dict->SetInteger("stream_id", frame->stream_id);
168 dict->SetString("byte_offset", base::Uint64ToString(frame->byte_offset)); 169 dict->SetString("byte_offset", base::Uint64ToString(frame->byte_offset));
169 return dict.Pass(); 170 return std::move(dict);
170 } 171 }
171 172
172 scoped_ptr<base::Value> NetLogQuicBlockedFrameCallback( 173 scoped_ptr<base::Value> NetLogQuicBlockedFrameCallback(
173 const QuicBlockedFrame* frame, 174 const QuicBlockedFrame* frame,
174 NetLogCaptureMode /* capture_mode */) { 175 NetLogCaptureMode /* capture_mode */) {
175 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); 176 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
176 dict->SetInteger("stream_id", frame->stream_id); 177 dict->SetInteger("stream_id", frame->stream_id);
177 return dict.Pass(); 178 return std::move(dict);
178 } 179 }
179 180
180 scoped_ptr<base::Value> NetLogQuicGoAwayFrameCallback( 181 scoped_ptr<base::Value> NetLogQuicGoAwayFrameCallback(
181 const QuicGoAwayFrame* frame, 182 const QuicGoAwayFrame* frame,
182 NetLogCaptureMode /* capture_mode */) { 183 NetLogCaptureMode /* capture_mode */) {
183 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); 184 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
184 dict->SetInteger("quic_error", frame->error_code); 185 dict->SetInteger("quic_error", frame->error_code);
185 dict->SetInteger("last_good_stream_id", frame->last_good_stream_id); 186 dict->SetInteger("last_good_stream_id", frame->last_good_stream_id);
186 dict->SetString("reason_phrase", frame->reason_phrase); 187 dict->SetString("reason_phrase", frame->reason_phrase);
187 return dict.Pass(); 188 return std::move(dict);
188 } 189 }
189 190
190 scoped_ptr<base::Value> NetLogQuicStopWaitingFrameCallback( 191 scoped_ptr<base::Value> NetLogQuicStopWaitingFrameCallback(
191 const QuicStopWaitingFrame* frame, 192 const QuicStopWaitingFrame* frame,
192 NetLogCaptureMode /* capture_mode */) { 193 NetLogCaptureMode /* capture_mode */) {
193 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); 194 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
194 base::DictionaryValue* sent_info = new base::DictionaryValue(); 195 base::DictionaryValue* sent_info = new base::DictionaryValue();
195 dict->Set("sent_info", sent_info); 196 dict->Set("sent_info", sent_info);
196 sent_info->SetString("least_unacked", 197 sent_info->SetString("least_unacked",
197 base::Uint64ToString(frame->least_unacked)); 198 base::Uint64ToString(frame->least_unacked));
198 return dict.Pass(); 199 return std::move(dict);
199 } 200 }
200 201
201 scoped_ptr<base::Value> NetLogQuicVersionNegotiationPacketCallback( 202 scoped_ptr<base::Value> NetLogQuicVersionNegotiationPacketCallback(
202 const QuicVersionNegotiationPacket* packet, 203 const QuicVersionNegotiationPacket* packet,
203 NetLogCaptureMode /* capture_mode */) { 204 NetLogCaptureMode /* capture_mode */) {
204 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); 205 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
205 base::ListValue* versions = new base::ListValue(); 206 base::ListValue* versions = new base::ListValue();
206 dict->Set("versions", versions); 207 dict->Set("versions", versions);
207 for (QuicVersionVector::const_iterator it = packet->versions.begin(); 208 for (QuicVersionVector::const_iterator it = packet->versions.begin();
208 it != packet->versions.end(); ++it) { 209 it != packet->versions.end(); ++it) {
209 versions->AppendString(QuicVersionToString(*it)); 210 versions->AppendString(QuicVersionToString(*it));
210 } 211 }
211 return dict.Pass(); 212 return std::move(dict);
212 } 213 }
213 214
214 scoped_ptr<base::Value> NetLogQuicCryptoHandshakeMessageCallback( 215 scoped_ptr<base::Value> NetLogQuicCryptoHandshakeMessageCallback(
215 const CryptoHandshakeMessage* message, 216 const CryptoHandshakeMessage* message,
216 NetLogCaptureMode /* capture_mode */) { 217 NetLogCaptureMode /* capture_mode */) {
217 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); 218 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
218 dict->SetString("quic_crypto_handshake_message", message->DebugString()); 219 dict->SetString("quic_crypto_handshake_message", message->DebugString());
219 return dict.Pass(); 220 return std::move(dict);
220 } 221 }
221 222
222 scoped_ptr<base::Value> NetLogQuicOnConnectionClosedCallback( 223 scoped_ptr<base::Value> NetLogQuicOnConnectionClosedCallback(
223 QuicErrorCode error, 224 QuicErrorCode error,
224 bool from_peer, 225 bool from_peer,
225 NetLogCaptureMode /* capture_mode */) { 226 NetLogCaptureMode /* capture_mode */) {
226 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); 227 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
227 dict->SetInteger("quic_error", error); 228 dict->SetInteger("quic_error", error);
228 dict->SetBoolean("from_peer", from_peer); 229 dict->SetBoolean("from_peer", from_peer);
229 return dict.Pass(); 230 return std::move(dict);
230 } 231 }
231 232
232 scoped_ptr<base::Value> NetLogQuicCertificateVerifiedCallback( 233 scoped_ptr<base::Value> NetLogQuicCertificateVerifiedCallback(
233 scoped_refptr<X509Certificate> cert, 234 scoped_refptr<X509Certificate> cert,
234 NetLogCaptureMode /* capture_mode */) { 235 NetLogCaptureMode /* capture_mode */) {
235 // Only the subjects are logged so that we can investigate connection pooling. 236 // Only the subjects are logged so that we can investigate connection pooling.
236 // More fields could be logged in the future. 237 // More fields could be logged in the future.
237 std::vector<std::string> dns_names; 238 std::vector<std::string> dns_names;
238 cert->GetDNSNames(&dns_names); 239 cert->GetDNSNames(&dns_names);
239 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); 240 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
240 base::ListValue* subjects = new base::ListValue(); 241 base::ListValue* subjects = new base::ListValue();
241 for (std::vector<std::string>::const_iterator it = dns_names.begin(); 242 for (std::vector<std::string>::const_iterator it = dns_names.begin();
242 it != dns_names.end(); it++) { 243 it != dns_names.end(); it++) {
243 subjects->Append(new base::StringValue(*it)); 244 subjects->Append(new base::StringValue(*it));
244 } 245 }
245 dict->Set("subjects", subjects); 246 dict->Set("subjects", subjects);
246 return dict.Pass(); 247 return std::move(dict);
247 } 248 }
248 249
249 void UpdatePacketGapSentHistogram(size_t num_consecutive_missing_packets) { 250 void UpdatePacketGapSentHistogram(size_t num_consecutive_missing_packets) {
250 UMA_HISTOGRAM_COUNTS("Net.QuicSession.PacketGapSent", 251 UMA_HISTOGRAM_COUNTS("Net.QuicSession.PacketGapSent",
251 num_consecutive_missing_packets); 252 num_consecutive_missing_packets);
252 } 253 }
253 254
254 void UpdatePublicResetAddressMismatchHistogram( 255 void UpdatePublicResetAddressMismatchHistogram(
255 const IPEndPoint& server_hello_address, 256 const IPEndPoint& server_hello_address,
256 const IPEndPoint& public_reset_address) { 257 const IPEndPoint& public_reset_address) {
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 num_truncated_acks_sent_(0), 293 num_truncated_acks_sent_(0),
293 num_truncated_acks_received_(0), 294 num_truncated_acks_received_(0),
294 num_frames_received_(0), 295 num_frames_received_(0),
295 num_duplicate_frames_received_(0), 296 num_duplicate_frames_received_(0),
296 num_incorrect_connection_ids_(0), 297 num_incorrect_connection_ids_(0),
297 num_undecryptable_packets_(0), 298 num_undecryptable_packets_(0),
298 num_duplicate_packets_(0), 299 num_duplicate_packets_(0),
299 num_blocked_frames_received_(0), 300 num_blocked_frames_received_(0),
300 num_blocked_frames_sent_(0), 301 num_blocked_frames_sent_(0),
301 connection_description_(connection_description), 302 connection_description_(connection_description),
302 socket_performance_watcher_(socket_performance_watcher.Pass()) {} 303 socket_performance_watcher_(std::move(socket_performance_watcher)) {}
303 304
304 QuicConnectionLogger::~QuicConnectionLogger() { 305 QuicConnectionLogger::~QuicConnectionLogger() {
305 UMA_HISTOGRAM_COUNTS("Net.QuicSession.OutOfOrderPacketsReceived", 306 UMA_HISTOGRAM_COUNTS("Net.QuicSession.OutOfOrderPacketsReceived",
306 num_out_of_order_received_packets_); 307 num_out_of_order_received_packets_);
307 UMA_HISTOGRAM_COUNTS("Net.QuicSession.OutOfOrderLargePacketsReceived", 308 UMA_HISTOGRAM_COUNTS("Net.QuicSession.OutOfOrderLargePacketsReceived",
308 num_out_of_order_large_received_packets_); 309 num_out_of_order_large_received_packets_);
309 UMA_HISTOGRAM_COUNTS("Net.QuicSession.TruncatedAcksSent", 310 UMA_HISTOGRAM_COUNTS("Net.QuicSession.TruncatedAcksSent",
310 num_truncated_acks_sent_); 311 num_truncated_acks_sent_);
311 UMA_HISTOGRAM_COUNTS("Net.QuicSession.TruncatedAcksReceived", 312 UMA_HISTOGRAM_COUNTS("Net.QuicSession.TruncatedAcksReceived",
312 num_truncated_acks_received_); 313 num_truncated_acks_received_);
(...skipping 559 matching lines...) Expand 10 before | Expand all | Expand 10 after
872 continue; 873 continue;
873 } 874 }
874 // Record some overlapping patterns, to get a better picture, since this is 875 // Record some overlapping patterns, to get a better picture, since this is
875 // not very expensive. 876 // not very expensive.
876 if (i % 3 == 0) 877 if (i % 3 == 0)
877 six_packet_histogram->Add(recent_6_mask); 878 six_packet_histogram->Add(recent_6_mask);
878 } 879 }
879 } 880 }
880 881
881 } // namespace net 882 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_chromium_client_session_test.cc ('k') | net/quic/quic_end_to_end_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698