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

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 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 : controller_(controller),
16 network_transaction_(network_transaction.Pass()),
17 started_(false),
18 has_devtools_request_header_(false),
19 failed_(false),
20 proxy_callback_(base::Bind(&DevToolsNetworkTransaction::OnCallback,
21 base::Unretained(this))) {
22 DCHECK(controller);
23 controller->AddTransaction(this);
24 }
25
26 DevToolsNetworkTransaction::~DevToolsNetworkTransaction() {
27 controller_->RemoveTransaction(this);
28 }
29
30 void DevToolsNetworkTransaction::OnCallback(int rv) {
31 if (failed_)
32 return;
33 DCHECK(!callback_.is_null());
34 net::CompletionCallback callback = callback_;
35 callback_.Reset();
36 callback.Run(rv);
37 }
38
39 void DevToolsNetworkTransaction::Fail() {
40 DCHECK(started_);
41 DCHECK(!failed_);
42 failed_ = true;
43 if (callback_.is_null())
44 return;
45 net::CompletionCallback callback = callback_;
46 callback_.Reset();
47 callback.Run(net::ERR_INTERNET_DISCONNECTED);
48 }
49
50 int DevToolsNetworkTransaction::Start(
51 const net::HttpRequestInfo* request_info,
52 const net::CompletionCallback& callback,
53 const net::BoundNetLog& net_log) {
54 started_ = true;
55 url_ = request_info->url;
mmenke 2014/04/21 17:16:51 Can't we just keep a pointer to request_info, like
eustas 2014/04/22 14:23:09 Good idea. Done.
56 has_devtools_request_header_ =
57 request_info->extra_headers.HasHeader("X-DevTools-Request-Initiator");
mmenke 2014/04/21 17:16:51 This header should probably be in a shared header.
eustas 2014/04/22 14:23:09 Remote debugging is no longer a case. The main cas
58
59 if (controller_->ShouldFail(this)) {
60 failed_ = true;
61 return net::ERR_INTERNET_DISCONNECTED;
62 }
63 int rv = network_transaction_->Start(request_info, proxy_callback_, net_log);
64 if (rv == net::ERR_IO_PENDING)
65 callback_ = callback;
66 return rv;
67 }
68
69 int DevToolsNetworkTransaction::RestartIgnoringLastError(
70 const net::CompletionCallback& callback) {
71 if (failed_)
72 return net::ERR_INTERNET_DISCONNECTED;
73 int rv = network_transaction_->RestartIgnoringLastError(proxy_callback_);
74 if (rv == net::ERR_IO_PENDING)
75 callback_ = callback;
76 return rv;
77 }
78
79 int DevToolsNetworkTransaction::RestartWithCertificate(
80 net::X509Certificate* client_cert,
81 const net::CompletionCallback& callback) {
82 if (failed_)
83 return net::ERR_INTERNET_DISCONNECTED;
84 int rv = network_transaction_->RestartWithCertificate(
85 client_cert, proxy_callback_);
86 if (rv == net::ERR_IO_PENDING)
87 callback_ = callback;
88 return rv;
89 }
90
91 int DevToolsNetworkTransaction::RestartWithAuth(
92 const net::AuthCredentials& credentials,
93 const net::CompletionCallback& callback) {
94 if (failed_)
95 return net::ERR_INTERNET_DISCONNECTED;
96 int rv = network_transaction_->RestartWithAuth(credentials, proxy_callback_);
97 if (rv == net::ERR_IO_PENDING)
98 callback_ = callback;
99 return rv;
100 }
101
102 bool DevToolsNetworkTransaction::IsReadyToRestartForAuth() {
103 return network_transaction_->IsReadyToRestartForAuth();
104 }
105
106 int DevToolsNetworkTransaction::Read(
107 net::IOBuffer* buf,
108 int buf_len,
109 const net::CompletionCallback& callback) {
110 if (failed_)
111 return net::ERR_INTERNET_DISCONNECTED;
112 int rv = network_transaction_->Read(buf, buf_len, proxy_callback_);
113 if (rv == net::ERR_IO_PENDING)
114 callback_ = callback;
115 return rv;
116 }
117
118 void DevToolsNetworkTransaction::StopCaching() {
119 network_transaction_->StopCaching();
120 }
121
122 bool DevToolsNetworkTransaction::GetFullRequestHeaders(
123 net::HttpRequestHeaders* headers) const {
124 return network_transaction_->GetFullRequestHeaders(headers);
125 }
126
127 int64 DevToolsNetworkTransaction::GetTotalReceivedBytes() const {
128 return network_transaction_->GetTotalReceivedBytes();
129 }
130
131 void DevToolsNetworkTransaction::DoneReading() {
132 network_transaction_->DoneReading();
133 }
134
135 const net::HttpResponseInfo* DevToolsNetworkTransaction::GetResponseInfo() const
136 {
mmenke 2014/04/21 17:16:51 Believe that the way this is generally handled is
eustas 2014/04/22 14:23:09 Done.
137 return network_transaction_->GetResponseInfo();
138 }
139
140 net::LoadState DevToolsNetworkTransaction::GetLoadState() const {
141 return network_transaction_->GetLoadState();
142 }
143
144 net::UploadProgress DevToolsNetworkTransaction::GetUploadProgress() const {
145 return network_transaction_->GetUploadProgress();
146 }
147
148 void DevToolsNetworkTransaction::SetQuicServerInfo(
149 net::QuicServerInfo* quic_server_info) {
150 network_transaction_->SetQuicServerInfo(quic_server_info);
151 }
152
153 bool DevToolsNetworkTransaction::GetLoadTimingInfo(
154 net::LoadTimingInfo* load_timing_info) const {
155 return network_transaction_->GetLoadTimingInfo(load_timing_info);
156 }
157
158 void DevToolsNetworkTransaction::SetPriority(net::RequestPriority priority) {
159 network_transaction_->SetPriority(priority);
160 }
161
162 void DevToolsNetworkTransaction::SetWebSocketHandshakeStreamCreateHelper(
163 net::WebSocketHandshakeStreamBase::CreateHelper* create_helper) {
164 network_transaction_->SetWebSocketHandshakeStreamCreateHelper(create_helper);
165 }
166
167 void DevToolsNetworkTransaction::SetBeforeNetworkStartCallback(
168 const BeforeNetworkStartCallback& callback) {
169 // TODO: investigate.
mmenke 2014/04/21 17:16:51 Are you planning on investigating before landing t
eustas 2014/04/22 14:23:09 Resolved.
170 network_transaction_->SetBeforeNetworkStartCallback(callback);
171 }
172
173 int DevToolsNetworkTransaction::ResumeNetworkStart() {
174 return network_transaction_->ResumeNetworkStart();
175 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698