|
Lines 49-58
a/Source/WebCore/websockets/WorkerThreadableWebSocketChannel.cpp_sec1
|
| 49 |
|
49 |
|
| 50 |
namespace WebCore { |
50 |
namespace WebCore { |
| 51 |
|
51 |
|
| 52 |
WorkerThreadableWebSocketChannel::WorkerThreadableWebSocketChannel(WorkerContext* context, WebSocketChannelClient* client, const String& taskMode, const KURL& url, const String& protocol) |
52 |
WorkerThreadableWebSocketChannel::WorkerThreadableWebSocketChannel(WorkerContext* context, WebSocketChannelClient* client, const String& taskMode) |
| 53 |
: m_workerContext(context) |
53 |
: m_workerContext(context) |
| 54 |
, m_workerClientWrapper(ThreadableWebSocketChannelClientWrapper::create(client)) |
54 |
, m_workerClientWrapper(ThreadableWebSocketChannelClientWrapper::create(client)) |
| 55 |
, m_bridge(Bridge::create(m_workerClientWrapper, m_workerContext, taskMode, url, protocol)) |
55 |
, m_bridge(Bridge::create(m_workerClientWrapper, m_workerContext, taskMode)) |
| 56 |
{ |
56 |
{ |
| 57 |
} |
57 |
} |
| 58 |
|
58 |
|
|
Lines 68-77
bool WorkerThreadableWebSocketChannel::useHixie76Protocol()
a/Source/WebCore/websockets/WorkerThreadableWebSocketChannel.cpp_sec2
|
| 68 |
return m_workerClientWrapper->useHixie76Protocol(); |
68 |
return m_workerClientWrapper->useHixie76Protocol(); |
| 69 |
} |
69 |
} |
| 70 |
|
70 |
|
| 71 |
void WorkerThreadableWebSocketChannel::connect() |
71 |
void WorkerThreadableWebSocketChannel::connect(const KURL& url, const String& protocol) |
| 72 |
{ |
72 |
{ |
| 73 |
if (m_bridge) |
73 |
if (m_bridge) |
| 74 |
m_bridge->connect(); |
74 |
m_bridge->connect(url, protocol); |
| 75 |
} |
75 |
} |
| 76 |
|
76 |
|
| 77 |
bool WorkerThreadableWebSocketChannel::send(const String& message) |
77 |
bool WorkerThreadableWebSocketChannel::send(const String& message) |
|
Lines 120-129
void WorkerThreadableWebSocketChannel::resume()
a/Source/WebCore/websockets/WorkerThreadableWebSocketChannel.cpp_sec3
|
| 120 |
m_bridge->resume(); |
120 |
m_bridge->resume(); |
| 121 |
} |
121 |
} |
| 122 |
|
122 |
|
| 123 |
WorkerThreadableWebSocketChannel::Peer::Peer(PassRefPtr<ThreadableWebSocketChannelClientWrapper> clientWrapper, WorkerLoaderProxy& loaderProxy, ScriptExecutionContext* context, const String& taskMode, const KURL& url, const String& protocol) |
123 |
WorkerThreadableWebSocketChannel::Peer::Peer(PassRefPtr<ThreadableWebSocketChannelClientWrapper> clientWrapper, WorkerLoaderProxy& loaderProxy, ScriptExecutionContext* context, const String& taskMode) |
| 124 |
: m_workerClientWrapper(clientWrapper) |
124 |
: m_workerClientWrapper(clientWrapper) |
| 125 |
, m_loaderProxy(loaderProxy) |
125 |
, m_loaderProxy(loaderProxy) |
| 126 |
, m_mainWebSocketChannel(WebSocketChannel::create(context, this, url, protocol)) |
126 |
, m_mainWebSocketChannel(WebSocketChannel::create(context, this)) |
| 127 |
, m_taskMode(taskMode) |
127 |
, m_taskMode(taskMode) |
| 128 |
{ |
128 |
{ |
| 129 |
ASSERT(isMainThread()); |
129 |
ASSERT(isMainThread()); |
|
Lines 143-154
bool WorkerThreadableWebSocketChannel::Peer::useHixie76Protocol()
a/Source/WebCore/websockets/WorkerThreadableWebSocketChannel.cpp_sec4
|
| 143 |
return m_mainWebSocketChannel->useHixie76Protocol(); |
143 |
return m_mainWebSocketChannel->useHixie76Protocol(); |
| 144 |
} |
144 |
} |
| 145 |
|
145 |
|
| 146 |
void WorkerThreadableWebSocketChannel::Peer::connect() |
146 |
void WorkerThreadableWebSocketChannel::Peer::connect(const KURL& url, const String& protocol) |
| 147 |
{ |
147 |
{ |
| 148 |
ASSERT(isMainThread()); |
148 |
ASSERT(isMainThread()); |
| 149 |
if (!m_mainWebSocketChannel) |
149 |
if (!m_mainWebSocketChannel) |
| 150 |
return; |
150 |
return; |
| 151 |
m_mainWebSocketChannel->connect(); |
151 |
m_mainWebSocketChannel->connect(url, protocol); |
| 152 |
} |
152 |
} |
| 153 |
|
153 |
|
| 154 |
static void workerContextDidSend(ScriptExecutionContext* context, RefPtr<ThreadableWebSocketChannelClientWrapper> workerClientWrapper, bool sent) |
154 |
static void workerContextDidSend(ScriptExecutionContext* context, RefPtr<ThreadableWebSocketChannelClientWrapper> workerClientWrapper, bool sent) |
|
Lines 279-299
void WorkerThreadableWebSocketChannel::Bridge::setWebSocketChannel(ScriptExecuti
a/Source/WebCore/websockets/WorkerThreadableWebSocketChannel.cpp_sec5
|
| 279 |
workerClientWrapper->setSyncMethodDone(); |
279 |
workerClientWrapper->setSyncMethodDone(); |
| 280 |
} |
280 |
} |
| 281 |
|
281 |
|
| 282 |
void WorkerThreadableWebSocketChannel::Bridge::mainThreadCreateWebSocketChannel(ScriptExecutionContext* context, Bridge* thisPtr, PassRefPtr<ThreadableWebSocketChannelClientWrapper> prpClientWrapper, const String& taskMode, const KURL& url, const String& protocol) |
282 |
void WorkerThreadableWebSocketChannel::Bridge::mainThreadCreateWebSocketChannel(ScriptExecutionContext* context, Bridge* thisPtr, PassRefPtr<ThreadableWebSocketChannelClientWrapper> prpClientWrapper, const String& taskMode) |
| 283 |
{ |
283 |
{ |
| 284 |
ASSERT(isMainThread()); |
284 |
ASSERT(isMainThread()); |
| 285 |
ASSERT_UNUSED(context, context->isDocument()); |
285 |
ASSERT_UNUSED(context, context->isDocument()); |
| 286 |
|
286 |
|
| 287 |
RefPtr<ThreadableWebSocketChannelClientWrapper> clientWrapper = prpClientWrapper; |
287 |
RefPtr<ThreadableWebSocketChannelClientWrapper> clientWrapper = prpClientWrapper; |
| 288 |
|
288 |
|
| 289 |
Peer* peer = Peer::create(clientWrapper, thisPtr->m_loaderProxy, context, taskMode, url, protocol); |
289 |
Peer* peer = Peer::create(clientWrapper, thisPtr->m_loaderProxy, context, taskMode); |
| 290 |
thisPtr->m_loaderProxy.postTaskForModeToWorkerContext( |
290 |
thisPtr->m_loaderProxy.postTaskForModeToWorkerContext( |
| 291 |
createCallbackTask(&Bridge::setWebSocketChannel, |
291 |
createCallbackTask(&Bridge::setWebSocketChannel, |
| 292 |
AllowCrossThreadAccess(thisPtr), |
292 |
AllowCrossThreadAccess(thisPtr), |
| 293 |
AllowCrossThreadAccess(peer), clientWrapper, peer->useHixie76Protocol()), taskMode); |
293 |
AllowCrossThreadAccess(peer), clientWrapper, peer->useHixie76Protocol()), taskMode); |
| 294 |
} |
294 |
} |
| 295 |
|
295 |
|
| 296 |
WorkerThreadableWebSocketChannel::Bridge::Bridge(PassRefPtr<ThreadableWebSocketChannelClientWrapper> workerClientWrapper, PassRefPtr<WorkerContext> workerContext, const String& taskMode, const KURL& url, const String& protocol) |
296 |
WorkerThreadableWebSocketChannel::Bridge::Bridge(PassRefPtr<ThreadableWebSocketChannelClientWrapper> workerClientWrapper, PassRefPtr<WorkerContext> workerContext, const String& taskMode) |
| 297 |
: m_workerClientWrapper(workerClientWrapper) |
297 |
: m_workerClientWrapper(workerClientWrapper) |
| 298 |
, m_workerContext(workerContext) |
298 |
, m_workerContext(workerContext) |
| 299 |
, m_loaderProxy(m_workerContext->thread()->workerLoaderProxy()) |
299 |
, m_loaderProxy(m_workerContext->thread()->workerLoaderProxy()) |
|
Lines 304-310
WorkerThreadableWebSocketChannel::Bridge::Bridge(PassRefPtr<ThreadableWebSocketC
a/Source/WebCore/websockets/WorkerThreadableWebSocketChannel.cpp_sec6
|
| 304 |
setMethodNotCompleted(); |
304 |
setMethodNotCompleted(); |
| 305 |
m_loaderProxy.postTaskToLoader( |
305 |
m_loaderProxy.postTaskToLoader( |
| 306 |
createCallbackTask(&Bridge::mainThreadCreateWebSocketChannel, |
306 |
createCallbackTask(&Bridge::mainThreadCreateWebSocketChannel, |
| 307 |
AllowCrossThreadAccess(this), m_workerClientWrapper, m_taskMode, url, protocol)); |
307 |
AllowCrossThreadAccess(this), m_workerClientWrapper, m_taskMode)); |
| 308 |
waitForMethodCompletion(); |
308 |
waitForMethodCompletion(); |
| 309 |
ASSERT(m_peer); |
309 |
ASSERT(m_peer); |
| 310 |
} |
310 |
} |
|
Lines 314-333
WorkerThreadableWebSocketChannel::Bridge::~Bridge()
a/Source/WebCore/websockets/WorkerThreadableWebSocketChannel.cpp_sec7
|
| 314 |
disconnect(); |
314 |
disconnect(); |
| 315 |
} |
315 |
} |
| 316 |
|
316 |
|
| 317 |
void WorkerThreadableWebSocketChannel::mainThreadConnect(ScriptExecutionContext* context, Peer* peer) |
317 |
void WorkerThreadableWebSocketChannel::mainThreadConnect(ScriptExecutionContext* context, Peer* peer, const KURL& url, const String& protocol) |
| 318 |
{ |
318 |
{ |
| 319 |
ASSERT(isMainThread()); |
319 |
ASSERT(isMainThread()); |
| 320 |
ASSERT_UNUSED(context, context->isDocument()); |
320 |
ASSERT_UNUSED(context, context->isDocument()); |
| 321 |
ASSERT(peer); |
321 |
ASSERT(peer); |
| 322 |
|
322 |
|
| 323 |
peer->connect(); |
323 |
peer->connect(url, protocol); |
| 324 |
} |
324 |
} |
| 325 |
|
325 |
|
| 326 |
void WorkerThreadableWebSocketChannel::Bridge::connect() |
326 |
void WorkerThreadableWebSocketChannel::Bridge::connect(const KURL& url, const String& protocol) |
| 327 |
{ |
327 |
{ |
| 328 |
ASSERT(m_workerClientWrapper); |
328 |
ASSERT(m_workerClientWrapper); |
| 329 |
ASSERT(m_peer); |
329 |
ASSERT(m_peer); |
| 330 |
m_loaderProxy.postTaskToLoader(createCallbackTask(&WorkerThreadableWebSocketChannel::mainThreadConnect, AllowCrossThreadAccess(m_peer))); |
330 |
m_loaderProxy.postTaskToLoader(createCallbackTask(&WorkerThreadableWebSocketChannel::mainThreadConnect, AllowCrossThreadAccess(m_peer), url, protocol)); |
| 331 |
} |
331 |
} |
| 332 |
|
332 |
|
| 333 |
void WorkerThreadableWebSocketChannel::mainThreadSend(ScriptExecutionContext* context, Peer* peer, const String& message) |
333 |
void WorkerThreadableWebSocketChannel::mainThreadSend(ScriptExecutionContext* context, Peer* peer, const String& message) |