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

Side by Side Diff: chrome/browser/devtools/devtools_network_transaction.cc

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, added unit tests 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "chrome/browser/devtools/devtools_network_transaction.h"
6
7 #include "chrome/browser/devtools/devtools_network_controller.h"
8 #include "net/base/net_errors.h"
9 #include "net/http/http_network_transaction.h"
10 #include "net/http/http_request_info.h"
11
12 DevToolsNetworkTransaction::DevToolsNetworkTransaction(
13 DevToolsNetworkController* controller,
14 scoped_ptr<net::HttpTransaction> network_transaction)
15 : id_(controller->GenerateTransactionId()),
16 controller_(controller),
17 network_transaction_(network_transaction.Pass()),
18 started_(false),
19 has_devtools_request_header_(false),
20 failed_(false),
21 proxy_callback_(base::Bind(&DevToolsNetworkTransaction::OnCallback,
22 base::Unretained(this))) {
23 CHECK(controller);
24 controller->AddTransaction(id_, this);
25 }
26
27 DevToolsNetworkTransaction::~DevToolsNetworkTransaction() {
28 controller_->RemoveTransaction(id_);
29 }
30
31 void DevToolsNetworkTransaction::OnCallback(int rv) {
32 if (failed_)
33 return;
34 CHECK(!callback_.is_null());
35 net::CompletionCallback callback = callback_;
36 callback_.Reset();
37 callback.Run(rv);
38 }
39
40 void DevToolsNetworkTransaction::Fail() {
41 CHECK(!failed_);
mmenke 2014/04/18 15:41:42 DCHECK(started_)?
mmenke 2014/04/18 15:41:42 I don't think this is true - if we're waiting for
eustas 2014/04/21 11:34:59 Done.
eustas 2014/04/21 11:34:59 I've added "if" in controller, so in wouldn't fail
42 failed_ = true;
43 net::CompletionCallback callback = callback_;
44 callback_.Reset();
45 if (!callback.is_null())
mmenke 2014/04/18 15:41:42 optional: Could move this check up 2 lines, and e
eustas 2014/04/21 11:34:59 Done.
46 callback.Run(net::ERR_INTERNET_DISCONNECTED);
47 }
48
49 int DevToolsNetworkTransaction::Start(
50 const net::HttpRequestInfo* request_info,
51 const net::CompletionCallback& callback,
52 const net::BoundNetLog& net_log) {
53 started_ = true;
54 url_ = request_info->url;
55 has_devtools_request_header_ =
56 request_info->extra_headers.HasHeader("X-DevTools-Request-Initiator");
57
58 if (controller_->ShouldFail(this))
mmenke 2014/04/18 15:41:42 failed_ = true?
eustas 2014/04/21 11:34:59 Surely. Done.
59 return net::ERR_INTERNET_DISCONNECTED;
60 int rv = network_transaction_->Start(request_info, proxy_callback_, net_log);
61 if (rv == net::ERR_IO_PENDING)
62 callback_ = callback;
63 return rv;
64 }
65
66 int DevToolsNetworkTransaction::RestartIgnoringLastError(
67 const net::CompletionCallback& callback) {
68 CHECK(!failed_);
69 int rv = network_transaction_->RestartIgnoringLastError(proxy_callback_);
70 if (rv == net::ERR_IO_PENDING)
71 callback_ = callback;
72 return rv;
73 }
74
75 int DevToolsNetworkTransaction::RestartWithCertificate(
76 net::X509Certificate* client_cert,
77 const net::CompletionCallback& callback) {
78 CHECK(!failed_);
79 int rv = network_transaction_->RestartWithCertificate(
80 client_cert, proxy_callback_);
81 if (rv == net::ERR_IO_PENDING)
82 callback_ = callback;
83 return rv;
84 }
85
86 int DevToolsNetworkTransaction::RestartWithAuth(
87 const net::AuthCredentials& credentials,
88 const net::CompletionCallback& callback) {
89 CHECK(!failed_);
90 int rv = network_transaction_->RestartWithAuth(credentials, proxy_callback_);
91 if (rv == net::ERR_IO_PENDING)
92 callback_ = callback;
93 return rv;
94 }
95
96 bool DevToolsNetworkTransaction::IsReadyToRestartForAuth() {
97 return network_transaction_->IsReadyToRestartForAuth();
98 }
99
100 int DevToolsNetworkTransaction::Read(
101 net::IOBuffer* buf,
102 int buf_len,
103 const net::CompletionCallback& callback) {
104 CHECK(!failed_);
mmenke 2014/04/18 15:41:42 This check looks to be wrong - we could be waiting
eustas 2014/04/21 11:34:59 Done.
105 int rv = network_transaction_->Read(buf, buf_len, proxy_callback_);
106 if (rv == net::ERR_IO_PENDING)
107 callback_ = callback;
108 return rv;
109 }
110
111 void DevToolsNetworkTransaction::StopCaching() {
112 network_transaction_->StopCaching();
113 }
114
115 bool DevToolsNetworkTransaction::GetFullRequestHeaders(
116 net::HttpRequestHeaders* headers) const {
117 return network_transaction_->GetFullRequestHeaders(headers);
118 }
119
120 int64 DevToolsNetworkTransaction::GetTotalReceivedBytes() const {
121 return network_transaction_->GetTotalReceivedBytes();
122 }
123
124 void DevToolsNetworkTransaction::DoneReading() {
125 network_transaction_->DoneReading();
126 }
127
128 const net::HttpResponseInfo* DevToolsNetworkTransaction::GetResponseInfo() const
129 {
130 return network_transaction_->GetResponseInfo();
131 }
132
133 net::LoadState DevToolsNetworkTransaction::GetLoadState() const {
134 return network_transaction_->GetLoadState();
135 }
136
137 net::UploadProgress DevToolsNetworkTransaction::GetUploadProgress() const {
138 return network_transaction_->GetUploadProgress();
139 }
140
141 void DevToolsNetworkTransaction::SetQuicServerInfo(
142 net::QuicServerInfo* quic_server_info) {
143 network_transaction_->SetQuicServerInfo(quic_server_info);
144 }
145
146 bool DevToolsNetworkTransaction::GetLoadTimingInfo(
147 net::LoadTimingInfo* load_timing_info) const {
148 return network_transaction_->GetLoadTimingInfo(load_timing_info);
149 }
150
151 void DevToolsNetworkTransaction::SetPriority(net::RequestPriority priority) {
152 network_transaction_->SetPriority(priority);
153 }
154
155 void DevToolsNetworkTransaction::SetWebSocketHandshakeStreamCreateHelper(
156 net::WebSocketHandshakeStreamBase::CreateHelper* create_helper) {
157 network_transaction_->SetWebSocketHandshakeStreamCreateHelper(create_helper);
158 }
159
160 void DevToolsNetworkTransaction::SetBeforeNetworkStartCallback(
161 const BeforeNetworkStartCallback& callback) {
162 // TODO: investigate.
163 network_transaction_->SetBeforeNetworkStartCallback(callback);
164 }
165
166 int DevToolsNetworkTransaction::ResumeNetworkStart() {
167 return network_transaction_->ResumeNetworkStart();
168 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698