| Index: trunk/Source/modules/websockets/WorkerThreadableWebSocketChannel.cpp
|
| ===================================================================
|
| --- trunk/Source/modules/websockets/WorkerThreadableWebSocketChannel.cpp (revision 176309)
|
| +++ trunk/Source/modules/websockets/WorkerThreadableWebSocketChannel.cpp (working copy)
|
| @@ -187,6 +187,20 @@
|
| m_bridge.clear();
|
| }
|
|
|
| +void WorkerThreadableWebSocketChannel::suspend()
|
| +{
|
| + m_workerClientWrapper->suspend();
|
| + if (m_bridge)
|
| + m_bridge->suspend();
|
| +}
|
| +
|
| +void WorkerThreadableWebSocketChannel::resume()
|
| +{
|
| + m_workerClientWrapper->resume();
|
| + if (m_bridge)
|
| + m_bridge->resume();
|
| +}
|
| +
|
| void WorkerThreadableWebSocketChannel::trace(Visitor* visitor)
|
| {
|
| visitor->trace(m_workerClientWrapper);
|
| @@ -305,6 +319,22 @@
|
| m_mainWebSocketChannel = nullptr;
|
| }
|
|
|
| +void WorkerThreadableWebSocketChannel::Peer::suspend()
|
| +{
|
| + ASSERT(isMainThread());
|
| + if (!m_mainWebSocketChannel)
|
| + return;
|
| + m_mainWebSocketChannel->suspend();
|
| +}
|
| +
|
| +void WorkerThreadableWebSocketChannel::Peer::resume()
|
| +{
|
| + ASSERT(isMainThread());
|
| + if (!m_mainWebSocketChannel)
|
| + return;
|
| + m_mainWebSocketChannel->resume();
|
| +}
|
| +
|
| static void workerGlobalScopeDidConnect(ExecutionContext* context, PassRefPtrWillBeRawPtr<ThreadableWebSocketChannelClientWrapper> workerClientWrapper, const String& subprotocol, const String& extensions)
|
| {
|
| ASSERT_UNUSED(context, context->isWorkerGlobalScope());
|
| @@ -495,6 +525,22 @@
|
| terminatePeer();
|
| }
|
|
|
| +void WorkerThreadableWebSocketChannel::Bridge::suspend()
|
| +{
|
| + if (hasTerminatedPeer())
|
| + return;
|
| +
|
| + m_loaderProxy.postTaskToLoader(CallClosureTask::create(bind(&Peer::suspend, m_peer)));
|
| +}
|
| +
|
| +void WorkerThreadableWebSocketChannel::Bridge::resume()
|
| +{
|
| + if (hasTerminatedPeer())
|
| + return;
|
| +
|
| + m_loaderProxy.postTaskToLoader(CallClosureTask::create(bind(&Peer::resume, m_peer)));
|
| +}
|
| +
|
| void WorkerThreadableWebSocketChannel::Bridge::clearClientWrapper()
|
| {
|
| m_workerClientWrapper->clearClient();
|
|
|