OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <memory> | 5 #include <memory> |
6 #include <utility> | 6 #include <utility> |
7 | 7 |
8 #include "base/memory/ptr_util.h" | 8 #include "base/memory/ptr_util.h" |
9 #include "base/run_loop.h" | 9 #include "base/run_loop.h" |
10 #include "build/build_config.h" | 10 #include "build/build_config.h" |
(...skipping 7850 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7861 RequestPriority job_priority; | 7861 RequestPriority job_priority; |
7862 std::unique_ptr<URLRequestJob> job(new PriorityMonitoringURLRequestJob( | 7862 std::unique_ptr<URLRequestJob> job(new PriorityMonitoringURLRequestJob( |
7863 req.get(), &default_network_delegate_, &job_priority)); | 7863 req.get(), &default_network_delegate_, &job_priority)); |
7864 AddTestInterceptor()->set_main_intercept_job(std::move(job)); | 7864 AddTestInterceptor()->set_main_intercept_job(std::move(job)); |
7865 | 7865 |
7866 // Should trigger |job| to be started. | 7866 // Should trigger |job| to be started. |
7867 base::RunLoop().Run(); | 7867 base::RunLoop().Run(); |
7868 EXPECT_EQ(LOW, job_priority); | 7868 EXPECT_EQ(LOW, job_priority); |
7869 } | 7869 } |
7870 | 7870 |
7871 TEST_F(URLRequestTest, QuicServerInfoFactoryTest) { | |
7872 HttpNetworkSession::Params params; | |
7873 | |
7874 MockClientSocketFactory socket_factory; | |
7875 MockCryptoClientStreamFactory crypto_client_stream_factory; | |
7876 MockHostResolver host_resolver; | |
7877 MockCertVerifier cert_verifier; | |
7878 CTPolicyEnforcer ct_policy_enforcer; | |
7879 TransportSecurityState transport_security_state; | |
7880 std::unique_ptr<CTVerifier> cert_transparency_verifier( | |
7881 new MultiLogCTVerifier()); | |
7882 std::unique_ptr<ProxyService> proxy_service = ProxyService::CreateDirect(); | |
7883 scoped_refptr<SSLConfigServiceDefaults> ssl_config_service( | |
7884 new SSLConfigServiceDefaults); | |
7885 HttpServerPropertiesImpl http_server_properties; | |
7886 // Set up the quic stream factory. | |
7887 params.enable_quic = true; | |
7888 params.client_socket_factory = &socket_factory; | |
7889 params.quic_crypto_client_stream_factory = &crypto_client_stream_factory; | |
7890 params.host_resolver = &host_resolver; | |
7891 params.cert_verifier = &cert_verifier; | |
7892 params.ct_policy_enforcer = &ct_policy_enforcer; | |
7893 params.transport_security_state = &transport_security_state; | |
7894 params.cert_transparency_verifier = cert_transparency_verifier.get(); | |
7895 | |
7896 params.proxy_service = proxy_service.get(); | |
7897 params.ssl_config_service = ssl_config_service.get(); | |
7898 params.http_server_properties = &http_server_properties; | |
7899 | |
7900 HttpNetworkSession session(params); | |
7901 DCHECK(session.quic_stream_factory()); | |
7902 | |
7903 std::unique_ptr<HttpNetworkLayer> network_layer1( | |
7904 new HttpNetworkLayer(&session)); | |
7905 | |
7906 HttpCache main_cache(std::move(network_layer1), | |
7907 HttpCache::DefaultBackend::InMemory(0), | |
7908 true /* is_main_cache */); | |
7909 | |
7910 EXPECT_TRUE(session.quic_stream_factory()->has_quic_server_info_factory()); | |
7911 | |
7912 default_context_.set_http_transaction_factory(&main_cache); | |
7913 | |
7914 QuicServerInfoFactory* quic_server_info_factory = | |
7915 session.quic_stream_factory()->quic_server_info_factory(); | |
7916 DCHECK(quic_server_info_factory); | |
7917 | |
7918 QuicServerId server_id("www.google.com", 443, PRIVACY_MODE_DISABLED); | |
7919 const string server_config_a = "server_config_a"; | |
7920 const string source_address_token_a = "source_address_token_a"; | |
7921 const string cert_sct_a = "cert_sct_a"; | |
7922 const string chlo_hash_a = "chlo_hash_a"; | |
7923 const string server_config_sig_a = "server_config_sig_a"; | |
7924 const string cert_a = "cert_a"; | |
7925 const string cert_b = "cert_b"; | |
7926 | |
7927 { | |
7928 // Store a QuicServerInfo to the quic server info factory. | |
7929 TestCompletionCallback cb; | |
7930 std::unique_ptr<QuicServerInfo> quic_server_info = | |
7931 quic_server_info_factory->GetForServer(server_id); | |
7932 quic_server_info->Start(); | |
7933 int rv = quic_server_info->WaitForDataReady(cb.callback()); | |
7934 EXPECT_THAT(cb.GetResult(rv), IsOk()); | |
7935 | |
7936 QuicServerInfo::State* state = quic_server_info->mutable_state(); | |
7937 EXPECT_TRUE(state->certs.empty()); | |
7938 | |
7939 state->server_config = server_config_a; | |
7940 state->source_address_token = source_address_token_a; | |
7941 state->cert_sct = cert_sct_a; | |
7942 state->chlo_hash = chlo_hash_a; | |
7943 state->server_config_sig = server_config_sig_a; | |
7944 state->certs.push_back(cert_a); | |
7945 quic_server_info->Persist(); | |
7946 base::RunLoop().RunUntilIdle(); | |
7947 } | |
7948 | |
7949 // Retrieve the QuicServerInfo from the quic server info factory and verify | |
7950 // the data is correct. | |
7951 { | |
7952 TestCompletionCallback cb; | |
7953 std::unique_ptr<QuicServerInfo> quic_server_info = | |
7954 quic_server_info_factory->GetForServer(server_id); | |
7955 quic_server_info->Start(); | |
7956 int rv = quic_server_info->WaitForDataReady(cb.callback()); | |
7957 EXPECT_THAT(cb.GetResult(rv), IsOk()); | |
7958 | |
7959 QuicServerInfo::State* state = quic_server_info->mutable_state(); | |
7960 EXPECT_TRUE(quic_server_info->IsDataReady()); | |
7961 EXPECT_EQ(server_config_a, state->server_config); | |
7962 EXPECT_EQ(source_address_token_a, state->source_address_token); | |
7963 EXPECT_EQ(cert_sct_a, state->cert_sct); | |
7964 EXPECT_EQ(chlo_hash_a, state->chlo_hash); | |
7965 EXPECT_EQ(server_config_sig_a, state->server_config_sig); | |
7966 EXPECT_EQ(1U, state->certs.size()); | |
7967 EXPECT_EQ(cert_a, state->certs[0]); | |
7968 | |
7969 // Update the data. | |
7970 state->certs.push_back(cert_b); | |
7971 quic_server_info->Persist(); | |
7972 base::RunLoop().RunUntilIdle(); | |
7973 } | |
7974 | |
7975 { | |
7976 // Verify data has been successfully updated. | |
7977 TestCompletionCallback cb; | |
7978 std::unique_ptr<QuicServerInfo> quic_server_info = | |
7979 quic_server_info_factory->GetForServer(server_id); | |
7980 quic_server_info->Start(); | |
7981 int rv = quic_server_info->WaitForDataReady(cb.callback()); | |
7982 EXPECT_THAT(cb.GetResult(rv), IsOk()); | |
7983 | |
7984 QuicServerInfo::State* state = quic_server_info->mutable_state(); | |
7985 EXPECT_TRUE(quic_server_info->IsDataReady()); | |
7986 EXPECT_EQ(2U, state->certs.size()); | |
7987 EXPECT_EQ(cert_a, state->certs[0]); | |
7988 EXPECT_EQ(cert_b, state->certs[1]); | |
7989 } | |
7990 } | |
7991 | |
7992 // Check that creating a network request while entering/exiting suspend mode | 7871 // Check that creating a network request while entering/exiting suspend mode |
7993 // fails as it should. This is the only case where an HttpTransactionFactory | 7872 // fails as it should. This is the only case where an HttpTransactionFactory |
7994 // does not return an HttpTransaction. | 7873 // does not return an HttpTransaction. |
7995 TEST_F(URLRequestTestHTTP, NetworkSuspendTest) { | 7874 TEST_F(URLRequestTestHTTP, NetworkSuspendTest) { |
7996 // Create a new HttpNetworkLayer that thinks it's suspended. | 7875 // Create a new HttpNetworkLayer that thinks it's suspended. |
7997 std::unique_ptr<HttpNetworkLayer> network_layer(new HttpNetworkLayer( | 7876 std::unique_ptr<HttpNetworkLayer> network_layer(new HttpNetworkLayer( |
7998 default_context_.http_transaction_factory()->GetSession())); | 7877 default_context_.http_transaction_factory()->GetSession())); |
7999 network_layer->OnSuspend(); | 7878 network_layer->OnSuspend(); |
8000 | 7879 |
8001 HttpCache http_cache(std::move(network_layer), | 7880 HttpCache http_cache(std::move(network_layer), |
(...skipping 3047 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
11049 AddTestInterceptor()->set_main_intercept_job(std::move(job)); | 10928 AddTestInterceptor()->set_main_intercept_job(std::move(job)); |
11050 | 10929 |
11051 req->Start(); | 10930 req->Start(); |
11052 req->Cancel(); | 10931 req->Cancel(); |
11053 base::RunLoop().RunUntilIdle(); | 10932 base::RunLoop().RunUntilIdle(); |
11054 EXPECT_EQ(ERR_ABORTED, d.request_status()); | 10933 EXPECT_EQ(ERR_ABORTED, d.request_status()); |
11055 EXPECT_EQ(0, d.received_redirect_count()); | 10934 EXPECT_EQ(0, d.received_redirect_count()); |
11056 } | 10935 } |
11057 | 10936 |
11058 } // namespace net | 10937 } // namespace net |
OLD | NEW |