http_stream_factory_impl_request_unittest.cc revision 4e180b6a0b4720a9b8e9e959a882386f690f08ff
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 3// found in the LICENSE file. 4 5#include "net/http/http_stream_factory_impl_request.h" 6 7#include "net/http/http_stream_factory_impl_job.h" 8#include "net/proxy/proxy_info.h" 9#include "net/proxy/proxy_service.h" 10#include "net/spdy/spdy_test_util_common.h" 11#include "testing/gtest/include/gtest/gtest.h" 12 13namespace net { 14 15class HttpStreamFactoryImplRequestTest 16 : public ::testing::Test, 17 public ::testing::WithParamInterface<NextProto> {}; 18 19INSTANTIATE_TEST_CASE_P( 20 NextProto, 21 HttpStreamFactoryImplRequestTest, 22 testing::Values(kProtoDeprecatedSPDY2, 23 kProtoSPDY3, kProtoSPDY31, kProtoSPDY4a2, 24 kProtoHTTP2Draft04)); 25 26namespace { 27 28class DoNothingRequestDelegate : public HttpStreamRequest::Delegate { 29 public: 30 DoNothingRequestDelegate() {} 31 32 virtual ~DoNothingRequestDelegate() {} 33 34 // HttpStreamRequest::Delegate 35 virtual void OnStreamReady( 36 const SSLConfig& used_ssl_config, 37 const ProxyInfo& used_proxy_info, 38 HttpStreamBase* stream) OVERRIDE {} 39 virtual void OnWebSocketStreamReady( 40 const SSLConfig& used_ssl_config, 41 const ProxyInfo& used_proxy_info, 42 WebSocketStreamBase* stream) OVERRIDE {} 43 virtual void OnStreamFailed( 44 int status, 45 const SSLConfig& used_ssl_config) OVERRIDE {} 46 virtual void OnCertificateError( 47 int status, 48 const SSLConfig& used_ssl_config, 49 const SSLInfo& ssl_info) OVERRIDE {} 50 virtual void OnNeedsProxyAuth(const HttpResponseInfo& proxy_response, 51 const SSLConfig& used_ssl_config, 52 const ProxyInfo& used_proxy_info, 53 HttpAuthController* auth_controller) OVERRIDE {} 54 virtual void OnNeedsClientAuth(const SSLConfig& used_ssl_config, 55 SSLCertRequestInfo* cert_info) OVERRIDE {} 56 virtual void OnHttpsProxyTunnelResponse(const HttpResponseInfo& response_info, 57 const SSLConfig& used_ssl_config, 58 const ProxyInfo& used_proxy_info, 59 HttpStreamBase* stream) OVERRIDE {} 60}; 61 62} // namespace 63 64// Make sure that Request passes on its priority updates to its jobs. 65TEST_P(HttpStreamFactoryImplRequestTest, SetPriority) { 66 SpdySessionDependencies session_deps(GetParam(), 67 ProxyService::CreateDirect()); 68 69 scoped_refptr<HttpNetworkSession> 70 session(SpdySessionDependencies::SpdyCreateSession(&session_deps)); 71 HttpStreamFactoryImpl* factory = 72 static_cast<HttpStreamFactoryImpl*>(session->http_stream_factory()); 73 74 DoNothingRequestDelegate request_delegate; 75 HttpStreamFactoryImpl::Request request( 76 GURL(), factory, &request_delegate, NULL, BoundNetLog()); 77 78 HttpStreamFactoryImpl::Job* job = 79 new HttpStreamFactoryImpl::Job(factory, 80 session, 81 HttpRequestInfo(), 82 DEFAULT_PRIORITY, 83 SSLConfig(), 84 SSLConfig(), 85 NULL); 86 request.AttachJob(job); 87 EXPECT_EQ(DEFAULT_PRIORITY, job->priority()); 88 89 request.SetPriority(MEDIUM); 90 EXPECT_EQ(MEDIUM, job->priority()); 91 92 // Make |job| the bound job. 93 request.OnStreamFailed(job, ERR_FAILED, SSLConfig()); 94 95 request.SetPriority(IDLE); 96 EXPECT_EQ(IDLE, job->priority()); 97} 98 99} // namespace net 100