<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[201837] trunk/Source/WebCore</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/201837">201837</a></dd>
<dt>Author</dt> <dd>achristensen@apple.com</dd>
<dt>Date</dt> <dd>2016-06-08 15:27:46 -0700 (Wed, 08 Jun 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Modernize WebSocket code
https://bugs.webkit.org/show_bug.cgi?id=158539

Reviewed by Brady Eidson.

No new tests, no change in behavior.

* Modules/websockets/ThreadableWebSocketChannel.cpp:
(WebCore::ThreadableWebSocketChannel::create):
* Modules/websockets/ThreadableWebSocketChannel.h:
(WebCore::ThreadableWebSocketChannel::ThreadableWebSocketChannel):
* Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp:
(WebCore::ThreadableWebSocketChannelClientWrapper::ThreadableWebSocketChannelClientWrapper):
(WebCore::ThreadableWebSocketChannelClientWrapper::create):
(WebCore::ThreadableWebSocketChannelClientWrapper::processPendingTasks):
* Modules/websockets/ThreadableWebSocketChannelClientWrapper.h:
* Modules/websockets/WebSocket.cpp:
(WebCore::WebSocket::connect):
* Modules/websockets/WebSocketChannel.cpp:
(WebCore::WebSocketChannel::WebSocketChannel):
* Modules/websockets/WebSocketChannel.h:
(WebCore::WebSocketChannel::create):
* Modules/websockets/WorkerThreadableWebSocketChannel.cpp:
(WebCore::WorkerThreadableWebSocketChannel::WorkerThreadableWebSocketChannel):
(WebCore::WorkerThreadableWebSocketChannel::subprotocol):
(WebCore::WorkerThreadableWebSocketChannel::extensions):
(WebCore::WorkerThreadableWebSocketChannel::resume):
(WebCore::WorkerThreadableWebSocketChannel::Peer::Peer):
(WebCore::WorkerThreadableWebSocketChannel::Peer::send):
(WebCore::WorkerThreadableWebSocketChannel::Peer::bufferedAmount):
(WebCore::WorkerThreadableWebSocketChannel::Peer::didConnect):
(WebCore::WorkerThreadableWebSocketChannel::Peer::didReceiveMessage):
(WebCore::WorkerThreadableWebSocketChannel::Peer::didReceiveBinaryData):
(WebCore::WorkerThreadableWebSocketChannel::Peer::didUpdateBufferedAmount):
(WebCore::WorkerThreadableWebSocketChannel::Peer::didStartClosingHandshake):
(WebCore::WorkerThreadableWebSocketChannel::Peer::didClose):
(WebCore::WorkerThreadableWebSocketChannel::Peer::didReceiveMessageError):
(WebCore::WorkerThreadableWebSocketChannel::Bridge::Bridge):
(WebCore::WorkerThreadableWebSocketChannel::Bridge::~Bridge):
(WebCore::WorkerThreadableWebSocketChannel::Bridge::mainThreadInitialize):
(WebCore::WorkerThreadableWebSocketChannel::Bridge::initialize):
(WebCore::WorkerThreadableWebSocketChannel::Bridge::connect):
(WebCore::WorkerThreadableWebSocketChannel::Bridge::send):
(WebCore::WorkerThreadableWebSocketChannel::Bridge::bufferedAmount):
(WebCore::WorkerThreadableWebSocketChannel::Bridge::close):
(WebCore::WorkerThreadableWebSocketChannel::Bridge::setMethodNotCompleted):
(WebCore::WorkerThreadableWebSocketChannel::Bridge::waitForMethodCompletion):
* Modules/websockets/WorkerThreadableWebSocketChannel.h:
(WebCore::WorkerThreadableWebSocketChannel::create):
(WebCore::WorkerThreadableWebSocketChannel::Bridge::create):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreModuleswebsocketsThreadableWebSocketChannelcpp">trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.cpp</a></li>
<li><a href="#trunkSourceWebCoreModuleswebsocketsThreadableWebSocketChannelh">trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.h</a></li>
<li><a href="#trunkSourceWebCoreModuleswebsocketsThreadableWebSocketChannelClientWrappercpp">trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp</a></li>
<li><a href="#trunkSourceWebCoreModuleswebsocketsThreadableWebSocketChannelClientWrapperh">trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannelClientWrapper.h</a></li>
<li><a href="#trunkSourceWebCoreModuleswebsocketsWebSocketcpp">trunk/Source/WebCore/Modules/websockets/WebSocket.cpp</a></li>
<li><a href="#trunkSourceWebCoreModuleswebsocketsWebSocketChannelcpp">trunk/Source/WebCore/Modules/websockets/WebSocketChannel.cpp</a></li>
<li><a href="#trunkSourceWebCoreModuleswebsocketsWebSocketChannelh">trunk/Source/WebCore/Modules/websockets/WebSocketChannel.h</a></li>
<li><a href="#trunkSourceWebCoreModuleswebsocketsWorkerThreadableWebSocketChannelcpp">trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp</a></li>
<li><a href="#trunkSourceWebCoreModuleswebsocketsWorkerThreadableWebSocketChannelh">trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (201836 => 201837)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-06-08 22:22:49 UTC (rev 201836)
+++ trunk/Source/WebCore/ChangeLog        2016-06-08 22:27:46 UTC (rev 201837)
</span><span class="lines">@@ -1,3 +1,56 @@
</span><ins>+2016-06-08  Alex Christensen  &lt;achristensen@webkit.org&gt;
+
+        Modernize WebSocket code
+        https://bugs.webkit.org/show_bug.cgi?id=158539
+
+        Reviewed by Brady Eidson.
+
+        No new tests, no change in behavior.
+
+        * Modules/websockets/ThreadableWebSocketChannel.cpp:
+        (WebCore::ThreadableWebSocketChannel::create):
+        * Modules/websockets/ThreadableWebSocketChannel.h:
+        (WebCore::ThreadableWebSocketChannel::ThreadableWebSocketChannel):
+        * Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp:
+        (WebCore::ThreadableWebSocketChannelClientWrapper::ThreadableWebSocketChannelClientWrapper):
+        (WebCore::ThreadableWebSocketChannelClientWrapper::create):
+        (WebCore::ThreadableWebSocketChannelClientWrapper::processPendingTasks):
+        * Modules/websockets/ThreadableWebSocketChannelClientWrapper.h:
+        * Modules/websockets/WebSocket.cpp:
+        (WebCore::WebSocket::connect):
+        * Modules/websockets/WebSocketChannel.cpp:
+        (WebCore::WebSocketChannel::WebSocketChannel):
+        * Modules/websockets/WebSocketChannel.h:
+        (WebCore::WebSocketChannel::create):
+        * Modules/websockets/WorkerThreadableWebSocketChannel.cpp:
+        (WebCore::WorkerThreadableWebSocketChannel::WorkerThreadableWebSocketChannel):
+        (WebCore::WorkerThreadableWebSocketChannel::subprotocol):
+        (WebCore::WorkerThreadableWebSocketChannel::extensions):
+        (WebCore::WorkerThreadableWebSocketChannel::resume):
+        (WebCore::WorkerThreadableWebSocketChannel::Peer::Peer):
+        (WebCore::WorkerThreadableWebSocketChannel::Peer::send):
+        (WebCore::WorkerThreadableWebSocketChannel::Peer::bufferedAmount):
+        (WebCore::WorkerThreadableWebSocketChannel::Peer::didConnect):
+        (WebCore::WorkerThreadableWebSocketChannel::Peer::didReceiveMessage):
+        (WebCore::WorkerThreadableWebSocketChannel::Peer::didReceiveBinaryData):
+        (WebCore::WorkerThreadableWebSocketChannel::Peer::didUpdateBufferedAmount):
+        (WebCore::WorkerThreadableWebSocketChannel::Peer::didStartClosingHandshake):
+        (WebCore::WorkerThreadableWebSocketChannel::Peer::didClose):
+        (WebCore::WorkerThreadableWebSocketChannel::Peer::didReceiveMessageError):
+        (WebCore::WorkerThreadableWebSocketChannel::Bridge::Bridge):
+        (WebCore::WorkerThreadableWebSocketChannel::Bridge::~Bridge):
+        (WebCore::WorkerThreadableWebSocketChannel::Bridge::mainThreadInitialize):
+        (WebCore::WorkerThreadableWebSocketChannel::Bridge::initialize):
+        (WebCore::WorkerThreadableWebSocketChannel::Bridge::connect):
+        (WebCore::WorkerThreadableWebSocketChannel::Bridge::send):
+        (WebCore::WorkerThreadableWebSocketChannel::Bridge::bufferedAmount):
+        (WebCore::WorkerThreadableWebSocketChannel::Bridge::close):
+        (WebCore::WorkerThreadableWebSocketChannel::Bridge::setMethodNotCompleted):
+        (WebCore::WorkerThreadableWebSocketChannel::Bridge::waitForMethodCompletion):
+        * Modules/websockets/WorkerThreadableWebSocketChannel.h:
+        (WebCore::WorkerThreadableWebSocketChannel::create):
+        (WebCore::WorkerThreadableWebSocketChannel::Bridge::create):
+
</ins><span class="cx"> 2016-06-08  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         First parameter to MessagePort / DedicatedWorkerGlobalScope.postMessage() should be mandatory
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebsocketsThreadableWebSocketChannelcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.cpp (201836 => 201837)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.cpp        2016-06-08 22:22:49 UTC (rev 201836)
+++ trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.cpp        2016-06-08 22:27:46 UTC (rev 201837)
</span><span class="lines">@@ -43,25 +43,21 @@
</span><span class="cx"> #include &quot;WorkerRunLoop.h&quot;
</span><span class="cx"> #include &quot;WorkerThread.h&quot;
</span><span class="cx"> #include &quot;WorkerThreadableWebSocketChannel.h&quot;
</span><del>-#include &lt;wtf/PassRefPtr.h&gt;
</del><span class="cx"> #include &lt;wtf/text/StringBuilder.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> static const char webSocketChannelMode[] = &quot;webSocketChannelMode&quot;;
</span><span class="cx"> 
</span><del>-PassRefPtr&lt;ThreadableWebSocketChannel&gt; ThreadableWebSocketChannel::create(ScriptExecutionContext* context, WebSocketChannelClient* client)
</del><ins>+Ref&lt;ThreadableWebSocketChannel&gt; ThreadableWebSocketChannel::create(ScriptExecutionContext&amp; context, WebSocketChannelClient&amp; client)
</ins><span class="cx"> {
</span><del>-    ASSERT(context);
-    ASSERT(client);
-
-    if (is&lt;WorkerGlobalScope&gt;(*context)) {
-        WorkerGlobalScope&amp; workerGlobalScope = downcast&lt;WorkerGlobalScope&gt;(*context);
</del><ins>+    if (is&lt;WorkerGlobalScope&gt;(context)) {
+        WorkerGlobalScope&amp; workerGlobalScope = downcast&lt;WorkerGlobalScope&gt;(context);
</ins><span class="cx">         WorkerRunLoop&amp; runLoop = workerGlobalScope.thread().runLoop();
</span><span class="cx">         StringBuilder mode;
</span><span class="cx">         mode.appendLiteral(webSocketChannelMode);
</span><span class="cx">         mode.appendNumber(runLoop.createUniqueId());
</span><del>-        return WorkerThreadableWebSocketChannel::create(&amp;workerGlobalScope, client, mode.toString());
</del><ins>+        return WorkerThreadableWebSocketChannel::create(workerGlobalScope, client, mode.toString());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     return WebSocketChannel::create(downcast&lt;Document&gt;(context), client);
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebsocketsThreadableWebSocketChannelh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.h (201836 => 201837)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.h        2016-06-08 22:22:49 UTC (rev 201836)
+++ trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.h        2016-06-08 22:27:46 UTC (rev 201837)
</span><span class="lines">@@ -28,14 +28,12 @@
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#ifndef ThreadableWebSocketChannel_h
-#define ThreadableWebSocketChannel_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEB_SOCKETS)
</span><span class="cx"> 
</span><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><span class="cx"> #include &lt;wtf/Noncopyable.h&gt;
</span><del>-#include &lt;wtf/PassRefPtr.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><span class="cx"> class ArrayBuffer;
</span><span class="lines">@@ -53,7 +51,7 @@
</span><span class="cx">     WTF_MAKE_NONCOPYABLE(ThreadableWebSocketChannel);
</span><span class="cx"> public:
</span><span class="cx">     ThreadableWebSocketChannel() { }
</span><del>-    static PassRefPtr&lt;ThreadableWebSocketChannel&gt; create(ScriptExecutionContext*, WebSocketChannelClient*);
</del><ins>+    static Ref&lt;ThreadableWebSocketChannel&gt; create(ScriptExecutionContext&amp;, WebSocketChannelClient&amp;);
</ins><span class="cx"> 
</span><span class="cx">     enum SendResult {
</span><span class="cx">         SendSuccess,
</span><span class="lines">@@ -88,5 +86,3 @@
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(WEB_SOCKETS)
</span><del>-
-#endif // ThreadableWebSocketChannel_h
</del></span></pre></div>
<a id="trunkSourceWebCoreModuleswebsocketsThreadableWebSocketChannelClientWrappercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp (201836 => 201837)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp        2016-06-08 22:22:49 UTC (rev 201836)
+++ trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp        2016-06-08 22:27:46 UTC (rev 201837)
</span><span class="lines">@@ -34,15 +34,14 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;ScriptExecutionContext.h&quot;
</span><span class="cx"> #include &quot;WebSocketChannelClient.h&quot;
</span><del>-#include &lt;wtf/PassRefPtr.h&gt;
</del><span class="cx"> #include &lt;wtf/RefPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/text/StringView.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-ThreadableWebSocketChannelClientWrapper::ThreadableWebSocketChannelClientWrapper(ScriptExecutionContext* context, WebSocketChannelClient* client)
</del><ins>+ThreadableWebSocketChannelClientWrapper::ThreadableWebSocketChannelClientWrapper(ScriptExecutionContext&amp; context, WebSocketChannelClient&amp; client)
</ins><span class="cx">     : m_context(context)
</span><del>-    , m_client(client)
</del><ins>+    , m_client(&amp;client)
</ins><span class="cx">     , m_peer(nullptr)
</span><span class="cx">     , m_failedWebSocketChannelCreation(false)
</span><span class="cx">     , m_syncMethodDone(true)
</span><span class="lines">@@ -52,7 +51,7 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-Ref&lt;ThreadableWebSocketChannelClientWrapper&gt; ThreadableWebSocketChannelClientWrapper::create(ScriptExecutionContext* context, WebSocketChannelClient* client)
</del><ins>+Ref&lt;ThreadableWebSocketChannelClientWrapper&gt; ThreadableWebSocketChannelClientWrapper::create(ScriptExecutionContext&amp; context, WebSocketChannelClient&amp; client)
</ins><span class="cx"> {
</span><span class="cx">     return adoptRef(*new ThreadableWebSocketChannelClientWrapper(context, client));
</span><span class="cx"> }
</span><span class="lines">@@ -248,7 +247,7 @@
</span><span class="cx">     if (!m_syncMethodDone) {
</span><span class="cx">         // When a synchronous operation is in progress (i.e. the execution stack contains
</span><span class="cx">         // WorkerThreadableWebSocketChannel::waitForMethodCompletion()), we cannot invoke callbacks in this run loop.
</span><del>-        m_context-&gt;postTask([this, protectedThis = Ref&lt;ThreadableWebSocketChannelClientWrapper&gt;(*this)] (ScriptExecutionContext&amp; context) {
</del><ins>+        m_context.postTask([this, protectedThis = Ref&lt;ThreadableWebSocketChannelClientWrapper&gt;(*this)] (ScriptExecutionContext&amp; context) {
</ins><span class="cx">             ASSERT_UNUSED(context, context.isWorkerGlobalScope());
</span><span class="cx">             processPendingTasks();
</span><span class="cx">         });
</span><span class="lines">@@ -257,7 +256,7 @@
</span><span class="cx"> 
</span><span class="cx">     Vector&lt;std::unique_ptr&lt;ScriptExecutionContext::Task&gt;&gt; pendingTasks = WTFMove(m_pendingTasks);
</span><span class="cx">     for (auto&amp; task : pendingTasks)
</span><del>-        task-&gt;performTask(*m_context);
</del><ins>+        task-&gt;performTask(m_context);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebsocketsThreadableWebSocketChannelClientWrapperh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannelClientWrapper.h (201836 => 201837)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannelClientWrapper.h        2016-06-08 22:22:49 UTC (rev 201836)
+++ trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannelClientWrapper.h        2016-06-08 22:27:46 UTC (rev 201837)
</span><span class="lines">@@ -28,8 +28,7 @@
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#ifndef ThreadableWebSocketChannelClientWrapper_h
-#define ThreadableWebSocketChannelClientWrapper_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEB_SOCKETS)
</span><span class="cx"> 
</span><span class="lines">@@ -50,7 +49,7 @@
</span><span class="cx"> 
</span><span class="cx"> class ThreadableWebSocketChannelClientWrapper : public ThreadSafeRefCounted&lt;ThreadableWebSocketChannelClientWrapper&gt; {
</span><span class="cx"> public:
</span><del>-    static Ref&lt;ThreadableWebSocketChannelClientWrapper&gt; create(ScriptExecutionContext*, WebSocketChannelClient*);
</del><ins>+    static Ref&lt;ThreadableWebSocketChannelClientWrapper&gt; create(ScriptExecutionContext&amp;, WebSocketChannelClient&amp;);
</ins><span class="cx"> 
</span><span class="cx">     void clearSyncMethodDone();
</span><span class="cx">     void setSyncMethodDone();
</span><span class="lines">@@ -89,11 +88,11 @@
</span><span class="cx">     void resume();
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    ThreadableWebSocketChannelClientWrapper(ScriptExecutionContext*, WebSocketChannelClient*);
</del><ins>+    ThreadableWebSocketChannelClientWrapper(ScriptExecutionContext&amp;, WebSocketChannelClient&amp;);
</ins><span class="cx"> 
</span><span class="cx">     void processPendingTasks();
</span><span class="cx"> 
</span><del>-    ScriptExecutionContext* m_context;
</del><ins>+    ScriptExecutionContext&amp; m_context;
</ins><span class="cx">     WebSocketChannelClient* m_client;
</span><span class="cx">     WorkerThreadableWebSocketChannel::Peer* m_peer;
</span><span class="cx">     bool m_failedWebSocketChannelCreation;
</span><span class="lines">@@ -110,5 +109,3 @@
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(WEB_SOCKETS)
</span><del>-
-#endif // ThreadableWebSocketChannelClientWrapper_h
</del></span></pre></div>
<a id="trunkSourceWebCoreModuleswebsocketsWebSocketcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/websockets/WebSocket.cpp (201836 => 201837)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/websockets/WebSocket.cpp        2016-06-08 22:22:49 UTC (rev 201836)
+++ trunk/Source/WebCore/Modules/websockets/WebSocket.cpp        2016-06-08 22:27:46 UTC (rev 201837)
</span><span class="lines">@@ -250,7 +250,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    m_channel = ThreadableWebSocketChannel::create(scriptExecutionContext(), this);
</del><ins>+    m_channel = ThreadableWebSocketChannel::create(*scriptExecutionContext(), *this);
</ins><span class="cx"> 
</span><span class="cx">     // FIXME: There is a disagreement about restriction of subprotocols between WebSocket API and hybi-10 protocol
</span><span class="cx">     // draft. The former simply says &quot;only characters in the range U+0021 to U+007E are allowed,&quot; while the latter
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebsocketsWebSocketChannelcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/websockets/WebSocketChannel.cpp (201836 => 201837)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/websockets/WebSocketChannel.cpp        2016-06-08 22:22:49 UTC (rev 201836)
+++ trunk/Source/WebCore/Modules/websockets/WebSocketChannel.cpp        2016-06-08 22:27:46 UTC (rev 201837)
</span><span class="lines">@@ -64,9 +64,9 @@
</span><span class="cx"> 
</span><span class="cx"> const double TCPMaximumSegmentLifetime = 2 * 60.0;
</span><span class="cx"> 
</span><del>-WebSocketChannel::WebSocketChannel(Document* document, WebSocketChannelClient* client)
-    : m_document(document)
-    , m_client(client)
</del><ins>+WebSocketChannel::WebSocketChannel(Document&amp; document, WebSocketChannelClient&amp; client)
+    : m_document(&amp;document)
+    , m_client(&amp;client)
</ins><span class="cx">     , m_resumeTimer(*this, &amp;WebSocketChannel::resumeTimerFired)
</span><span class="cx">     , m_suspended(false)
</span><span class="cx">     , m_closing(false)
</span><span class="lines">@@ -81,9 +81,7 @@
</span><span class="cx">     , m_outgoingFrameQueueStatus(OutgoingFrameQueueOpen)
</span><span class="cx">     , m_blobLoaderStatus(BlobLoaderNotStarted)
</span><span class="cx"> {
</span><del>-    ASSERT(m_document);
-
-    if (Page* page = m_document-&gt;page())
</del><ins>+    if (Page* page = document.page())
</ins><span class="cx">         m_identifier = page-&gt;progress().createUniqueIdentifier();
</span><span class="cx"> 
</span><span class="cx">     LOG(Network, &quot;WebSocketChannel %p ctor, identifier %lu&quot;, this, m_identifier);
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebsocketsWebSocketChannelh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/websockets/WebSocketChannel.h (201836 => 201837)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/websockets/WebSocketChannel.h        2016-06-08 22:22:49 UTC (rev 201836)
+++ trunk/Source/WebCore/Modules/websockets/WebSocketChannel.h        2016-06-08 22:27:46 UTC (rev 201837)
</span><span class="lines">@@ -59,7 +59,7 @@
</span><span class="cx"> {
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><del>-    static Ref&lt;WebSocketChannel&gt; create(Document* document, WebSocketChannelClient* client) { return adoptRef(*new WebSocketChannel(document, client)); }
</del><ins>+    static Ref&lt;WebSocketChannel&gt; create(Document&amp; document, WebSocketChannelClient&amp; client) { return adoptRef(*new WebSocketChannel(document, client)); }
</ins><span class="cx">     virtual ~WebSocketChannel();
</span><span class="cx"> 
</span><span class="cx">     bool send(const char* data, int length);
</span><span class="lines">@@ -122,7 +122,7 @@
</span><span class="cx">     void derefThreadableWebSocketChannel() override { deref(); }
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    WebSocketChannel(Document*, WebSocketChannelClient*);
</del><ins>+    WebSocketChannel(Document&amp;, WebSocketChannelClient&amp;);
</ins><span class="cx"> 
</span><span class="cx">     bool appendToBuffer(const char* data, size_t len);
</span><span class="cx">     void skipBuffer(size_t len);
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebsocketsWorkerThreadableWebSocketChannelcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp (201836 => 201837)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp        2016-06-08 22:22:49 UTC (rev 201836)
+++ trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp        2016-06-08 22:27:46 UTC (rev 201837)
</span><span class="lines">@@ -46,15 +46,14 @@
</span><span class="cx"> #include &quot;WorkerThread.h&quot;
</span><span class="cx"> #include &lt;runtime/ArrayBuffer.h&gt;
</span><span class="cx"> #include &lt;wtf/MainThread.h&gt;
</span><del>-#include &lt;wtf/PassRefPtr.h&gt;
</del><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-WorkerThreadableWebSocketChannel::WorkerThreadableWebSocketChannel(WorkerGlobalScope* context, WebSocketChannelClient* client, const String&amp; taskMode)
</del><ins>+WorkerThreadableWebSocketChannel::WorkerThreadableWebSocketChannel(WorkerGlobalScope&amp; context, WebSocketChannelClient&amp; client, const String&amp; taskMode)
</ins><span class="cx">     : m_workerGlobalScope(context)
</span><span class="cx">     , m_workerClientWrapper(ThreadableWebSocketChannelClientWrapper::create(context, client))
</span><del>-    , m_bridge(Bridge::create(m_workerClientWrapper, m_workerGlobalScope, taskMode))
</del><ins>+    , m_bridge(Bridge::create(m_workerClientWrapper.copyRef(), m_workerGlobalScope.copyRef(), taskMode))
</ins><span class="cx"> {
</span><span class="cx">     m_bridge-&gt;initialize();
</span><span class="cx"> }
</span><span class="lines">@@ -73,13 +72,11 @@
</span><span class="cx"> 
</span><span class="cx"> String WorkerThreadableWebSocketChannel::subprotocol()
</span><span class="cx"> {
</span><del>-    ASSERT(m_workerClientWrapper);
</del><span class="cx">     return m_workerClientWrapper-&gt;subprotocol();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String WorkerThreadableWebSocketChannel::extensions()
</span><span class="cx"> {
</span><del>-    ASSERT(m_workerClientWrapper);
</del><span class="cx">     return m_workerClientWrapper-&gt;extensions();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -143,10 +140,10 @@
</span><span class="cx">         m_bridge-&gt;resume();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-WorkerThreadableWebSocketChannel::Peer::Peer(RefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt;&amp;&amp; clientWrapper, WorkerLoaderProxy&amp; loaderProxy, ScriptExecutionContext* context, const String&amp; taskMode)
</del><ins>+WorkerThreadableWebSocketChannel::Peer::Peer(Ref&lt;ThreadableWebSocketChannelClientWrapper&gt;&amp;&amp; clientWrapper, WorkerLoaderProxy&amp; loaderProxy, ScriptExecutionContext&amp; context, const String&amp; taskMode)
</ins><span class="cx">     : m_workerClientWrapper(WTFMove(clientWrapper))
</span><span class="cx">     , m_loaderProxy(loaderProxy)
</span><del>-    , m_mainWebSocketChannel(WebSocketChannel::create(downcast&lt;Document&gt;(context), this))
</del><ins>+    , m_mainWebSocketChannel(WebSocketChannel::create(downcast&lt;Document&gt;(context), *this))
</ins><span class="cx">     , m_taskMode(taskMode)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(isMainThread());
</span><span class="lines">@@ -170,12 +167,11 @@
</span><span class="cx"> void WorkerThreadableWebSocketChannel::Peer::send(const String&amp; message)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(isMainThread());
</span><del>-    if (!m_mainWebSocketChannel || !m_workerClientWrapper)
</del><ins>+    if (!m_mainWebSocketChannel)
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     ThreadableWebSocketChannel::SendResult sendRequestResult = m_mainWebSocketChannel-&gt;send(message);
</span><del>-    RefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt; workerClientWrapper = m_workerClientWrapper;
-    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper = WTFMove(workerClientWrapper), sendRequestResult] (ScriptExecutionContext&amp;) {
</del><ins>+    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper = m_workerClientWrapper.copyRef(), sendRequestResult](ScriptExecutionContext&amp;) mutable {
</ins><span class="cx">         workerClientWrapper-&gt;setSendRequestResult(sendRequestResult);
</span><span class="cx">     }, m_taskMode);
</span><span class="cx"> }
</span><span class="lines">@@ -183,12 +179,11 @@
</span><span class="cx"> void WorkerThreadableWebSocketChannel::Peer::send(const ArrayBuffer&amp; binaryData)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(isMainThread());
</span><del>-    if (!m_mainWebSocketChannel || !m_workerClientWrapper)
</del><ins>+    if (!m_mainWebSocketChannel)
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     ThreadableWebSocketChannel::SendResult sendRequestResult = m_mainWebSocketChannel-&gt;send(binaryData, 0, binaryData.byteLength());
</span><del>-    RefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt; workerClientWrapper = m_workerClientWrapper;
-    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper = WTFMove(workerClientWrapper), sendRequestResult] (ScriptExecutionContext&amp;) {
</del><ins>+    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper = m_workerClientWrapper.copyRef(), sendRequestResult](ScriptExecutionContext&amp;) mutable {
</ins><span class="cx">         workerClientWrapper-&gt;setSendRequestResult(sendRequestResult);
</span><span class="cx">     }, m_taskMode);
</span><span class="cx"> }
</span><span class="lines">@@ -196,12 +191,11 @@
</span><span class="cx"> void WorkerThreadableWebSocketChannel::Peer::send(Blob&amp; binaryData)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(isMainThread());
</span><del>-    if (!m_mainWebSocketChannel || !m_workerClientWrapper)
</del><ins>+    if (!m_mainWebSocketChannel)
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     ThreadableWebSocketChannel::SendResult sendRequestResult = m_mainWebSocketChannel-&gt;send(binaryData);
</span><del>-    RefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt; workerClientWrapper = m_workerClientWrapper;
-    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper = WTFMove(workerClientWrapper), sendRequestResult] (ScriptExecutionContext&amp;) {
</del><ins>+    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper = m_workerClientWrapper.copyRef(), sendRequestResult](ScriptExecutionContext&amp;) mutable {
</ins><span class="cx">         workerClientWrapper-&gt;setSendRequestResult(sendRequestResult);
</span><span class="cx">     }, m_taskMode);
</span><span class="cx"> }
</span><span class="lines">@@ -209,12 +203,11 @@
</span><span class="cx"> void WorkerThreadableWebSocketChannel::Peer::bufferedAmount()
</span><span class="cx"> {
</span><span class="cx">     ASSERT(isMainThread());
</span><del>-    if (!m_mainWebSocketChannel || !m_workerClientWrapper)
</del><ins>+    if (!m_mainWebSocketChannel)
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    RefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt; workerClientWrapper = m_workerClientWrapper;
</del><span class="cx">     unsigned long bufferedAmount = m_mainWebSocketChannel-&gt;bufferedAmount();
</span><del>-    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper = WTFMove(workerClientWrapper), bufferedAmount] (ScriptExecutionContext&amp; context) {
</del><ins>+    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper = m_workerClientWrapper.copyRef(), bufferedAmount](ScriptExecutionContext&amp; context) mutable {
</ins><span class="cx">         ASSERT_UNUSED(context, context.isWorkerGlobalScope());
</span><span class="cx">         workerClientWrapper-&gt;setBufferedAmount(bufferedAmount);
</span><span class="cx">     }, m_taskMode);
</span><span class="lines">@@ -265,10 +258,9 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(isMainThread());
</span><span class="cx"> 
</span><del>-    RefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt; workerClientWrapper = m_workerClientWrapper;
</del><span class="cx">     String subprotocol = m_mainWebSocketChannel-&gt;subprotocol();
</span><span class="cx">     String extensions = m_mainWebSocketChannel-&gt;extensions();
</span><del>-    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper = WTFMove(workerClientWrapper), subprotocol = subprotocol.isolatedCopy(), extensions = extensions.isolatedCopy()] (ScriptExecutionContext&amp; context) {
</del><ins>+    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper = m_workerClientWrapper.copyRef(), subprotocol = subprotocol.isolatedCopy(), extensions = extensions.isolatedCopy()](ScriptExecutionContext&amp; context) mutable {
</ins><span class="cx">         ASSERT_UNUSED(context, context.isWorkerGlobalScope());
</span><span class="cx">         workerClientWrapper-&gt;setSubprotocol(subprotocol);
</span><span class="cx">         workerClientWrapper-&gt;setExtensions(extensions);
</span><span class="lines">@@ -280,8 +272,7 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(isMainThread());
</span><span class="cx"> 
</span><del>-    RefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt; workerClientWrapper = m_workerClientWrapper;
-    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper = WTFMove(workerClientWrapper), message = message.isolatedCopy()] (ScriptExecutionContext&amp; context) {
</del><ins>+    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper = m_workerClientWrapper.copyRef(), message = message.isolatedCopy()](ScriptExecutionContext&amp; context) mutable {
</ins><span class="cx">         ASSERT_UNUSED(context, context.isWorkerGlobalScope());
</span><span class="cx">         workerClientWrapper-&gt;didReceiveMessage(message);
</span><span class="cx">     }, m_taskMode);
</span><span class="lines">@@ -291,8 +282,7 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(isMainThread());
</span><span class="cx"> 
</span><del>-    RefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt; workerClientWrapper = m_workerClientWrapper;
-    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper = WTFMove(workerClientWrapper), binaryData = WTFMove(binaryData)] (ScriptExecutionContext&amp; context) mutable {
</del><ins>+    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper = m_workerClientWrapper.copyRef(), binaryData = WTFMove(binaryData)](ScriptExecutionContext&amp; context) mutable {
</ins><span class="cx">         ASSERT_UNUSED(context, context.isWorkerGlobalScope());
</span><span class="cx">         workerClientWrapper-&gt;didReceiveBinaryData(WTFMove(binaryData));
</span><span class="cx">     }, m_taskMode);
</span><span class="lines">@@ -302,8 +292,7 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(isMainThread());
</span><span class="cx"> 
</span><del>-    RefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt; workerClientWrapper = m_workerClientWrapper;
-    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper = WTFMove(workerClientWrapper), bufferedAmount] (ScriptExecutionContext&amp; context) {
</del><ins>+    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper = m_workerClientWrapper.copyRef(), bufferedAmount](ScriptExecutionContext&amp; context) mutable {
</ins><span class="cx">         ASSERT_UNUSED(context, context.isWorkerGlobalScope());
</span><span class="cx">         workerClientWrapper-&gt;didUpdateBufferedAmount(bufferedAmount);
</span><span class="cx">     }, m_taskMode);
</span><span class="lines">@@ -313,8 +302,7 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(isMainThread());
</span><span class="cx"> 
</span><del>-    RefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt; workerClientWrapper = m_workerClientWrapper;
-    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper = WTFMove(workerClientWrapper)] (ScriptExecutionContext&amp; context) {
</del><ins>+    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper = m_workerClientWrapper.copyRef()](ScriptExecutionContext&amp; context) mutable {
</ins><span class="cx">         ASSERT_UNUSED(context, context.isWorkerGlobalScope());
</span><span class="cx">         workerClientWrapper-&gt;didStartClosingHandshake();
</span><span class="cx">     }, m_taskMode);
</span><span class="lines">@@ -325,8 +313,7 @@
</span><span class="cx">     ASSERT(isMainThread());
</span><span class="cx">     m_mainWebSocketChannel = nullptr;
</span><span class="cx"> 
</span><del>-    RefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt; workerClientWrapper = m_workerClientWrapper;
-    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper = WTFMove(workerClientWrapper), unhandledBufferedAmount, closingHandshakeCompletion, code, reason = reason.isolatedCopy()] (ScriptExecutionContext&amp; context) {
</del><ins>+    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper = m_workerClientWrapper.copyRef(), unhandledBufferedAmount, closingHandshakeCompletion, code, reason = reason.isolatedCopy()](ScriptExecutionContext&amp; context) mutable {
</ins><span class="cx">             ASSERT_UNUSED(context, context.isWorkerGlobalScope());
</span><span class="cx">             workerClientWrapper-&gt;didClose(unhandledBufferedAmount, closingHandshakeCompletion, code, reason);
</span><span class="cx">         }, m_taskMode);
</span><span class="lines">@@ -336,21 +323,19 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT(isMainThread());
</span><span class="cx"> 
</span><del>-    RefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt; workerClientWrapper = m_workerClientWrapper;
-    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper = WTFMove(workerClientWrapper)] (ScriptExecutionContext&amp; context) {
</del><ins>+    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper = m_workerClientWrapper.copyRef()](ScriptExecutionContext&amp; context) mutable {
</ins><span class="cx">         ASSERT_UNUSED(context, context.isWorkerGlobalScope());
</span><span class="cx">         workerClientWrapper-&gt;didReceiveMessageError();
</span><span class="cx">     }, m_taskMode);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-WorkerThreadableWebSocketChannel::Bridge::Bridge(PassRefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt; workerClientWrapper, PassRefPtr&lt;WorkerGlobalScope&gt; workerGlobalScope, const String&amp; taskMode)
-    : m_workerClientWrapper(workerClientWrapper)
-    , m_workerGlobalScope(workerGlobalScope)
</del><ins>+WorkerThreadableWebSocketChannel::Bridge::Bridge(Ref&lt;ThreadableWebSocketChannelClientWrapper&gt;&amp;&amp; workerClientWrapper, Ref&lt;WorkerGlobalScope&gt;&amp;&amp; workerGlobalScope, const String&amp; taskMode)
+    : m_workerClientWrapper(WTFMove(workerClientWrapper))
+    , m_workerGlobalScope(WTFMove(workerGlobalScope))
</ins><span class="cx">     , m_loaderProxy(m_workerGlobalScope-&gt;thread().workerLoaderProxy())
</span><span class="cx">     , m_taskMode(taskMode)
</span><span class="cx">     , m_peer(nullptr)
</span><span class="cx"> {
</span><del>-    ASSERT(m_workerClientWrapper.get());
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WorkerThreadableWebSocketChannel::Bridge::~Bridge()
</span><span class="lines">@@ -358,21 +343,18 @@
</span><span class="cx">     disconnect();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WorkerThreadableWebSocketChannel::Bridge::mainThreadInitialize(ScriptExecutionContext&amp; context, WorkerLoaderProxy* loaderProxy, RefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt;&amp;&amp; passedClientWrapper, const String&amp; taskMode)
</del><ins>+void WorkerThreadableWebSocketChannel::Bridge::mainThreadInitialize(ScriptExecutionContext&amp; context, WorkerLoaderProxy&amp; loaderProxy, Ref&lt;ThreadableWebSocketChannelClientWrapper&gt;&amp;&amp; clientWrapper, const String&amp; taskMode)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(isMainThread());
</span><del>-    ASSERT_UNUSED(context, context.isDocument());
</del><ins>+    ASSERT(context.isDocument());
</ins><span class="cx"> 
</span><del>-    RefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt; clientWrapper = WTFMove(passedClientWrapper);
-
-    auto peer = std::make_unique&lt;Peer&gt;(clientWrapper.copyRef(), *loaderProxy, &amp;context, taskMode);
-    bool sent = loaderProxy-&gt;postTaskForModeToWorkerGlobalScope({
</del><ins>+    bool sent = loaderProxy.postTaskForModeToWorkerGlobalScope({
</ins><span class="cx">         ScriptExecutionContext::Task::CleanupTask,
</span><del>-        [clientWrapper, loaderProxy, peer = WTFMove(peer)] (ScriptExecutionContext&amp; context) mutable {
</del><ins>+        [clientWrapper = clientWrapper.copyRef(), &amp;loaderProxy, peer = std::make_unique&lt;Peer&gt;(clientWrapper.copyRef(), loaderProxy, context, taskMode)](ScriptExecutionContext&amp; context) mutable {
</ins><span class="cx">             ASSERT_UNUSED(context, context.isWorkerGlobalScope());
</span><span class="cx">             if (clientWrapper-&gt;failedWebSocketChannelCreation()) {
</span><span class="cx">                 // If Bridge::initialize() quitted earlier, we need to kick mainThreadDestroy() to delete the peer.
</span><del>-                loaderProxy-&gt;postTaskToLoader([peer = WTFMove(peer)] (ScriptExecutionContext&amp; context) {
</del><ins>+                loaderProxy.postTaskToLoader([peer = WTFMove(peer)](ScriptExecutionContext&amp; context) {
</ins><span class="cx">                     ASSERT(isMainThread());
</span><span class="cx">                     ASSERT_UNUSED(context, context.isDocument());
</span><span class="cx">                 });
</span><span class="lines">@@ -391,8 +373,7 @@
</span><span class="cx">     setMethodNotCompleted();
</span><span class="cx">     Ref&lt;Bridge&gt; protectedThis(*this);
</span><span class="cx"> 
</span><del>-    RefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt; workerClientWrapper = m_workerClientWrapper;
-    m_loaderProxy.postTaskToLoader([loaderProxy = &amp;m_loaderProxy, workerClientWrapper = WTFMove(workerClientWrapper), taskMode = m_taskMode.isolatedCopy()] (ScriptExecutionContext&amp; context) mutable {
</del><ins>+    m_loaderProxy.postTaskToLoader([&amp;loaderProxy = m_loaderProxy, workerClientWrapper = m_workerClientWrapper.copyRef(), taskMode = m_taskMode.isolatedCopy()](ScriptExecutionContext&amp; context) mutable {
</ins><span class="cx">         mainThreadInitialize(context, loaderProxy, WTFMove(workerClientWrapper), taskMode);
</span><span class="cx">     });
</span><span class="cx">     waitForMethodCompletion();
</span><span class="lines">@@ -405,11 +386,10 @@
</span><span class="cx"> 
</span><span class="cx"> void WorkerThreadableWebSocketChannel::Bridge::connect(const URL&amp; url, const String&amp; protocol)
</span><span class="cx"> {
</span><del>-    ASSERT(m_workerClientWrapper);
</del><span class="cx">     if (!m_peer)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    m_loaderProxy.postTaskToLoader([peer = m_peer, url = url.isolatedCopy(), protocol = protocol.isolatedCopy()] (ScriptExecutionContext&amp; context) {
</del><ins>+    m_loaderProxy.postTaskToLoader([peer = m_peer, url = url.isolatedCopy(), protocol = protocol.isolatedCopy()](ScriptExecutionContext&amp; context) {
</ins><span class="cx">         ASSERT(isMainThread());
</span><span class="cx">         ASSERT_UNUSED(context, context.isDocument());
</span><span class="cx">         ASSERT(peer);
</span><span class="lines">@@ -420,11 +400,11 @@
</span><span class="cx"> 
</span><span class="cx"> ThreadableWebSocketChannel::SendResult WorkerThreadableWebSocketChannel::Bridge::send(const String&amp; message)
</span><span class="cx"> {
</span><del>-    if (!m_workerClientWrapper || !m_peer)
</del><ins>+    if (!m_peer)
</ins><span class="cx">         return ThreadableWebSocketChannel::SendFail;
</span><span class="cx">     setMethodNotCompleted();
</span><span class="cx"> 
</span><del>-    m_loaderProxy.postTaskToLoader([peer = m_peer, message = message.isolatedCopy()] (ScriptExecutionContext&amp; context) {
</del><ins>+    m_loaderProxy.postTaskToLoader([peer = m_peer, message = message.isolatedCopy()](ScriptExecutionContext&amp; context) {
</ins><span class="cx">         ASSERT(isMainThread());
</span><span class="cx">         ASSERT_UNUSED(context, context.isDocument());
</span><span class="cx">         ASSERT(peer);
</span><span class="lines">@@ -434,15 +414,12 @@
</span><span class="cx"> 
</span><span class="cx">     Ref&lt;Bridge&gt; protectedThis(*this);
</span><span class="cx">     waitForMethodCompletion();
</span><del>-    ThreadableWebSocketChannelClientWrapper* clientWrapper = m_workerClientWrapper.get();
-    if (!clientWrapper)
-        return ThreadableWebSocketChannel::SendFail;
-    return clientWrapper-&gt;sendRequestResult();
</del><ins>+    return m_workerClientWrapper-&gt;sendRequestResult();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> ThreadableWebSocketChannel::SendResult WorkerThreadableWebSocketChannel::Bridge::send(const ArrayBuffer&amp; binaryData, unsigned byteOffset, unsigned byteLength)
</span><span class="cx"> {
</span><del>-    if (!m_workerClientWrapper || !m_peer)
</del><ins>+    if (!m_peer)
</ins><span class="cx">         return ThreadableWebSocketChannel::SendFail;
</span><span class="cx"> 
</span><span class="cx">     // ArrayBuffer isn't thread-safe, hence the content of ArrayBuffer is copied into Vector&lt;char&gt;.
</span><span class="lines">@@ -451,7 +428,7 @@
</span><span class="cx">         memcpy(data.data(), static_cast&lt;const char*&gt;(binaryData.data()) + byteOffset, byteLength);
</span><span class="cx">     setMethodNotCompleted();
</span><span class="cx"> 
</span><del>-    m_loaderProxy.postTaskToLoader([peer = m_peer, data = WTFMove(data)] (ScriptExecutionContext&amp; context) {
</del><ins>+    m_loaderProxy.postTaskToLoader([peer = m_peer, data = WTFMove(data)](ScriptExecutionContext&amp; context) {
</ins><span class="cx">         ASSERT(isMainThread());
</span><span class="cx">         ASSERT_UNUSED(context, context.isDocument());
</span><span class="cx">         ASSERT(peer);
</span><span class="lines">@@ -462,19 +439,16 @@
</span><span class="cx"> 
</span><span class="cx">     Ref&lt;Bridge&gt; protectedThis(*this);
</span><span class="cx">     waitForMethodCompletion();
</span><del>-    ThreadableWebSocketChannelClientWrapper* clientWrapper = m_workerClientWrapper.get();
-    if (!clientWrapper)
-        return ThreadableWebSocketChannel::SendFail;
-    return clientWrapper-&gt;sendRequestResult();
</del><ins>+    return m_workerClientWrapper-&gt;sendRequestResult();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> ThreadableWebSocketChannel::SendResult WorkerThreadableWebSocketChannel::Bridge::send(Blob&amp; binaryData)
</span><span class="cx"> {
</span><del>-    if (!m_workerClientWrapper || !m_peer)
</del><ins>+    if (!m_peer)
</ins><span class="cx">         return ThreadableWebSocketChannel::SendFail;
</span><span class="cx">     setMethodNotCompleted();
</span><span class="cx"> 
</span><del>-    m_loaderProxy.postTaskToLoader([peer = m_peer, url = binaryData.url().isolatedCopy(), type = binaryData.type().isolatedCopy(), size = binaryData.size()] (ScriptExecutionContext&amp; context) {
</del><ins>+    m_loaderProxy.postTaskToLoader([peer = m_peer, url = binaryData.url().isolatedCopy(), type = binaryData.type().isolatedCopy(), size = binaryData.size()](ScriptExecutionContext&amp; context) {
</ins><span class="cx">         ASSERT(isMainThread());
</span><span class="cx">         ASSERT_UNUSED(context, context.isDocument());
</span><span class="cx">         ASSERT(peer);
</span><span class="lines">@@ -484,19 +458,16 @@
</span><span class="cx"> 
</span><span class="cx">     Ref&lt;Bridge&gt; protectedThis(*this);
</span><span class="cx">     waitForMethodCompletion();
</span><del>-    ThreadableWebSocketChannelClientWrapper* clientWrapper = m_workerClientWrapper.get();
-    if (!clientWrapper)
-        return ThreadableWebSocketChannel::SendFail;
-    return clientWrapper-&gt;sendRequestResult();
</del><ins>+    return m_workerClientWrapper-&gt;sendRequestResult();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> unsigned long WorkerThreadableWebSocketChannel::Bridge::bufferedAmount()
</span><span class="cx"> {
</span><del>-    if (!m_workerClientWrapper || !m_peer)
</del><ins>+    if (!m_peer)
</ins><span class="cx">         return 0;
</span><span class="cx">     setMethodNotCompleted();
</span><span class="cx"> 
</span><del>-    m_loaderProxy.postTaskToLoader([peer = m_peer] (ScriptExecutionContext&amp; context) {
</del><ins>+    m_loaderProxy.postTaskToLoader([peer = m_peer](ScriptExecutionContext&amp; context) {
</ins><span class="cx">         ASSERT(isMainThread());
</span><span class="cx">         ASSERT_UNUSED(context, context.isDocument());
</span><span class="cx">         ASSERT(peer);
</span><span class="lines">@@ -506,10 +477,7 @@
</span><span class="cx"> 
</span><span class="cx">     Ref&lt;Bridge&gt; protectedThis(*this);
</span><span class="cx">     waitForMethodCompletion();
</span><del>-    ThreadableWebSocketChannelClientWrapper* clientWrapper = m_workerClientWrapper.get();
-    if (clientWrapper)
-        return clientWrapper-&gt;bufferedAmount();
-    return 0;
</del><ins>+    return m_workerClientWrapper-&gt;bufferedAmount();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WorkerThreadableWebSocketChannel::Bridge::close(int code, const String&amp; reason)
</span><span class="lines">@@ -517,7 +485,7 @@
</span><span class="cx">     if (!m_peer)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    m_loaderProxy.postTaskToLoader([peer = m_peer, code, reason = reason.isolatedCopy()] (ScriptExecutionContext&amp; context) {
</del><ins>+    m_loaderProxy.postTaskToLoader([peer = m_peer, code, reason = reason.isolatedCopy()](ScriptExecutionContext&amp; context) {
</ins><span class="cx">         ASSERT(isMainThread());
</span><span class="cx">         ASSERT_UNUSED(context, context.isDocument());
</span><span class="cx">         ASSERT(peer);
</span><span class="lines">@@ -531,7 +499,7 @@
</span><span class="cx">     if (!m_peer)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    m_loaderProxy.postTaskToLoader([peer = m_peer, reason = reason.isolatedCopy()] (ScriptExecutionContext&amp; context) {
</del><ins>+    m_loaderProxy.postTaskToLoader([peer = m_peer, reason = reason.isolatedCopy()](ScriptExecutionContext&amp; context) {
</ins><span class="cx">         ASSERT(isMainThread());
</span><span class="cx">         ASSERT_UNUSED(context, context.isDocument());
</span><span class="cx">         ASSERT(peer);
</span><span class="lines">@@ -544,7 +512,7 @@
</span><span class="cx"> {
</span><span class="cx">     clearClientWrapper();
</span><span class="cx">     if (m_peer) {
</span><del>-        m_loaderProxy.postTaskToLoader([peer = std::unique_ptr&lt;Peer&gt;(m_peer)] (ScriptExecutionContext&amp; context) {
</del><ins>+        m_loaderProxy.postTaskToLoader([peer = std::unique_ptr&lt;Peer&gt;(m_peer)](ScriptExecutionContext&amp; context) {
</ins><span class="cx">             ASSERT(isMainThread());
</span><span class="cx">             ASSERT_UNUSED(context, context.isDocument());
</span><span class="cx">         });
</span><span class="lines">@@ -558,7 +526,7 @@
</span><span class="cx">     if (!m_peer)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    m_loaderProxy.postTaskToLoader([peer = m_peer] (ScriptExecutionContext&amp; context) {
</del><ins>+    m_loaderProxy.postTaskToLoader([peer = m_peer](ScriptExecutionContext&amp; context) {
</ins><span class="cx">         ASSERT(isMainThread());
</span><span class="cx">         ASSERT_UNUSED(context, context.isDocument());
</span><span class="cx">         ASSERT(peer);
</span><span class="lines">@@ -572,7 +540,7 @@
</span><span class="cx">     if (!m_peer)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    m_loaderProxy.postTaskToLoader([peer = m_peer] (ScriptExecutionContext&amp; context) {
</del><ins>+    m_loaderProxy.postTaskToLoader([peer = m_peer](ScriptExecutionContext&amp; context) {
</ins><span class="cx">         ASSERT(isMainThread());
</span><span class="cx">         ASSERT_UNUSED(context, context.isDocument());
</span><span class="cx">         ASSERT(peer);
</span><span class="lines">@@ -588,7 +556,6 @@
</span><span class="cx"> 
</span><span class="cx"> void WorkerThreadableWebSocketChannel::Bridge::setMethodNotCompleted()
</span><span class="cx"> {
</span><del>-    ASSERT(m_workerClientWrapper);
</del><span class="cx">     m_workerClientWrapper-&gt;clearSyncMethodDone();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -600,10 +567,10 @@
</span><span class="cx">         return;
</span><span class="cx">     WorkerRunLoop&amp; runLoop = m_workerGlobalScope-&gt;thread().runLoop();
</span><span class="cx">     MessageQueueWaitResult result = MessageQueueMessageReceived;
</span><del>-    ThreadableWebSocketChannelClientWrapper* clientWrapper = m_workerClientWrapper.get();
</del><ins>+    ThreadableWebSocketChannelClientWrapper* clientWrapper = m_workerClientWrapper.ptr();
</ins><span class="cx">     while (m_workerGlobalScope &amp;&amp; clientWrapper &amp;&amp; !clientWrapper-&gt;syncMethodDone() &amp;&amp; result != MessageQueueTerminated) {
</span><span class="cx">         result = runLoop.runInMode(m_workerGlobalScope.get(), m_taskMode); // May cause this bridge to get disconnected, which makes m_workerGlobalScope become null.
</span><del>-        clientWrapper = m_workerClientWrapper.get();
</del><ins>+        clientWrapper = m_workerClientWrapper.ptr();
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebsocketsWorkerThreadableWebSocketChannelh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.h (201836 => 201837)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.h        2016-06-08 22:22:49 UTC (rev 201836)
+++ trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.h        2016-06-08 22:27:46 UTC (rev 201837)
</span><span class="lines">@@ -28,8 +28,7 @@
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#ifndef WorkerThreadableWebSocketChannel_h
-#define WorkerThreadableWebSocketChannel_h
</del><ins>+#pragma once
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEB_SOCKETS)
</span><span class="cx"> 
</span><span class="lines">@@ -37,7 +36,6 @@
</span><span class="cx"> #include &quot;WebSocketChannelClient.h&quot;
</span><span class="cx"> #include &quot;WorkerGlobalScope.h&quot;
</span><span class="cx"> 
</span><del>-#include &lt;wtf/PassRefPtr.h&gt;
</del><span class="cx"> #include &lt;wtf/RefCounted.h&gt;
</span><span class="cx"> #include &lt;wtf/RefPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/Threading.h&gt;
</span><span class="lines">@@ -55,7 +53,7 @@
</span><span class="cx"> class WorkerThreadableWebSocketChannel : public RefCounted&lt;WorkerThreadableWebSocketChannel&gt;, public ThreadableWebSocketChannel {
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><del>-    static Ref&lt;ThreadableWebSocketChannel&gt; create(WorkerGlobalScope* workerGlobalScope, WebSocketChannelClient* client, const String&amp; taskMode)
</del><ins>+    static Ref&lt;ThreadableWebSocketChannel&gt; create(WorkerGlobalScope&amp; workerGlobalScope, WebSocketChannelClient&amp; client, const String&amp; taskMode)
</ins><span class="cx">     {
</span><span class="cx">         return adoptRef(*new WorkerThreadableWebSocketChannel(workerGlobalScope, client, taskMode));
</span><span class="cx">     }
</span><span class="lines">@@ -80,7 +78,7 @@
</span><span class="cx">     class Peer : public WebSocketChannelClient {
</span><span class="cx">         WTF_MAKE_NONCOPYABLE(Peer); WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx">     public:
</span><del>-        Peer(RefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt;&amp;&amp;, WorkerLoaderProxy&amp;, ScriptExecutionContext*, const String&amp; taskMode);
</del><ins>+        Peer(Ref&lt;ThreadableWebSocketChannelClientWrapper&gt;&amp;&amp;, WorkerLoaderProxy&amp;, ScriptExecutionContext&amp;, const String&amp; taskMode);
</ins><span class="cx">         ~Peer();
</span><span class="cx"> 
</span><span class="cx">         void connect(const URL&amp;, const String&amp; protocol);
</span><span class="lines">@@ -104,7 +102,7 @@
</span><span class="cx">         void didReceiveMessageError() override;
</span><span class="cx"> 
</span><span class="cx">     private:
</span><del>-        RefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt; m_workerClientWrapper;
</del><ins>+        Ref&lt;ThreadableWebSocketChannelClientWrapper&gt; m_workerClientWrapper;
</ins><span class="cx">         WorkerLoaderProxy&amp; m_loaderProxy;
</span><span class="cx">         RefPtr&lt;ThreadableWebSocketChannel&gt; m_mainWebSocketChannel;
</span><span class="cx">         String m_taskMode;
</span><span class="lines">@@ -121,9 +119,9 @@
</span><span class="cx">     // Bridge for Peer.  Running on the worker thread.
</span><span class="cx">     class Bridge : public RefCounted&lt;Bridge&gt; {
</span><span class="cx">     public:
</span><del>-        static Ref&lt;Bridge&gt; create(PassRefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt; workerClientWrapper, PassRefPtr&lt;WorkerGlobalScope&gt; workerGlobalScope, const String&amp; taskMode)
</del><ins>+        static Ref&lt;Bridge&gt; create(Ref&lt;ThreadableWebSocketChannelClientWrapper&gt;&amp;&amp; workerClientWrapper, Ref&lt;WorkerGlobalScope&gt;&amp;&amp; workerGlobalScope, const String&amp; taskMode)
</ins><span class="cx">         {
</span><del>-            return adoptRef(*new Bridge(workerClientWrapper, workerGlobalScope, taskMode));
</del><ins>+            return adoptRef(*new Bridge(WTFMove(workerClientWrapper), WTFMove(workerGlobalScope), taskMode));
</ins><span class="cx">         }
</span><span class="cx">         ~Bridge();
</span><span class="cx">         void initialize();
</span><span class="lines">@@ -142,12 +140,12 @@
</span><span class="cx">         using RefCounted&lt;Bridge&gt;::deref;
</span><span class="cx"> 
</span><span class="cx">     private:
</span><del>-        Bridge(PassRefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt;, PassRefPtr&lt;WorkerGlobalScope&gt;, const String&amp; taskMode);
</del><ins>+        Bridge(Ref&lt;ThreadableWebSocketChannelClientWrapper&gt;&amp;&amp;, Ref&lt;WorkerGlobalScope&gt;&amp;&amp;, const String&amp; taskMode);
</ins><span class="cx"> 
</span><del>-        static void setWebSocketChannel(ScriptExecutionContext*, Bridge* thisPtr, Peer*, PassRefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt;);
</del><ins>+        static void setWebSocketChannel(ScriptExecutionContext*, Bridge* thisPtr, Peer*, Ref&lt;ThreadableWebSocketChannelClientWrapper&gt;&amp;&amp;);
</ins><span class="cx"> 
</span><span class="cx">         // Executed on the main thread to create a Peer for this bridge.
</span><del>-        static void mainThreadInitialize(ScriptExecutionContext&amp;, WorkerLoaderProxy*, RefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt;&amp;&amp;, const String&amp; taskMode);
</del><ins>+        static void mainThreadInitialize(ScriptExecutionContext&amp;, WorkerLoaderProxy&amp;, Ref&lt;ThreadableWebSocketChannelClientWrapper&gt;&amp;&amp;, const String&amp; taskMode);
</ins><span class="cx"> 
</span><span class="cx">         // Executed on the worker context's thread.
</span><span class="cx">         void clearClientWrapper();
</span><span class="lines">@@ -155,24 +153,22 @@
</span><span class="cx">         void setMethodNotCompleted();
</span><span class="cx">         void waitForMethodCompletion();
</span><span class="cx"> 
</span><del>-        RefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt; m_workerClientWrapper;
</del><ins>+        Ref&lt;ThreadableWebSocketChannelClientWrapper&gt; m_workerClientWrapper;
</ins><span class="cx">         RefPtr&lt;WorkerGlobalScope&gt; m_workerGlobalScope;
</span><span class="cx">         WorkerLoaderProxy&amp; m_loaderProxy;
</span><span class="cx">         String m_taskMode;
</span><span class="cx">         Peer* m_peer;
</span><span class="cx">     };
</span><span class="cx"> 
</span><del>-    WorkerThreadableWebSocketChannel(WorkerGlobalScope*, WebSocketChannelClient*, const String&amp; taskMode);
</del><ins>+    WorkerThreadableWebSocketChannel(WorkerGlobalScope&amp;, WebSocketChannelClient&amp;, const String&amp; taskMode);
</ins><span class="cx"> 
</span><span class="cx">     class WorkerGlobalScopeDidInitializeTask;
</span><span class="cx"> 
</span><del>-    RefPtr&lt;WorkerGlobalScope&gt; m_workerGlobalScope;
-    RefPtr&lt;ThreadableWebSocketChannelClientWrapper&gt; m_workerClientWrapper;
</del><ins>+    Ref&lt;WorkerGlobalScope&gt; m_workerGlobalScope;
+    Ref&lt;ThreadableWebSocketChannelClientWrapper&gt; m_workerClientWrapper;
</ins><span class="cx">     RefPtr&lt;Bridge&gt; m_bridge;
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(WEB_SOCKETS)
</span><del>-
-#endif // WorkerThreadableWebSocketChannel_h
</del></span></pre>
</div>
</div>

</body>
</html>