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