| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 #ifndef CHROME_BROWSER_DEVTOOLS_DEVTOOLS_NETWORK_TRANSACTION_H_ | 5 #ifndef CHROME_BROWSER_DEVTOOLS_DEVTOOLS_NETWORK_TRANSACTION_H_ |
| 6 #define CHROME_BROWSER_DEVTOOLS_DEVTOOLS_NETWORK_TRANSACTION_H_ | 6 #define CHROME_BROWSER_DEVTOOLS_DEVTOOLS_NETWORK_TRANSACTION_H_ |
| 7 | 7 |
| 8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
| 9 #include "base/memory/weak_ptr.h" |
| 9 #include "net/base/completion_callback.h" | 10 #include "net/base/completion_callback.h" |
| 10 #include "net/base/load_states.h" | 11 #include "net/base/load_states.h" |
| 11 #include "net/base/request_priority.h" | 12 #include "net/base/request_priority.h" |
| 12 #include "net/http/http_transaction.h" | 13 #include "net/http/http_transaction.h" |
| 13 #include "net/websockets/websocket_handshake_stream_base.h" | 14 #include "net/websockets/websocket_handshake_stream_base.h" |
| 14 | 15 |
| 15 class DevToolsNetworkController; | 16 class DevToolsNetworkController; |
| 17 class DevToolsNetworkRealm; |
| 16 class GURL; | 18 class GURL; |
| 17 | 19 |
| 18 namespace net { | 20 namespace net { |
| 19 class AuthCredentials; | 21 class AuthCredentials; |
| 20 class BoundNetLog; | 22 class BoundNetLog; |
| 21 class HttpRequestHeaders; | 23 class HttpRequestHeaders; |
| 22 struct HttpRequestInfo; | 24 struct HttpRequestInfo; |
| 23 class HttpResponseInfo; | 25 class HttpResponseInfo; |
| 24 class HttpNetworkSession; | 26 class HttpNetworkSession; |
| 25 class IOBuffer; | 27 class IOBuffer; |
| 26 struct LoadTimingInfo; | 28 struct LoadTimingInfo; |
| 27 class UploadProgress; | 29 class UploadProgress; |
| 28 class X509Certificate; | 30 class X509Certificate; |
| 29 } | 31 } |
| 30 | 32 |
| 33 namespace test { |
| 34 class DevToolsNetworkControllerHelper; |
| 35 } |
| 36 |
| 31 // DevToolsNetworkTransaction is a wrapper for network transaction. All | 37 // DevToolsNetworkTransaction is a wrapper for network transaction. All |
| 32 // HttpTransaction methods are proxied to real transaction, but |callback| | 38 // HttpTransaction methods are proxied to real transaction, but |callback| |
| 33 // parameter is saved and replaced with proxy callback. Fail method should be | 39 // parameter is saved and replaced with proxy callback. Fail method should be |
| 34 // used to simulate network outage. It runs saved callback (if any) with | 40 // used to simulate network outage. It runs saved callback (if any) with |
| 35 // net::ERR_INTERNET_DISCONNECTED result value. | 41 // net::ERR_INTERNET_DISCONNECTED result value. |
| 36 class DevToolsNetworkTransaction : public net::HttpTransaction { | 42 class DevToolsNetworkTransaction : public net::HttpTransaction { |
| 37 public: | 43 public: |
| 38 DevToolsNetworkTransaction( | 44 DevToolsNetworkTransaction( |
| 39 DevToolsNetworkController* controller, | 45 DevToolsNetworkController* controller, |
| 40 scoped_ptr<net::HttpTransaction> network_transaction); | 46 scoped_ptr<net::HttpTransaction> network_transaction); |
| 41 | 47 |
| 42 virtual ~DevToolsNetworkTransaction(); | 48 virtual ~DevToolsNetworkTransaction(); |
| 43 | 49 |
| 44 const net::HttpRequestInfo* request() const { return request_; } | 50 const net::HttpRequestInfo* request() const { return request_; } |
| 51 |
| 52 // Checks if request contains DevTools specific headers. Found values are |
| 53 // remembered and corresponding keys are removed from headers. |
| 54 void ProcessRequest(); |
| 55 |
| 45 bool failed() const { return failed_; } | 56 bool failed() const { return failed_; } |
| 46 | 57 |
| 47 // Runs callback (if any) with net::ERR_INTERNET_DISCONNECTED result value. | 58 // Runs callback (if any) with net::ERR_INTERNET_DISCONNECTED result value. |
| 48 void Fail(); | 59 void Fail(); |
| 49 | 60 |
| 50 int64_t throttled_byte_count() const { return throttled_byte_count_; } | 61 int64_t throttled_byte_count() const { return throttled_byte_count_; } |
| 51 void DecreaseThrottledByteCount(int64_t delta) { | 62 void DecreaseThrottledByteCount(int64_t delta) { |
| 52 throttled_byte_count_ -= delta; | 63 throttled_byte_count_ -= delta; |
| 53 } | 64 } |
| 54 | 65 |
| 66 const std::string& request_initiator() const { return request_initiator_; } |
| 67 |
| 68 const std::string& client_id() const { |
| 69 return client_id_; |
| 70 } |
| 71 |
| 55 void FireThrottledCallback(); | 72 void FireThrottledCallback(); |
| 56 | 73 |
| 57 // HttpTransaction methods: | 74 // HttpTransaction methods: |
| 58 virtual int Start( | 75 virtual int Start( |
| 59 const net::HttpRequestInfo* request, | 76 const net::HttpRequestInfo* request, |
| 60 const net::CompletionCallback& callback, | 77 const net::CompletionCallback& callback, |
| 61 const net::BoundNetLog& net_log) OVERRIDE; | 78 const net::BoundNetLog& net_log) OVERRIDE; |
| 62 virtual int RestartIgnoringLastError( | 79 virtual int RestartIgnoringLastError( |
| 63 const net::CompletionCallback& callback) OVERRIDE; | 80 const net::CompletionCallback& callback) OVERRIDE; |
| 64 virtual int RestartWithCertificate( | 81 virtual int RestartWithCertificate( |
| (...skipping 20 matching lines...) Expand all Loading... |
| 85 net::QuicServerInfo* quic_server_info) OVERRIDE; | 102 net::QuicServerInfo* quic_server_info) OVERRIDE; |
| 86 virtual bool GetLoadTimingInfo( | 103 virtual bool GetLoadTimingInfo( |
| 87 net::LoadTimingInfo* load_timing_info) const OVERRIDE; | 104 net::LoadTimingInfo* load_timing_info) const OVERRIDE; |
| 88 virtual void SetPriority(net::RequestPriority priority) OVERRIDE; | 105 virtual void SetPriority(net::RequestPriority priority) OVERRIDE; |
| 89 virtual void SetWebSocketHandshakeStreamCreateHelper( | 106 virtual void SetWebSocketHandshakeStreamCreateHelper( |
| 90 net::WebSocketHandshakeStreamBase::CreateHelper* create_helper) OVERRIDE; | 107 net::WebSocketHandshakeStreamBase::CreateHelper* create_helper) OVERRIDE; |
| 91 virtual void SetBeforeNetworkStartCallback( | 108 virtual void SetBeforeNetworkStartCallback( |
| 92 const BeforeNetworkStartCallback& callback) OVERRIDE; | 109 const BeforeNetworkStartCallback& callback) OVERRIDE; |
| 93 virtual int ResumeNetworkStart() OVERRIDE; | 110 virtual int ResumeNetworkStart() OVERRIDE; |
| 94 | 111 |
| 112 protected: |
| 113 friend class test::DevToolsNetworkControllerHelper; |
| 114 |
| 95 private: | 115 private: |
| 96 // Proxy callback handler. Runs saved callback. | 116 // Proxy callback handler. Runs saved callback. |
| 97 void OnCallback(int result); | 117 void OnCallback(int result); |
| 98 | 118 |
| 99 DevToolsNetworkController* controller_; | 119 DevToolsNetworkController* controller_; |
| 120 base::WeakPtr<DevToolsNetworkRealm> realm_; |
| 100 | 121 |
| 101 // Real network transaction. | 122 // Real network transaction. |
| 102 scoped_ptr<net::HttpTransaction> network_transaction_; | 123 scoped_ptr<net::HttpTransaction> network_transaction_; |
| 103 | 124 |
| 104 const net::HttpRequestInfo* request_; | 125 const net::HttpRequestInfo* request_; |
| 105 | 126 |
| 106 // True if Start was already invoked. | 127 // True if Start was already invoked. |
| 107 bool started_; | 128 bool started_; |
| 108 | 129 |
| 109 // True if Fail was already invoked. | 130 // True if Fail was already invoked. |
| 110 bool failed_; | 131 bool failed_; |
| 111 | 132 |
| 133 // Value of "X-DevTools-Request-Initiator" request header. |
| 134 std::string request_initiator_; |
| 135 |
| 136 // Value of "X-DevTools-Emulate-Network-Conditions-Client-Id" request header. |
| 137 std::string client_id_; |
| 138 |
| 139 scoped_ptr<net::HttpRequestInfo> custom_request_; |
| 140 |
| 112 enum CallbackType { | 141 enum CallbackType { |
| 113 NONE, | 142 NONE, |
| 114 READ, | 143 READ, |
| 115 RESTART_IGNORING_LAST_ERROR, | 144 RESTART_IGNORING_LAST_ERROR, |
| 116 RESTART_WITH_AUTH, | 145 RESTART_WITH_AUTH, |
| 117 RESTART_WITH_CERTIFICATE, | 146 RESTART_WITH_CERTIFICATE, |
| 118 START | 147 START |
| 119 }; | 148 }; |
| 120 | 149 |
| 121 int SetupCallback( | 150 int SetupCallback( |
| 122 net::CompletionCallback callback, | 151 net::CompletionCallback callback, |
| 123 int result, | 152 int result, |
| 124 CallbackType callback_type); | 153 CallbackType callback_type); |
| 125 | 154 |
| 126 void Throttle(int result); | 155 void Throttle(int result); |
| 127 | 156 |
| 128 int throttled_result_; | 157 int throttled_result_; |
| 129 int64_t throttled_byte_count_; | 158 int64_t throttled_byte_count_; |
| 130 CallbackType callback_type_; | 159 CallbackType callback_type_; |
| 131 net::CompletionCallback proxy_callback_; | 160 net::CompletionCallback proxy_callback_; |
| 132 net::CompletionCallback callback_; | 161 net::CompletionCallback callback_; |
| 133 | 162 |
| 134 DISALLOW_COPY_AND_ASSIGN(DevToolsNetworkTransaction); | 163 DISALLOW_COPY_AND_ASSIGN(DevToolsNetworkTransaction); |
| 135 }; | 164 }; |
| 136 | 165 |
| 137 #endif // CHROME_BROWSER_DEVTOOLS_DEVTOOLS_NETWORK_TRANSACTION_H_ | 166 #endif // CHROME_BROWSER_DEVTOOLS_DEVTOOLS_NETWORK_TRANSACTION_H_ |
| OLD | NEW |