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

Side by Side Diff: net/spdy/spdy_test_util_common.cc

Issue 266243004: Clang format slam. Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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 | Annotate | Revision Log
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/spdy/spdy_test_util_common.h" 5 #include "net/spdy/spdy_test_util_common.h"
6 6
7 #include <cstddef> 7 #include <cstddef>
8 8
9 #include "base/compiler_specific.h" 9 #include "base/compiler_specific.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 13 matching lines...) Expand all
24 #include "net/spdy/spdy_session.h" 24 #include "net/spdy/spdy_session.h"
25 #include "net/spdy/spdy_session_pool.h" 25 #include "net/spdy/spdy_session_pool.h"
26 #include "net/spdy/spdy_stream.h" 26 #include "net/spdy/spdy_stream.h"
27 27
28 namespace net { 28 namespace net {
29 29
30 namespace { 30 namespace {
31 31
32 bool next_proto_is_spdy(NextProto next_proto) { 32 bool next_proto_is_spdy(NextProto next_proto) {
33 return next_proto >= kProtoSPDYMinimumVersion && 33 return next_proto >= kProtoSPDYMinimumVersion &&
34 next_proto <= kProtoSPDYMaximumVersion; 34 next_proto <= kProtoSPDYMaximumVersion;
35 } 35 }
36 36
37 // Parses a URL into the scheme, host, and path components required for a 37 // Parses a URL into the scheme, host, and path components required for a
38 // SPDY request. 38 // SPDY request.
39 void ParseUrl(base::StringPiece url, std::string* scheme, std::string* host, 39 void ParseUrl(base::StringPiece url,
40 std::string* scheme,
41 std::string* host,
40 std::string* path) { 42 std::string* path) {
41 GURL gurl(url.as_string()); 43 GURL gurl(url.as_string());
42 path->assign(gurl.PathForRequest()); 44 path->assign(gurl.PathForRequest());
43 scheme->assign(gurl.scheme()); 45 scheme->assign(gurl.scheme());
44 host->assign(gurl.host()); 46 host->assign(gurl.host());
45 if (gurl.has_port()) { 47 if (gurl.has_port()) {
46 host->append(":"); 48 host->append(":");
47 host->append(gurl.port()); 49 host->append(gurl.port());
48 } 50 }
49 } 51 }
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 return CreateMockRead(resp, seq, ASYNC); 178 return CreateMockRead(resp, seq, ASYNC);
177 } 179 }
178 180
179 // Create a MockRead from the given SpdyFrame and sequence number. 181 // Create a MockRead from the given SpdyFrame and sequence number.
180 MockRead CreateMockRead(const SpdyFrame& resp, int seq, IoMode mode) { 182 MockRead CreateMockRead(const SpdyFrame& resp, int seq, IoMode mode) {
181 return MockRead(mode, resp.data(), resp.size(), seq); 183 return MockRead(mode, resp.data(), resp.size(), seq);
182 } 184 }
183 185
184 // Combines the given SpdyFrames into the given char array and returns 186 // Combines the given SpdyFrames into the given char array and returns
185 // the total length. 187 // the total length.
186 int CombineFrames(const SpdyFrame** frames, int num_frames, 188 int CombineFrames(const SpdyFrame** frames,
187 char* buff, int buff_len) { 189 int num_frames,
190 char* buff,
191 int buff_len) {
188 int total_len = 0; 192 int total_len = 0;
189 for (int i = 0; i < num_frames; ++i) { 193 for (int i = 0; i < num_frames; ++i) {
190 total_len += frames[i]->size(); 194 total_len += frames[i]->size();
191 } 195 }
192 DCHECK_LE(total_len, buff_len); 196 DCHECK_LE(total_len, buff_len);
193 char* ptr = buff; 197 char* ptr = buff;
194 for (int i = 0; i < num_frames; ++i) { 198 for (int i = 0; i < num_frames; ++i) {
195 int len = frames[i]->size(); 199 int len = frames[i]->size();
196 memcpy(ptr, frames[i]->data(), len); 200 memcpy(ptr, frames[i]->data(), len);
197 ptr += len; 201 ptr += len;
198 } 202 }
199 return total_len; 203 return total_len;
200 } 204 }
201 205
202 namespace { 206 namespace {
203 207
204 class PriorityGetter : public BufferedSpdyFramerVisitorInterface { 208 class PriorityGetter : public BufferedSpdyFramerVisitorInterface {
205 public: 209 public:
206 PriorityGetter() : priority_(0) {} 210 PriorityGetter() : priority_(0) {}
207 virtual ~PriorityGetter() {} 211 virtual ~PriorityGetter() {}
208 212
209 SpdyPriority priority() const { 213 SpdyPriority priority() const { return priority_; }
210 return priority_;
211 }
212 214
213 virtual void OnError(SpdyFramer::SpdyError error_code) OVERRIDE {} 215 virtual void OnError(SpdyFramer::SpdyError error_code) OVERRIDE {}
214 virtual void OnStreamError(SpdyStreamId stream_id, 216 virtual void OnStreamError(SpdyStreamId stream_id,
215 const std::string& description) OVERRIDE {} 217 const std::string& description) OVERRIDE {}
216 virtual void OnSynStream(SpdyStreamId stream_id, 218 virtual void OnSynStream(SpdyStreamId stream_id,
217 SpdyStreamId associated_stream_id, 219 SpdyStreamId associated_stream_id,
218 SpdyPriority priority, 220 SpdyPriority priority,
219 bool fin, 221 bool fin,
220 bool unidirectional, 222 bool unidirectional,
221 const SpdyHeaderBlock& headers) OVERRIDE { 223 const SpdyHeaderBlock& headers) OVERRIDE {
222 priority_ = priority; 224 priority_ = priority;
223 } 225 }
224 virtual void OnSynReply(SpdyStreamId stream_id, 226 virtual void OnSynReply(SpdyStreamId stream_id,
225 bool fin, 227 bool fin,
226 const SpdyHeaderBlock& headers) OVERRIDE {} 228 const SpdyHeaderBlock& headers) OVERRIDE {}
227 virtual void OnHeaders(SpdyStreamId stream_id, 229 virtual void OnHeaders(SpdyStreamId stream_id,
228 bool fin, 230 bool fin,
229 const SpdyHeaderBlock& headers) OVERRIDE {} 231 const SpdyHeaderBlock& headers) OVERRIDE {}
230 virtual void OnDataFrameHeader(SpdyStreamId stream_id, 232 virtual void OnDataFrameHeader(SpdyStreamId stream_id,
231 size_t length, 233 size_t length,
232 bool fin) OVERRIDE {} 234 bool fin) OVERRIDE {}
233 virtual void OnStreamFrameData(SpdyStreamId stream_id, 235 virtual void OnStreamFrameData(SpdyStreamId stream_id,
234 const char* data, 236 const char* data,
235 size_t len, 237 size_t len,
236 bool fin) OVERRIDE {} 238 bool fin) OVERRIDE {}
237 virtual void OnSettings(bool clear_persisted) OVERRIDE {} 239 virtual void OnSettings(bool clear_persisted) OVERRIDE {}
238 virtual void OnSetting( 240 virtual void OnSetting(SpdySettingsIds id,
239 SpdySettingsIds id, uint8 flags, uint32 value) OVERRIDE {} 241 uint8 flags,
242 uint32 value) OVERRIDE {}
240 virtual void OnPing(SpdyPingId unique_id, bool is_ack) OVERRIDE {} 243 virtual void OnPing(SpdyPingId unique_id, bool is_ack) OVERRIDE {}
241 virtual void OnRstStream(SpdyStreamId stream_id, 244 virtual void OnRstStream(SpdyStreamId stream_id,
242 SpdyRstStreamStatus status) OVERRIDE {} 245 SpdyRstStreamStatus status) OVERRIDE {}
243 virtual void OnGoAway(SpdyStreamId last_accepted_stream_id, 246 virtual void OnGoAway(SpdyStreamId last_accepted_stream_id,
244 SpdyGoAwayStatus status) OVERRIDE {} 247 SpdyGoAwayStatus status) OVERRIDE {}
245 virtual void OnWindowUpdate(SpdyStreamId stream_id, 248 virtual void OnWindowUpdate(SpdyStreamId stream_id,
246 uint32 delta_window_size) OVERRIDE {} 249 uint32 delta_window_size) OVERRIDE {}
247 virtual void OnPushPromise(SpdyStreamId stream_id, 250 virtual void OnPushPromise(SpdyStreamId stream_id,
248 SpdyStreamId promised_stream_id) OVERRIDE {} 251 SpdyStreamId promised_stream_id) OVERRIDE {}
249 252
(...skipping 17 matching lines...) Expand all
267 return true; 270 return true;
268 } 271 }
269 272
270 base::WeakPtr<SpdyStream> CreateStreamSynchronously( 273 base::WeakPtr<SpdyStream> CreateStreamSynchronously(
271 SpdyStreamType type, 274 SpdyStreamType type,
272 const base::WeakPtr<SpdySession>& session, 275 const base::WeakPtr<SpdySession>& session,
273 const GURL& url, 276 const GURL& url,
274 RequestPriority priority, 277 RequestPriority priority,
275 const BoundNetLog& net_log) { 278 const BoundNetLog& net_log) {
276 SpdyStreamRequest stream_request; 279 SpdyStreamRequest stream_request;
277 int rv = stream_request.StartRequest(type, session, url, priority, net_log, 280 int rv = stream_request.StartRequest(
278 CompletionCallback()); 281 type, session, url, priority, net_log, CompletionCallback());
279 return 282 return (rv == OK) ? stream_request.ReleaseStream()
280 (rv == OK) ? stream_request.ReleaseStream() : base::WeakPtr<SpdyStream>(); 283 : base::WeakPtr<SpdyStream>();
281 } 284 }
282 285
283 StreamReleaserCallback::StreamReleaserCallback() {} 286 StreamReleaserCallback::StreamReleaserCallback() {
287 }
284 288
285 StreamReleaserCallback::~StreamReleaserCallback() {} 289 StreamReleaserCallback::~StreamReleaserCallback() {
290 }
286 291
287 CompletionCallback StreamReleaserCallback::MakeCallback( 292 CompletionCallback StreamReleaserCallback::MakeCallback(
288 SpdyStreamRequest* request) { 293 SpdyStreamRequest* request) {
289 return base::Bind(&StreamReleaserCallback::OnComplete, 294 return base::Bind(
290 base::Unretained(this), 295 &StreamReleaserCallback::OnComplete, base::Unretained(this), request);
291 request);
292 } 296 }
293 297
294 void StreamReleaserCallback::OnComplete( 298 void StreamReleaserCallback::OnComplete(SpdyStreamRequest* request,
295 SpdyStreamRequest* request, int result) { 299 int result) {
296 if (result == OK) 300 if (result == OK)
297 request->ReleaseStream()->Cancel(); 301 request->ReleaseStream()->Cancel();
298 SetResult(result); 302 SetResult(result);
299 } 303 }
300 304
301 MockECSignatureCreator::MockECSignatureCreator(crypto::ECPrivateKey* key) 305 MockECSignatureCreator::MockECSignatureCreator(crypto::ECPrivateKey* key)
302 : key_(key) { 306 : key_(key) {
303 } 307 }
304 308
305 bool MockECSignatureCreator::Sign(const uint8* data, 309 bool MockECSignatureCreator::Sign(const uint8* data,
306 int data_len, 310 int data_len,
307 std::vector<uint8>* signature) { 311 std::vector<uint8>* signature) {
308 std::vector<uint8> private_key_value; 312 std::vector<uint8> private_key_value;
309 key_->ExportValue(&private_key_value); 313 key_->ExportValue(&private_key_value);
310 std::string head = "fakesignature"; 314 std::string head = "fakesignature";
311 std::string tail = "/fakesignature"; 315 std::string tail = "/fakesignature";
312 316
313 signature->clear(); 317 signature->clear();
314 signature->insert(signature->end(), head.begin(), head.end()); 318 signature->insert(signature->end(), head.begin(), head.end());
315 signature->insert(signature->end(), private_key_value.begin(), 319 signature->insert(
316 private_key_value.end()); 320 signature->end(), private_key_value.begin(), private_key_value.end());
317 signature->insert(signature->end(), '-'); 321 signature->insert(signature->end(), '-');
318 signature->insert(signature->end(), data, data + data_len); 322 signature->insert(signature->end(), data, data + data_len);
319 signature->insert(signature->end(), tail.begin(), tail.end()); 323 signature->insert(signature->end(), tail.begin(), tail.end());
320 return true; 324 return true;
321 } 325 }
322 326
323 bool MockECSignatureCreator::DecodeSignature( 327 bool MockECSignatureCreator::DecodeSignature(
324 const std::vector<uint8>& signature, 328 const std::vector<uint8>& signature,
325 std::vector<uint8>* out_raw_sig) { 329 std::vector<uint8>* out_raw_sig) {
326 *out_raw_sig = signature; 330 *out_raw_sig = signature;
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
362 366
363 // Note: The CancelledTransaction test does cleanup by running all 367 // Note: The CancelledTransaction test does cleanup by running all
364 // tasks in the message loop (RunAllPending). Unfortunately, that 368 // tasks in the message loop (RunAllPending). Unfortunately, that
365 // doesn't clean up tasks on the host resolver thread; and 369 // doesn't clean up tasks on the host resolver thread; and
366 // TCPConnectJob is currently not cancellable. Using synchronous 370 // TCPConnectJob is currently not cancellable. Using synchronous
367 // lookups allows the test to shutdown cleanly. Until we have 371 // lookups allows the test to shutdown cleanly. Until we have
368 // cancellable TCPConnectJobs, use synchronous lookups. 372 // cancellable TCPConnectJobs, use synchronous lookups.
369 host_resolver->set_synchronous_mode(true); 373 host_resolver->set_synchronous_mode(true);
370 } 374 }
371 375
372 SpdySessionDependencies::SpdySessionDependencies( 376 SpdySessionDependencies::SpdySessionDependencies(NextProto protocol,
373 NextProto protocol, ProxyService* proxy_service) 377 ProxyService* proxy_service)
374 : host_resolver(new MockHostResolver), 378 : host_resolver(new MockHostResolver),
375 cert_verifier(new MockCertVerifier), 379 cert_verifier(new MockCertVerifier),
376 transport_security_state(new TransportSecurityState), 380 transport_security_state(new TransportSecurityState),
377 proxy_service(proxy_service), 381 proxy_service(proxy_service),
378 ssl_config_service(new SSLConfigServiceDefaults), 382 ssl_config_service(new SSLConfigServiceDefaults),
379 socket_factory(new MockClientSocketFactory), 383 socket_factory(new MockClientSocketFactory),
380 deterministic_socket_factory(new DeterministicMockClientSocketFactory), 384 deterministic_socket_factory(new DeterministicMockClientSocketFactory),
381 http_auth_handler_factory( 385 http_auth_handler_factory(
382 HttpAuthHandlerFactory::CreateDefault(host_resolver.get())), 386 HttpAuthHandlerFactory::CreateDefault(host_resolver.get())),
383 enable_ip_pooling(true), 387 enable_ip_pooling(true),
384 enable_compression(false), 388 enable_compression(false),
385 enable_ping(false), 389 enable_ping(false),
386 enable_user_alternate_protocol_ports(false), 390 enable_user_alternate_protocol_ports(false),
387 protocol(protocol), 391 protocol(protocol),
388 stream_initial_recv_window_size(kSpdyStreamInitialWindowSize), 392 stream_initial_recv_window_size(kSpdyStreamInitialWindowSize),
389 time_func(&base::TimeTicks::Now), 393 time_func(&base::TimeTicks::Now),
390 net_log(NULL) { 394 net_log(NULL) {
391 DCHECK(next_proto_is_spdy(protocol)) << "Invalid protocol: " << protocol; 395 DCHECK(next_proto_is_spdy(protocol)) << "Invalid protocol: " << protocol;
392 } 396 }
393 397
394 SpdySessionDependencies::~SpdySessionDependencies() {} 398 SpdySessionDependencies::~SpdySessionDependencies() {
399 }
395 400
396 // static 401 // static
397 HttpNetworkSession* SpdySessionDependencies::SpdyCreateSession( 402 HttpNetworkSession* SpdySessionDependencies::SpdyCreateSession(
398 SpdySessionDependencies* session_deps) { 403 SpdySessionDependencies* session_deps) {
399 net::HttpNetworkSession::Params params = CreateSessionParams(session_deps); 404 net::HttpNetworkSession::Params params = CreateSessionParams(session_deps);
400 params.client_socket_factory = session_deps->socket_factory.get(); 405 params.client_socket_factory = session_deps->socket_factory.get();
401 HttpNetworkSession* http_session = new HttpNetworkSession(params); 406 HttpNetworkSession* http_session = new HttpNetworkSession(params);
402 SpdySessionPoolPeer pool_peer(http_session->spdy_session_pool()); 407 SpdySessionPoolPeer pool_peer(http_session->spdy_session_pool());
403 pool_peer.SetEnableSendingInitialData(false); 408 pool_peer.SetEnableSendingInitialData(false);
404 return http_session; 409 return http_session;
405 } 410 }
406 411
407 // static 412 // static
408 HttpNetworkSession* SpdySessionDependencies::SpdyCreateSessionDeterministic( 413 HttpNetworkSession* SpdySessionDependencies::SpdyCreateSessionDeterministic(
409 SpdySessionDependencies* session_deps) { 414 SpdySessionDependencies* session_deps) {
410 net::HttpNetworkSession::Params params = CreateSessionParams(session_deps); 415 net::HttpNetworkSession::Params params = CreateSessionParams(session_deps);
411 params.client_socket_factory = 416 params.client_socket_factory =
412 session_deps->deterministic_socket_factory.get(); 417 session_deps->deterministic_socket_factory.get();
413 HttpNetworkSession* http_session = new HttpNetworkSession(params); 418 HttpNetworkSession* http_session = new HttpNetworkSession(params);
414 SpdySessionPoolPeer pool_peer(http_session->spdy_session_pool()); 419 SpdySessionPoolPeer pool_peer(http_session->spdy_session_pool());
415 pool_peer.SetEnableSendingInitialData(false); 420 pool_peer.SetEnableSendingInitialData(false);
416 return http_session; 421 return http_session;
417 } 422 }
418 423
419 // static 424 // static
420 net::HttpNetworkSession::Params SpdySessionDependencies::CreateSessionParams( 425 net::HttpNetworkSession::Params SpdySessionDependencies::CreateSessionParams(
421 SpdySessionDependencies* session_deps) { 426 SpdySessionDependencies* session_deps) {
422 DCHECK(next_proto_is_spdy(session_deps->protocol)) << 427 DCHECK(next_proto_is_spdy(session_deps->protocol))
423 "Invalid protocol: " << session_deps->protocol; 428 << "Invalid protocol: " << session_deps->protocol;
424 429
425 net::HttpNetworkSession::Params params; 430 net::HttpNetworkSession::Params params;
426 params.host_resolver = session_deps->host_resolver.get(); 431 params.host_resolver = session_deps->host_resolver.get();
427 params.cert_verifier = session_deps->cert_verifier.get(); 432 params.cert_verifier = session_deps->cert_verifier.get();
428 params.transport_security_state = 433 params.transport_security_state =
429 session_deps->transport_security_state.get(); 434 session_deps->transport_security_state.get();
430 params.proxy_service = session_deps->proxy_service.get(); 435 params.proxy_service = session_deps->proxy_service.get();
431 params.ssl_config_service = session_deps->ssl_config_service.get(); 436 params.ssl_config_service = session_deps->ssl_config_service.get();
432 params.http_auth_handler_factory = 437 params.http_auth_handler_factory =
433 session_deps->http_auth_handler_factory.get(); 438 session_deps->http_auth_handler_factory.get();
(...skipping 14 matching lines...) Expand all
448 453
449 SpdyURLRequestContext::SpdyURLRequestContext(NextProto protocol) 454 SpdyURLRequestContext::SpdyURLRequestContext(NextProto protocol)
450 : storage_(this) { 455 : storage_(this) {
451 DCHECK(next_proto_is_spdy(protocol)) << "Invalid protocol: " << protocol; 456 DCHECK(next_proto_is_spdy(protocol)) << "Invalid protocol: " << protocol;
452 457
453 storage_.set_host_resolver(scoped_ptr<HostResolver>(new MockHostResolver)); 458 storage_.set_host_resolver(scoped_ptr<HostResolver>(new MockHostResolver));
454 storage_.set_cert_verifier(new MockCertVerifier); 459 storage_.set_cert_verifier(new MockCertVerifier);
455 storage_.set_transport_security_state(new TransportSecurityState); 460 storage_.set_transport_security_state(new TransportSecurityState);
456 storage_.set_proxy_service(ProxyService::CreateDirect()); 461 storage_.set_proxy_service(ProxyService::CreateDirect());
457 storage_.set_ssl_config_service(new SSLConfigServiceDefaults); 462 storage_.set_ssl_config_service(new SSLConfigServiceDefaults);
458 storage_.set_http_auth_handler_factory(HttpAuthHandlerFactory::CreateDefault( 463 storage_.set_http_auth_handler_factory(
459 host_resolver())); 464 HttpAuthHandlerFactory::CreateDefault(host_resolver()));
460 storage_.set_http_server_properties( 465 storage_.set_http_server_properties(
461 scoped_ptr<HttpServerProperties>(new HttpServerPropertiesImpl())); 466 scoped_ptr<HttpServerProperties>(new HttpServerPropertiesImpl()));
462 net::HttpNetworkSession::Params params; 467 net::HttpNetworkSession::Params params;
463 params.client_socket_factory = &socket_factory_; 468 params.client_socket_factory = &socket_factory_;
464 params.host_resolver = host_resolver(); 469 params.host_resolver = host_resolver();
465 params.cert_verifier = cert_verifier(); 470 params.cert_verifier = cert_verifier();
466 params.transport_security_state = transport_security_state(); 471 params.transport_security_state = transport_security_state();
467 params.proxy_service = proxy_service(); 472 params.proxy_service = proxy_service();
468 params.ssl_config_service = ssl_config_service(); 473 params.ssl_config_service = ssl_config_service();
469 params.http_auth_handler_factory = http_auth_handler_factory(); 474 params.http_auth_handler_factory = http_auth_handler_factory();
(...skipping 22 matching lines...) Expand all
492 base::WeakPtr<SpdySession> CreateSpdySessionHelper( 497 base::WeakPtr<SpdySession> CreateSpdySessionHelper(
493 const scoped_refptr<HttpNetworkSession>& http_session, 498 const scoped_refptr<HttpNetworkSession>& http_session,
494 const SpdySessionKey& key, 499 const SpdySessionKey& key,
495 const BoundNetLog& net_log, 500 const BoundNetLog& net_log,
496 Error expected_status, 501 Error expected_status,
497 bool is_secure) { 502 bool is_secure) {
498 EXPECT_FALSE(HasSpdySession(http_session->spdy_session_pool(), key)); 503 EXPECT_FALSE(HasSpdySession(http_session->spdy_session_pool(), key));
499 504
500 scoped_refptr<TransportSocketParams> transport_params( 505 scoped_refptr<TransportSocketParams> transport_params(
501 new TransportSocketParams( 506 new TransportSocketParams(
502 key.host_port_pair(), false, false, 507 key.host_port_pair(), false, false, OnHostResolutionCallback()));
503 OnHostResolutionCallback()));
504 508
505 scoped_ptr<ClientSocketHandle> connection(new ClientSocketHandle); 509 scoped_ptr<ClientSocketHandle> connection(new ClientSocketHandle);
506 TestCompletionCallback callback; 510 TestCompletionCallback callback;
507 511
508 int rv = ERR_UNEXPECTED; 512 int rv = ERR_UNEXPECTED;
509 if (is_secure) { 513 if (is_secure) {
510 SSLConfig ssl_config; 514 SSLConfig ssl_config;
511 scoped_refptr<SSLSocketParams> ssl_params( 515 scoped_refptr<SSLSocketParams> ssl_params(
512 new SSLSocketParams(transport_params, 516 new SSLSocketParams(transport_params,
513 NULL, 517 NULL,
514 NULL, 518 NULL,
515 key.host_port_pair(), 519 key.host_port_pair(),
516 ssl_config, 520 ssl_config,
517 key.privacy_mode(), 521 key.privacy_mode(),
518 0, 522 0,
519 false, 523 false,
520 false)); 524 false));
521 rv = connection->Init(key.host_port_pair().ToString(), 525 rv = connection->Init(
522 ssl_params, 526 key.host_port_pair().ToString(),
523 MEDIUM, 527 ssl_params,
524 callback.callback(), 528 MEDIUM,
525 http_session->GetSSLSocketPool( 529 callback.callback(),
526 HttpNetworkSession::NORMAL_SOCKET_POOL), 530 http_session->GetSSLSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL),
527 net_log); 531 net_log);
528 } else { 532 } else {
529 rv = connection->Init(key.host_port_pair().ToString(), 533 rv = connection->Init(key.host_port_pair().ToString(),
530 transport_params, 534 transport_params,
531 MEDIUM, 535 MEDIUM,
532 callback.callback(), 536 callback.callback(),
533 http_session->GetTransportSocketPool( 537 http_session->GetTransportSocketPool(
534 HttpNetworkSession::NORMAL_SOCKET_POOL), 538 HttpNetworkSession::NORMAL_SOCKET_POOL),
535 net_log); 539 net_log);
536 } 540 }
537 541
(...skipping 10 matching lines...) Expand all
548 EXPECT_TRUE(HasSpdySession(http_session->spdy_session_pool(), key)); 552 EXPECT_TRUE(HasSpdySession(http_session->spdy_session_pool(), key));
549 return spdy_session; 553 return spdy_session;
550 } 554 }
551 555
552 } // namespace 556 } // namespace
553 557
554 base::WeakPtr<SpdySession> CreateInsecureSpdySession( 558 base::WeakPtr<SpdySession> CreateInsecureSpdySession(
555 const scoped_refptr<HttpNetworkSession>& http_session, 559 const scoped_refptr<HttpNetworkSession>& http_session,
556 const SpdySessionKey& key, 560 const SpdySessionKey& key,
557 const BoundNetLog& net_log) { 561 const BoundNetLog& net_log) {
558 return CreateSpdySessionHelper(http_session, key, net_log, 562 return CreateSpdySessionHelper(
559 OK, false /* is_secure */); 563 http_session, key, net_log, OK, false /* is_secure */);
560 } 564 }
561 565
562 base::WeakPtr<SpdySession> TryCreateInsecureSpdySessionExpectingFailure( 566 base::WeakPtr<SpdySession> TryCreateInsecureSpdySessionExpectingFailure(
563 const scoped_refptr<HttpNetworkSession>& http_session, 567 const scoped_refptr<HttpNetworkSession>& http_session,
564 const SpdySessionKey& key, 568 const SpdySessionKey& key,
565 Error expected_error, 569 Error expected_error,
566 const BoundNetLog& net_log) { 570 const BoundNetLog& net_log) {
567 DCHECK_LT(expected_error, ERR_IO_PENDING); 571 DCHECK_LT(expected_error, ERR_IO_PENDING);
568 return CreateSpdySessionHelper(http_session, key, net_log, 572 return CreateSpdySessionHelper(
569 expected_error, false /* is_secure */); 573 http_session, key, net_log, expected_error, false /* is_secure */);
570 } 574 }
571 575
572 base::WeakPtr<SpdySession> CreateSecureSpdySession( 576 base::WeakPtr<SpdySession> CreateSecureSpdySession(
573 const scoped_refptr<HttpNetworkSession>& http_session, 577 const scoped_refptr<HttpNetworkSession>& http_session,
574 const SpdySessionKey& key, 578 const SpdySessionKey& key,
575 const BoundNetLog& net_log) { 579 const BoundNetLog& net_log) {
576 return CreateSpdySessionHelper(http_session, key, net_log, 580 return CreateSpdySessionHelper(
577 OK, true /* is_secure */); 581 http_session, key, net_log, OK, true /* is_secure */);
578 } 582 }
579 583
580 namespace { 584 namespace {
581 585
582 // A ClientSocket used for CreateFakeSpdySession() below. 586 // A ClientSocket used for CreateFakeSpdySession() below.
583 class FakeSpdySessionClientSocket : public MockClientSocket { 587 class FakeSpdySessionClientSocket : public MockClientSocket {
584 public: 588 public:
585 FakeSpdySessionClientSocket(int read_result) 589 FakeSpdySessionClientSocket(int read_result)
586 : MockClientSocket(BoundNetLog()), 590 : MockClientSocket(BoundNetLog()), read_result_(read_result) {}
587 read_result_(read_result) {}
588 591
589 virtual ~FakeSpdySessionClientSocket() {} 592 virtual ~FakeSpdySessionClientSocket() {}
590 593
591 virtual int Read(IOBuffer* buf, int buf_len, 594 virtual int Read(IOBuffer* buf,
595 int buf_len,
592 const CompletionCallback& callback) OVERRIDE { 596 const CompletionCallback& callback) OVERRIDE {
593 return read_result_; 597 return read_result_;
594 } 598 }
595 599
596 virtual int Write(IOBuffer* buf, int buf_len, 600 virtual int Write(IOBuffer* buf,
601 int buf_len,
597 const CompletionCallback& callback) OVERRIDE { 602 const CompletionCallback& callback) OVERRIDE {
598 return ERR_IO_PENDING; 603 return ERR_IO_PENDING;
599 } 604 }
600 605
601 // Return kProtoUnknown to use the pool's default protocol. 606 // Return kProtoUnknown to use the pool's default protocol.
602 virtual NextProto GetNegotiatedProtocol() const OVERRIDE { 607 virtual NextProto GetNegotiatedProtocol() const OVERRIDE {
603 return kProtoUnknown; 608 return kProtoUnknown;
604 } 609 }
605 610
606 // The functions below are not expected to be called. 611 // The functions below are not expected to be called.
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
732 return ConstructHeaderBlock("PUT", url, &content_length); 737 return ConstructHeaderBlock("PUT", url, &content_length);
733 } 738 }
734 739
735 SpdyFrame* SpdyTestUtil::ConstructSpdyFrame( 740 SpdyFrame* SpdyTestUtil::ConstructSpdyFrame(
736 const SpdyHeaderInfo& header_info, 741 const SpdyHeaderInfo& header_info,
737 scoped_ptr<SpdyHeaderBlock> headers) const { 742 scoped_ptr<SpdyHeaderBlock> headers) const {
738 BufferedSpdyFramer framer(spdy_version_, header_info.compressed); 743 BufferedSpdyFramer framer(spdy_version_, header_info.compressed);
739 SpdyFrame* frame = NULL; 744 SpdyFrame* frame = NULL;
740 switch (header_info.kind) { 745 switch (header_info.kind) {
741 case DATA: 746 case DATA:
742 frame = framer.CreateDataFrame(header_info.id, header_info.data, 747 frame = framer.CreateDataFrame(header_info.id,
748 header_info.data,
743 header_info.data_length, 749 header_info.data_length,
744 header_info.data_flags); 750 header_info.data_flags);
745 break; 751 break;
746 case SYN_STREAM: 752 case SYN_STREAM: {
747 { 753 frame = framer.CreateSynStream(header_info.id,
748 frame = framer.CreateSynStream(header_info.id, header_info.assoc_id, 754 header_info.assoc_id,
749 header_info.priority, 755 header_info.priority,
750 header_info.control_flags, 756 header_info.control_flags,
751 headers.get()); 757 headers.get());
752 } 758 } break;
753 break;
754 case SYN_REPLY: 759 case SYN_REPLY:
755 frame = framer.CreateSynReply(header_info.id, header_info.control_flags, 760 frame = framer.CreateSynReply(
756 headers.get()); 761 header_info.id, header_info.control_flags, headers.get());
757 break; 762 break;
758 case RST_STREAM: 763 case RST_STREAM:
759 frame = framer.CreateRstStream(header_info.id, header_info.status); 764 frame = framer.CreateRstStream(header_info.id, header_info.status);
760 break; 765 break;
761 case HEADERS: 766 case HEADERS:
762 frame = framer.CreateHeaders(header_info.id, header_info.control_flags, 767 frame = framer.CreateHeaders(
763 headers.get()); 768 header_info.id, header_info.control_flags, headers.get());
764 break; 769 break;
765 default: 770 default:
766 ADD_FAILURE(); 771 ADD_FAILURE();
767 break; 772 break;
768 } 773 }
769 return frame; 774 return frame;
770 } 775 }
771 776
772 SpdyFrame* SpdyTestUtil::ConstructSpdyFrame(const SpdyHeaderInfo& header_info, 777 SpdyFrame* SpdyTestUtil::ConstructSpdyFrame(const SpdyHeaderInfo& header_info,
773 const char* const extra_headers[], 778 const char* const extra_headers[],
(...skipping 11 matching lines...) Expand all
785 scoped_ptr<SpdyHeaderBlock> headers, 790 scoped_ptr<SpdyHeaderBlock> headers,
786 bool compressed, 791 bool compressed,
787 SpdyStreamId stream_id, 792 SpdyStreamId stream_id,
788 RequestPriority request_priority, 793 RequestPriority request_priority,
789 SpdyFrameType type, 794 SpdyFrameType type,
790 SpdyControlFlags flags, 795 SpdyControlFlags flags,
791 SpdyStreamId associated_stream_id) const { 796 SpdyStreamId associated_stream_id) const {
792 EXPECT_GE(type, FIRST_CONTROL_TYPE); 797 EXPECT_GE(type, FIRST_CONTROL_TYPE);
793 EXPECT_LE(type, LAST_CONTROL_TYPE); 798 EXPECT_LE(type, LAST_CONTROL_TYPE);
794 const SpdyHeaderInfo header_info = { 799 const SpdyHeaderInfo header_info = {
795 type, 800 type,
796 stream_id, 801 stream_id,
797 associated_stream_id, 802 associated_stream_id,
798 ConvertRequestPriorityToSpdyPriority(request_priority, spdy_version_), 803 ConvertRequestPriorityToSpdyPriority(request_priority, spdy_version_),
799 0, // credential slot 804 0, // credential slot
800 flags, 805 flags,
801 compressed, 806 compressed,
802 RST_STREAM_INVALID, // status 807 RST_STREAM_INVALID, // status
803 NULL, // data 808 NULL, // data
804 0, // length 809 0, // length
805 DATA_FLAG_NONE 810 DATA_FLAG_NONE};
806 };
807 return ConstructSpdyFrame(header_info, headers.Pass()); 811 return ConstructSpdyFrame(header_info, headers.Pass());
808 } 812 }
809 813
810 SpdyFrame* SpdyTestUtil::ConstructSpdyControlFrame( 814 SpdyFrame* SpdyTestUtil::ConstructSpdyControlFrame(
811 const char* const extra_headers[], 815 const char* const extra_headers[],
812 int extra_header_count, 816 int extra_header_count,
813 bool compressed, 817 bool compressed,
814 SpdyStreamId stream_id, 818 SpdyStreamId stream_id,
815 RequestPriority request_priority, 819 RequestPriority request_priority,
816 SpdyFrameType type, 820 SpdyFrameType type,
817 SpdyControlFlags flags, 821 SpdyControlFlags flags,
818 const char* const* tail_headers, 822 const char* const* tail_headers,
819 int tail_header_size, 823 int tail_header_size,
820 SpdyStreamId associated_stream_id) const { 824 SpdyStreamId associated_stream_id) const {
821 scoped_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock()); 825 scoped_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock());
822 AppendToHeaderBlock(extra_headers, extra_header_count, headers.get()); 826 AppendToHeaderBlock(extra_headers, extra_header_count, headers.get());
823 if (tail_headers && tail_header_size) 827 if (tail_headers && tail_header_size)
824 AppendToHeaderBlock(tail_headers, tail_header_size / 2, headers.get()); 828 AppendToHeaderBlock(tail_headers, tail_header_size / 2, headers.get());
825 return ConstructSpdyControlFrame( 829 return ConstructSpdyControlFrame(headers.Pass(),
826 headers.Pass(), compressed, stream_id, 830 compressed,
827 request_priority, type, flags, associated_stream_id); 831 stream_id,
832 request_priority,
833 type,
834 flags,
835 associated_stream_id);
828 } 836 }
829 837
830 std::string SpdyTestUtil::ConstructSpdyReplyString( 838 std::string SpdyTestUtil::ConstructSpdyReplyString(
831 const SpdyHeaderBlock& headers) const { 839 const SpdyHeaderBlock& headers) const {
832 std::string reply_string; 840 std::string reply_string;
833 for (SpdyHeaderBlock::const_iterator it = headers.begin(); 841 for (SpdyHeaderBlock::const_iterator it = headers.begin();
834 it != headers.end(); ++it) { 842 it != headers.end();
843 ++it) {
835 std::string key = it->first; 844 std::string key = it->first;
836 // Remove leading colon from "special" headers (for SPDY3 and 845 // Remove leading colon from "special" headers (for SPDY3 and
837 // above). 846 // above).
838 if (spdy_version() >= SPDY3 && key[0] == ':') 847 if (spdy_version() >= SPDY3 && key[0] == ':')
839 key = key.substr(1); 848 key = key.substr(1);
840 std::vector<std::string> values; 849 std::vector<std::string> values;
841 base::SplitString(it->second, '\0', &values); 850 base::SplitString(it->second, '\0', &values);
842 for (std::vector<std::string>::const_iterator it2 = values.begin(); 851 for (std::vector<std::string>::const_iterator it2 = values.begin();
843 it2 != values.end(); ++it2) { 852 it2 != values.end();
853 ++it2) {
844 reply_string += key + ": " + *it2 + "\n"; 854 reply_string += key + ": " + *it2 + "\n";
845 } 855 }
846 } 856 }
847 return reply_string; 857 return reply_string;
848 } 858 }
849 859
850 // TODO(jgraettinger): Eliminate uses of this method in tests (prefer 860 // TODO(jgraettinger): Eliminate uses of this method in tests (prefer
851 // SpdySettingsIR). 861 // SpdySettingsIR).
852 SpdyFrame* SpdyTestUtil::ConstructSpdySettings( 862 SpdyFrame* SpdyTestUtil::ConstructSpdySettings(
853 const SettingsMap& settings) const { 863 const SettingsMap& settings) const {
854 SpdySettingsIR settings_ir; 864 SpdySettingsIR settings_ir;
855 for (SettingsMap::const_iterator it = settings.begin(); 865 for (SettingsMap::const_iterator it = settings.begin(); it != settings.end();
856 it != settings.end();
857 ++it) { 866 ++it) {
858 settings_ir.AddSetting( 867 settings_ir.AddSetting(
859 it->first, 868 it->first,
860 (it->second.first & SETTINGS_FLAG_PLEASE_PERSIST) != 0, 869 (it->second.first & SETTINGS_FLAG_PLEASE_PERSIST) != 0,
861 (it->second.first & SETTINGS_FLAG_PERSISTED) != 0, 870 (it->second.first & SETTINGS_FLAG_PERSISTED) != 0,
862 it->second.second); 871 it->second.second);
863 } 872 }
864 return CreateFramer(false)->SerializeFrame(settings_ir); 873 return CreateFramer(false)->SerializeFrame(settings_ir);
865 } 874 }
866 875
867 SpdyFrame* SpdyTestUtil::ConstructSpdyPing(uint32 ping_id, bool is_ack) const { 876 SpdyFrame* SpdyTestUtil::ConstructSpdyPing(uint32 ping_id, bool is_ack) const {
868 SpdyPingIR ping_ir(ping_id); 877 SpdyPingIR ping_ir(ping_id);
869 ping_ir.set_is_ack(is_ack); 878 ping_ir.set_is_ack(is_ack);
870 return CreateFramer(false)->SerializeFrame(ping_ir); 879 return CreateFramer(false)->SerializeFrame(ping_ir);
871 } 880 }
872 881
873 SpdyFrame* SpdyTestUtil::ConstructSpdyGoAway() const { 882 SpdyFrame* SpdyTestUtil::ConstructSpdyGoAway() const {
874 return ConstructSpdyGoAway(0); 883 return ConstructSpdyGoAway(0);
875 } 884 }
876 885
877 SpdyFrame* SpdyTestUtil::ConstructSpdyGoAway( 886 SpdyFrame* SpdyTestUtil::ConstructSpdyGoAway(
878 SpdyStreamId last_good_stream_id) const { 887 SpdyStreamId last_good_stream_id) const {
879 SpdyGoAwayIR go_ir(last_good_stream_id, GOAWAY_OK, "go away"); 888 SpdyGoAwayIR go_ir(last_good_stream_id, GOAWAY_OK, "go away");
880 return CreateFramer(false)->SerializeFrame(go_ir); 889 return CreateFramer(false)->SerializeFrame(go_ir);
881 } 890 }
882 891
883 SpdyFrame* SpdyTestUtil::ConstructSpdyWindowUpdate( 892 SpdyFrame* SpdyTestUtil::ConstructSpdyWindowUpdate(
884 const SpdyStreamId stream_id, uint32 delta_window_size) const { 893 const SpdyStreamId stream_id,
894 uint32 delta_window_size) const {
885 SpdyWindowUpdateIR update_ir(stream_id, delta_window_size); 895 SpdyWindowUpdateIR update_ir(stream_id, delta_window_size);
886 return CreateFramer(false)->SerializeFrame(update_ir); 896 return CreateFramer(false)->SerializeFrame(update_ir);
887 } 897 }
888 898
889 // TODO(jgraettinger): Eliminate uses of this method in tests (prefer 899 // TODO(jgraettinger): Eliminate uses of this method in tests (prefer
890 // SpdyRstStreamIR). 900 // SpdyRstStreamIR).
891 SpdyFrame* SpdyTestUtil::ConstructSpdyRstStream( 901 SpdyFrame* SpdyTestUtil::ConstructSpdyRstStream(
892 SpdyStreamId stream_id, 902 SpdyStreamId stream_id,
893 SpdyRstStreamStatus status) const { 903 SpdyRstStreamStatus status) const {
894 SpdyRstStreamIR rst_ir(stream_id, status, "RST"); 904 SpdyRstStreamIR rst_ir(stream_id, status, "RST");
895 return CreateFramer(false)->SerializeRstStream(rst_ir); 905 return CreateFramer(false)->SerializeRstStream(rst_ir);
896 } 906 }
897 907
898 SpdyFrame* SpdyTestUtil::ConstructSpdyGet( 908 SpdyFrame* SpdyTestUtil::ConstructSpdyGet(
899 const char* const url, 909 const char* const url,
900 bool compressed, 910 bool compressed,
901 SpdyStreamId stream_id, 911 SpdyStreamId stream_id,
902 RequestPriority request_priority) const { 912 RequestPriority request_priority) const {
903 const SpdyHeaderInfo header_info = { 913 const SpdyHeaderInfo header_info = {
904 SYN_STREAM, 914 SYN_STREAM,
905 stream_id, 915 stream_id,
906 0, // associated stream ID 916 0, // associated stream ID
907 ConvertRequestPriorityToSpdyPriority(request_priority, spdy_version_), 917 ConvertRequestPriorityToSpdyPriority(request_priority, spdy_version_),
908 0, // credential slot 918 0, // credential slot
909 CONTROL_FLAG_FIN, 919 CONTROL_FLAG_FIN,
910 compressed, 920 compressed,
911 RST_STREAM_INVALID, // status 921 RST_STREAM_INVALID, // status
912 NULL, // data 922 NULL, // data
913 0, // length 923 0, // length
914 DATA_FLAG_NONE 924 DATA_FLAG_NONE};
915 };
916 return ConstructSpdyFrame(header_info, ConstructGetHeaderBlock(url)); 925 return ConstructSpdyFrame(header_info, ConstructGetHeaderBlock(url));
917 } 926 }
918 927
919 SpdyFrame* SpdyTestUtil::ConstructSpdyGet(const char* const extra_headers[], 928 SpdyFrame* SpdyTestUtil::ConstructSpdyGet(const char* const extra_headers[],
920 int extra_header_count, 929 int extra_header_count,
921 bool compressed, 930 bool compressed,
922 int stream_id, 931 int stream_id,
923 RequestPriority request_priority, 932 RequestPriority request_priority,
924 bool direct) const { 933 bool direct) const {
925 SpdySynStreamIR syn_stream(stream_id); 934 SpdySynStreamIR syn_stream(stream_id);
926 syn_stream.set_priority( 935 syn_stream.set_priority(
927 ConvertRequestPriorityToSpdyPriority(request_priority, spdy_version_)); 936 ConvertRequestPriorityToSpdyPriority(request_priority, spdy_version_));
928 syn_stream.set_fin(true); 937 syn_stream.set_fin(true);
929 syn_stream.SetHeader(GetMethodKey(), "GET"); 938 syn_stream.SetHeader(GetMethodKey(), "GET");
930 syn_stream.SetHeader(GetHostKey(), "www.google.com"); 939 syn_stream.SetHeader(GetHostKey(), "www.google.com");
931 syn_stream.SetHeader(GetSchemeKey(), "http"); 940 syn_stream.SetHeader(GetSchemeKey(), "http");
932 syn_stream.SetHeader(GetPathKey(), (is_spdy2() && !direct) ? 941 syn_stream.SetHeader(
933 "http://www.google.com/" : "/"); 942 GetPathKey(), (is_spdy2() && !direct) ? "http://www.google.com/" : "/");
934 MaybeAddVersionHeader(&syn_stream); 943 MaybeAddVersionHeader(&syn_stream);
935 AppendToHeaderBlock(extra_headers, extra_header_count, 944 AppendToHeaderBlock(
936 syn_stream.mutable_name_value_block()); 945 extra_headers, extra_header_count, syn_stream.mutable_name_value_block());
937 return CreateFramer(compressed)->SerializeFrame(syn_stream); 946 return CreateFramer(compressed)->SerializeFrame(syn_stream);
938 } 947 }
939 948
940 SpdyFrame* SpdyTestUtil::ConstructSpdyConnect( 949 SpdyFrame* SpdyTestUtil::ConstructSpdyConnect(const char* const extra_headers[],
941 const char* const extra_headers[], 950 int extra_header_count,
942 int extra_header_count, 951 int stream_id,
943 int stream_id, 952 RequestPriority priority) const {
944 RequestPriority priority) const {
945 SpdySynStreamIR syn_stream(stream_id); 953 SpdySynStreamIR syn_stream(stream_id);
946 syn_stream.set_priority( 954 syn_stream.set_priority(
947 ConvertRequestPriorityToSpdyPriority(priority, spdy_version_)); 955 ConvertRequestPriorityToSpdyPriority(priority, spdy_version_));
948 syn_stream.SetHeader(GetMethodKey(), "CONNECT"); 956 syn_stream.SetHeader(GetMethodKey(), "CONNECT");
949 syn_stream.SetHeader(GetPathKey(), "www.google.com:443"); 957 syn_stream.SetHeader(GetPathKey(), "www.google.com:443");
950 syn_stream.SetHeader(GetHostKey(), "www.google.com"); 958 syn_stream.SetHeader(GetHostKey(), "www.google.com");
951 MaybeAddVersionHeader(&syn_stream); 959 MaybeAddVersionHeader(&syn_stream);
952 AppendToHeaderBlock(extra_headers, extra_header_count, 960 AppendToHeaderBlock(
953 syn_stream.mutable_name_value_block()); 961 extra_headers, extra_header_count, syn_stream.mutable_name_value_block());
954 return CreateFramer(false)->SerializeFrame(syn_stream); 962 return CreateFramer(false)->SerializeFrame(syn_stream);
955 } 963 }
956 964
957 SpdyFrame* SpdyTestUtil::ConstructSpdyPush(const char* const extra_headers[], 965 SpdyFrame* SpdyTestUtil::ConstructSpdyPush(const char* const extra_headers[],
958 int extra_header_count, 966 int extra_header_count,
959 int stream_id, 967 int stream_id,
960 int associated_stream_id, 968 int associated_stream_id,
961 const char* url) { 969 const char* url) {
962 scoped_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock()); 970 scoped_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock());
963 (*headers)["hello"] = "bye"; 971 (*headers)["hello"] = "bye";
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
1001 associated_stream_id); 1009 associated_stream_id);
1002 } 1010 }
1003 1011
1004 SpdyFrame* SpdyTestUtil::ConstructSpdyPushHeaders( 1012 SpdyFrame* SpdyTestUtil::ConstructSpdyPushHeaders(
1005 int stream_id, 1013 int stream_id,
1006 const char* const extra_headers[], 1014 const char* const extra_headers[],
1007 int extra_header_count) { 1015 int extra_header_count) {
1008 SpdyHeadersIR headers(stream_id); 1016 SpdyHeadersIR headers(stream_id);
1009 headers.SetHeader(GetStatusKey(), "200 OK"); 1017 headers.SetHeader(GetStatusKey(), "200 OK");
1010 MaybeAddVersionHeader(&headers); 1018 MaybeAddVersionHeader(&headers);
1011 AppendToHeaderBlock(extra_headers, extra_header_count, 1019 AppendToHeaderBlock(
1012 headers.mutable_name_value_block()); 1020 extra_headers, extra_header_count, headers.mutable_name_value_block());
1013 return CreateFramer(false)->SerializeFrame(headers); 1021 return CreateFramer(false)->SerializeFrame(headers);
1014 } 1022 }
1015 1023
1016 SpdyFrame* SpdyTestUtil::ConstructSpdySynReplyError( 1024 SpdyFrame* SpdyTestUtil::ConstructSpdySynReplyError(
1017 const char* const status, 1025 const char* const status,
1018 const char* const* const extra_headers, 1026 const char* const* const extra_headers,
1019 int extra_header_count, 1027 int extra_header_count,
1020 int stream_id) { 1028 int stream_id) {
1021 SpdySynReplyIR syn_reply(stream_id); 1029 SpdySynReplyIR syn_reply(stream_id);
1022 syn_reply.SetHeader("hello", "bye"); 1030 syn_reply.SetHeader("hello", "bye");
1023 syn_reply.SetHeader(GetStatusKey(), status); 1031 syn_reply.SetHeader(GetStatusKey(), status);
1024 MaybeAddVersionHeader(&syn_reply); 1032 MaybeAddVersionHeader(&syn_reply);
1025 AppendToHeaderBlock(extra_headers, extra_header_count, 1033 AppendToHeaderBlock(
1026 syn_reply.mutable_name_value_block()); 1034 extra_headers, extra_header_count, syn_reply.mutable_name_value_block());
1027 return CreateFramer(false)->SerializeFrame(syn_reply); 1035 return CreateFramer(false)->SerializeFrame(syn_reply);
1028 } 1036 }
1029 1037
1030 SpdyFrame* SpdyTestUtil::ConstructSpdyGetSynReplyRedirect(int stream_id) { 1038 SpdyFrame* SpdyTestUtil::ConstructSpdyGetSynReplyRedirect(int stream_id) {
1031 static const char* const kExtraHeaders[] = { 1039 static const char* const kExtraHeaders[] = {
1032 "location", "http://www.foo.com/index.php", 1040 "location", "http://www.foo.com/index.php",
1033 }; 1041 };
1034 return ConstructSpdySynReplyError("301 Moved Permanently", kExtraHeaders, 1042 return ConstructSpdySynReplyError("301 Moved Permanently",
1035 arraysize(kExtraHeaders)/2, stream_id); 1043 kExtraHeaders,
1044 arraysize(kExtraHeaders) / 2,
1045 stream_id);
1036 } 1046 }
1037 1047
1038 SpdyFrame* SpdyTestUtil::ConstructSpdySynReplyError(int stream_id) { 1048 SpdyFrame* SpdyTestUtil::ConstructSpdySynReplyError(int stream_id) {
1039 return ConstructSpdySynReplyError("500 Internal Server Error", NULL, 0, 1); 1049 return ConstructSpdySynReplyError("500 Internal Server Error", NULL, 0, 1);
1040 } 1050 }
1041 1051
1042 SpdyFrame* SpdyTestUtil::ConstructSpdyGetSynReply( 1052 SpdyFrame* SpdyTestUtil::ConstructSpdyGetSynReply(
1043 const char* const extra_headers[], 1053 const char* const extra_headers[],
1044 int extra_header_count, 1054 int extra_header_count,
1045 int stream_id) { 1055 int stream_id) {
1046 SpdySynReplyIR syn_reply(stream_id); 1056 SpdySynReplyIR syn_reply(stream_id);
1047 syn_reply.SetHeader("hello", "bye"); 1057 syn_reply.SetHeader("hello", "bye");
1048 syn_reply.SetHeader(GetStatusKey(), "200"); 1058 syn_reply.SetHeader(GetStatusKey(), "200");
1049 MaybeAddVersionHeader(&syn_reply); 1059 MaybeAddVersionHeader(&syn_reply);
1050 AppendToHeaderBlock(extra_headers, extra_header_count, 1060 AppendToHeaderBlock(
1051 syn_reply.mutable_name_value_block()); 1061 extra_headers, extra_header_count, syn_reply.mutable_name_value_block());
1052 return CreateFramer(false)->SerializeFrame(syn_reply); 1062 return CreateFramer(false)->SerializeFrame(syn_reply);
1053 } 1063 }
1054 1064
1055 SpdyFrame* SpdyTestUtil::ConstructSpdyPost(const char* url, 1065 SpdyFrame* SpdyTestUtil::ConstructSpdyPost(const char* url,
1056 SpdyStreamId stream_id, 1066 SpdyStreamId stream_id,
1057 int64 content_length, 1067 int64 content_length,
1058 RequestPriority priority, 1068 RequestPriority priority,
1059 const char* const extra_headers[], 1069 const char* const extra_headers[],
1060 int extra_header_count) { 1070 int extra_header_count) {
1061 const SpdyHeaderInfo kSynStartHeader = { 1071 const SpdyHeaderInfo kSynStartHeader = {
1062 SYN_STREAM, 1072 SYN_STREAM,
1063 stream_id, 1073 stream_id,
1064 0, // Associated stream ID 1074 0, // Associated stream ID
1065 ConvertRequestPriorityToSpdyPriority(priority, spdy_version_), 1075 ConvertRequestPriorityToSpdyPriority(priority, spdy_version_),
1066 kSpdyCredentialSlotUnused, 1076 kSpdyCredentialSlotUnused,
1067 CONTROL_FLAG_NONE, 1077 CONTROL_FLAG_NONE,
1068 false, // Compressed 1078 false, // Compressed
1069 RST_STREAM_INVALID, 1079 RST_STREAM_INVALID,
1070 NULL, // Data 1080 NULL, // Data
1071 0, // Length 1081 0, // Length
1072 DATA_FLAG_NONE 1082 DATA_FLAG_NONE};
1073 }; 1083 return ConstructSpdyFrame(kSynStartHeader,
1074 return ConstructSpdyFrame( 1084 ConstructPostHeaderBlock(url, content_length));
1075 kSynStartHeader, ConstructPostHeaderBlock(url, content_length));
1076 } 1085 }
1077 1086
1078 SpdyFrame* SpdyTestUtil::ConstructChunkedSpdyPost( 1087 SpdyFrame* SpdyTestUtil::ConstructChunkedSpdyPost(
1079 const char* const extra_headers[], 1088 const char* const extra_headers[],
1080 int extra_header_count) { 1089 int extra_header_count) {
1081 SpdySynStreamIR syn_stream(1); 1090 SpdySynStreamIR syn_stream(1);
1082 syn_stream.SetHeader(GetMethodKey(), "POST"); 1091 syn_stream.SetHeader(GetMethodKey(), "POST");
1083 syn_stream.SetHeader(GetPathKey(), "/"); 1092 syn_stream.SetHeader(GetPathKey(), "/");
1084 syn_stream.SetHeader(GetHostKey(), "www.google.com"); 1093 syn_stream.SetHeader(GetHostKey(), "www.google.com");
1085 syn_stream.SetHeader(GetSchemeKey(), "http"); 1094 syn_stream.SetHeader(GetSchemeKey(), "http");
1086 MaybeAddVersionHeader(&syn_stream); 1095 MaybeAddVersionHeader(&syn_stream);
1087 SetPriority(LOWEST, &syn_stream); 1096 SetPriority(LOWEST, &syn_stream);
1088 AppendToHeaderBlock(extra_headers, extra_header_count, 1097 AppendToHeaderBlock(
1089 syn_stream.mutable_name_value_block()); 1098 extra_headers, extra_header_count, syn_stream.mutable_name_value_block());
1090 return CreateFramer(false)->SerializeFrame(syn_stream); 1099 return CreateFramer(false)->SerializeFrame(syn_stream);
1091 } 1100 }
1092 1101
1093 SpdyFrame* SpdyTestUtil::ConstructSpdyPostSynReply( 1102 SpdyFrame* SpdyTestUtil::ConstructSpdyPostSynReply(
1094 const char* const extra_headers[], 1103 const char* const extra_headers[],
1095 int extra_header_count) { 1104 int extra_header_count) {
1096 SpdySynReplyIR syn_reply(1); 1105 SpdySynReplyIR syn_reply(1);
1097 syn_reply.SetHeader("hello", "bye"); 1106 syn_reply.SetHeader("hello", "bye");
1098 syn_reply.SetHeader(GetStatusKey(), "200"); 1107 syn_reply.SetHeader(GetStatusKey(), "200");
1099 syn_reply.SetHeader(GetPathKey(), "/index.php"); 1108 syn_reply.SetHeader(GetPathKey(), "/index.php");
1100 MaybeAddVersionHeader(&syn_reply); 1109 MaybeAddVersionHeader(&syn_reply);
1101 AppendToHeaderBlock(extra_headers, extra_header_count, 1110 AppendToHeaderBlock(
1102 syn_reply.mutable_name_value_block()); 1111 extra_headers, extra_header_count, syn_reply.mutable_name_value_block());
1103 return CreateFramer(false)->SerializeFrame(syn_reply); 1112 return CreateFramer(false)->SerializeFrame(syn_reply);
1104 } 1113 }
1105 1114
1106 SpdyFrame* SpdyTestUtil::ConstructSpdyBodyFrame(int stream_id, bool fin) { 1115 SpdyFrame* SpdyTestUtil::ConstructSpdyBodyFrame(int stream_id, bool fin) {
1107 SpdyFramer framer(spdy_version_); 1116 SpdyFramer framer(spdy_version_);
1108 SpdyDataIR data_ir(stream_id, 1117 SpdyDataIR data_ir(stream_id,
1109 base::StringPiece(kUploadData, kUploadDataSize)); 1118 base::StringPiece(kUploadData, kUploadDataSize));
1110 data_ir.set_fin(fin); 1119 data_ir.set_fin(fin);
1111 return framer.SerializeData(data_ir); 1120 return framer.SerializeData(data_ir);
1112 } 1121 }
1113 1122
1114 SpdyFrame* SpdyTestUtil::ConstructSpdyBodyFrame(int stream_id, 1123 SpdyFrame* SpdyTestUtil::ConstructSpdyBodyFrame(int stream_id,
1115 const char* data, 1124 const char* data,
1116 uint32 len, 1125 uint32 len,
1117 bool fin) { 1126 bool fin) {
1118 SpdyFramer framer(spdy_version_); 1127 SpdyFramer framer(spdy_version_);
1119 SpdyDataIR data_ir(stream_id, base::StringPiece(data, len)); 1128 SpdyDataIR data_ir(stream_id, base::StringPiece(data, len));
1120 data_ir.set_fin(fin); 1129 data_ir.set_fin(fin);
1121 return framer.SerializeData(data_ir); 1130 return framer.SerializeData(data_ir);
1122 } 1131 }
1123 1132
1124 SpdyFrame* SpdyTestUtil::ConstructWrappedSpdyFrame( 1133 SpdyFrame* SpdyTestUtil::ConstructWrappedSpdyFrame(
1125 const scoped_ptr<SpdyFrame>& frame, 1134 const scoped_ptr<SpdyFrame>& frame,
1126 int stream_id) { 1135 int stream_id) {
1127 return ConstructSpdyBodyFrame(stream_id, frame->data(), 1136 return ConstructSpdyBodyFrame(stream_id, frame->data(), frame->size(), false);
1128 frame->size(), false);
1129 } 1137 }
1130 1138
1131 const SpdyHeaderInfo SpdyTestUtil::MakeSpdyHeader(SpdyFrameType type) { 1139 const SpdyHeaderInfo SpdyTestUtil::MakeSpdyHeader(SpdyFrameType type) {
1132 const SpdyHeaderInfo kHeader = { 1140 const SpdyHeaderInfo kHeader = {
1133 type, 1141 type,
1134 1, // Stream ID 1142 1, // Stream ID
1135 0, // Associated stream ID 1143 0, // Associated stream ID
1136 ConvertRequestPriorityToSpdyPriority(LOWEST, spdy_version_), 1144 ConvertRequestPriorityToSpdyPriority(LOWEST, spdy_version_),
1137 kSpdyCredentialSlotUnused, 1145 kSpdyCredentialSlotUnused,
1138 CONTROL_FLAG_FIN, // Control Flags 1146 CONTROL_FLAG_FIN, // Control Flags
1139 false, // Compressed 1147 false, // Compressed
1140 RST_STREAM_INVALID, 1148 RST_STREAM_INVALID,
1141 NULL, // Data 1149 NULL, // Data
1142 0, // Length 1150 0, // Length
1143 DATA_FLAG_NONE 1151 DATA_FLAG_NONE};
1144 };
1145 return kHeader; 1152 return kHeader;
1146 } 1153 }
1147 1154
1148 scoped_ptr<SpdyFramer> SpdyTestUtil::CreateFramer(bool compressed) const { 1155 scoped_ptr<SpdyFramer> SpdyTestUtil::CreateFramer(bool compressed) const {
1149 scoped_ptr<SpdyFramer> framer(new SpdyFramer(spdy_version_)); 1156 scoped_ptr<SpdyFramer> framer(new SpdyFramer(spdy_version_));
1150 framer->set_enable_compression(compressed); 1157 framer->set_enable_compression(compressed);
1151 return framer.Pass(); 1158 return framer.Pass();
1152 } 1159 }
1153 1160
1154 const char* SpdyTestUtil::GetMethodKey() const { 1161 const char* SpdyTestUtil::GetMethodKey() const {
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
1203 1210
1204 void SpdyTestUtil::MaybeAddVersionHeader( 1211 void SpdyTestUtil::MaybeAddVersionHeader(
1205 SpdyFrameWithNameValueBlockIR* frame_ir) const { 1212 SpdyFrameWithNameValueBlockIR* frame_ir) const {
1206 if (include_version_header()) { 1213 if (include_version_header()) {
1207 frame_ir->SetHeader(GetVersionKey(), "HTTP/1.1"); 1214 frame_ir->SetHeader(GetVersionKey(), "HTTP/1.1");
1208 } 1215 }
1209 } 1216 }
1210 1217
1211 void SpdyTestUtil::SetPriority(RequestPriority priority, 1218 void SpdyTestUtil::SetPriority(RequestPriority priority,
1212 SpdySynStreamIR* ir) const { 1219 SpdySynStreamIR* ir) const {
1213 ir->set_priority(ConvertRequestPriorityToSpdyPriority( 1220 ir->set_priority(
1214 priority, spdy_version())); 1221 ConvertRequestPriorityToSpdyPriority(priority, spdy_version()));
1215 } 1222 }
1216 1223
1217 } // namespace net 1224 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698