| 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 |