diff options
Diffstat (limited to 'chromium/net/http/failing_http_transaction_factory.cc')
-rw-r--r-- | chromium/net/http/failing_http_transaction_factory.cc | 191 |
1 files changed, 191 insertions, 0 deletions
diff --git a/chromium/net/http/failing_http_transaction_factory.cc b/chromium/net/http/failing_http_transaction_factory.cc new file mode 100644 index 00000000000..d1d1612966d --- /dev/null +++ b/chromium/net/http/failing_http_transaction_factory.cc @@ -0,0 +1,191 @@ +// Copyright 2014 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/failing_http_transaction_factory.h" + +#include "base/bind.h" +#include "base/compiler_specific.h" +#include "base/logging.h" +#include "base/message_loop/message_loop.h" +#include "net/base/load_timing_info.h" +#include "net/base/upload_progress.h" + +namespace net { + +class AuthCredentials; +class BoundNetLog; +class HttpRequestHeaders; +class IOBuffer; +class X509Certificate; + +struct HttpRequestInfo; + +namespace { + +// A simple class to interpose between the cache and network http layers. +// These transactions can be generated by the FailingHttpTransactionFactory +// to test interactions between cache and network. +class FailingHttpTransaction : public HttpTransaction { + public: + explicit FailingHttpTransaction(Error error); + virtual ~FailingHttpTransaction(); + + // HttpTransaction + virtual int Start(const HttpRequestInfo* request_info, + const CompletionCallback& callback, + const BoundNetLog& net_log) OVERRIDE; + virtual int RestartIgnoringLastError( + const CompletionCallback& callback) OVERRIDE; + virtual int RestartWithCertificate( + X509Certificate* client_cert, + const CompletionCallback& callback) OVERRIDE; + virtual int RestartWithAuth( + const AuthCredentials& credentials, + const CompletionCallback& callback) OVERRIDE; + virtual bool IsReadyToRestartForAuth() OVERRIDE; + virtual int Read(IOBuffer* buf, int buf_len, + const CompletionCallback& callback) OVERRIDE; + virtual void StopCaching() OVERRIDE; + virtual bool GetFullRequestHeaders( + HttpRequestHeaders* headers) const OVERRIDE; + virtual int64 GetTotalReceivedBytes() const OVERRIDE; + virtual void DoneReading() OVERRIDE; + virtual const HttpResponseInfo* GetResponseInfo() const OVERRIDE; + virtual LoadState GetLoadState() const OVERRIDE; + virtual UploadProgress GetUploadProgress() const OVERRIDE; + virtual void SetQuicServerInfo( + net::QuicServerInfo* quic_server_info) OVERRIDE; + virtual bool GetLoadTimingInfo( + LoadTimingInfo* load_timing_info) const OVERRIDE; + virtual void SetPriority(RequestPriority priority) OVERRIDE; + virtual void SetWebSocketHandshakeStreamCreateHelper( + WebSocketHandshakeStreamBase::CreateHelper* create_helper) OVERRIDE; + virtual void SetBeforeNetworkStartCallback( + const BeforeNetworkStartCallback& callback) OVERRIDE; + virtual int ResumeNetworkStart() OVERRIDE; + + private: + Error error_; +}; + +FailingHttpTransaction::FailingHttpTransaction(Error error) : error_(error) { + DCHECK_LT(error, OK); +} + +FailingHttpTransaction::~FailingHttpTransaction() {} + +int FailingHttpTransaction::Start(const HttpRequestInfo* request_info, + const CompletionCallback& callback, + const BoundNetLog& net_log) { + base::MessageLoop::current()->PostTask( + FROM_HERE, base::Bind(callback, error_)); + return ERR_IO_PENDING; +} + +int FailingHttpTransaction::RestartIgnoringLastError( + const CompletionCallback& callback) { + return ERR_FAILED; +} + +int FailingHttpTransaction::RestartWithCertificate( + X509Certificate* client_cert, + const CompletionCallback& callback) { + return ERR_FAILED; +} + +int FailingHttpTransaction::RestartWithAuth( + const AuthCredentials& credentials, + const CompletionCallback& callback) { + return ERR_FAILED; +} + +bool FailingHttpTransaction::IsReadyToRestartForAuth() { + return false; +} + +int FailingHttpTransaction::Read(IOBuffer* buf, int buf_len, + const CompletionCallback& callback) { + NOTREACHED(); + return ERR_FAILED; +} + +void FailingHttpTransaction::StopCaching() {} + +bool FailingHttpTransaction::GetFullRequestHeaders( + HttpRequestHeaders* headers) const { + return false; +} + +int64 FailingHttpTransaction::GetTotalReceivedBytes() const { + return 0; +} + +void FailingHttpTransaction::DoneReading() { + NOTREACHED(); +} + +const HttpResponseInfo* FailingHttpTransaction::GetResponseInfo() const { + return NULL; +} + +LoadState FailingHttpTransaction::GetLoadState() const { + return LOAD_STATE_IDLE; +} + +UploadProgress FailingHttpTransaction::GetUploadProgress() const { + return UploadProgress(); +} + +void FailingHttpTransaction::SetQuicServerInfo( + net::QuicServerInfo* quic_server_info) {} + +bool FailingHttpTransaction::GetLoadTimingInfo( + LoadTimingInfo* load_timing_info) const { + return false; +} + +void FailingHttpTransaction::SetPriority(RequestPriority priority) {} + +void FailingHttpTransaction::SetWebSocketHandshakeStreamCreateHelper( + WebSocketHandshakeStreamBase::CreateHelper* create_helper) { + NOTREACHED(); +} + +void FailingHttpTransaction::SetBeforeNetworkStartCallback( + const BeforeNetworkStartCallback& callback) { +} + +int FailingHttpTransaction::ResumeNetworkStart() { + NOTREACHED(); + return ERR_FAILED; +} + +} // namespace + +FailingHttpTransactionFactory::FailingHttpTransactionFactory( + HttpNetworkSession* session, + Error error) : session_(session), error_(error) { + DCHECK_LT(error, OK); +} + +FailingHttpTransactionFactory::~FailingHttpTransactionFactory() {} + +// HttpTransactionFactory: +int FailingHttpTransactionFactory::CreateTransaction( + RequestPriority priority, + scoped_ptr<HttpTransaction>* trans) { + trans->reset(new FailingHttpTransaction(error_)); + return OK; +} + +HttpCache* FailingHttpTransactionFactory::GetCache() { + return NULL; +} + +HttpNetworkSession* FailingHttpTransactionFactory::GetSession() { + return session_; +} + +} // namespace net + |