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

Unified Diff: chrome/browser/devtools/devtools_network_transaction.h

Issue 182993003: Add the ability for DevTools to wrap network transactions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed comments Created 6 years, 8 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: chrome/browser/devtools/devtools_network_transaction.h
diff --git a/chrome/browser/devtools/devtools_network_transaction.h b/chrome/browser/devtools/devtools_network_transaction.h
new file mode 100644
index 0000000000000000000000000000000000000000..a8557bc8062afd566bce1a8536d75e53b85a221e
--- /dev/null
+++ b/chrome/browser/devtools/devtools_network_transaction.h
@@ -0,0 +1,118 @@
+// 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.
+
+#ifndef CHROME_BROWSER_DEVTOOLS_DEVTOOLS_NETWORK_TRANSACTION_H_
+#define CHROME_BROWSER_DEVTOOLS_DEVTOOLS_NETWORK_TRANSACTION_H_
+
+#include "net/base/completion_callback.h"
+#include "net/base/load_states.h"
+#include "net/base/net_export.h"
+#include "net/base/request_priority.h"
+#include "net/base/upload_progress.h"
+#include "net/http/http_transaction.h"
+#include "net/websockets/websocket_handshake_stream_base.h"
+
+class DevToolsNetworkController;
+class GURL;
+
+namespace net {
+class AuthCredentials;
+class BoundNetLog;
+class HttpRequestHeaders;
+struct HttpRequestInfo;
+class HttpResponseInfo;
+class HttpNetworkSession;
+class IOBuffer;
+struct LoadTimingInfo;
+class X509Certificate;
+} // namespace net
mmenke 2014/04/21 17:16:51 nit: two spaces before comment or remove comment.
eustas 2014/04/22 14:23:09 Done.
+
+// DevToolsNetworkTransaction is a wrapper for network transaction. All
+// HttpTransaction methods are proxied to real transaction, but |callback|
+// parameter is saved and replaced with proxy callback. Fail method should be
+// used to simulate network outage. It runs saved callback (if any) with
+// net::ERR_INTERNET_DISCONNECTED result value.
+class NET_EXPORT DevToolsNetworkTransaction : public net::HttpTransaction {
+ public:
+ DevToolsNetworkTransaction(
+ DevToolsNetworkController* controller,
+ scoped_ptr<net::HttpTransaction> network_transaction);
mmenke 2014/04/21 17:16:51 include scoped_ptr.h
eustas 2014/04/22 14:23:09 Done.
+
+ virtual ~DevToolsNetworkTransaction();
+
+ const GURL& url() const { return url_; }
+ bool started() const { return started_; }
+ bool failed() const { return failed_; }
+ bool has_devtools_request_header() const {
+ return has_devtools_request_header_; }
+
+ // Runs callback (if any) with net::ERR_INTERNET_DISCONNECTED result value.
+ void Fail();
+
+ // HttpTransaction methods:
+ virtual int Start(
+ const net::HttpRequestInfo* request_info,
+ const net::CompletionCallback& callback,
+ const net::BoundNetLog& net_log) OVERRIDE;
+ virtual int RestartIgnoringLastError(
+ const net::CompletionCallback& callback) OVERRIDE;
+ virtual int RestartWithCertificate(
+ net::X509Certificate* client_cert,
+ const net::CompletionCallback& callback) OVERRIDE;
+ virtual int RestartWithAuth(
+ const net::AuthCredentials& credentials,
+ const net::CompletionCallback& callback) OVERRIDE;
+ virtual bool IsReadyToRestartForAuth() OVERRIDE;
+
+ virtual int Read(
+ net::IOBuffer* buf,
+ int buf_len,
+ const net::CompletionCallback& callback) OVERRIDE;
+ virtual void StopCaching() OVERRIDE;
+ virtual bool GetFullRequestHeaders(
+ net::HttpRequestHeaders* headers) const OVERRIDE;
+ virtual int64 GetTotalReceivedBytes() const OVERRIDE;
+ virtual void DoneReading() OVERRIDE;
+ virtual const net::HttpResponseInfo* GetResponseInfo() const OVERRIDE;
+ virtual net::LoadState GetLoadState() const OVERRIDE;
+ virtual net::UploadProgress GetUploadProgress() const OVERRIDE;
+ virtual void SetQuicServerInfo(
+ net::QuicServerInfo* quic_server_info) OVERRIDE;
+ virtual bool GetLoadTimingInfo(
+ net::LoadTimingInfo* load_timing_info) const OVERRIDE;
+ virtual void SetPriority(net::RequestPriority priority) OVERRIDE;
+ virtual void SetWebSocketHandshakeStreamCreateHelper(
+ net::WebSocketHandshakeStreamBase::CreateHelper* create_helper) OVERRIDE;
+ virtual void SetBeforeNetworkStartCallback(
+ const BeforeNetworkStartCallback& callback) OVERRIDE;
+ virtual int ResumeNetworkStart() OVERRIDE;
+
+ private:
+ // Proxy callback handler. Runs saved callback.
+ void OnCallback(int result);
+
+ DevToolsNetworkController* controller_;
+
+ // Real network transaction.
+ scoped_ptr<net::HttpTransaction> network_transaction_;
+
+ // Request URL captured when transaction is started.
+ GURL url_;
+
+ // True if Start was already invoked.
+ bool started_;
+
+ // True if request headers contain specific DevTools key.
+ bool has_devtools_request_header_;
+
+ // True if Fail was already invoked.
+ bool failed_;
+
+ net::CompletionCallback proxy_callback_;
+ net::CompletionCallback callback_;
+
+ DISALLOW_COPY_AND_ASSIGN(DevToolsNetworkTransaction);
+};
+
+#endif // CHROME_BROWSER_DEVTOOLS_DEVTOOLS_NETWORK_TRANSACTION_H_

Powered by Google App Engine
This is Rietveld 408576698