diff options
Diffstat (limited to 'chromium/net/http')
26 files changed, 140 insertions, 484 deletions
diff --git a/chromium/net/http/http_basic_stream.cc b/chromium/net/http/http_basic_stream.cc index c30e17d6203..d70ac02be74 100644 --- a/chromium/net/http/http_basic_stream.cc +++ b/chromium/net/http/http_basic_stream.cc @@ -127,8 +127,4 @@ void HttpBasicStream::Drain(HttpNetworkSession* session) { // |drainer| will delete itself. } -void HttpBasicStream::SetPriority(RequestPriority priority) { - // TODO(akalin): Plumb this through to |connection_|. -} - } // namespace net diff --git a/chromium/net/http/http_basic_stream.h b/chromium/net/http/http_basic_stream.h index 2057837e9a9..2d4bb65ad32 100644 --- a/chromium/net/http/http_basic_stream.h +++ b/chromium/net/http/http_basic_stream.h @@ -81,8 +81,6 @@ class HttpBasicStream : public HttpStream { virtual void Drain(HttpNetworkSession* session) OVERRIDE; - virtual void SetPriority(RequestPriority priority) OVERRIDE; - private: scoped_refptr<GrowableIOBuffer> read_buf_; diff --git a/chromium/net/http/http_cache_transaction.cc b/chromium/net/http/http_cache_transaction.cc index 8d4a45573b8..d1307012208 100644 --- a/chromium/net/http/http_cache_transaction.cc +++ b/chromium/net/http/http_cache_transaction.cc @@ -1538,6 +1538,20 @@ int HttpCache::Transaction::DoCacheQueryData() { } int HttpCache::Transaction::DoCacheQueryDataComplete(int result) { +#if defined(OS_ANDROID) + if (result == ERR_NOT_IMPLEMENTED) { + // Restart the request overwriting the cache entry. + // + // Note: this would have fixed range requests for debug builds on all OSes, + // not just Android, but karen@ prefers to limit the effect based on OS for + // cherry-picked fixes. + // TODO(pasko): remove the OS_ANDROID limitation as soon as the fix proves + // useful after the cherry-pick. + // TODO(pasko): remove this workaround as soon as the SimpleBackendImpl + // supports Sparse IO. + return DoRestartPartialRequest(); + } +#endif DCHECK_EQ(OK, result); if (!cache_.get()) return ERR_UNEXPECTED; diff --git a/chromium/net/http/http_cache_unittest.cc b/chromium/net/http/http_cache_unittest.cc index 37e53346f42..c2bfde7bce2 100644 --- a/chromium/net/http/http_cache_unittest.cc +++ b/chromium/net/http/http_cache_unittest.cc @@ -3394,6 +3394,82 @@ TEST(HttpCache, RangeGET_OK) { RemoveMockTransaction(&kRangeGET_TransactionOK); } +#if defined(OS_ANDROID) + +// Checks that with a cache backend having Sparse IO unimplementes the cache +// entry would be doomed after a range request. +// TODO(pasko): remove when the SimpleBackendImpl implements Sparse IO. +TEST(HttpCache, RangeGET_SparseNotImplemented) { + MockHttpCache cache; + cache.disk_cache()->set_fail_sparse_requests(); + + // Run a cacheable request to prime the cache. + MockTransaction transaction(kTypicalGET_Transaction); + transaction.url = kRangeGET_TransactionOK.url; + AddMockTransaction(&transaction); + RunTransactionTest(cache.http_cache(), transaction); + EXPECT_EQ(1, cache.network_layer()->transaction_count()); + EXPECT_EQ(0, cache.disk_cache()->open_count()); + EXPECT_EQ(1, cache.disk_cache()->create_count()); + + // Verify that we added the entry. + disk_cache::Entry* entry; + net::TestCompletionCallback cb; + int rv = cache.disk_cache()->OpenEntry(transaction.url, + &entry, + cb.callback()); + ASSERT_EQ(net::OK, cb.GetResult(rv)); + EXPECT_EQ(1, cache.disk_cache()->open_count()); + entry->Close(); + RemoveMockTransaction(&transaction); + + // Request the range with the backend that does not support it. + MockTransaction transaction2(kRangeGET_TransactionOK); + std::string headers; + AddMockTransaction(&transaction2); + RunTransactionTestWithResponse(cache.http_cache(), transaction2, &headers); + EXPECT_EQ(2, cache.network_layer()->transaction_count()); + EXPECT_EQ(2, cache.disk_cache()->open_count()); + EXPECT_EQ(2, cache.disk_cache()->create_count()); + + // Mock cache would return net::ERR_CACHE_OPEN_FAILURE on a doomed entry, even + // if it was re-created later, so this effectively checks that the old data is + // gone. + disk_cache::Entry* entry2; + rv = cache.disk_cache()->OpenEntry(transaction2.url, + &entry2, + cb.callback()); + ASSERT_EQ(net::ERR_CACHE_OPEN_FAILURE, cb.GetResult(rv)); + RemoveMockTransaction(&transaction2); +} + +TEST(HttpCache, RangeGET_SparseNotImplementedOnEmptyCache) { + MockHttpCache cache; + cache.disk_cache()->set_fail_sparse_requests(); + + // Request the range with the backend that does not support it. + MockTransaction transaction(kRangeGET_TransactionOK); + std::string headers; + AddMockTransaction(&transaction); + RunTransactionTestWithResponse(cache.http_cache(), transaction, &headers); + EXPECT_EQ(1, cache.network_layer()->transaction_count()); + EXPECT_EQ(0, cache.disk_cache()->open_count()); + EXPECT_EQ(1, cache.disk_cache()->create_count()); + + // Mock cache would return net::ERR_CACHE_OPEN_FAILURE on a doomed entry, even + // if it was re-created later, so this effectively checks that the old data is + // gone as a result of a failed range write. + disk_cache::Entry* entry; + net::TestCompletionCallback cb; + int rv = cache.disk_cache()->OpenEntry(transaction.url, + &entry, + cb.callback()); + ASSERT_EQ(net::ERR_CACHE_OPEN_FAILURE, cb.GetResult(rv)); + RemoveMockTransaction(&transaction); +} + +#endif // OS_ANDROID + // Tests that we can cache range requests and fetch random blocks from the // cache and the network, with synchronous responses. TEST(HttpCache, RangeGET_SyncOK) { diff --git a/chromium/net/http/http_network_transaction.cc b/chromium/net/http/http_network_transaction.cc index a63a2aa43b9..70292be257f 100644 --- a/chromium/net/http/http_network_transaction.cc +++ b/chromium/net/http/http_network_transaction.cc @@ -419,10 +419,8 @@ bool HttpNetworkTransaction::GetLoadTimingInfo( void HttpNetworkTransaction::SetPriority(RequestPriority priority) { priority_ = priority; - if (stream_request_) - stream_request_->SetPriority(priority); - if (stream_) - stream_->SetPriority(priority); + // TODO(akalin): Plumb this through to |stream_request_| and + // |stream_|. } void HttpNetworkTransaction::OnStreamReady(const SSLConfig& used_ssl_config, diff --git a/chromium/net/http/http_network_transaction_unittest.cc b/chromium/net/http/http_network_transaction_unittest.cc index d89ab546afd..5f8dac2f87d 100644 --- a/chromium/net/http/http_network_transaction_unittest.cc +++ b/chromium/net/http/http_network_transaction_unittest.cc @@ -15,7 +15,6 @@ #include "base/files/file_path.h" #include "base/json/json_writer.h" #include "base/memory/scoped_ptr.h" -#include "base/memory/weak_ptr.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "base/test/test_file_util.h" @@ -46,7 +45,6 @@ #include "net/http/http_stream_factory.h" #include "net/http/http_transaction_unittest.h" #include "net/proxy/proxy_config_service_fixed.h" -#include "net/proxy/proxy_info.h" #include "net/proxy/proxy_resolver.h" #include "net/proxy/proxy_service.h" #include "net/socket/client_socket_factory.h" @@ -60,7 +58,6 @@ #include "net/spdy/spdy_session_pool.h" #include "net/spdy/spdy_test_util_common.h" #include "net/ssl/ssl_cert_request_info.h" -#include "net/ssl/ssl_config_service.h" #include "net/ssl/ssl_config_service_defaults.h" #include "net/ssl/ssl_info.h" #include "net/test/cert_test_util.h" @@ -452,7 +449,7 @@ class CaptureGroupNameSocketPool : public ParentPool { virtual void CancelRequest(const std::string& group_name, ClientSocketHandle* handle) {} virtual void ReleaseSocket(const std::string& group_name, - scoped_ptr<StreamSocket> socket, + StreamSocket* socket, int id) {} virtual void CloseIdleSockets() {} virtual int IdleSocketCount() const { @@ -11683,299 +11680,4 @@ TEST_P(HttpNetworkTransactionTest, GetFullRequestHeadersIncludesExtraHeader) { EXPECT_EQ("bar", foo); } -namespace { - -// Fake HttpStreamBase that simply records calls to SetPriority(). -class FakeStream : public HttpStreamBase, - public base::SupportsWeakPtr<FakeStream> { - public: - explicit FakeStream(RequestPriority priority) : priority_(priority) {} - virtual ~FakeStream() {} - - RequestPriority priority() const { return priority_; } - - virtual int InitializeStream(const HttpRequestInfo* request_info, - RequestPriority priority, - const BoundNetLog& net_log, - const CompletionCallback& callback) OVERRIDE { - return ERR_IO_PENDING; - } - - virtual int SendRequest(const HttpRequestHeaders& request_headers, - HttpResponseInfo* response, - const CompletionCallback& callback) OVERRIDE { - ADD_FAILURE(); - return ERR_UNEXPECTED; - } - - virtual int ReadResponseHeaders(const CompletionCallback& callback) OVERRIDE { - ADD_FAILURE(); - return ERR_UNEXPECTED; - } - - virtual const HttpResponseInfo* GetResponseInfo() const OVERRIDE { - ADD_FAILURE(); - return NULL; - } - - virtual int ReadResponseBody(IOBuffer* buf, int buf_len, - const CompletionCallback& callback) OVERRIDE { - ADD_FAILURE(); - return ERR_UNEXPECTED; - } - - virtual void Close(bool not_reusable) OVERRIDE {} - - virtual bool IsResponseBodyComplete() const OVERRIDE { - ADD_FAILURE(); - return false; - } - - virtual bool CanFindEndOfResponse() const OVERRIDE { - return false; - } - - virtual bool IsConnectionReused() const OVERRIDE { - ADD_FAILURE(); - return false; - } - - virtual void SetConnectionReused() OVERRIDE { - ADD_FAILURE(); - } - - virtual bool IsConnectionReusable() const OVERRIDE { - ADD_FAILURE(); - return false; - } - - virtual bool GetLoadTimingInfo( - LoadTimingInfo* load_timing_info) const OVERRIDE { - ADD_FAILURE(); - return false; - } - - virtual void GetSSLInfo(SSLInfo* ssl_info) OVERRIDE { - ADD_FAILURE(); - } - - virtual void GetSSLCertRequestInfo( - SSLCertRequestInfo* cert_request_info) OVERRIDE { - ADD_FAILURE(); - } - - virtual bool IsSpdyHttpStream() const OVERRIDE { - ADD_FAILURE(); - return false; - } - - virtual void Drain(HttpNetworkSession* session) OVERRIDE { - ADD_FAILURE(); - } - - virtual void SetPriority(RequestPriority priority) OVERRIDE { - priority_ = priority; - } - - private: - RequestPriority priority_; - - DISALLOW_COPY_AND_ASSIGN(FakeStream); -}; - -// Fake HttpStreamRequest that simply records calls to SetPriority() -// and vends FakeStreams with its current priority. -class FakeStreamRequest : public HttpStreamRequest, - public base::SupportsWeakPtr<FakeStreamRequest> { - public: - FakeStreamRequest(RequestPriority priority, - HttpStreamRequest::Delegate* delegate) - : priority_(priority), - delegate_(delegate) {} - - virtual ~FakeStreamRequest() {} - - RequestPriority priority() const { return priority_; } - - // Create a new FakeStream and pass it to the request's - // delegate. Returns a weak pointer to the FakeStream. - base::WeakPtr<FakeStream> FinishStreamRequest() { - FakeStream* fake_stream = new FakeStream(priority_); - // Do this before calling OnStreamReady() as OnStreamReady() may - // immediately delete |fake_stream|. - base::WeakPtr<FakeStream> weak_stream = fake_stream->AsWeakPtr(); - delegate_->OnStreamReady(SSLConfig(), ProxyInfo(), fake_stream); - return weak_stream; - } - - virtual int RestartTunnelWithProxyAuth( - const AuthCredentials& credentials) OVERRIDE { - ADD_FAILURE(); - return ERR_UNEXPECTED; - } - - virtual LoadState GetLoadState() const OVERRIDE { - ADD_FAILURE(); - return LoadState(); - } - - virtual void SetPriority(RequestPriority priority) OVERRIDE { - priority_ = priority; - } - - virtual bool was_npn_negotiated() const OVERRIDE { - return false; - } - - virtual NextProto protocol_negotiated() const OVERRIDE { - return kProtoUnknown; - } - - virtual bool using_spdy() const OVERRIDE { - return false; - } - - private: - RequestPriority priority_; - HttpStreamRequest::Delegate* const delegate_; - - DISALLOW_COPY_AND_ASSIGN(FakeStreamRequest); -}; - -// Fake HttpStreamFactory that vends FakeStreamRequests. -class FakeStreamFactory : public HttpStreamFactory { - public: - FakeStreamFactory() {} - virtual ~FakeStreamFactory() {} - - // Returns a WeakPtr<> to the last HttpStreamRequest returned by - // RequestStream() (which may be NULL if it was destroyed already). - base::WeakPtr<FakeStreamRequest> last_stream_request() { - return last_stream_request_; - } - - virtual HttpStreamRequest* RequestStream( - const HttpRequestInfo& info, - RequestPriority priority, - const SSLConfig& server_ssl_config, - const SSLConfig& proxy_ssl_config, - HttpStreamRequest::Delegate* delegate, - const BoundNetLog& net_log) OVERRIDE { - FakeStreamRequest* fake_request = new FakeStreamRequest(priority, delegate); - last_stream_request_ = fake_request->AsWeakPtr(); - return fake_request; - } - - virtual HttpStreamRequest* RequestWebSocketStream( - const HttpRequestInfo& info, - RequestPriority priority, - const SSLConfig& server_ssl_config, - const SSLConfig& proxy_ssl_config, - HttpStreamRequest::Delegate* delegate, - WebSocketStreamBase::Factory* factory, - const BoundNetLog& net_log) OVERRIDE { - ADD_FAILURE(); - return NULL; - } - - virtual void PreconnectStreams(int num_streams, - const HttpRequestInfo& info, - RequestPriority priority, - const SSLConfig& server_ssl_config, - const SSLConfig& proxy_ssl_config) OVERRIDE { - ADD_FAILURE(); - } - - virtual base::Value* PipelineInfoToValue() const OVERRIDE { - ADD_FAILURE(); - return NULL; - } - - virtual const HostMappingRules* GetHostMappingRules() const OVERRIDE { - ADD_FAILURE(); - return NULL; - } - - private: - base::WeakPtr<FakeStreamRequest> last_stream_request_; - - DISALLOW_COPY_AND_ASSIGN(FakeStreamFactory); -}; - -} // namespace - -// Make sure that HttpNetworkTransaction passes on its priority to its -// stream request on start. -TEST_P(HttpNetworkTransactionTest, SetStreamRequestPriorityOnStart) { - scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); - HttpNetworkSessionPeer peer(session); - FakeStreamFactory* fake_factory = new FakeStreamFactory(); - peer.SetHttpStreamFactory(fake_factory); - - HttpNetworkTransaction trans(LOW, session); - - ASSERT_TRUE(fake_factory->last_stream_request() == NULL); - - HttpRequestInfo request; - TestCompletionCallback callback; - EXPECT_EQ(ERR_IO_PENDING, - trans.Start(&request, callback.callback(), BoundNetLog())); - - base::WeakPtr<FakeStreamRequest> fake_request = - fake_factory->last_stream_request(); - ASSERT_TRUE(fake_request != NULL); - EXPECT_EQ(LOW, fake_request->priority()); -} - -// Make sure that HttpNetworkTransaction passes on its priority -// updates to its stream request. -TEST_P(HttpNetworkTransactionTest, SetStreamRequestPriority) { - scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); - HttpNetworkSessionPeer peer(session); - FakeStreamFactory* fake_factory = new FakeStreamFactory(); - peer.SetHttpStreamFactory(fake_factory); - - HttpNetworkTransaction trans(LOW, session); - - HttpRequestInfo request; - TestCompletionCallback callback; - EXPECT_EQ(ERR_IO_PENDING, - trans.Start(&request, callback.callback(), BoundNetLog())); - - base::WeakPtr<FakeStreamRequest> fake_request = - fake_factory->last_stream_request(); - ASSERT_TRUE(fake_request != NULL); - EXPECT_EQ(LOW, fake_request->priority()); - - trans.SetPriority(LOWEST); - ASSERT_TRUE(fake_request != NULL); - EXPECT_EQ(LOWEST, fake_request->priority()); -} - -// Make sure that HttpNetworkTransaction passes on its priority -// updates to its stream. -TEST_P(HttpNetworkTransactionTest, SetStreamPriority) { - scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); - HttpNetworkSessionPeer peer(session); - FakeStreamFactory* fake_factory = new FakeStreamFactory(); - peer.SetHttpStreamFactory(fake_factory); - - HttpNetworkTransaction trans(LOW, session); - - HttpRequestInfo request; - TestCompletionCallback callback; - EXPECT_EQ(ERR_IO_PENDING, - trans.Start(&request, callback.callback(), BoundNetLog())); - - base::WeakPtr<FakeStreamRequest> fake_request = - fake_factory->last_stream_request(); - ASSERT_TRUE(fake_request != NULL); - base::WeakPtr<FakeStream> fake_stream = fake_request->FinishStreamRequest(); - ASSERT_TRUE(fake_stream != NULL); - EXPECT_EQ(LOW, fake_stream->priority()); - - trans.SetPriority(LOWEST); - EXPECT_EQ(LOWEST, fake_stream->priority()); -} - } // namespace net diff --git a/chromium/net/http/http_pipelined_host_forced.cc b/chromium/net/http/http_pipelined_host_forced.cc index 8059d848d73..8179e86f319 100644 --- a/chromium/net/http/http_pipelined_host_forced.cc +++ b/chromium/net/http/http_pipelined_host_forced.cc @@ -36,9 +36,10 @@ HttpPipelinedStream* HttpPipelinedHostForced::CreateStreamOnNewPipeline( bool was_npn_negotiated, NextProto protocol_negotiated) { CHECK(!pipeline_.get()); - scoped_ptr<BufferedWriteStreamSocket> buffered_socket( - new BufferedWriteStreamSocket(connection->PassSocket())); - connection->SetSocket(buffered_socket.PassAs<StreamSocket>()); + StreamSocket* wrapped_socket = connection->release_socket(); + BufferedWriteStreamSocket* buffered_socket = new BufferedWriteStreamSocket( + wrapped_socket); + connection->set_socket(buffered_socket); pipeline_.reset(factory_->CreateNewPipeline( connection, this, key_.origin(), used_ssl_config, used_proxy_info, net_log, was_npn_negotiated, protocol_negotiated)); diff --git a/chromium/net/http/http_pipelined_stream.cc b/chromium/net/http/http_pipelined_stream.cc index df5743556d1..951c2f9afd6 100644 --- a/chromium/net/http/http_pipelined_stream.cc +++ b/chromium/net/http/http_pipelined_stream.cc @@ -121,11 +121,6 @@ void HttpPipelinedStream::Drain(HttpNetworkSession* session) { pipeline_->Drain(this, session); } -void HttpPipelinedStream::SetPriority(RequestPriority priority) { - // TODO(akalin): Plumb this through to |pipeline_| and its - // underlying ClientSocketHandle. -} - const SSLConfig& HttpPipelinedStream::used_ssl_config() const { return pipeline_->used_ssl_config(); } diff --git a/chromium/net/http/http_pipelined_stream.h b/chromium/net/http/http_pipelined_stream.h index d3a7991e5ca..675d8f083a2 100644 --- a/chromium/net/http/http_pipelined_stream.h +++ b/chromium/net/http/http_pipelined_stream.h @@ -81,8 +81,6 @@ class HttpPipelinedStream : public HttpStream { virtual void Drain(HttpNetworkSession* session) OVERRIDE; - virtual void SetPriority(RequestPriority priority) OVERRIDE; - // The SSLConfig used to establish this stream's pipeline. const SSLConfig& used_ssl_config() const; diff --git a/chromium/net/http/http_proxy_client_socket_pool.cc b/chromium/net/http/http_proxy_client_socket_pool.cc index c75df6f0d2f..b80df37b3dd 100644 --- a/chromium/net/http/http_proxy_client_socket_pool.cc +++ b/chromium/net/http/http_proxy_client_socket_pool.cc @@ -289,7 +289,7 @@ int HttpProxyConnectJob::DoHttpProxyConnect() { int HttpProxyConnectJob::DoHttpProxyConnectComplete(int result) { if (result == OK || result == ERR_PROXY_AUTH_REQUESTED || result == ERR_HTTPS_PROXY_TUNNEL_RESPONSE) { - SetSocket(transport_socket_.PassAs<StreamSocket>()); + set_socket(transport_socket_.release()); } return result; @@ -380,19 +380,19 @@ HttpProxyConnectJobFactory::HttpProxyConnectJobFactory( } -scoped_ptr<ConnectJob> +ConnectJob* HttpProxyClientSocketPool::HttpProxyConnectJobFactory::NewConnectJob( const std::string& group_name, const PoolBase::Request& request, ConnectJob::Delegate* delegate) const { - return scoped_ptr<ConnectJob>(new HttpProxyConnectJob(group_name, - request.params(), - ConnectionTimeout(), - transport_pool_, - ssl_pool_, - host_resolver_, - delegate, - net_log_)); + return new HttpProxyConnectJob(group_name, + request.params(), + ConnectionTimeout(), + transport_pool_, + ssl_pool_, + host_resolver_, + delegate, + net_log_); } base::TimeDelta @@ -462,9 +462,8 @@ void HttpProxyClientSocketPool::CancelRequest( } void HttpProxyClientSocketPool::ReleaseSocket(const std::string& group_name, - scoped_ptr<StreamSocket> socket, - int id) { - base_.ReleaseSocket(group_name, socket.Pass(), id); + StreamSocket* socket, int id) { + base_.ReleaseSocket(group_name, socket, id); } void HttpProxyClientSocketPool::FlushWithError(int error) { diff --git a/chromium/net/http/http_proxy_client_socket_pool.h b/chromium/net/http/http_proxy_client_socket_pool.h index b77b5ae3571..a15b8cad809 100644 --- a/chromium/net/http/http_proxy_client_socket_pool.h +++ b/chromium/net/http/http_proxy_client_socket_pool.h @@ -204,7 +204,7 @@ class NET_EXPORT_PRIVATE HttpProxyClientSocketPool ClientSocketHandle* handle) OVERRIDE; virtual void ReleaseSocket(const std::string& group_name, - scoped_ptr<StreamSocket> socket, + StreamSocket* socket, int id) OVERRIDE; virtual void FlushWithError(int error) OVERRIDE; @@ -250,7 +250,7 @@ class NET_EXPORT_PRIVATE HttpProxyClientSocketPool NetLog* net_log); // ClientSocketPoolBase::ConnectJobFactory methods. - virtual scoped_ptr<ConnectJob> NewConnectJob( + virtual ConnectJob* NewConnectJob( const std::string& group_name, const PoolBase::Request& request, ConnectJob::Delegate* delegate) const OVERRIDE; diff --git a/chromium/net/http/http_response_body_drainer_unittest.cc b/chromium/net/http/http_response_body_drainer_unittest.cc index 70134cce1ea..5d9fcc4689e 100644 --- a/chromium/net/http/http_response_body_drainer_unittest.cc +++ b/chromium/net/http/http_response_body_drainer_unittest.cc @@ -127,8 +127,6 @@ class MockHttpStream : public HttpStream { virtual void Drain(HttpNetworkSession*) OVERRIDE {} - virtual void SetPriority(RequestPriority priority) OVERRIDE {} - // Methods to tweak/observer mock behavior: void set_stall_reads_forever() { stall_reads_forever_ = true; } diff --git a/chromium/net/http/http_stream_base.h b/chromium/net/http/http_stream_base.h index 596ed75dff1..6dce6d2a805 100644 --- a/chromium/net/http/http_stream_base.h +++ b/chromium/net/http/http_stream_base.h @@ -141,9 +141,6 @@ class NET_EXPORT_PRIVATE HttpStreamBase { // draining is complete. virtual void Drain(HttpNetworkSession* session) = 0; - // Called when the priority of the parent transaction changes. - virtual void SetPriority(RequestPriority priority) = 0; - private: DISALLOW_COPY_AND_ASSIGN(HttpStreamBase); }; diff --git a/chromium/net/http/http_stream_factory.h b/chromium/net/http/http_stream_factory.h index 0de3b65bc57..6db6905b433 100644 --- a/chromium/net/http/http_stream_factory.h +++ b/chromium/net/http/http_stream_factory.h @@ -157,9 +157,6 @@ class NET_EXPORT_PRIVATE HttpStreamRequest { virtual int RestartTunnelWithProxyAuth( const AuthCredentials& credentials) = 0; - // Called when the priority of the parent transaction changes. - virtual void SetPriority(RequestPriority priority) = 0; - // Returns the LoadState for the request. virtual LoadState GetLoadState() const = 0; diff --git a/chromium/net/http/http_stream_factory_impl.h b/chromium/net/http/http_stream_factory_impl.h index 4339fd350d7..3949f3839ee 100644 --- a/chromium/net/http/http_stream_factory_impl.h +++ b/chromium/net/http/http_stream_factory_impl.h @@ -9,7 +9,6 @@ #include <set> #include <vector> -#include "base/gtest_prod_util.h" #include "base/memory/ref_counted.h" #include "net/base/host_port_pair.h" #include "net/base/net_log.h" @@ -67,10 +66,8 @@ class NET_EXPORT_PRIVATE HttpStreamFactoryImpl : size_t num_orphaned_jobs() const { return orphaned_job_set_.size(); } private: - FRIEND_TEST_ALL_PREFIXES(HttpStreamFactoryImplRequestTest, SetPriority); - - class NET_EXPORT_PRIVATE Request; - class NET_EXPORT_PRIVATE Job; + class Request; + class Job; typedef std::set<Request*> RequestSet; typedef std::vector<Request*> RequestVector; diff --git a/chromium/net/http/http_stream_factory_impl_job.cc b/chromium/net/http/http_stream_factory_impl_job.cc index c0383f4772d..b2eee3b0fbe 100644 --- a/chromium/net/http/http_stream_factory_impl_job.cc +++ b/chromium/net/http/http_stream_factory_impl_job.cc @@ -230,17 +230,12 @@ void HttpStreamFactoryImpl::Job::Orphan(const Request* request) { } } -void HttpStreamFactoryImpl::Job::SetPriority(RequestPriority priority) { - priority_ = priority; - // TODO(akalin): Propagate this to |connection_| and maybe the - // preconnect state. -} - bool HttpStreamFactoryImpl::Job::was_npn_negotiated() const { return was_npn_negotiated_; } -NextProto HttpStreamFactoryImpl::Job::protocol_negotiated() const { +NextProto HttpStreamFactoryImpl::Job::protocol_negotiated() + const { return protocol_negotiated_; } diff --git a/chromium/net/http/http_stream_factory_impl_job.h b/chromium/net/http/http_stream_factory_impl_job.h index 01a794a1bc7..2c2eb349586 100644 --- a/chromium/net/http/http_stream_factory_impl_job.h +++ b/chromium/net/http/http_stream_factory_impl_job.h @@ -74,9 +74,6 @@ class HttpStreamFactoryImpl::Job { // Used to detach the Job from |request|. void Orphan(const Request* request); - void SetPriority(RequestPriority priority); - - RequestPriority priority() const { return priority_; } bool was_npn_negotiated() const; NextProto protocol_negotiated() const; bool using_spdy() const; diff --git a/chromium/net/http/http_stream_factory_impl_request.cc b/chromium/net/http/http_stream_factory_impl_request.cc index 57190ed72e7..e73a897a528 100644 --- a/chromium/net/http/http_stream_factory_impl_request.cc +++ b/chromium/net/http/http_stream_factory_impl_request.cc @@ -215,15 +215,6 @@ int HttpStreamFactoryImpl::Request::RestartTunnelWithProxyAuth( return bound_job_->RestartTunnelWithProxyAuth(credentials); } -void HttpStreamFactoryImpl::Request::SetPriority(RequestPriority priority) { - for (std::set<HttpStreamFactoryImpl::Job*>::const_iterator it = jobs_.begin(); - it != jobs_.end(); ++it) { - (*it)->SetPriority(priority); - } - if (bound_job_) - bound_job_->SetPriority(priority); -} - LoadState HttpStreamFactoryImpl::Request::GetLoadState() const { if (bound_job_.get()) return bound_job_->GetLoadState(); diff --git a/chromium/net/http/http_stream_factory_impl_request.h b/chromium/net/http/http_stream_factory_impl_request.h index d6f9b02cbef..169e1f54ce9 100644 --- a/chromium/net/http/http_stream_factory_impl_request.h +++ b/chromium/net/http/http_stream_factory_impl_request.h @@ -105,7 +105,6 @@ class HttpStreamFactoryImpl::Request : public HttpStreamRequest { virtual int RestartTunnelWithProxyAuth( const AuthCredentials& credentials) OVERRIDE; - virtual void SetPriority(RequestPriority priority) OVERRIDE; virtual LoadState GetLoadState() const OVERRIDE; virtual bool was_npn_negotiated() const OVERRIDE; virtual NextProto protocol_negotiated() const OVERRIDE; diff --git a/chromium/net/http/http_stream_factory_impl_request_unittest.cc b/chromium/net/http/http_stream_factory_impl_request_unittest.cc deleted file mode 100644 index 1f38a2e56f6..00000000000 --- a/chromium/net/http/http_stream_factory_impl_request_unittest.cc +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright (c) 2013 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "net/http/http_stream_factory_impl_request.h" - -#include "net/http/http_stream_factory_impl_job.h" -#include "net/proxy/proxy_info.h" -#include "net/proxy/proxy_service.h" -#include "net/spdy/spdy_test_util_common.h" -#include "testing/gtest/include/gtest/gtest.h" - -namespace net { - -class HttpStreamFactoryImplRequestTest - : public ::testing::Test, - public ::testing::WithParamInterface<NextProto> {}; - -INSTANTIATE_TEST_CASE_P( - NextProto, - HttpStreamFactoryImplRequestTest, - testing::Values(kProtoSPDY2, kProtoSPDY3, kProtoSPDY31, kProtoSPDY4a2, - kProtoHTTP2Draft04)); - -namespace { - -class DoNothingRequestDelegate : public HttpStreamRequest::Delegate { - public: - DoNothingRequestDelegate() {} - - virtual ~DoNothingRequestDelegate() {} - - // HttpStreamRequest::Delegate - virtual void OnStreamReady( - const SSLConfig& used_ssl_config, - const ProxyInfo& used_proxy_info, - HttpStreamBase* stream) OVERRIDE {} - virtual void OnWebSocketStreamReady( - const SSLConfig& used_ssl_config, - const ProxyInfo& used_proxy_info, - WebSocketStreamBase* stream) OVERRIDE {} - virtual void OnStreamFailed( - int status, - const SSLConfig& used_ssl_config) OVERRIDE {} - virtual void OnCertificateError( - int status, - const SSLConfig& used_ssl_config, - const SSLInfo& ssl_info) OVERRIDE {} - virtual void OnNeedsProxyAuth(const HttpResponseInfo& proxy_response, - const SSLConfig& used_ssl_config, - const ProxyInfo& used_proxy_info, - HttpAuthController* auth_controller) OVERRIDE {} - virtual void OnNeedsClientAuth(const SSLConfig& used_ssl_config, - SSLCertRequestInfo* cert_info) OVERRIDE {} - virtual void OnHttpsProxyTunnelResponse(const HttpResponseInfo& response_info, - const SSLConfig& used_ssl_config, - const ProxyInfo& used_proxy_info, - HttpStreamBase* stream) OVERRIDE {} -}; - -} // namespace - -// Make sure that Request passes on its priority updates to its jobs. -TEST_P(HttpStreamFactoryImplRequestTest, SetPriority) { - SpdySessionDependencies session_deps(GetParam(), - ProxyService::CreateDirect()); - - scoped_refptr<HttpNetworkSession> - session(SpdySessionDependencies::SpdyCreateSession(&session_deps)); - HttpStreamFactoryImpl* factory = - static_cast<HttpStreamFactoryImpl*>(session->http_stream_factory()); - - DoNothingRequestDelegate request_delegate; - HttpStreamFactoryImpl::Request request( - GURL(), factory, &request_delegate, NULL, BoundNetLog()); - - HttpStreamFactoryImpl::Job* job = - new HttpStreamFactoryImpl::Job(factory, - session, - HttpRequestInfo(), - DEFAULT_PRIORITY, - SSLConfig(), - SSLConfig(), - NULL); - request.AttachJob(job); - EXPECT_EQ(DEFAULT_PRIORITY, job->priority()); - - request.SetPriority(MEDIUM); - EXPECT_EQ(MEDIUM, job->priority()); - - // Make |job| the bound job. - request.OnStreamFailed(job, ERR_FAILED, SSLConfig()); - - request.SetPriority(IDLE); - EXPECT_EQ(IDLE, job->priority()); -} - -} // namespace net diff --git a/chromium/net/http/http_stream_factory_impl_unittest.cc b/chromium/net/http/http_stream_factory_impl_unittest.cc index f378c93ea18..14fbc0338a3 100644 --- a/chromium/net/http/http_stream_factory_impl_unittest.cc +++ b/chromium/net/http/http_stream_factory_impl_unittest.cc @@ -314,7 +314,7 @@ class CapturePreconnectsSocketPool : public ParentPool { ADD_FAILURE(); } virtual void ReleaseSocket(const std::string& group_name, - scoped_ptr<StreamSocket> socket, + StreamSocket* socket, int id) OVERRIDE { ADD_FAILURE(); } diff --git a/chromium/net/http/http_stream_parser_unittest.cc b/chromium/net/http/http_stream_parser_unittest.cc index 84775945ec1..d530c2deab7 100644 --- a/chromium/net/http/http_stream_parser_unittest.cc +++ b/chromium/net/http/http_stream_parser_unittest.cc @@ -220,7 +220,7 @@ TEST(HttpStreamParser, AsyncChunkAndAsyncSocket) { ASSERT_EQ(OK, rv); scoped_ptr<ClientSocketHandle> socket_handle(new ClientSocketHandle); - socket_handle->SetSocket(transport.PassAs<StreamSocket>()); + socket_handle->set_socket(transport.release()); HttpRequestInfo request_info; request_info.method = "GET"; @@ -375,7 +375,7 @@ TEST(HttpStreamParser, TruncatedHeaders) { ASSERT_EQ(OK, rv); scoped_ptr<ClientSocketHandle> socket_handle(new ClientSocketHandle); - socket_handle->SetSocket(transport.PassAs<StreamSocket>()); + socket_handle->set_socket(transport.release()); HttpRequestInfo request_info; request_info.method = "GET"; diff --git a/chromium/net/http/mock_http_cache.cc b/chromium/net/http/mock_http_cache.cc index 85ffa74584e..a3d55b17e6b 100644 --- a/chromium/net/http/mock_http_cache.cc +++ b/chromium/net/http/mock_http_cache.cc @@ -50,14 +50,10 @@ struct MockDiskEntry::CallbackInfo { int result; }; -MockDiskEntry::MockDiskEntry() - : test_mode_(0), doomed_(false), sparse_(false), - fail_requests_(false), busy_(false), delayed_(false) { -} - MockDiskEntry::MockDiskEntry(const std::string& key) : key_(key), doomed_(false), sparse_(false), - fail_requests_(false), busy_(false), delayed_(false) { + fail_requests_(false), fail_sparse_requests_(false), busy_(false), + delayed_(false) { test_mode_ = GetTestModeForEntry(key); } @@ -139,6 +135,8 @@ int MockDiskEntry::WriteData( int MockDiskEntry::ReadSparseData(int64 offset, net::IOBuffer* buf, int buf_len, const net::CompletionCallback& callback) { DCHECK(!callback.is_null()); + if (fail_sparse_requests_) + return net::ERR_NOT_IMPLEMENTED; if (!sparse_ || busy_) return net::ERR_CACHE_OPERATION_NOT_SUPPORTED; if (offset < 0) @@ -169,6 +167,8 @@ int MockDiskEntry::WriteSparseData(int64 offset, net::IOBuffer* buf, int buf_len, const net::CompletionCallback& callback) { DCHECK(!callback.is_null()); + if (fail_sparse_requests_) + return net::ERR_NOT_IMPLEMENTED; if (busy_) return net::ERR_CACHE_OPERATION_NOT_SUPPORTED; if (!sparse_) { @@ -237,6 +237,8 @@ int MockDiskEntry::GetAvailableRange(int64 offset, int len, int64* start, } bool MockDiskEntry::CouldBeSparse() const { + if (fail_sparse_requests_) + return false; return sparse_; } @@ -245,6 +247,8 @@ void MockDiskEntry::CancelSparseIO() { } int MockDiskEntry::ReadyForSparseIO(const net::CompletionCallback& callback) { + if (fail_sparse_requests_) + return net::ERR_NOT_IMPLEMENTED; if (!cancel_) return net::OK; @@ -333,7 +337,8 @@ bool MockDiskEntry::ignore_callbacks_ = false; MockDiskCache::MockDiskCache() : open_count_(0), create_count_(0), fail_requests_(false), - soft_failures_(false), double_create_check_(true) { + soft_failures_(false), double_create_check_(true), + fail_sparse_requests_(false) { } MockDiskCache::~MockDiskCache() { @@ -411,6 +416,9 @@ int MockDiskCache::CreateEntry(const std::string& key, if (soft_failures_) new_entry->set_fail_requests(); + if (fail_sparse_requests_) + new_entry->set_fail_sparse_requests(); + if (GetTestModeForEntry(key) & TEST_MODE_SYNC_CACHE_START) return net::OK; diff --git a/chromium/net/http/mock_http_cache.h b/chromium/net/http/mock_http_cache.h index 6cb0e50f562..90399ec4ff0 100644 --- a/chromium/net/http/mock_http_cache.h +++ b/chromium/net/http/mock_http_cache.h @@ -21,7 +21,6 @@ class MockDiskEntry : public disk_cache::Entry, public base::RefCounted<MockDiskEntry> { public: - MockDiskEntry(); explicit MockDiskEntry(const std::string& key); bool is_doomed() const { return doomed_; } @@ -53,6 +52,8 @@ class MockDiskEntry : public disk_cache::Entry, // Fail most subsequent requests. void set_fail_requests() { fail_requests_ = true; } + void set_fail_sparse_requests() { fail_sparse_requests_ = true; } + // If |value| is true, don't deliver any completion callbacks until called // again with |value| set to false. Caution: remember to enable callbacks // again or all subsequent tests will fail. @@ -85,6 +86,7 @@ class MockDiskEntry : public disk_cache::Entry, bool doomed_; bool sparse_; bool fail_requests_; + bool fail_sparse_requests_; bool busy_; bool delayed_; static bool cancel_; @@ -134,6 +136,9 @@ class MockDiskCache : public disk_cache::Backend { // Makes sure that CreateEntry is not called twice for a given key. void set_double_create_check(bool value) { double_create_check_ = value; } + // Makes all requests for data ranges to fail as not implemented. + void set_fail_sparse_requests() { fail_sparse_requests_ = true; } + void ReleaseAll(); private: @@ -147,6 +152,7 @@ class MockDiskCache : public disk_cache::Backend { bool fail_requests_; bool soft_failures_; bool double_create_check_; + bool fail_sparse_requests_; }; class MockBackendFactory : public net::HttpCache::BackendFactory { diff --git a/chromium/net/http/proxy_connect_redirect_http_stream.cc b/chromium/net/http/proxy_connect_redirect_http_stream.cc index 59bb0146953..f30f33c002c 100644 --- a/chromium/net/http/proxy_connect_redirect_http_stream.cc +++ b/chromium/net/http/proxy_connect_redirect_http_stream.cc @@ -109,10 +109,6 @@ void ProxyConnectRedirectHttpStream::Drain(HttpNetworkSession* session) { NOTREACHED(); } -void ProxyConnectRedirectHttpStream::SetPriority(RequestPriority priority) { - // Nothing to do. -} - UploadProgress ProxyConnectRedirectHttpStream::GetUploadProgress() const { NOTREACHED(); return UploadProgress(); diff --git a/chromium/net/http/proxy_connect_redirect_http_stream.h b/chromium/net/http/proxy_connect_redirect_http_stream.h index c335c218c71..f39ec76b9b9 100644 --- a/chromium/net/http/proxy_connect_redirect_http_stream.h +++ b/chromium/net/http/proxy_connect_redirect_http_stream.h @@ -59,10 +59,6 @@ class ProxyConnectRedirectHttpStream : public HttpStream { SSLCertRequestInfo* cert_request_info) OVERRIDE; virtual bool IsSpdyHttpStream() const OVERRIDE; virtual void Drain(HttpNetworkSession* session) OVERRIDE; - - // This function may be called. - virtual void SetPriority(RequestPriority priority) OVERRIDE; - virtual UploadProgress GetUploadProgress() const OVERRIDE; virtual HttpStream* RenewStreamForAuth() OVERRIDE; |