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

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

Issue 747903006: [DevTools] Support permessage-deflate in AndroidWebSocket. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@deflate
Patch Set: rebased Created 6 years 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
« no previous file with comments | « chrome/browser/devtools/device/android_device_manager.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/memory/weak_ptr.h" 5 #include "base/memory/weak_ptr.h"
6 #include "base/message_loop/message_loop.h" 6 #include "base/message_loop/message_loop.h"
7 #include "base/rand_util.h" 7 #include "base/rand_util.h"
8 #include "chrome/browser/devtools/device/android_device_manager.h" 8 #include "chrome/browser/devtools/device/android_device_manager.h"
9 #include "content/public/browser/browser_thread.h" 9 #include "content/public/browser/browser_thread.h"
10 #include "net/base/io_buffer.h" 10 #include "net/base/io_buffer.h"
11 #include "net/base/net_errors.h" 11 #include "net/base/net_errors.h"
12 #include "net/server/web_socket_encoder.h" 12 #include "net/server/web_socket_encoder.h"
13 #include "net/socket/stream_socket.h" 13 #include "net/socket/stream_socket.h"
14 14
15 using content::BrowserThread; 15 using content::BrowserThread;
16 using net::WebSocket; 16 using net::WebSocket;
17 17
18 namespace { 18 namespace {
19 19
20 const int kBufferSize = 16 * 1024; 20 const int kBufferSize = 16 * 1024;
21 21
22 } // namespace 22 } // namespace
23 23
24 class AndroidDeviceManager::AndroidWebSocket::WebSocketImpl { 24 class AndroidDeviceManager::AndroidWebSocket::WebSocketImpl {
25 public: 25 public:
26 WebSocketImpl(scoped_refptr<base::MessageLoopProxy> response_message_loop, 26 WebSocketImpl(scoped_refptr<base::MessageLoopProxy> response_message_loop,
27 base::WeakPtr<AndroidWebSocket> weak_socket, 27 base::WeakPtr<AndroidWebSocket> weak_socket,
28 const std::string& extensions,
28 scoped_ptr<net::StreamSocket> socket) 29 scoped_ptr<net::StreamSocket> socket)
29 : response_message_loop_(response_message_loop), 30 : response_message_loop_(response_message_loop),
30 weak_socket_(weak_socket), 31 weak_socket_(weak_socket),
31 socket_(socket.Pass()), 32 socket_(socket.Pass()),
32 encoder_(net::WebSocketEncoder::CreateClient(std::string())) { 33 encoder_(net::WebSocketEncoder::CreateClient(extensions)) {
33 thread_checker_.DetachFromThread(); 34 thread_checker_.DetachFromThread();
34 } 35 }
35 36
36 void StartListening() { 37 void StartListening() {
37 DCHECK(thread_checker_.CalledOnValidThread()); 38 DCHECK(thread_checker_.CalledOnValidThread());
38 DCHECK(socket_); 39 DCHECK(socket_);
39 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kBufferSize)); 40 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kBufferSize));
40 Read(buffer); 41 Read(buffer);
41 } 42 }
42 43
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 Delegate* delegate) 138 Delegate* delegate)
138 : device_(device.get()), 139 : device_(device.get()),
139 socket_impl_(nullptr), 140 socket_impl_(nullptr),
140 delegate_(delegate), 141 delegate_(delegate),
141 weak_factory_(this) { 142 weak_factory_(this) {
142 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 143 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
143 DCHECK(delegate_); 144 DCHECK(delegate_);
144 DCHECK(device_); 145 DCHECK(device_);
145 device_->sockets_.insert(this); 146 device_->sockets_.insert(this);
146 device_->HttpUpgrade( 147 device_->HttpUpgrade(
147 socket_name, url, 148 socket_name, url, net::WebSocketEncoder::kClientExtensions,
148 base::Bind(&AndroidWebSocket::Connected, weak_factory_.GetWeakPtr())); 149 base::Bind(&AndroidWebSocket::Connected, weak_factory_.GetWeakPtr()));
149 } 150 }
150 151
151 AndroidDeviceManager::AndroidWebSocket::~AndroidWebSocket() { 152 AndroidDeviceManager::AndroidWebSocket::~AndroidWebSocket() {
152 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 153 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
153 Terminate(); 154 Terminate();
154 } 155 }
155 156
156 void AndroidDeviceManager::AndroidWebSocket::SendFrame( 157 void AndroidDeviceManager::AndroidWebSocket::SendFrame(
157 const std::string& message) { 158 const std::string& message) {
158 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 159 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
159 DCHECK(socket_impl_); 160 DCHECK(socket_impl_);
160 DCHECK(device_); 161 DCHECK(device_);
161 device_->message_loop_proxy_->PostTask( 162 device_->message_loop_proxy_->PostTask(
162 FROM_HERE, 163 FROM_HERE,
163 base::Bind(&WebSocketImpl::SendFrame, 164 base::Bind(&WebSocketImpl::SendFrame,
164 base::Unretained(socket_impl_), message)); 165 base::Unretained(socket_impl_), message));
165 } 166 }
166 167
167 void AndroidDeviceManager::AndroidWebSocket::Connected( 168 void AndroidDeviceManager::AndroidWebSocket::Connected(
168 int result, 169 int result,
170 const std::string& extensions,
169 scoped_ptr<net::StreamSocket> socket) { 171 scoped_ptr<net::StreamSocket> socket) {
170 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 172 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
171 if (result != net::OK || !socket.get()) { 173 if (result != net::OK || !socket.get()) {
172 OnSocketClosed(); 174 OnSocketClosed();
173 return; 175 return;
174 } 176 }
175 socket_impl_ = new WebSocketImpl(base::MessageLoopProxy::current(), 177 socket_impl_ = new WebSocketImpl(base::MessageLoopProxy::current(),
176 weak_factory_.GetWeakPtr(), 178 weak_factory_.GetWeakPtr(),
179 extensions,
177 socket.Pass()); 180 socket.Pass());
178 device_->message_loop_proxy_->PostTask( 181 device_->message_loop_proxy_->PostTask(
179 FROM_HERE, 182 FROM_HERE,
180 base::Bind(&WebSocketImpl::StartListening, 183 base::Bind(&WebSocketImpl::StartListening,
181 base::Unretained(socket_impl_))); 184 base::Unretained(socket_impl_)));
182 delegate_->OnSocketOpened(); 185 delegate_->OnSocketOpened();
183 } 186 }
184 187
185 void AndroidDeviceManager::AndroidWebSocket::OnFrameRead( 188 void AndroidDeviceManager::AndroidWebSocket::OnFrameRead(
186 const std::string& message) { 189 const std::string& message) {
(...skipping 20 matching lines...) Expand all
207 } 210 }
208 } 211 }
209 212
210 AndroidDeviceManager::AndroidWebSocket* 213 AndroidDeviceManager::AndroidWebSocket*
211 AndroidDeviceManager::Device::CreateWebSocket( 214 AndroidDeviceManager::Device::CreateWebSocket(
212 const std::string& socket_name, 215 const std::string& socket_name,
213 const std::string& url, 216 const std::string& url,
214 AndroidWebSocket::Delegate* delegate) { 217 AndroidWebSocket::Delegate* delegate) {
215 return new AndroidWebSocket(this, socket_name, url, delegate); 218 return new AndroidWebSocket(this, socket_name, url, delegate);
216 } 219 }
OLDNEW
« no previous file with comments | « chrome/browser/devtools/device/android_device_manager.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698