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

Side by Side Diff: chrome/browser/devtools/device/android_web_socket.cc

Issue 1143343005: chrome/browser: Remove use of MessageLoopProxy and deprecated MessageLoop APIs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased. Created 5 years, 6 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
OLDNEW
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 #include "base/location.h"
5 #include "base/memory/weak_ptr.h" 6 #include "base/memory/weak_ptr.h"
6 #include "base/message_loop/message_loop.h"
7 #include "base/rand_util.h" 7 #include "base/rand_util.h"
8 #include "base/single_thread_task_runner.h"
9 #include "base/thread_task_runner_handle.h"
8 #include "chrome/browser/devtools/device/android_device_manager.h" 10 #include "chrome/browser/devtools/device/android_device_manager.h"
9 #include "content/public/browser/browser_thread.h" 11 #include "content/public/browser/browser_thread.h"
10 #include "net/base/io_buffer.h" 12 #include "net/base/io_buffer.h"
11 #include "net/base/net_errors.h" 13 #include "net/base/net_errors.h"
12 #include "net/server/web_socket_encoder.h" 14 #include "net/server/web_socket_encoder.h"
13 #include "net/socket/stream_socket.h" 15 #include "net/socket/stream_socket.h"
14 16
15 using content::BrowserThread; 17 using content::BrowserThread;
16 using net::WebSocket; 18 using net::WebSocket;
17 19
18 namespace { 20 namespace {
19 21
20 const int kBufferSize = 16 * 1024; 22 const int kBufferSize = 16 * 1024;
21 23
22 } // namespace 24 } // namespace
23 25
24 class AndroidDeviceManager::AndroidWebSocket::WebSocketImpl { 26 class AndroidDeviceManager::AndroidWebSocket::WebSocketImpl {
25 public: 27 public:
26 WebSocketImpl(scoped_refptr<base::MessageLoopProxy> response_message_loop, 28 WebSocketImpl(
27 base::WeakPtr<AndroidWebSocket> weak_socket, 29 scoped_refptr<base::SingleThreadTaskRunner> response_task_runner,
28 const std::string& extensions, 30 base::WeakPtr<AndroidWebSocket> weak_socket,
29 const std::string& body_head, 31 const std::string& extensions,
30 scoped_ptr<net::StreamSocket> socket) 32 const std::string& body_head,
31 : response_message_loop_(response_message_loop), 33 scoped_ptr<net::StreamSocket> socket)
32 weak_socket_(weak_socket), 34 : response_task_runner_(response_task_runner),
33 socket_(socket.Pass()), 35 weak_socket_(weak_socket),
34 encoder_(net::WebSocketEncoder::CreateClient(extensions)), 36 socket_(socket.Pass()),
35 response_buffer_(body_head) { 37 encoder_(net::WebSocketEncoder::CreateClient(extensions)),
38 response_buffer_(body_head) {
36 thread_checker_.DetachFromThread(); 39 thread_checker_.DetachFromThread();
37 } 40 }
38 41
39 void StartListening() { 42 void StartListening() {
40 DCHECK(thread_checker_.CalledOnValidThread()); 43 DCHECK(thread_checker_.CalledOnValidThread());
41 DCHECK(socket_); 44 DCHECK(socket_);
42 45
43 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kBufferSize)); 46 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kBufferSize));
44 47
45 if (response_buffer_.size() > 0) 48 if (response_buffer_.size() > 0)
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 } 86 }
84 87
85 void ProcessResponseBuffer(scoped_refptr<net::IOBuffer> io_buffer) { 88 void ProcessResponseBuffer(scoped_refptr<net::IOBuffer> io_buffer) {
86 int bytes_consumed; 89 int bytes_consumed;
87 std::string output; 90 std::string output;
88 WebSocket::ParseResult parse_result = encoder_->DecodeFrame( 91 WebSocket::ParseResult parse_result = encoder_->DecodeFrame(
89 response_buffer_, &bytes_consumed, &output); 92 response_buffer_, &bytes_consumed, &output);
90 93
91 while (parse_result == WebSocket::FRAME_OK) { 94 while (parse_result == WebSocket::FRAME_OK) {
92 response_buffer_ = response_buffer_.substr(bytes_consumed); 95 response_buffer_ = response_buffer_.substr(bytes_consumed);
93 response_message_loop_->PostTask( 96 response_task_runner_->PostTask(
94 FROM_HERE, 97 FROM_HERE,
95 base::Bind(&AndroidWebSocket::OnFrameRead, weak_socket_, output)); 98 base::Bind(&AndroidWebSocket::OnFrameRead, weak_socket_, output));
96 parse_result = encoder_->DecodeFrame( 99 parse_result = encoder_->DecodeFrame(
97 response_buffer_, &bytes_consumed, &output); 100 response_buffer_, &bytes_consumed, &output);
98 } 101 }
99 102
100 if (parse_result == WebSocket::FRAME_ERROR || 103 if (parse_result == WebSocket::FRAME_ERROR ||
101 parse_result == WebSocket::FRAME_CLOSE) { 104 parse_result == WebSocket::FRAME_CLOSE) {
102 Disconnect(); 105 Disconnect();
103 return; 106 return;
(...skipping 16 matching lines...) Expand all
120 result = socket_->Write(buffer.get(), buffer->size(), 123 result = socket_->Write(buffer.get(), buffer->size(),
121 base::Bind(&WebSocketImpl::SendPendingRequests, 124 base::Bind(&WebSocketImpl::SendPendingRequests,
122 base::Unretained(this))); 125 base::Unretained(this)));
123 if (result != net::ERR_IO_PENDING) 126 if (result != net::ERR_IO_PENDING)
124 SendPendingRequests(result); 127 SendPendingRequests(result);
125 } 128 }
126 129
127 void Disconnect() { 130 void Disconnect() {
128 DCHECK(thread_checker_.CalledOnValidThread()); 131 DCHECK(thread_checker_.CalledOnValidThread());
129 socket_.reset(); 132 socket_.reset();
130 response_message_loop_->PostTask( 133 response_task_runner_->PostTask(
131 FROM_HERE, 134 FROM_HERE, base::Bind(&AndroidWebSocket::OnSocketClosed, weak_socket_));
132 base::Bind(&AndroidWebSocket::OnSocketClosed, weak_socket_));
133 } 135 }
134 136
135 scoped_refptr<base::MessageLoopProxy> response_message_loop_; 137 scoped_refptr<base::SingleThreadTaskRunner> response_task_runner_;
136 base::WeakPtr<AndroidWebSocket> weak_socket_; 138 base::WeakPtr<AndroidWebSocket> weak_socket_;
137 scoped_ptr<net::StreamSocket> socket_; 139 scoped_ptr<net::StreamSocket> socket_;
138 scoped_ptr<net::WebSocketEncoder> encoder_; 140 scoped_ptr<net::WebSocketEncoder> encoder_;
139 std::string response_buffer_; 141 std::string response_buffer_;
140 std::string request_buffer_; 142 std::string request_buffer_;
141 base::ThreadChecker thread_checker_; 143 base::ThreadChecker thread_checker_;
142 DISALLOW_COPY_AND_ASSIGN(WebSocketImpl); 144 DISALLOW_COPY_AND_ASSIGN(WebSocketImpl);
143 }; 145 };
144 146
145 AndroidDeviceManager::AndroidWebSocket::AndroidWebSocket( 147 AndroidDeviceManager::AndroidWebSocket::AndroidWebSocket(
(...skipping 17 matching lines...) Expand all
163 AndroidDeviceManager::AndroidWebSocket::~AndroidWebSocket() { 165 AndroidDeviceManager::AndroidWebSocket::~AndroidWebSocket() {
164 DCHECK_CURRENTLY_ON(BrowserThread::UI); 166 DCHECK_CURRENTLY_ON(BrowserThread::UI);
165 Terminate(); 167 Terminate();
166 } 168 }
167 169
168 void AndroidDeviceManager::AndroidWebSocket::SendFrame( 170 void AndroidDeviceManager::AndroidWebSocket::SendFrame(
169 const std::string& message) { 171 const std::string& message) {
170 DCHECK_CURRENTLY_ON(BrowserThread::UI); 172 DCHECK_CURRENTLY_ON(BrowserThread::UI);
171 DCHECK(socket_impl_); 173 DCHECK(socket_impl_);
172 DCHECK(device_); 174 DCHECK(device_);
173 device_->message_loop_proxy_->PostTask( 175 device_->task_runner_->PostTask(
174 FROM_HERE, 176 FROM_HERE, base::Bind(&WebSocketImpl::SendFrame,
175 base::Bind(&WebSocketImpl::SendFrame, 177 base::Unretained(socket_impl_), message));
176 base::Unretained(socket_impl_), message));
177 } 178 }
178 179
179 void AndroidDeviceManager::AndroidWebSocket::Connected( 180 void AndroidDeviceManager::AndroidWebSocket::Connected(
180 int result, 181 int result,
181 const std::string& extensions, 182 const std::string& extensions,
182 const std::string& body_head, 183 const std::string& body_head,
183 scoped_ptr<net::StreamSocket> socket) { 184 scoped_ptr<net::StreamSocket> socket) {
184 DCHECK_CURRENTLY_ON(BrowserThread::UI); 185 DCHECK_CURRENTLY_ON(BrowserThread::UI);
185 if (result != net::OK || !socket.get()) { 186 if (result != net::OK || !socket.get()) {
186 OnSocketClosed(); 187 OnSocketClosed();
187 return; 188 return;
188 } 189 }
189 socket_impl_ = new WebSocketImpl(base::MessageLoopProxy::current(), 190 socket_impl_ = new WebSocketImpl(base::ThreadTaskRunnerHandle::Get(),
190 weak_factory_.GetWeakPtr(), 191 weak_factory_.GetWeakPtr(), extensions,
191 extensions, 192 body_head, socket.Pass());
192 body_head, 193 device_->task_runner_->PostTask(FROM_HERE,
193 socket.Pass()); 194 base::Bind(&WebSocketImpl::StartListening,
194 device_->message_loop_proxy_->PostTask( 195 base::Unretained(socket_impl_)));
195 FROM_HERE,
196 base::Bind(&WebSocketImpl::StartListening,
197 base::Unretained(socket_impl_)));
198 delegate_->OnSocketOpened(); 196 delegate_->OnSocketOpened();
199 } 197 }
200 198
201 void AndroidDeviceManager::AndroidWebSocket::OnFrameRead( 199 void AndroidDeviceManager::AndroidWebSocket::OnFrameRead(
202 const std::string& message) { 200 const std::string& message) {
203 DCHECK_CURRENTLY_ON(BrowserThread::UI); 201 DCHECK_CURRENTLY_ON(BrowserThread::UI);
204 delegate_->OnFrameRead(message); 202 delegate_->OnFrameRead(message);
205 } 203 }
206 204
207 void AndroidDeviceManager::AndroidWebSocket::OnSocketClosed() { 205 void AndroidDeviceManager::AndroidWebSocket::OnSocketClosed() {
208 DCHECK_CURRENTLY_ON(BrowserThread::UI); 206 DCHECK_CURRENTLY_ON(BrowserThread::UI);
209 Terminate(); 207 Terminate();
210 delegate_->OnSocketClosed(); 208 delegate_->OnSocketClosed();
211 } 209 }
212 210
213 void AndroidDeviceManager::AndroidWebSocket::Terminate() { 211 void AndroidDeviceManager::AndroidWebSocket::Terminate() {
214 DCHECK_CURRENTLY_ON(BrowserThread::UI); 212 DCHECK_CURRENTLY_ON(BrowserThread::UI);
215 if (socket_impl_) { 213 if (socket_impl_) {
216 DCHECK(device_); 214 DCHECK(device_);
217 device_->message_loop_proxy_->DeleteSoon(FROM_HERE, socket_impl_); 215 device_->task_runner_->DeleteSoon(FROM_HERE, socket_impl_);
218 socket_impl_ = nullptr; 216 socket_impl_ = nullptr;
219 } 217 }
220 if (device_) { 218 if (device_) {
221 device_->sockets_.erase(this); 219 device_->sockets_.erase(this);
222 device_ = nullptr; 220 device_ = nullptr;
223 } 221 }
224 } 222 }
225 223
226 AndroidDeviceManager::AndroidWebSocket* 224 AndroidDeviceManager::AndroidWebSocket*
227 AndroidDeviceManager::Device::CreateWebSocket( 225 AndroidDeviceManager::Device::CreateWebSocket(
228 const std::string& socket_name, 226 const std::string& socket_name,
229 const std::string& url, 227 const std::string& url,
230 AndroidWebSocket::Delegate* delegate) { 228 AndroidWebSocket::Delegate* delegate) {
231 return new AndroidWebSocket(this, socket_name, url, delegate); 229 return new AndroidWebSocket(this, socket_name, url, delegate);
232 } 230 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698