OLD | NEW |
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 "extensions/browser/api/sockets_tcp_server/tcp_server_socket_event_disp
atcher.h" | 5 #include "extensions/browser/api/sockets_tcp_server/tcp_server_socket_event_disp
atcher.h" |
6 | 6 |
7 #include "base/lazy_instance.h" | 7 #include "base/lazy_instance.h" |
8 #include "extensions/browser/api/socket/tcp_socket.h" | 8 #include "extensions/browser/api/socket/tcp_socket.h" |
9 #include "extensions/browser/event_router.h" | 9 #include "extensions/browser/event_router.h" |
10 #include "extensions/browser/extensions_browser_client.h" | 10 #include "extensions/browser/extensions_browser_client.h" |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
127 new ResumableTCPSocket(socket, params.extension_id, true); | 127 new ResumableTCPSocket(socket, params.extension_id, true); |
128 client_socket->set_paused(true); | 128 client_socket->set_paused(true); |
129 int client_socket_id = params.client_sockets->Add(client_socket); | 129 int client_socket_id = params.client_sockets->Add(client_socket); |
130 | 130 |
131 // Dispatch "onAccept" event. | 131 // Dispatch "onAccept" event. |
132 sockets_tcp_server::AcceptInfo accept_info; | 132 sockets_tcp_server::AcceptInfo accept_info; |
133 accept_info.socket_id = params.socket_id; | 133 accept_info.socket_id = params.socket_id; |
134 accept_info.client_socket_id = client_socket_id; | 134 accept_info.client_socket_id = client_socket_id; |
135 scoped_ptr<base::ListValue> args = | 135 scoped_ptr<base::ListValue> args = |
136 sockets_tcp_server::OnAccept::Create(accept_info); | 136 sockets_tcp_server::OnAccept::Create(accept_info); |
137 scoped_ptr<Event> event( | 137 scoped_ptr<Event> event(new Event(events::UNKNOWN, |
138 new Event(sockets_tcp_server::OnAccept::kEventName, args.Pass())); | 138 sockets_tcp_server::OnAccept::kEventName, |
| 139 args.Pass())); |
139 PostEvent(params, event.Pass()); | 140 PostEvent(params, event.Pass()); |
140 | 141 |
141 // Post a task to delay the "accept" until the socket is available, as | 142 // Post a task to delay the "accept" until the socket is available, as |
142 // calling StartAccept at this point would error with ERR_IO_PENDING. | 143 // calling StartAccept at this point would error with ERR_IO_PENDING. |
143 BrowserThread::PostTask( | 144 BrowserThread::PostTask( |
144 params.thread_id, | 145 params.thread_id, |
145 FROM_HERE, | 146 FROM_HERE, |
146 base::Bind(&TCPServerSocketEventDispatcher::StartAccept, params)); | 147 base::Bind(&TCPServerSocketEventDispatcher::StartAccept, params)); |
147 } else { | 148 } else { |
148 // Dispatch "onAcceptError" event but don't start another accept to avoid | 149 // Dispatch "onAcceptError" event but don't start another accept to avoid |
149 // potential infinite "accepts" if we have a persistent network error. | 150 // potential infinite "accepts" if we have a persistent network error. |
150 sockets_tcp_server::AcceptErrorInfo accept_error_info; | 151 sockets_tcp_server::AcceptErrorInfo accept_error_info; |
151 accept_error_info.socket_id = params.socket_id; | 152 accept_error_info.socket_id = params.socket_id; |
152 accept_error_info.result_code = result_code; | 153 accept_error_info.result_code = result_code; |
153 scoped_ptr<base::ListValue> args = | 154 scoped_ptr<base::ListValue> args = |
154 sockets_tcp_server::OnAcceptError::Create(accept_error_info); | 155 sockets_tcp_server::OnAcceptError::Create(accept_error_info); |
155 scoped_ptr<Event> event( | 156 scoped_ptr<Event> event( |
156 new Event(sockets_tcp_server::OnAcceptError::kEventName, args.Pass())); | 157 new Event(events::UNKNOWN, |
| 158 sockets_tcp_server::OnAcceptError::kEventName, args.Pass())); |
157 PostEvent(params, event.Pass()); | 159 PostEvent(params, event.Pass()); |
158 | 160 |
159 // Since we got an error, the socket is now "paused" until the application | 161 // Since we got an error, the socket is now "paused" until the application |
160 // "resumes" it. | 162 // "resumes" it. |
161 ResumableTCPServerSocket* socket = | 163 ResumableTCPServerSocket* socket = |
162 params.server_sockets->Get(params.extension_id, params.socket_id); | 164 params.server_sockets->Get(params.extension_id, params.socket_id); |
163 if (socket) { | 165 if (socket) { |
164 socket->set_paused(true); | 166 socket->set_paused(true); |
165 } | 167 } |
166 } | 168 } |
(...skipping 23 matching lines...) Expand all Loading... |
190 reinterpret_cast<content::BrowserContext*>(browser_context_id); | 192 reinterpret_cast<content::BrowserContext*>(browser_context_id); |
191 if (!extensions::ExtensionsBrowserClient::Get()->IsValidContext(context)) | 193 if (!extensions::ExtensionsBrowserClient::Get()->IsValidContext(context)) |
192 return; | 194 return; |
193 EventRouter* router = EventRouter::Get(context); | 195 EventRouter* router = EventRouter::Get(context); |
194 if (router) | 196 if (router) |
195 router->DispatchEventToExtension(extension_id, event.Pass()); | 197 router->DispatchEventToExtension(extension_id, event.Pass()); |
196 } | 198 } |
197 | 199 |
198 } // namespace core_api | 200 } // namespace core_api |
199 } // namespace extensions | 201 } // namespace extensions |
OLD | NEW |