Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(324)

Unified Diff: net/http/failing_http_transaction_factory.cc

Issue 138513002: Plumb network stack information about existence of cached copy (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Incorporated comments from Matt & Ricardo. Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/http/failing_http_transaction_factory.cc
diff --git a/net/http/failing_http_transaction_factory.cc b/net/http/failing_http_transaction_factory.cc
new file mode 100644
index 0000000000000000000000000000000000000000..d08e66e56ef5e26535c70f66a6c67a820f625efb
--- /dev/null
+++ b/net/http/failing_http_transaction_factory.cc
@@ -0,0 +1,177 @@
+// 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/logging.h"
+#include "base/message_loop/message_loop.h"
+#include "net/base/load_timing_info.h"
+#include "net/base/upload_progress.h"
+
+namespace net {
+
+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 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();
+}
+
+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
+

Powered by Google App Engine
This is Rietveld 408576698