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

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

Issue 14335011: Revert 196728 "Websocket should fire 'error' event if no server ..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: 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
« no previous file with comments | « trunk/src/webkit/glue/websocketstreamhandle_impl.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 (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"
11 #include "base/memory/ref_counted.h" 11 #include "base/memory/ref_counted.h"
12 #include "base/message_loop.h" 12 #include "base/message_loop.h"
13 #include "base/utf_string_conversions.h"
14 #include "googleurl/src/gurl.h" 13 #include "googleurl/src/gurl.h"
15 #include "net/socket_stream/socket_stream_job.h" 14 #include "net/socket_stream/socket_stream_job.h"
16 #include "net/websockets/websocket_job.h" 15 #include "net/websockets/websocket_job.h"
17 #include "net/url_request/url_request_context.h" 16 #include "net/url_request/url_request_context.h"
18 #include "third_party/WebKit/Source/Platform/chromium/public/WebSocketStreamHand le.h" 17 #include "third_party/WebKit/Source/Platform/chromium/public/WebSocketStreamHand le.h"
19 #include "webkit/glue/websocketstreamhandle_bridge.h" 18 #include "webkit/glue/websocketstreamhandle_bridge.h"
20 #include "webkit/glue/websocketstreamhandle_delegate.h" 19 #include "webkit/glue/websocketstreamhandle_delegate.h"
21 20
22 using webkit_glue::WebSocketStreamHandleBridge; 21 using webkit_glue::WebSocketStreamHandleBridge;
23 22
(...skipping 18 matching lines...) Expand all
42 virtual void Close() OVERRIDE; 41 virtual void Close() OVERRIDE;
43 42
44 // net::SocketStream::Delegate methods. 43 // net::SocketStream::Delegate methods.
45 virtual void OnConnected(net::SocketStream* req, 44 virtual void OnConnected(net::SocketStream* req,
46 int max_pending_send_allowed) OVERRIDE; 45 int max_pending_send_allowed) OVERRIDE;
47 virtual void OnSentData(net::SocketStream* req, 46 virtual void OnSentData(net::SocketStream* req,
48 int amount_sent) OVERRIDE; 47 int amount_sent) OVERRIDE;
49 virtual void OnReceivedData(net::SocketStream* req, 48 virtual void OnReceivedData(net::SocketStream* req,
50 const char* data, int len) OVERRIDE; 49 const char* data, int len) OVERRIDE;
51 virtual void OnClose(net::SocketStream* req) OVERRIDE; 50 virtual void OnClose(net::SocketStream* req) OVERRIDE;
52 virtual void OnError(const net::SocketStream* req, int error_code) OVERRIDE;
53 51
54 private: 52 private:
55 virtual ~WebSocketStreamHandleBridgeImpl(); 53 virtual ~WebSocketStreamHandleBridgeImpl();
56 54
57 // Runs on |g_io_thread|; 55 // Runs on |g_io_thread|;
58 void DoConnect(const GURL& url); 56 void DoConnect(const GURL& url);
59 void DoSend(std::vector<char>* data); 57 void DoSend(std::vector<char>* data);
60 void DoClose(); 58 void DoClose();
61 59
62 // Runs on |message_loop_|; 60 // Runs on |message_loop_|;
63 void DoOnConnected(int max_amount_send_allowed); 61 void DoOnConnected(int max_amount_send_allowed);
64 void DoOnSentData(int amount_sent); 62 void DoOnSentData(int amount_sent);
65 void DoOnReceivedData(std::vector<char>* data); 63 void DoOnReceivedData(std::vector<char>* data);
66 void DoOnClose(); 64 void DoOnClose();
67 void DoOnError(int error_code, const char* error_msg);
68 65
69 int socket_id_; 66 int socket_id_;
70 MessageLoop* message_loop_; 67 MessageLoop* message_loop_;
71 WebKit::WebSocketStreamHandle* handle_; 68 WebKit::WebSocketStreamHandle* handle_;
72 webkit_glue::WebSocketStreamHandleDelegate* delegate_; 69 webkit_glue::WebSocketStreamHandleDelegate* delegate_;
73 70
74 scoped_refptr<net::SocketStreamJob> socket_; 71 scoped_refptr<net::SocketStreamJob> socket_;
75 // Number of pending tasks to handle net::SocketStream::Delegate methods. 72 // Number of pending tasks to handle net::SocketStream::Delegate methods.
76 base::subtle::Atomic32 num_pending_tasks_; 73 base::subtle::Atomic32 num_pending_tasks_;
77 74
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 void WebSocketStreamHandleBridgeImpl::OnClose(net::SocketStream* socket) { 147 void WebSocketStreamHandleBridgeImpl::OnClose(net::SocketStream* socket) {
151 base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, 1); 148 base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, 1);
152 // Release socket_ on IO thread. 149 // Release socket_ on IO thread.
153 socket_ = NULL; 150 socket_ = NULL;
154 socket_id_ = kNoSocketId; 151 socket_id_ = kNoSocketId;
155 message_loop_->PostTask( 152 message_loop_->PostTask(
156 FROM_HERE, 153 FROM_HERE,
157 base::Bind(&WebSocketStreamHandleBridgeImpl::DoOnClose, this)); 154 base::Bind(&WebSocketStreamHandleBridgeImpl::DoOnClose, this));
158 } 155 }
159 156
160 void WebSocketStreamHandleBridgeImpl::OnError(
161 const net::SocketStream* socket, int error_code) {
162 base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, 1);
163 message_loop_->PostTask(
164 FROM_HERE,
165 base::Bind(&WebSocketStreamHandleBridgeImpl::DoOnError, this,
166 error_code, net::ErrorToString(error_code)));
167 }
168
169 void WebSocketStreamHandleBridgeImpl::DoConnect(const GURL& url) { 157 void WebSocketStreamHandleBridgeImpl::DoConnect(const GURL& url) {
170 DCHECK(MessageLoop::current() == g_io_thread); 158 DCHECK(MessageLoop::current() == g_io_thread);
171 socket_ = net::SocketStreamJob::CreateSocketStreamJob( 159 socket_ = net::SocketStreamJob::CreateSocketStreamJob(
172 url, this, g_request_context->transport_security_state(), 160 url, this, g_request_context->transport_security_state(),
173 g_request_context->ssl_config_service()); 161 g_request_context->ssl_config_service());
174 socket_->set_context(g_request_context); 162 socket_->set_context(g_request_context);
175 socket_->Connect(); 163 socket_->Connect();
176 } 164 }
177 165
178 void WebSocketStreamHandleBridgeImpl::DoSend(std::vector<char>* data) { 166 void WebSocketStreamHandleBridgeImpl::DoSend(std::vector<char>* data) {
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 DCHECK_EQ(num_pending_tasks_, 0); 210 DCHECK_EQ(num_pending_tasks_, 0);
223 DCHECK(!socket_); 211 DCHECK(!socket_);
224 DCHECK_EQ(socket_id_, kNoSocketId); 212 DCHECK_EQ(socket_id_, kNoSocketId);
225 webkit_glue::WebSocketStreamHandleDelegate* delegate = delegate_; 213 webkit_glue::WebSocketStreamHandleDelegate* delegate = delegate_;
226 delegate_ = NULL; 214 delegate_ = NULL;
227 if (delegate) 215 if (delegate)
228 delegate->DidClose(handle_); 216 delegate->DidClose(handle_);
229 Release(); 217 Release();
230 } 218 }
231 219
232 void WebSocketStreamHandleBridgeImpl::DoOnError(
233 int error_code, const char* error_msg) {
234 DCHECK(MessageLoop::current() == message_loop_);
235 base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, -1);
236 if (delegate_)
237 delegate_->DidFail(handle_, error_code, ASCIIToUTF16(error_msg));
238 }
239
240 } // namespace 220 } // namespace
241 221
242 /* static */ 222 /* static */
243 void SimpleSocketStreamBridge::InitializeOnIOThread( 223 void SimpleSocketStreamBridge::InitializeOnIOThread(
244 net::URLRequestContext* request_context) { 224 net::URLRequestContext* request_context) {
245 g_io_thread = MessageLoop::current(); 225 g_io_thread = MessageLoop::current();
246 g_request_context = request_context; 226 g_request_context = request_context;
247 } 227 }
248 228
249 void SimpleSocketStreamBridge::Cleanup() { 229 void SimpleSocketStreamBridge::Cleanup() {
250 g_io_thread = NULL; 230 g_io_thread = NULL;
251 g_request_context = NULL; 231 g_request_context = NULL;
252 } 232 }
253 233
254 /* static */ 234 /* static */
255 webkit_glue::WebSocketStreamHandleBridge* SimpleSocketStreamBridge::Create( 235 webkit_glue::WebSocketStreamHandleBridge* SimpleSocketStreamBridge::Create(
256 WebKit::WebSocketStreamHandle* handle, 236 WebKit::WebSocketStreamHandle* handle,
257 webkit_glue::WebSocketStreamHandleDelegate* delegate) { 237 webkit_glue::WebSocketStreamHandleDelegate* delegate) {
258 return new WebSocketStreamHandleBridgeImpl(handle, delegate); 238 return new WebSocketStreamHandleBridgeImpl(handle, delegate);
259 } 239 }
OLDNEW
« no previous file with comments | « trunk/src/webkit/glue/websocketstreamhandle_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698