http_stream_factory_impl_request_unittest.cc revision 4e180b6a0b4720a9b8e9e959a882386f690f08ff
13551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 23551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 33551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// found in the LICENSE file. 43551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 53551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "net/http/http_stream_factory_impl_request.h" 63551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 73551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "net/http/http_stream_factory_impl_job.h" 83551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "net/proxy/proxy_info.h" 93551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "net/proxy/proxy_service.h" 103551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "net/spdy/spdy_test_util_common.h" 113551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 123551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 133551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)namespace net { 143551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 153551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)class HttpStreamFactoryImplRequestTest 163551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) : public ::testing::Test, 173551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) public ::testing::WithParamInterface<NextProto> {}; 183551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 193551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)INSTANTIATE_TEST_CASE_P( 203551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) NextProto, 213551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) HttpStreamFactoryImplRequestTest, 224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) testing::Values(kProtoDeprecatedSPDY2, 234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) kProtoSPDY3, kProtoSPDY31, kProtoSPDY4a2, 243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) kProtoHTTP2Draft04)); 253551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 263551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)namespace { 273551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 283551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)class DoNothingRequestDelegate : public HttpStreamRequest::Delegate { 293551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) public: 303551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) DoNothingRequestDelegate() {} 313551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) virtual ~DoNothingRequestDelegate() {} 333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 343551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // HttpStreamRequest::Delegate 353551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) virtual void OnStreamReady( 363551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const SSLConfig& used_ssl_config, 373551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const ProxyInfo& used_proxy_info, 383551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) HttpStreamBase* stream) OVERRIDE {} 393551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) virtual void OnWebSocketStreamReady( 403551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const SSLConfig& used_ssl_config, 413551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const ProxyInfo& used_proxy_info, 423551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) WebSocketStreamBase* stream) OVERRIDE {} 433551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) virtual void OnStreamFailed( 443551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) int status, 453551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const SSLConfig& used_ssl_config) OVERRIDE {} 463551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) virtual void OnCertificateError( 473551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) int status, 483551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const SSLConfig& used_ssl_config, 493551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const SSLInfo& ssl_info) OVERRIDE {} 503551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) virtual void OnNeedsProxyAuth(const HttpResponseInfo& proxy_response, 513551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const SSLConfig& used_ssl_config, 523551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const ProxyInfo& used_proxy_info, 533551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) HttpAuthController* auth_controller) OVERRIDE {} 543551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) virtual void OnNeedsClientAuth(const SSLConfig& used_ssl_config, 553551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) SSLCertRequestInfo* cert_info) OVERRIDE {} 563551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) virtual void OnHttpsProxyTunnelResponse(const HttpResponseInfo& response_info, 573551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const SSLConfig& used_ssl_config, 583551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const ProxyInfo& used_proxy_info, 593551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) HttpStreamBase* stream) OVERRIDE {} 603551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)}; 613551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 623551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} // namespace 633551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 643551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Make sure that Request passes on its priority updates to its jobs. 653551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)TEST_P(HttpStreamFactoryImplRequestTest, SetPriority) { 663551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) SpdySessionDependencies session_deps(GetParam(), 673551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ProxyService::CreateDirect()); 683551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 693551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) scoped_refptr<HttpNetworkSession> 703551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) session(SpdySessionDependencies::SpdyCreateSession(&session_deps)); 713551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) HttpStreamFactoryImpl* factory = 723551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) static_cast<HttpStreamFactoryImpl*>(session->http_stream_factory()); 733551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 743551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) DoNothingRequestDelegate request_delegate; 753551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) HttpStreamFactoryImpl::Request request( 763551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) GURL(), factory, &request_delegate, NULL, BoundNetLog()); 773551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 783551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) HttpStreamFactoryImpl::Job* job = 793551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) new HttpStreamFactoryImpl::Job(factory, 803551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) session, 813551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) HttpRequestInfo(), 823551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) DEFAULT_PRIORITY, 833551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) SSLConfig(), 843551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) SSLConfig(), 853551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) NULL); 863551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) request.AttachJob(job); 873551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) EXPECT_EQ(DEFAULT_PRIORITY, job->priority()); 883551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 893551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) request.SetPriority(MEDIUM); 903551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) EXPECT_EQ(MEDIUM, job->priority()); 913551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 923551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Make |job| the bound job. 933551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) request.OnStreamFailed(job, ERR_FAILED, SSLConfig()); 943551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 953551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) request.SetPriority(IDLE); 963551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) EXPECT_EQ(IDLE, job->priority()); 973551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 983551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 993551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} // namespace net 100