Chromium Code Reviews
[email protected] (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(964)

Side by Side Diff: webkit/tools/test_shell/simple_socket_stream_bridge.cc

Issue 14520026: webkit: Use base::MessageLoop. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: comments Created 7 years, 7 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
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <vector> 5 #include <vector>
6 6
7 #include "webkit/tools/test_shell/simple_socket_stream_bridge.h" 7 #include "webkit/tools/test_shell/simple_socket_stream_bridge.h"
8 8
9 #include "base/atomicops.h" 9 #include "base/atomicops.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 void DoClose(); 60 void DoClose();
61 61
62 // Runs on |message_loop_|; 62 // Runs on |message_loop_|;
63 void DoOnConnected(int max_amount_send_allowed); 63 void DoOnConnected(int max_amount_send_allowed);
64 void DoOnSentData(int amount_sent); 64 void DoOnSentData(int amount_sent);
65 void DoOnReceivedData(std::vector<char>* data); 65 void DoOnReceivedData(std::vector<char>* data);
66 void DoOnClose(); 66 void DoOnClose();
67 void DoOnError(int error_code, const char* error_msg); 67 void DoOnError(int error_code, const char* error_msg);
68 68
69 int socket_id_; 69 int socket_id_;
70 MessageLoop* message_loop_; 70 base::MessageLoop* message_loop_;
71 WebKit::WebSocketStreamHandle* handle_; 71 WebKit::WebSocketStreamHandle* handle_;
72 webkit_glue::WebSocketStreamHandleDelegate* delegate_; 72 webkit_glue::WebSocketStreamHandleDelegate* delegate_;
73 73
74 scoped_refptr<net::SocketStreamJob> socket_; 74 scoped_refptr<net::SocketStreamJob> socket_;
75 // Number of pending tasks to handle net::SocketStream::Delegate methods. 75 // Number of pending tasks to handle net::SocketStream::Delegate methods.
76 base::subtle::Atomic32 num_pending_tasks_; 76 base::subtle::Atomic32 num_pending_tasks_;
77 77
78 DISALLOW_COPY_AND_ASSIGN(WebSocketStreamHandleBridgeImpl); 78 DISALLOW_COPY_AND_ASSIGN(WebSocketStreamHandleBridgeImpl);
79 }; 79 };
80 80
81 WebSocketStreamHandleBridgeImpl::WebSocketStreamHandleBridgeImpl( 81 WebSocketStreamHandleBridgeImpl::WebSocketStreamHandleBridgeImpl(
82 WebKit::WebSocketStreamHandle* handle, 82 WebKit::WebSocketStreamHandle* handle,
83 webkit_glue::WebSocketStreamHandleDelegate* delegate) 83 webkit_glue::WebSocketStreamHandleDelegate* delegate)
84 : socket_id_(kNoSocketId), 84 : socket_id_(kNoSocketId),
85 message_loop_(MessageLoop::current()), 85 message_loop_(base::MessageLoop::current()),
86 handle_(handle), 86 handle_(handle),
87 delegate_(delegate), 87 delegate_(delegate),
88 num_pending_tasks_(0) { 88 num_pending_tasks_(0) {
89 net::WebSocketJob::EnsureInit(); 89 net::WebSocketJob::EnsureInit();
90 } 90 }
91 91
92 WebSocketStreamHandleBridgeImpl::~WebSocketStreamHandleBridgeImpl() { 92 WebSocketStreamHandleBridgeImpl::~WebSocketStreamHandleBridgeImpl() {
93 DCHECK_EQ(socket_id_, kNoSocketId); 93 DCHECK_EQ(socket_id_, kNoSocketId);
94 } 94 }
95 95
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 void WebSocketStreamHandleBridgeImpl::OnError( 160 void WebSocketStreamHandleBridgeImpl::OnError(
161 const net::SocketStream* socket, int error_code) { 161 const net::SocketStream* socket, int error_code) {
162 base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, 1); 162 base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, 1);
163 message_loop_->PostTask( 163 message_loop_->PostTask(
164 FROM_HERE, 164 FROM_HERE,
165 base::Bind(&WebSocketStreamHandleBridgeImpl::DoOnError, this, 165 base::Bind(&WebSocketStreamHandleBridgeImpl::DoOnError, this,
166 error_code, net::ErrorToString(error_code))); 166 error_code, net::ErrorToString(error_code)));
167 } 167 }
168 168
169 void WebSocketStreamHandleBridgeImpl::DoConnect(const GURL& url) { 169 void WebSocketStreamHandleBridgeImpl::DoConnect(const GURL& url) {
170 DCHECK(MessageLoop::current() == g_io_thread); 170 DCHECK(base::MessageLoop::current() == g_io_thread);
171 socket_ = net::SocketStreamJob::CreateSocketStreamJob( 171 socket_ = net::SocketStreamJob::CreateSocketStreamJob(
172 url, this, g_request_context->transport_security_state(), 172 url,
brettw 2013/05/06 17:43:33 Ditto.
xhwang 2013/05/07 00:11:07 Done.
173 this,
174 g_request_context->transport_security_state(),
173 g_request_context->ssl_config_service()); 175 g_request_context->ssl_config_service());
174 socket_->set_context(g_request_context); 176 socket_->set_context(g_request_context);
175 socket_->Connect(); 177 socket_->Connect();
176 } 178 }
177 179
178 void WebSocketStreamHandleBridgeImpl::DoSend(std::vector<char>* data) { 180 void WebSocketStreamHandleBridgeImpl::DoSend(std::vector<char>* data) {
179 DCHECK(MessageLoop::current() == g_io_thread); 181 DCHECK(base::MessageLoop::current() == g_io_thread);
180 scoped_ptr<std::vector<char> > scoped_data(data); 182 scoped_ptr<std::vector<char> > scoped_data(data);
181 if (!socket_) 183 if (!socket_)
182 return; 184 return;
183 if (!socket_->SendData(&(data->at(0)), data->size())) 185 if (!socket_->SendData(&(data->at(0)), data->size()))
184 socket_->Close(); 186 socket_->Close();
185 } 187 }
186 188
187 void WebSocketStreamHandleBridgeImpl::DoClose() { 189 void WebSocketStreamHandleBridgeImpl::DoClose() {
188 DCHECK(MessageLoop::current() == g_io_thread); 190 DCHECK(base::MessageLoop::current() == g_io_thread);
189 if (!socket_) 191 if (!socket_)
190 return; 192 return;
191 socket_->Close(); 193 socket_->Close();
192 } 194 }
193 195
194 void WebSocketStreamHandleBridgeImpl::DoOnConnected( 196 void WebSocketStreamHandleBridgeImpl::DoOnConnected(
195 int max_pending_send_allowed) { 197 int max_pending_send_allowed) {
196 DCHECK(MessageLoop::current() == message_loop_); 198 DCHECK(base::MessageLoop::current() == message_loop_);
197 base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, -1); 199 base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, -1);
198 if (delegate_) 200 if (delegate_)
199 delegate_->DidOpenStream(handle_, max_pending_send_allowed); 201 delegate_->DidOpenStream(handle_, max_pending_send_allowed);
200 } 202 }
201 203
202 void WebSocketStreamHandleBridgeImpl::DoOnSentData(int amount_sent) { 204 void WebSocketStreamHandleBridgeImpl::DoOnSentData(int amount_sent) {
203 DCHECK(MessageLoop::current() == message_loop_); 205 DCHECK(base::MessageLoop::current() == message_loop_);
204 base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, -1); 206 base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, -1);
205 if (delegate_) 207 if (delegate_)
206 delegate_->DidSendData(handle_, amount_sent); 208 delegate_->DidSendData(handle_, amount_sent);
207 } 209 }
208 210
209 void WebSocketStreamHandleBridgeImpl::DoOnReceivedData( 211 void WebSocketStreamHandleBridgeImpl::DoOnReceivedData(
210 std::vector<char>* data) { 212 std::vector<char>* data) {
211 DCHECK(MessageLoop::current() == message_loop_); 213 DCHECK(base::MessageLoop::current() == message_loop_);
212 base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, -1); 214 base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, -1);
213 scoped_ptr<std::vector<char> > scoped_data(data); 215 scoped_ptr<std::vector<char> > scoped_data(data);
214 if (delegate_) 216 if (delegate_)
215 delegate_->DidReceiveData(handle_, &(data->at(0)), data->size()); 217 delegate_->DidReceiveData(handle_, &(data->at(0)), data->size());
216 } 218 }
217 219
218 void WebSocketStreamHandleBridgeImpl::DoOnClose() { 220 void WebSocketStreamHandleBridgeImpl::DoOnClose() {
219 DCHECK(MessageLoop::current() == message_loop_); 221 DCHECK(base::MessageLoop::current() == message_loop_);
220 base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, -1); 222 base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, -1);
221 // Don't handle OnClose if there are pending tasks. 223 // Don't handle OnClose if there are pending tasks.
222 DCHECK_EQ(num_pending_tasks_, 0); 224 DCHECK_EQ(num_pending_tasks_, 0);
223 DCHECK(!socket_); 225 DCHECK(!socket_);
224 DCHECK_EQ(socket_id_, kNoSocketId); 226 DCHECK_EQ(socket_id_, kNoSocketId);
225 webkit_glue::WebSocketStreamHandleDelegate* delegate = delegate_; 227 webkit_glue::WebSocketStreamHandleDelegate* delegate = delegate_;
226 delegate_ = NULL; 228 delegate_ = NULL;
227 if (delegate) 229 if (delegate)
228 delegate->DidClose(handle_); 230 delegate->DidClose(handle_);
229 Release(); 231 Release();
230 } 232 }
231 233
232 void WebSocketStreamHandleBridgeImpl::DoOnError( 234 void WebSocketStreamHandleBridgeImpl::DoOnError(
233 int error_code, const char* error_msg) { 235 int error_code, const char* error_msg) {
234 DCHECK(MessageLoop::current() == message_loop_); 236 DCHECK(MessageLoop::current() == message_loop_);
235 base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, -1); 237 base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, -1);
236 if (delegate_) 238 if (delegate_)
237 delegate_->DidFail(handle_, error_code, ASCIIToUTF16(error_msg)); 239 delegate_->DidFail(handle_, error_code, ASCIIToUTF16(error_msg));
238 } 240 }
239 241
240 } // namespace 242 } // namespace
241 243
242 /* static */ 244 /* static */
243 void SimpleSocketStreamBridge::InitializeOnIOThread( 245 void SimpleSocketStreamBridge::InitializeOnIOThread(
244 net::URLRequestContext* request_context) { 246 net::URLRequestContext* request_context) {
245 g_io_thread = MessageLoop::current(); 247 g_io_thread = base::MessageLoop::current();
246 g_request_context = request_context; 248 g_request_context = request_context;
247 } 249 }
248 250
249 void SimpleSocketStreamBridge::Cleanup() { 251 void SimpleSocketStreamBridge::Cleanup() {
250 g_io_thread = NULL; 252 g_io_thread = NULL;
251 g_request_context = NULL; 253 g_request_context = NULL;
252 } 254 }
253 255
254 /* static */ 256 /* static */
255 webkit_glue::WebSocketStreamHandleBridge* SimpleSocketStreamBridge::Create( 257 webkit_glue::WebSocketStreamHandleBridge* SimpleSocketStreamBridge::Create(
256 WebKit::WebSocketStreamHandle* handle, 258 WebKit::WebSocketStreamHandle* handle,
257 webkit_glue::WebSocketStreamHandleDelegate* delegate) { 259 webkit_glue::WebSocketStreamHandleDelegate* delegate) {
258 return new WebSocketStreamHandleBridgeImpl(handle, delegate); 260 return new WebSocketStreamHandleBridgeImpl(handle, delegate);
259 } 261 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698