OLD | NEW |
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/http/http_stream_factory_impl_request.h" | 5 #include "net/http/http_stream_factory_impl_request.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
11 #include "base/run_loop.h" | 11 #include "base/run_loop.h" |
12 #include "net/http/http_stream_factory_impl.h" | 12 #include "net/http/http_stream_factory_impl.h" |
13 #include "net/http/http_stream_factory_impl_job.h" | 13 #include "net/http/http_stream_factory_impl_job.h" |
14 #include "net/http/http_stream_factory_impl_job_controller.h" | 14 #include "net/http/http_stream_factory_impl_job_controller.h" |
15 #include "net/http/http_stream_factory_test_util.h" | 15 #include "net/http/http_stream_factory_test_util.h" |
16 #include "net/proxy/proxy_info.h" | 16 #include "net/proxy/proxy_info.h" |
17 #include "net/proxy/proxy_service.h" | 17 #include "net/proxy/proxy_service.h" |
18 #include "net/spdy/chromium/spdy_test_util_common.h" | 18 #include "net/spdy/chromium/spdy_test_util_common.h" |
19 #include "testing/gtest/include/gtest/gtest.h" | 19 #include "testing/gtest/include/gtest/gtest.h" |
20 | 20 |
21 using testing::_; | 21 using testing::_; |
22 | 22 |
23 namespace net { | 23 namespace net { |
24 | 24 |
25 class HttpStreamFactoryImplRequestTest : public ::testing::Test {}; | 25 class HttpStreamFactoryImplRequestTest : public ::testing::Test {}; |
26 | 26 |
27 // Make sure that Request passes on its priority updates to its jobs. | 27 // Make sure that Request passes on its priority updates to its jobs. |
28 TEST_F(HttpStreamFactoryImplRequestTest, SetPriority) { | 28 TEST_F(HttpStreamFactoryImplRequestTest, SetPriority) { |
| 29 SequencedSocketData data(nullptr, 0, nullptr, 0); |
| 30 data.set_connect_data(MockConnect(ASYNC, OK)); |
| 31 auto ssl_data = base::MakeUnique<SSLSocketDataProvider>(ASYNC, OK); |
29 SpdySessionDependencies session_deps(ProxyService::CreateDirect()); | 32 SpdySessionDependencies session_deps(ProxyService::CreateDirect()); |
| 33 session_deps.socket_factory->AddSocketDataProvider(&data); |
| 34 session_deps.socket_factory->AddSSLSocketDataProvider(ssl_data.get()); |
| 35 |
30 std::unique_ptr<HttpNetworkSession> session = | 36 std::unique_ptr<HttpNetworkSession> session = |
31 SpdySessionDependencies::SpdyCreateSession(&session_deps); | 37 SpdySessionDependencies::SpdyCreateSession(&session_deps); |
32 HttpStreamFactoryImpl* factory = | 38 HttpStreamFactoryImpl* factory = |
33 static_cast<HttpStreamFactoryImpl*>(session->http_stream_factory()); | 39 static_cast<HttpStreamFactoryImpl*>(session->http_stream_factory()); |
34 MockHttpStreamRequestDelegate request_delegate; | 40 MockHttpStreamRequestDelegate request_delegate; |
35 TestJobFactory job_factory; | 41 TestJobFactory job_factory; |
36 HttpRequestInfo request_info; | 42 HttpRequestInfo request_info; |
| 43 request_info.url = GURL("http://www.example.com/"); |
37 auto job_controller = base::MakeUnique<HttpStreamFactoryImpl::JobController>( | 44 auto job_controller = base::MakeUnique<HttpStreamFactoryImpl::JobController>( |
38 factory, &request_delegate, session.get(), &job_factory, request_info, | 45 factory, &request_delegate, session.get(), &job_factory, request_info, |
39 /* is_preconnect = */ false, | 46 /* is_preconnect = */ false, |
40 /* enable_ip_based_pooling = */ true, | 47 /* enable_ip_based_pooling = */ true, |
41 /* enable_alternative_services = */ true); | 48 /* enable_alternative_services = */ true, SSLConfig(), SSLConfig()); |
42 HttpStreamFactoryImpl::JobController* job_controller_raw_ptr = | 49 HttpStreamFactoryImpl::JobController* job_controller_raw_ptr = |
43 job_controller.get(); | 50 job_controller.get(); |
44 factory->job_controller_set_.insert(std::move(job_controller)); | 51 factory->job_controller_set_.insert(std::move(job_controller)); |
45 | 52 |
46 std::unique_ptr<HttpStreamFactoryImpl::Request> request( | 53 std::unique_ptr<HttpStreamFactoryImpl::Request> request( |
47 job_controller_raw_ptr->Start( | 54 job_controller_raw_ptr->Start( |
48 request_info, &request_delegate, nullptr, NetLogWithSource(), | 55 &request_delegate, nullptr, NetLogWithSource(), |
49 HttpStreamRequest::HTTP_STREAM, DEFAULT_PRIORITY, SSLConfig(), | 56 HttpStreamRequest::HTTP_STREAM, DEFAULT_PRIORITY)); |
50 SSLConfig())); | |
51 EXPECT_TRUE(job_controller_raw_ptr->main_job()); | 57 EXPECT_TRUE(job_controller_raw_ptr->main_job()); |
52 EXPECT_EQ(DEFAULT_PRIORITY, job_controller_raw_ptr->main_job()->priority()); | 58 EXPECT_EQ(DEFAULT_PRIORITY, job_controller_raw_ptr->main_job()->priority()); |
53 | 59 |
54 request->SetPriority(MEDIUM); | 60 request->SetPriority(MEDIUM); |
55 EXPECT_EQ(MEDIUM, job_controller_raw_ptr->main_job()->priority()); | 61 EXPECT_EQ(MEDIUM, job_controller_raw_ptr->main_job()->priority()); |
56 | 62 |
57 EXPECT_CALL(request_delegate, OnStreamFailed(_, _)).Times(1); | 63 EXPECT_CALL(request_delegate, OnStreamFailed(_, _)).Times(1); |
58 job_controller_raw_ptr->OnStreamFailed(job_factory.main_job(), ERR_FAILED, | 64 job_controller_raw_ptr->OnStreamFailed(job_factory.main_job(), ERR_FAILED, |
59 SSLConfig()); | 65 SSLConfig()); |
60 | 66 |
61 request->SetPriority(IDLE); | 67 request->SetPriority(IDLE); |
62 EXPECT_EQ(IDLE, job_controller_raw_ptr->main_job()->priority()); | 68 EXPECT_EQ(IDLE, job_controller_raw_ptr->main_job()->priority()); |
| 69 EXPECT_TRUE(data.AllReadDataConsumed()); |
| 70 EXPECT_TRUE(data.AllWriteDataConsumed()); |
63 } | 71 } |
64 } // namespace net | 72 } // namespace net |
OLD | NEW |