<!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>[202930] trunk/Source</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/202930">202930</a></dd>
<dt>Author</dt> <dd>commit-queue@webkit.org</dd>
<dt>Date</dt> <dd>2016-07-07 14:09:14 -0700 (Thu, 07 Jul 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Use SocketProvider to create WebSocketChannels
https://bugs.webkit.org/show_bug.cgi?id=158776

Patch by Alex Christensen &lt;achristensen@webkit.org&gt; on 2016-07-07
Reviewed by Brent Fulgham.

Source/WebCore:

This patch should have no change in behavior except making an InvalidStateError in
conditions where we should not be able to do networking, like in a detached frame.
It just replaces ThreadableWebSocketChannel::create with SocketProvider::createWebSocketChannel
which does the same thing as ThreadableWebSocketChannel::create for Mac and
Windows WebKit1.  The WebKit2 implementation is the same right now, but it will
be replaced by a proxy that will do the WebSocket operations in the NetworkProcess.

* Modules/websockets/ThreadableWebSocketChannel.cpp: Removed.
* Modules/websockets/ThreadableWebSocketChannel.h:
(WebCore::ThreadableWebSocketChannel::ThreadableWebSocketChannel):
* Modules/websockets/WebSocket.cpp:
(WebCore::WebSocket::connect):
* Modules/websockets/WebSocketChannel.h:
* Modules/websockets/WorkerThreadableWebSocketChannel.h:
* WebCore.xcodeproj/project.pbxproj:
* dom/Document.cpp:
(WebCore::Document::idbConnectionProxy):
(WebCore::Document::socketProvider):
(WebCore::Document::canNavigate):
* dom/Document.h:
(WebCore::Document::notifyRemovePendingSheetIfNeeded):
* dom/ScriptExecutionContext.h:
* inspector/InspectorOverlay.cpp:
(WebCore::InspectorOverlay::overlayPage):
* loader/EmptyClients.cpp:
(WebCore::EmptyEditorClient::registerRedoStep):
(WebCore::EmptySocketProvider::createWebSocketChannel):
* loader/EmptyClients.h:
* page/Page.h:
* page/PageConfiguration.cpp:
(WebCore::PageConfiguration::PageConfiguration):
* page/PageConfiguration.h:
* page/SocketProvider.h:
(WebCore::SocketProvider::~SocketProvider):
* svg/graphics/SVGImage.cpp:
(WebCore::SVGImage::dataChanged):
* workers/DedicatedWorkerGlobalScope.cpp:
(WebCore::DedicatedWorkerGlobalScope::create):
(WebCore::DedicatedWorkerGlobalScope::DedicatedWorkerGlobalScope):
* workers/DedicatedWorkerGlobalScope.h:
* workers/DedicatedWorkerThread.cpp:
(WebCore::DedicatedWorkerThread::DedicatedWorkerThread):
(WebCore::DedicatedWorkerThread::createWorkerGlobalScope):
(WebCore::DedicatedWorkerThread::runEventLoop):
* workers/DedicatedWorkerThread.h:
* workers/WorkerGlobalScope.cpp:
(WebCore::WorkerGlobalScope::WorkerGlobalScope):
(WebCore::WorkerGlobalScope::disableEval):
(WebCore::WorkerGlobalScope::socketProvider):
(WebCore::WorkerGlobalScope::idbConnectionProxy):
* workers/WorkerGlobalScope.h:
(WebCore::WorkerGlobalScope::script):
* workers/WorkerMessagingProxy.cpp:
(WebCore::WorkerMessagingProxy::startWorkerGlobalScope):
* workers/WorkerThread.cpp:
(WebCore::WorkerThreadStartupData::WorkerThreadStartupData):
(WebCore::WorkerThread::WorkerThread):
(WebCore::WorkerThread::idbConnectionProxy):
(WebCore::WorkerThread::socketProvider):
* workers/WorkerThread.h:
(WebCore::WorkerThread::workerGlobalScope):

Source/WebKit:

* PlatformMac.cmake:
* PlatformWin.cmake:
* WebKit.xcodeproj/project.pbxproj:

Source/WebKit/mac:

* Misc/WebSocketProvider.mm: Copied from Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.cpp.
(WebSocketProvider::createWebSocketChannel):
(WebCore::ThreadableWebSocketChannel::create): Deleted.
* Misc/WebSocketProvider.h:
* WebView/WebView.mm:
(-[WebView _commonInitializationWithFrameName:groupName:]):
(-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):

Source/WebKit/win:

* WebSocketProvider.cpp: Copied from Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.cpp.
(WebSocketProvider::createWebSocketChannel):
(WebCore::ThreadableWebSocketChannel::create): Deleted.
* WebSocketProvider.h:

Source/WebKit2:

* CMakeLists.txt:
* WebKit2.xcodeproj/project.pbxproj:
* WebProcess/Network/WebSocketProvider.cpp: Copied from Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.cpp.
(WebKit::WebSocketProvider::createWebSocketChannel):
(WebCore::ThreadableWebSocketChannel::create): Deleted.
* WebProcess/Network/WebSocketProvider.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::m_shouldDispatchFakeMouseMoveEvents):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreCMakeListstxt">trunk/Source/WebCore/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreModuleswebsocketsThreadableWebSocketChannelh">trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.h</a></li>
<li><a href="#trunkSourceWebCoreModuleswebsocketsWebSocketcpp">trunk/Source/WebCore/Modules/websockets/WebSocket.cpp</a></li>
<li><a href="#trunkSourceWebCoreModuleswebsocketsWebSocketChannelh">trunk/Source/WebCore/Modules/websockets/WebSocketChannel.h</a></li>
<li><a href="#trunkSourceWebCoreModuleswebsocketsWorkerThreadableWebSocketChannelh">trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.h</a></li>
<li><a href="#trunkSourceWebCorePlatformWincmake">trunk/Source/WebCore/PlatformWin.cmake</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCoredomDocumentcpp">trunk/Source/WebCore/dom/Document.cpp</a></li>
<li><a href="#trunkSourceWebCoredomDocumenth">trunk/Source/WebCore/dom/Document.h</a></li>
<li><a href="#trunkSourceWebCoredomScriptExecutionContexth">trunk/Source/WebCore/dom/ScriptExecutionContext.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorOverlaycpp">trunk/Source/WebCore/inspector/InspectorOverlay.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderEmptyClientscpp">trunk/Source/WebCore/loader/EmptyClients.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderEmptyClientsh">trunk/Source/WebCore/loader/EmptyClients.h</a></li>
<li><a href="#trunkSourceWebCorepagePageh">trunk/Source/WebCore/page/Page.h</a></li>
<li><a href="#trunkSourceWebCorepagePageConfigurationcpp">trunk/Source/WebCore/page/PageConfiguration.cpp</a></li>
<li><a href="#trunkSourceWebCorepagePageConfigurationh">trunk/Source/WebCore/page/PageConfiguration.h</a></li>
<li><a href="#trunkSourceWebCorepageSocketProviderh">trunk/Source/WebCore/page/SocketProvider.h</a></li>
<li><a href="#trunkSourceWebCoresvggraphicsSVGImagecpp">trunk/Source/WebCore/svg/graphics/SVGImage.cpp</a></li>
<li><a href="#trunkSourceWebCoreworkersDedicatedWorkerGlobalScopecpp">trunk/Source/WebCore/workers/DedicatedWorkerGlobalScope.cpp</a></li>
<li><a href="#trunkSourceWebCoreworkersDedicatedWorkerGlobalScopeh">trunk/Source/WebCore/workers/DedicatedWorkerGlobalScope.h</a></li>
<li><a href="#trunkSourceWebCoreworkersDedicatedWorkerThreadcpp">trunk/Source/WebCore/workers/DedicatedWorkerThread.cpp</a></li>
<li><a href="#trunkSourceWebCoreworkersDedicatedWorkerThreadh">trunk/Source/WebCore/workers/DedicatedWorkerThread.h</a></li>
<li><a href="#trunkSourceWebCoreworkersWorkerGlobalScopecpp">trunk/Source/WebCore/workers/WorkerGlobalScope.cpp</a></li>
<li><a href="#trunkSourceWebCoreworkersWorkerGlobalScopeh">trunk/Source/WebCore/workers/WorkerGlobalScope.h</a></li>
<li><a href="#trunkSourceWebCoreworkersWorkerMessagingProxycpp">trunk/Source/WebCore/workers/WorkerMessagingProxy.cpp</a></li>
<li><a href="#trunkSourceWebCoreworkersWorkerThreadcpp">trunk/Source/WebCore/workers/WorkerThread.cpp</a></li>
<li><a href="#trunkSourceWebCoreworkersWorkerThreadh">trunk/Source/WebCore/workers/WorkerThread.h</a></li>
<li><a href="#trunkSourceWebKitChangeLog">trunk/Source/WebKit/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitPlatformMaccmake">trunk/Source/WebKit/PlatformMac.cmake</a></li>
<li><a href="#trunkSourceWebKitPlatformWincmake">trunk/Source/WebKit/PlatformWin.cmake</a></li>
<li><a href="#trunkSourceWebKitWebKitxcodeprojprojectpbxproj">trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebKitmacChangeLog">trunk/Source/WebKit/mac/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitmacMiscWebSocketProviderh">trunk/Source/WebKit/mac/Misc/WebSocketProvider.h</a></li>
<li><a href="#trunkSourceWebKitmacWebViewWebViewmm">trunk/Source/WebKit/mac/WebView/WebView.mm</a></li>
<li><a href="#trunkSourceWebKitwinChangeLog">trunk/Source/WebKit/win/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitwinWebSocketProviderh">trunk/Source/WebKit/win/WebSocketProvider.h</a></li>
<li><a href="#trunkSourceWebKit2CMakeListstxt">trunk/Source/WebKit2/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2WebKit2xcodeprojprojectpbxproj">trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebKit2WebProcessNetworkWebSocketProviderh">trunk/Source/WebKit2/WebProcess/Network/WebSocketProvider.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPagecpp">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWebKitmacMiscWebSocketProvidermm">trunk/Source/WebKit/mac/Misc/WebSocketProvider.mm</a></li>
<li><a href="#trunkSourceWebKitwinWebSocketProvidercpp">trunk/Source/WebKit/win/WebSocketProvider.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessNetworkWebSocketProvidercpp">trunk/Source/WebKit2/WebProcess/Network/WebSocketProvider.cpp</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreModuleswebsocketsThreadableWebSocketChannelcpp">trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/CMakeLists.txt (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/CMakeLists.txt        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebCore/CMakeLists.txt        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -1034,7 +1034,6 @@
</span><span class="cx">     Modules/webdatabase/SQLTransactionCoordinator.cpp
</span><span class="cx">     Modules/webdatabase/SQLTransactionStateMachine.cpp
</span><span class="cx"> 
</span><del>-    Modules/websockets/ThreadableWebSocketChannel.cpp
</del><span class="cx">     Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp
</span><span class="cx">     Modules/websockets/WebSocket.cpp
</span><span class="cx">     Modules/websockets/WebSocketChannel.cpp
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebCore/ChangeLog        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -1,3 +1,72 @@
</span><ins>+2016-07-07  Alex Christensen  &lt;achristensen@webkit.org&gt;
+
+        Use SocketProvider to create WebSocketChannels
+        https://bugs.webkit.org/show_bug.cgi?id=158776
+
+        Reviewed by Brent Fulgham.
+
+        This patch should have no change in behavior except making an InvalidStateError in
+        conditions where we should not be able to do networking, like in a detached frame.
+        It just replaces ThreadableWebSocketChannel::create with SocketProvider::createWebSocketChannel
+        which does the same thing as ThreadableWebSocketChannel::create for Mac and 
+        Windows WebKit1.  The WebKit2 implementation is the same right now, but it will
+        be replaced by a proxy that will do the WebSocket operations in the NetworkProcess.
+
+        * Modules/websockets/ThreadableWebSocketChannel.cpp: Removed.
+        * Modules/websockets/ThreadableWebSocketChannel.h:
+        (WebCore::ThreadableWebSocketChannel::ThreadableWebSocketChannel):
+        * Modules/websockets/WebSocket.cpp:
+        (WebCore::WebSocket::connect):
+        * Modules/websockets/WebSocketChannel.h:
+        * Modules/websockets/WorkerThreadableWebSocketChannel.h:
+        * WebCore.xcodeproj/project.pbxproj:
+        * dom/Document.cpp:
+        (WebCore::Document::idbConnectionProxy):
+        (WebCore::Document::socketProvider):
+        (WebCore::Document::canNavigate):
+        * dom/Document.h:
+        (WebCore::Document::notifyRemovePendingSheetIfNeeded):
+        * dom/ScriptExecutionContext.h:
+        * inspector/InspectorOverlay.cpp:
+        (WebCore::InspectorOverlay::overlayPage):
+        * loader/EmptyClients.cpp:
+        (WebCore::EmptyEditorClient::registerRedoStep):
+        (WebCore::EmptySocketProvider::createWebSocketChannel):
+        * loader/EmptyClients.h:
+        * page/Page.h:
+        * page/PageConfiguration.cpp:
+        (WebCore::PageConfiguration::PageConfiguration):
+        * page/PageConfiguration.h:
+        * page/SocketProvider.h:
+        (WebCore::SocketProvider::~SocketProvider):
+        * svg/graphics/SVGImage.cpp:
+        (WebCore::SVGImage::dataChanged):
+        * workers/DedicatedWorkerGlobalScope.cpp:
+        (WebCore::DedicatedWorkerGlobalScope::create):
+        (WebCore::DedicatedWorkerGlobalScope::DedicatedWorkerGlobalScope):
+        * workers/DedicatedWorkerGlobalScope.h:
+        * workers/DedicatedWorkerThread.cpp:
+        (WebCore::DedicatedWorkerThread::DedicatedWorkerThread):
+        (WebCore::DedicatedWorkerThread::createWorkerGlobalScope):
+        (WebCore::DedicatedWorkerThread::runEventLoop):
+        * workers/DedicatedWorkerThread.h:
+        * workers/WorkerGlobalScope.cpp:
+        (WebCore::WorkerGlobalScope::WorkerGlobalScope):
+        (WebCore::WorkerGlobalScope::disableEval):
+        (WebCore::WorkerGlobalScope::socketProvider):
+        (WebCore::WorkerGlobalScope::idbConnectionProxy):
+        * workers/WorkerGlobalScope.h:
+        (WebCore::WorkerGlobalScope::script):
+        * workers/WorkerMessagingProxy.cpp:
+        (WebCore::WorkerMessagingProxy::startWorkerGlobalScope):
+        * workers/WorkerThread.cpp:
+        (WebCore::WorkerThreadStartupData::WorkerThreadStartupData):
+        (WebCore::WorkerThread::WorkerThread):
+        (WebCore::WorkerThread::idbConnectionProxy):
+        (WebCore::WorkerThread::socketProvider):
+        * workers/WorkerThread.h:
+        (WebCore::WorkerThread::workerGlobalScope):
+
</ins><span class="cx"> 2016-07-07  Commit Queue  &lt;commit-queue@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Unreviewed, rolling out r202905 and r202911.
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebsocketsThreadableWebSocketChannelcpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.cpp (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.cpp        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.cpp        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -1,68 +0,0 @@
</span><del>-/*
- * Copyright (C) 2009, 2012 Google Inc.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include &quot;config.h&quot;
-
-#if ENABLE(WEB_SOCKETS)
-
-#include &quot;ThreadableWebSocketChannel.h&quot;
-
-#include &quot;Document.h&quot;
-#include &quot;ScriptExecutionContext.h&quot;
-#include &quot;ThreadableWebSocketChannelClientWrapper.h&quot;
-#include &quot;WebSocketChannel.h&quot;
-#include &quot;WebSocketChannelClient.h&quot;
-#include &quot;WorkerGlobalScope.h&quot;
-#include &quot;WorkerRunLoop.h&quot;
-#include &quot;WorkerThread.h&quot;
-#include &quot;WorkerThreadableWebSocketChannel.h&quot;
-#include &lt;wtf/text/StringBuilder.h&gt;
-
-namespace WebCore {
-
-static const char webSocketChannelMode[] = &quot;webSocketChannelMode&quot;;
-
-Ref&lt;ThreadableWebSocketChannel&gt; ThreadableWebSocketChannel::create(ScriptExecutionContext&amp; context, WebSocketChannelClient&amp; client)
-{
-    if (is&lt;WorkerGlobalScope&gt;(context)) {
-        WorkerGlobalScope&amp; workerGlobalScope = downcast&lt;WorkerGlobalScope&gt;(context);
-        WorkerRunLoop&amp; runLoop = workerGlobalScope.thread().runLoop();
-        StringBuilder mode;
-        mode.appendLiteral(webSocketChannelMode);
-        mode.appendNumber(runLoop.createUniqueId());
-        return WorkerThreadableWebSocketChannel::create(workerGlobalScope, client, mode.toString());
-    }
-
-    return WebSocketChannel::create(downcast&lt;Document&gt;(context), client);
-}
-
-} // namespace WebCore
-
-#endif // ENABLE(WEB_SOCKETS)
</del></span></pre></div>
<a id="trunkSourceWebCoreModuleswebsocketsThreadableWebSocketChannelh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.h (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.h        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.h        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -51,7 +51,6 @@
</span><span class="cx">     WTF_MAKE_NONCOPYABLE(ThreadableWebSocketChannel);
</span><span class="cx"> public:
</span><span class="cx">     ThreadableWebSocketChannel() { }
</span><del>-    static Ref&lt;ThreadableWebSocketChannel&gt; create(ScriptExecutionContext&amp;, WebSocketChannelClient&amp;);
</del><span class="cx"> 
</span><span class="cx">     enum SendResult {
</span><span class="cx">         SendSuccess,
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebsocketsWebSocketcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/websockets/WebSocket.cpp (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/websockets/WebSocket.cpp        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebCore/Modules/websockets/WebSocket.cpp        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -50,6 +50,7 @@
</span><span class="cx"> #include &quot;ScriptController.h&quot;
</span><span class="cx"> #include &quot;ScriptExecutionContext.h&quot;
</span><span class="cx"> #include &quot;SecurityOrigin.h&quot;
</span><ins>+#include &quot;SocketProvider.h&quot;
</ins><span class="cx"> #include &quot;ThreadableWebSocketChannel.h&quot;
</span><span class="cx"> #include &quot;WebSocketChannel.h&quot;
</span><span class="cx"> #include &lt;inspector/ScriptCallStack.h&gt;
</span><span class="lines">@@ -250,8 +251,12 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    m_channel = ThreadableWebSocketChannel::create(*scriptExecutionContext(), *this);
</del><ins>+    if (auto socketProvider = scriptExecutionContext()-&gt;socketProvider())
+        m_channel = socketProvider-&gt;createWebSocketChannel(*scriptExecutionContext(), *this);
</ins><span class="cx"> 
</span><ins>+    // Only an EmptySocketProvider can return nullptr, and every ScriptExecutionContext should have a SocketProvider.
+    RELEASE_ASSERT(m_channel);
+
</ins><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 class="cx">     // imposes a stricter rule: &quot;the elements MUST be non-empty strings with characters as defined in [RFC2616],
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebsocketsWebSocketChannelh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/websockets/WebSocketChannel.h (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/websockets/WebSocketChannel.h        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebCore/Modules/websockets/WebSocketChannel.h        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -119,7 +119,7 @@
</span><span class="cx">     void derefThreadableWebSocketChannel() override { deref(); }
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    WebSocketChannel(Document&amp;, WebSocketChannelClient&amp;);
</del><ins>+    WEBCORE_EXPORT 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="trunkSourceWebCoreModuleswebsocketsWorkerThreadableWebSocketChannelh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.h (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.h        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.h        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -160,7 +160,7 @@
</span><span class="cx">         Peer* m_peer;
</span><span class="cx">     };
</span><span class="cx"> 
</span><del>-    WorkerThreadableWebSocketChannel(WorkerGlobalScope&amp;, WebSocketChannelClient&amp;, const String&amp; taskMode);
</del><ins>+    WEBCORE_EXPORT WorkerThreadableWebSocketChannel(WorkerGlobalScope&amp;, WebSocketChannelClient&amp;, const String&amp; taskMode);
</ins><span class="cx"> 
</span><span class="cx">     class WorkerGlobalScopeDidInitializeTask;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorePlatformWincmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/PlatformWin.cmake (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/PlatformWin.cmake        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebCore/PlatformWin.cmake        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -167,6 +167,7 @@
</span><span class="cx">     css
</span><span class="cx">     dom
</span><span class="cx">     editing
</span><ins>+    fileapi
</ins><span class="cx">     history
</span><span class="cx">     html
</span><span class="cx">     inspector
</span><span class="lines">@@ -184,6 +185,7 @@
</span><span class="cx"> 
</span><span class="cx">     Modules/geolocation
</span><span class="cx">     Modules/indexeddb
</span><ins>+    Modules/websockets
</ins><span class="cx"> 
</span><span class="cx">     Modules/indexeddb/client
</span><span class="cx">     Modules/indexeddb/legacy
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -1289,7 +1289,7 @@
</span><span class="cx">                 2E4346450F546A8200B0F1BA /* Worker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E4346330F546A8200B0F1BA /* Worker.cpp */; };
</span><span class="cx">                 2E4346460F546A8200B0F1BA /* Worker.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E4346340F546A8200B0F1BA /* Worker.h */; };
</span><span class="cx">                 2E4346480F546A8200B0F1BA /* WorkerGlobalScope.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E4346360F546A8200B0F1BA /* WorkerGlobalScope.cpp */; };
</span><del>-                2E4346490F546A8200B0F1BA /* WorkerGlobalScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E4346370F546A8200B0F1BA /* WorkerGlobalScope.h */; };
</del><ins>+                2E4346490F546A8200B0F1BA /* WorkerGlobalScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E4346370F546A8200B0F1BA /* WorkerGlobalScope.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 2E43464B0F546A8200B0F1BA /* WorkerGlobalScopeProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E4346390F546A8200B0F1BA /* WorkerGlobalScopeProxy.h */; };
</span><span class="cx">                 2E43464C0F546A8200B0F1BA /* WorkerLocation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E43463A0F546A8200B0F1BA /* WorkerLocation.cpp */; };
</span><span class="cx">                 2E43464D0F546A8200B0F1BA /* WorkerLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E43463B0F546A8200B0F1BA /* WorkerLocation.h */; };
</span><span class="lines">@@ -1303,7 +1303,7 @@
</span><span class="cx">                 2E7582EE12764F260062628B /* JSFileReaderCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E7582ED12764F260062628B /* JSFileReaderCustom.cpp */; };
</span><span class="cx">                 2E75841D12779ADA0062628B /* FileReaderLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E75841A12779ADA0062628B /* FileReaderLoader.cpp */; };
</span><span class="cx">                 2E75841E12779ADA0062628B /* FileReaderLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E75841B12779ADA0062628B /* FileReaderLoader.h */; };
</span><del>-                2E75841F12779ADA0062628B /* FileReaderLoaderClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E75841C12779ADA0062628B /* FileReaderLoaderClient.h */; };
</del><ins>+                2E75841F12779ADA0062628B /* FileReaderLoaderClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E75841C12779ADA0062628B /* FileReaderLoaderClient.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 2E94F43B119207DA00B7F75D /* JSFileReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E94F439119207DA00B7F75D /* JSFileReader.cpp */; };
</span><span class="cx">                 2E94F43C119207DA00B7F75D /* JSFileReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E94F43A119207DA00B7F75D /* JSFileReader.h */; };
</span><span class="cx">                 2E9B5D8F1B66A94E008C6A24 /* WheelEventDeltaFilterMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E9B5D8E1B66A94E008C6A24 /* WheelEventDeltaFilterMac.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="lines">@@ -1933,7 +1933,7 @@
</span><span class="cx">                 4A0FFAA51AAF5EF60062803B /* RealtimeMediaSourceCenterMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A0FFAA31AAF5EF60062803B /* RealtimeMediaSourceCenterMac.cpp */; };
</span><span class="cx">                 4A0FFAA61AAF5EF60062803B /* RealtimeMediaSourceCenterMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A0FFAA41AAF5EF60062803B /* RealtimeMediaSourceCenterMac.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 4A38BF5014FE1C0900612512 /* WebSocketDeflateFramer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A38BF4E14FE1C0900612512 /* WebSocketDeflateFramer.cpp */; };
</span><del>-                4A38BF5114FE1C0900612512 /* WebSocketDeflateFramer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A38BF4F14FE1C0900612512 /* WebSocketDeflateFramer.h */; };
</del><ins>+                4A38BF5114FE1C0900612512 /* WebSocketDeflateFramer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A38BF4F14FE1C0900612512 /* WebSocketDeflateFramer.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 4A4F48A916B0DFC000EDBB29 /* DocumentRuleSets.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A4F48A716B0DFC000EDBB29 /* DocumentRuleSets.cpp */; };
</span><span class="cx">                 4A4F48AA16B0DFC000EDBB29 /* DocumentRuleSets.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A4F48A816B0DFC000EDBB29 /* DocumentRuleSets.h */; };
</span><span class="cx">                 4A4F65701AA997F100E38CDD /* RealtimeMediaSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A4F656B1AA997F100E38CDD /* RealtimeMediaSource.cpp */; };
</span><span class="lines">@@ -2009,7 +2009,7 @@
</span><span class="cx">                 510D4A34103165EE0049EA54 /* SocketStreamErrorBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 510D4A2E103165EE0049EA54 /* SocketStreamErrorBase.h */; };
</span><span class="cx">                 510D4A36103165EE0049EA54 /* SocketStreamHandleBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 510D4A30103165EE0049EA54 /* SocketStreamHandleBase.cpp */; };
</span><span class="cx">                 510D4A37103165EE0049EA54 /* SocketStreamHandleBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 510D4A31103165EE0049EA54 /* SocketStreamHandleBase.h */; };
</span><del>-                510D4A38103165EE0049EA54 /* SocketStreamHandleClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 510D4A32103165EE0049EA54 /* SocketStreamHandleClient.h */; };
</del><ins>+                510D4A38103165EE0049EA54 /* SocketStreamHandleClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 510D4A32103165EE0049EA54 /* SocketStreamHandleClient.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 511EC1271C50AACA0032F983 /* IDBSerialization.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 511EC1251C50AA570032F983 /* IDBSerialization.cpp */; };
</span><span class="cx">                 511EC1281C50AACA0032F983 /* IDBSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 511EC1261C50AA570032F983 /* IDBSerialization.h */; };
</span><span class="cx">                 511EC12B1C50ABBF0032F983 /* SQLiteIDBTransaction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 511EC1291C50ABBA0032F983 /* SQLiteIDBTransaction.cpp */; };
</span><span class="lines">@@ -3958,25 +3958,24 @@
</span><span class="cx">                 97AA3CA5145237CC003E1DA6 /* EventTargetHeaders.h in Headers */ = {isa = PBXBuildFile; fileRef = 97AA3CA3145237CC003E1DA6 /* EventTargetHeaders.h */; };
</span><span class="cx">                 97AA3CA6145237CC003E1DA6 /* EventTargetInterfaces.h in Headers */ = {isa = PBXBuildFile; fileRef = 97AA3CA4145237CC003E1DA6 /* EventTargetInterfaces.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 97AABD1314FA09D5007457AE /* CloseEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 97AABCF814FA09D5007457AE /* CloseEvent.h */; };
</span><del>-                97AABD1614FA09D5007457AE /* ThreadableWebSocketChannel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97AABCFB14FA09D5007457AE /* ThreadableWebSocketChannel.cpp */; };
-                97AABD1714FA09D5007457AE /* ThreadableWebSocketChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 97AABCFC14FA09D5007457AE /* ThreadableWebSocketChannel.h */; };
</del><ins>+                97AABD1714FA09D5007457AE /* ThreadableWebSocketChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 97AABCFC14FA09D5007457AE /* ThreadableWebSocketChannel.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 97AABD1814FA09D5007457AE /* ThreadableWebSocketChannelClientWrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97AABCFD14FA09D5007457AE /* ThreadableWebSocketChannelClientWrapper.cpp */; };
</span><del>-                97AABD1914FA09D5007457AE /* ThreadableWebSocketChannelClientWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 97AABCFE14FA09D5007457AE /* ThreadableWebSocketChannelClientWrapper.h */; };
</del><ins>+                97AABD1914FA09D5007457AE /* ThreadableWebSocketChannelClientWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 97AABCFE14FA09D5007457AE /* ThreadableWebSocketChannelClientWrapper.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 97AABD1A14FA09D5007457AE /* WebSocket.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97AABCFF14FA09D5007457AE /* WebSocket.cpp */; };
</span><span class="cx">                 97AABD1B14FA09D5007457AE /* WebSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = 97AABD0014FA09D5007457AE /* WebSocket.h */; };
</span><span class="cx">                 97AABD1D14FA09D5007457AE /* WebSocketChannel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97AABD0214FA09D5007457AE /* WebSocketChannel.cpp */; };
</span><del>-                97AABD1E14FA09D5007457AE /* WebSocketChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 97AABD0314FA09D5007457AE /* WebSocketChannel.h */; };
-                97AABD1F14FA09D5007457AE /* WebSocketChannelClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 97AABD0414FA09D5007457AE /* WebSocketChannelClient.h */; };
</del><ins>+                97AABD1E14FA09D5007457AE /* WebSocketChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 97AABD0314FA09D5007457AE /* WebSocketChannel.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                97AABD1F14FA09D5007457AE /* WebSocketChannelClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 97AABD0414FA09D5007457AE /* WebSocketChannelClient.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 97AABD2014FA09D5007457AE /* WebSocketDeflater.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97AABD0514FA09D5007457AE /* WebSocketDeflater.cpp */; };
</span><del>-                97AABD2114FA09D5007457AE /* WebSocketDeflater.h in Headers */ = {isa = PBXBuildFile; fileRef = 97AABD0614FA09D5007457AE /* WebSocketDeflater.h */; };
</del><ins>+                97AABD2114FA09D5007457AE /* WebSocketDeflater.h in Headers */ = {isa = PBXBuildFile; fileRef = 97AABD0614FA09D5007457AE /* WebSocketDeflater.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 97AABD2214FA09D5007457AE /* WebSocketExtensionDispatcher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97AABD0714FA09D5007457AE /* WebSocketExtensionDispatcher.cpp */; };
</span><span class="cx">                 97AABD2314FA09D5007457AE /* WebSocketExtensionDispatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 97AABD0814FA09D5007457AE /* WebSocketExtensionDispatcher.h */; };
</span><del>-                97AABD2414FA09D5007457AE /* WebSocketExtensionProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 97AABD0914FA09D5007457AE /* WebSocketExtensionProcessor.h */; };
-                97AABD2514FA09D5007457AE /* WebSocketFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 97AABD0A14FA09D5007457AE /* WebSocketFrame.h */; };
</del><ins>+                97AABD2414FA09D5007457AE /* WebSocketExtensionProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 97AABD0914FA09D5007457AE /* WebSocketExtensionProcessor.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                97AABD2514FA09D5007457AE /* WebSocketFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 97AABD0A14FA09D5007457AE /* WebSocketFrame.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 97AABD2614FA09D5007457AE /* WebSocketHandshake.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97AABD0B14FA09D5007457AE /* WebSocketHandshake.cpp */; };
</span><span class="cx">                 97AABD2714FA09D5007457AE /* WebSocketHandshake.h in Headers */ = {isa = PBXBuildFile; fileRef = 97AABD0C14FA09D5007457AE /* WebSocketHandshake.h */; };
</span><span class="cx">                 97AABD2C14FA09D5007457AE /* WorkerThreadableWebSocketChannel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97AABD1114FA09D5007457AE /* WorkerThreadableWebSocketChannel.cpp */; };
</span><del>-                97AABD2D14FA09D5007457AE /* WorkerThreadableWebSocketChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 97AABD1214FA09D5007457AE /* WorkerThreadableWebSocketChannel.h */; };
</del><ins>+                97AABD2D14FA09D5007457AE /* WorkerThreadableWebSocketChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 97AABD1214FA09D5007457AE /* WorkerThreadableWebSocketChannel.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 97B1F02E13B025CA00F5103F /* SharedBufferChunkReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 37569E0013AF172C00CDBA8E /* SharedBufferChunkReader.cpp */; };
</span><span class="cx">                 97B1F02F13B025D200F5103F /* SharedBufferChunkReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 37569E0213AF172C00CDBA8E /* SharedBufferChunkReader.h */; };
</span><span class="cx">                 97B38E27151C4271004622E9 /* DOMWindowNotifications.h in Headers */ = {isa = PBXBuildFile; fileRef = 97B38E24151C4264004622E9 /* DOMWindowNotifications.h */; };
</span><span class="lines">@@ -4222,7 +4221,7 @@
</span><span class="cx">                 A3BB59F31457A40D00AC56FE /* DocumentEventQueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A3BB59F11457A40D00AC56FE /* DocumentEventQueue.cpp */; };
</span><span class="cx">                 A3BB59F41457A40D00AC56FE /* DocumentEventQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = A3BB59F21457A40D00AC56FE /* DocumentEventQueue.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 A3E2643014748991005A8588 /* WorkerEventQueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A3E2642E14748991005A8588 /* WorkerEventQueue.cpp */; };
</span><del>-                A3E2643114748991005A8588 /* WorkerEventQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = A3E2642F14748991005A8588 /* WorkerEventQueue.h */; };
</del><ins>+                A3E2643114748991005A8588 /* WorkerEventQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = A3E2642F14748991005A8588 /* WorkerEventQueue.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 A409C985116D0DDD007197BD /* AccessibilityProgressIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = A409C983116D0DDD007197BD /* AccessibilityProgressIndicator.h */; };
</span><span class="cx">                 A4226E5A1163D667008B8397 /* JSHTMLProgressElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A4226E591163D667008B8397 /* JSHTMLProgressElement.cpp */; };
</span><span class="cx">                 A4226E5C1163D695008B8397 /* JSHTMLProgressElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A4226E5B1163D695008B8397 /* JSHTMLProgressElement.h */; };
</span><span class="lines">@@ -6552,7 +6551,7 @@
</span><span class="cx">                 E1A3162D134BC32D007C9A4F /* WebNSAttributedStringExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = E1A3162B134BC32D007C9A4F /* WebNSAttributedStringExtras.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 E1A3162E134BC32D007C9A4F /* WebNSAttributedStringExtras.mm in Sources */ = {isa = PBXBuildFile; fileRef = E1A3162C134BC32D007C9A4F /* WebNSAttributedStringExtras.mm */; };
</span><span class="cx">                 E1A5F99B0E7EAA2500AF85EA /* JSMessageChannelCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1A5F99A0E7EAA2500AF85EA /* JSMessageChannelCustom.cpp */; };
</span><del>-                E1A643F20EC0972500779668 /* WorkerScriptController.h in Headers */ = {isa = PBXBuildFile; fileRef = E1A643F10EC0972500779668 /* WorkerScriptController.h */; };
</del><ins>+                E1A643F20EC0972500779668 /* WorkerScriptController.h in Headers */ = {isa = PBXBuildFile; fileRef = E1A643F10EC0972500779668 /* WorkerScriptController.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 E1A643FD0EC097A000779668 /* WorkerScriptController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1A643FC0EC097A000779668 /* WorkerScriptController.cpp */; };
</span><span class="cx">                 E1A8E56617552B2A007488E7 /* CFURLExtras.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1A8E56417552B2A007488E7 /* CFURLExtras.cpp */; };
</span><span class="cx">                 E1A8E56717552B2A007488E7 /* CFURLExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = E1A8E56517552B2A007488E7 /* CFURLExtras.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="lines">@@ -11705,7 +11704,6 @@
</span><span class="cx">                 97AA3CA4145237CC003E1DA6 /* EventTargetInterfaces.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventTargetInterfaces.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 97AABCF814FA09D5007457AE /* CloseEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CloseEvent.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 97AABCF914FA09D5007457AE /* CloseEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CloseEvent.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                97AABCFB14FA09D5007457AE /* ThreadableWebSocketChannel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ThreadableWebSocketChannel.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 97AABCFC14FA09D5007457AE /* ThreadableWebSocketChannel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThreadableWebSocketChannel.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 97AABCFD14FA09D5007457AE /* ThreadableWebSocketChannelClientWrapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ThreadableWebSocketChannelClientWrapper.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 97AABCFE14FA09D5007457AE /* ThreadableWebSocketChannelClientWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThreadableWebSocketChannelClientWrapper.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -19933,7 +19931,6 @@
</span><span class="cx">                         children = (
</span><span class="cx">                                 97AABCF814FA09D5007457AE /* CloseEvent.h */,
</span><span class="cx">                                 97AABCF914FA09D5007457AE /* CloseEvent.idl */,
</span><del>-                                97AABCFB14FA09D5007457AE /* ThreadableWebSocketChannel.cpp */,
</del><span class="cx">                                 97AABCFC14FA09D5007457AE /* ThreadableWebSocketChannel.h */,
</span><span class="cx">                                 97AABCFD14FA09D5007457AE /* ThreadableWebSocketChannelClientWrapper.cpp */,
</span><span class="cx">                                 97AABCFE14FA09D5007457AE /* ThreadableWebSocketChannelClientWrapper.h */,
</span><span class="lines">@@ -32237,7 +32234,6 @@
</span><span class="cx">                                 BCE659E90EA92FFA007E4533 /* ThemeMac.mm in Sources */,
</span><span class="cx">                                 976D6C94122B8A3D001FD1F7 /* ThreadableBlobRegistry.cpp in Sources */,
</span><span class="cx">                                 0B90561E0F257E930095FF6A /* ThreadableLoader.cpp in Sources */,
</span><del>-                                97AABD1614FA09D5007457AE /* ThreadableWebSocketChannel.cpp in Sources */,
</del><span class="cx">                                 97AABD1814FA09D5007457AE /* ThreadableWebSocketChannelClientWrapper.cpp in Sources */,
</span><span class="cx">                                 51DF6D800B92A18E00C2DC85 /* ThreadCheck.mm in Sources */,
</span><span class="cx">                                 0F6383DD18615B29003E5DB5 /* ThreadedScrollingTree.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Document.cpp (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Document.cpp        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebCore/dom/Document.cpp        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -162,6 +162,7 @@
</span><span class="cx"> #include &quot;SelectorQuery.h&quot;
</span><span class="cx"> #include &quot;Settings.h&quot;
</span><span class="cx"> #include &quot;ShadowRoot.h&quot;
</span><ins>+#include &quot;SocketProvider.h&quot;
</ins><span class="cx"> #include &quot;StorageEvent.h&quot;
</span><span class="cx"> #include &quot;StyleProperties.h&quot;
</span><span class="cx"> #include &quot;StyleResolveForDocument.h&quot;
</span><span class="lines">@@ -541,6 +542,9 @@
</span><span class="cx">     , m_disabledFieldsetElementsCount(0)
</span><span class="cx">     , m_hasInjectedPlugInsScript(false)
</span><span class="cx">     , m_hasStyleWithViewportUnits(false)
</span><ins>+#if ENABLE(WEB_SOCKETS)
+    , m_socketProvider(page() ? &amp;page()-&gt;socketProvider() : nullptr)
+#endif
</ins><span class="cx"> {
</span><span class="cx">     allDocuments().add(this);
</span><span class="cx"> 
</span><span class="lines">@@ -3087,6 +3091,13 @@
</span><span class="cx"> }
</span><span class="cx"> #endif // ENABLE(INDEXED_DATABASE)
</span><span class="cx"> 
</span><ins>+#if ENABLE(WEB_SOCKETS)
+SocketProvider* Document::socketProvider()
+{
+    return m_socketProvider.get();
+}
+#endif
+    
</ins><span class="cx"> bool Document::canNavigate(Frame* targetFrame)
</span><span class="cx"> {
</span><span class="cx">     if (!m_frame)
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Document.h (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Document.h        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebCore/dom/Document.h        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -665,6 +665,9 @@
</span><span class="cx"> #if ENABLE(INDEXED_DATABASE)
</span><span class="cx">     IDBClient::IDBConnectionProxy* idbConnectionProxy() final;
</span><span class="cx"> #endif
</span><ins>+#if ENABLE(WEB_SOCKETS)
+    SocketProvider* socketProvider() final;
+#endif
</ins><span class="cx"> 
</span><span class="cx">     bool canNavigate(Frame* targetFrame);
</span><span class="cx">     Frame* findUnsafeParentScrollPropagationBoundary();
</span><span class="lines">@@ -1794,6 +1797,9 @@
</span><span class="cx"> #if ENABLE(INDEXED_DATABASE)
</span><span class="cx">     RefPtr&lt;IDBClient::IDBConnectionProxy&gt; m_idbConnectionProxy;
</span><span class="cx"> #endif
</span><ins>+#if ENABLE(WEB_SOCKETS)
+    RefPtr&lt;SocketProvider&gt; m_socketProvider;
+#endif
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> inline void Document::notifyRemovePendingSheetIfNeeded()
</span></span></pre></div>
<a id="trunkSourceWebCoredomScriptExecutionContexth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ScriptExecutionContext.h (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ScriptExecutionContext.h        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebCore/dom/ScriptExecutionContext.h        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -60,6 +60,7 @@
</span><span class="cx"> class PublicURLManager;
</span><span class="cx"> class ResourceRequest;
</span><span class="cx"> class SecurityOrigin;
</span><ins>+class SocketProvider;
</ins><span class="cx"> class URL;
</span><span class="cx"> 
</span><span class="cx"> namespace IDBClient {
</span><span class="lines">@@ -87,6 +88,9 @@
</span><span class="cx"> #if ENABLE(INDEXED_DATABASE)
</span><span class="cx">     virtual IDBClient::IDBConnectionProxy* idbConnectionProxy() = 0;
</span><span class="cx"> #endif
</span><ins>+#if ENABLE(WEB_SOCKETS)
+    virtual SocketProvider* socketProvider() = 0;
+#endif
</ins><span class="cx"> 
</span><span class="cx">     bool sanitizeScriptError(String&amp; errorMessage, int&amp; lineNumber, int&amp; columnNumber, String&amp; sourceURL, Deprecated::ScriptValue&amp; error, CachedScript* = nullptr);
</span><span class="cx">     void reportException(const String&amp; errorMessage, int lineNumber, int columnNumber, const String&amp; sourceURL, JSC::Exception*, RefPtr&lt;Inspector::ScriptCallStack&gt;&amp;&amp;, CachedScript* = nullptr);
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorOverlaycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorOverlay.cpp (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorOverlay.cpp        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebCore/inspector/InspectorOverlay.cpp        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -864,7 +864,7 @@
</span><span class="cx">     if (m_overlayPage)
</span><span class="cx">         return m_overlayPage.get();
</span><span class="cx"> 
</span><del>-    PageConfiguration pageConfiguration(makeUniqueRef&lt;EmptyEditorClient&gt;(), makeUniqueRef&lt;EmptySocketProvider&gt;());
</del><ins>+    PageConfiguration pageConfiguration(makeUniqueRef&lt;EmptyEditorClient&gt;(), EmptySocketProvider::create());
</ins><span class="cx">     fillWithEmptyClients(pageConfiguration);
</span><span class="cx">     m_overlayPage = std::make_unique&lt;Page&gt;(WTFMove(pageConfiguration));
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderEmptyClientscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/EmptyClients.cpp (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/EmptyClients.cpp        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebCore/loader/EmptyClients.cpp        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -45,6 +45,7 @@
</span><span class="cx"> #include &quot;StorageArea.h&quot;
</span><span class="cx"> #include &quot;StorageNamespace.h&quot;
</span><span class="cx"> #include &quot;StorageNamespaceProvider.h&quot;
</span><ins>+#include &quot;ThreadableWebSocketChannel.h&quot;
</ins><span class="cx"> #include &quot;UserContentProvider.h&quot;
</span><span class="cx"> #include &lt;wtf/NeverDestroyed.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -263,5 +264,10 @@
</span><span class="cx"> void EmptyEditorClient::registerRedoStep(PassRefPtr&lt;UndoStep&gt;)
</span><span class="cx"> {
</span><span class="cx"> }
</span><ins>+    
+RefPtr&lt;ThreadableWebSocketChannel&gt; EmptySocketProvider::createWebSocketChannel(ScriptExecutionContext&amp;, WebSocketChannelClient&amp;)
+{
+    return nullptr;
+}
</ins><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderEmptyClientsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/EmptyClients.h (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/EmptyClients.h        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebCore/loader/EmptyClients.h        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -644,8 +644,12 @@
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> class EmptySocketProvider final : public SocketProvider {
</span><ins>+public:
+    virtual ~EmptySocketProvider() { }
+    static Ref&lt;EmptySocketProvider&gt; create() { return adoptRef(*new EmptySocketProvider); }
+    RefPtr&lt;ThreadableWebSocketChannel&gt; createWebSocketChannel(ScriptExecutionContext&amp;, WebSocketChannelClient&amp;) override;
</ins><span class="cx"> };
</span><del>-    
</del><ins>+
</ins><span class="cx"> void fillWithEmptyClients(PageConfiguration&amp;);
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorepagePageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Page.h (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Page.h        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebCore/page/Page.h        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -696,7 +696,7 @@
</span><span class="cx">     unsigned m_lastSpatialNavigationCandidatesCount;
</span><span class="cx">     unsigned m_forbidPromptsDepth;
</span><span class="cx"> 
</span><del>-    UniqueRef&lt;SocketProvider&gt; m_socketProvider;
</del><ins>+    Ref&lt;SocketProvider&gt; m_socketProvider;
</ins><span class="cx">     Ref&lt;ApplicationCacheStorage&gt; m_applicationCacheStorage;
</span><span class="cx">     Ref&lt;DatabaseProvider&gt; m_databaseProvider;
</span><span class="cx">     Ref&lt;StorageNamespaceProvider&gt; m_storageNamespaceProvider;
</span></span></pre></div>
<a id="trunkSourceWebCorepagePageConfigurationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/PageConfiguration.cpp (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/PageConfiguration.cpp        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebCore/page/PageConfiguration.cpp        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-PageConfiguration::PageConfiguration(UniqueRef&lt;EditorClient&gt;&amp;&amp; editorClient, UniqueRef&lt;SocketProvider&gt;&amp;&amp; socketProvider)
</del><ins>+PageConfiguration::PageConfiguration(UniqueRef&lt;EditorClient&gt;&amp;&amp; editorClient, Ref&lt;SocketProvider&gt;&amp;&amp; socketProvider)
</ins><span class="cx">     : editorClient(WTFMove(editorClient))
</span><span class="cx">     , socketProvider(WTFMove(socketProvider))
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceWebCorepagePageConfigurationh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/PageConfiguration.h (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/PageConfiguration.h        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebCore/page/PageConfiguration.h        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -57,7 +57,7 @@
</span><span class="cx"> class PageConfiguration {
</span><span class="cx">     WTF_MAKE_NONCOPYABLE(PageConfiguration); WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><del>-    WEBCORE_EXPORT PageConfiguration(UniqueRef&lt;EditorClient&gt;&amp;&amp;, UniqueRef&lt;SocketProvider&gt;&amp;&amp;);
</del><ins>+    WEBCORE_EXPORT PageConfiguration(UniqueRef&lt;EditorClient&gt;&amp;&amp;, Ref&lt;SocketProvider&gt;&amp;&amp;);
</ins><span class="cx">     WEBCORE_EXPORT ~PageConfiguration();
</span><span class="cx"> 
</span><span class="cx">     AlternativeTextClient* alternativeTextClient { nullptr };
</span><span class="lines">@@ -66,7 +66,7 @@
</span><span class="cx">     ContextMenuClient* contextMenuClient { nullptr };
</span><span class="cx"> #endif
</span><span class="cx">     UniqueRef&lt;EditorClient&gt; editorClient;
</span><del>-    UniqueRef&lt;SocketProvider&gt; socketProvider;
</del><ins>+    Ref&lt;SocketProvider&gt; socketProvider;
</ins><span class="cx">     DragClient* dragClient { nullptr };
</span><span class="cx">     InspectorClient* inspectorClient { nullptr };
</span><span class="cx"> #if ENABLE(APPLE_PAY)
</span></span></pre></div>
<a id="trunkSourceWebCorepageSocketProviderh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/SocketProvider.h (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/SocketProvider.h        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebCore/page/SocketProvider.h        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -25,10 +25,18 @@
</span><span class="cx"> 
</span><span class="cx"> #pragma once
</span><span class="cx"> 
</span><ins>+#include &lt;wtf/RefPtr.h&gt;
+#include &lt;wtf/ThreadSafeRefCounted.h&gt;
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-class SocketProvider {
</del><ins>+class ScriptExecutionContext;
+class ThreadableWebSocketChannel;
+class WebSocketChannelClient;
+
+class SocketProvider : public ThreadSafeRefCounted&lt;SocketProvider&gt; {
</ins><span class="cx"> public:
</span><ins>+    virtual RefPtr&lt;ThreadableWebSocketChannel&gt; createWebSocketChannel(ScriptExecutionContext&amp;, WebSocketChannelClient&amp;) = 0;
</ins><span class="cx">     virtual ~SocketProvider() { };
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoresvggraphicsSVGImagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/graphics/SVGImage.cpp (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/graphics/SVGImage.cpp        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebCore/svg/graphics/SVGImage.cpp        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -380,7 +380,7 @@
</span><span class="cx">         return true;
</span><span class="cx"> 
</span><span class="cx">     if (allDataReceived) {
</span><del>-        PageConfiguration pageConfiguration(makeUniqueRef&lt;EmptyEditorClient&gt;(), makeUniqueRef&lt;EmptySocketProvider&gt;());
</del><ins>+        PageConfiguration pageConfiguration(makeUniqueRef&lt;EmptyEditorClient&gt;(), EmptySocketProvider::create());
</ins><span class="cx">         fillWithEmptyClients(pageConfiguration);
</span><span class="cx">         m_chromeClient = std::make_unique&lt;SVGImageChromeClient&gt;(this);
</span><span class="cx">         pageConfiguration.chromeClient = m_chromeClient.get();
</span></span></pre></div>
<a id="trunkSourceWebCoreworkersDedicatedWorkerGlobalScopecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/workers/DedicatedWorkerGlobalScope.cpp (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/workers/DedicatedWorkerGlobalScope.cpp        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebCore/workers/DedicatedWorkerGlobalScope.cpp        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -41,16 +41,16 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-Ref&lt;DedicatedWorkerGlobalScope&gt; DedicatedWorkerGlobalScope::create(const URL&amp; url, const String&amp; userAgent, DedicatedWorkerThread&amp; thread, const ContentSecurityPolicyResponseHeaders&amp; contentSecurityPolicyResponseHeaders, bool shouldBypassMainWorldContentSecurityPolicy, PassRefPtr&lt;SecurityOrigin&gt; topOrigin, IDBClient::IDBConnectionProxy* connectionProxy)
</del><ins>+Ref&lt;DedicatedWorkerGlobalScope&gt; DedicatedWorkerGlobalScope::create(const URL&amp; url, const String&amp; userAgent, DedicatedWorkerThread&amp; thread, const ContentSecurityPolicyResponseHeaders&amp; contentSecurityPolicyResponseHeaders, bool shouldBypassMainWorldContentSecurityPolicy, PassRefPtr&lt;SecurityOrigin&gt; topOrigin, IDBClient::IDBConnectionProxy* connectionProxy, SocketProvider* socketProvider)
</ins><span class="cx"> {
</span><del>-    Ref&lt;DedicatedWorkerGlobalScope&gt; context = adoptRef(*new DedicatedWorkerGlobalScope(url, userAgent, thread, shouldBypassMainWorldContentSecurityPolicy, topOrigin, connectionProxy));
</del><ins>+    Ref&lt;DedicatedWorkerGlobalScope&gt; context = adoptRef(*new DedicatedWorkerGlobalScope(url, userAgent, thread, shouldBypassMainWorldContentSecurityPolicy, topOrigin, connectionProxy, socketProvider));
</ins><span class="cx">     if (!shouldBypassMainWorldContentSecurityPolicy)
</span><span class="cx">         context-&gt;applyContentSecurityPolicyResponseHeaders(contentSecurityPolicyResponseHeaders);
</span><span class="cx">     return context;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-DedicatedWorkerGlobalScope::DedicatedWorkerGlobalScope(const URL&amp; url, const String&amp; userAgent, DedicatedWorkerThread&amp; thread, bool shouldBypassMainWorldContentSecurityPolicy, PassRefPtr&lt;SecurityOrigin&gt; topOrigin, IDBClient::IDBConnectionProxy* connectionProxy)
-    : WorkerGlobalScope(url, userAgent, thread, shouldBypassMainWorldContentSecurityPolicy, topOrigin, connectionProxy)
</del><ins>+DedicatedWorkerGlobalScope::DedicatedWorkerGlobalScope(const URL&amp; url, const String&amp; userAgent, DedicatedWorkerThread&amp; thread, bool shouldBypassMainWorldContentSecurityPolicy, PassRefPtr&lt;SecurityOrigin&gt; topOrigin, IDBClient::IDBConnectionProxy* connectionProxy, SocketProvider* socketProvider)
+    : WorkerGlobalScope(url, userAgent, thread, shouldBypassMainWorldContentSecurityPolicy, topOrigin, connectionProxy, socketProvider)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreworkersDedicatedWorkerGlobalScopeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/workers/DedicatedWorkerGlobalScope.h (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/workers/DedicatedWorkerGlobalScope.h        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebCore/workers/DedicatedWorkerGlobalScope.h        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -42,7 +42,7 @@
</span><span class="cx">     class DedicatedWorkerGlobalScope : public WorkerGlobalScope {
</span><span class="cx">     public:
</span><span class="cx">         typedef WorkerGlobalScope Base;
</span><del>-        static Ref&lt;DedicatedWorkerGlobalScope&gt; create(const URL&amp;, const String&amp; userAgent, DedicatedWorkerThread&amp;, const ContentSecurityPolicyResponseHeaders&amp;, bool shouldBypassMainWorldContentSecurityPolicy, PassRefPtr&lt;SecurityOrigin&gt; topOrigin, IDBClient::IDBConnectionProxy*);
</del><ins>+        static Ref&lt;DedicatedWorkerGlobalScope&gt; create(const URL&amp;, const String&amp; userAgent, DedicatedWorkerThread&amp;, const ContentSecurityPolicyResponseHeaders&amp;, bool shouldBypassMainWorldContentSecurityPolicy, PassRefPtr&lt;SecurityOrigin&gt; topOrigin, IDBClient::IDBConnectionProxy*, SocketProvider*);
</ins><span class="cx">         virtual ~DedicatedWorkerGlobalScope();
</span><span class="cx"> 
</span><span class="cx">         bool isDedicatedWorkerGlobalScope() const override { return true; }
</span><span class="lines">@@ -60,7 +60,7 @@
</span><span class="cx">         DedicatedWorkerThread&amp; thread();
</span><span class="cx"> 
</span><span class="cx">     private:
</span><del>-        DedicatedWorkerGlobalScope(const URL&amp;, const String&amp; userAgent, DedicatedWorkerThread&amp;, bool shouldBypassMainWorldContentSecurityPolicy, PassRefPtr&lt;SecurityOrigin&gt; topOrigin, IDBClient::IDBConnectionProxy*);
</del><ins>+        DedicatedWorkerGlobalScope(const URL&amp;, const String&amp; userAgent, DedicatedWorkerThread&amp;, bool shouldBypassMainWorldContentSecurityPolicy, PassRefPtr&lt;SecurityOrigin&gt; topOrigin, IDBClient::IDBConnectionProxy*, SocketProvider*);
</ins><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreworkersDedicatedWorkerThreadcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/workers/DedicatedWorkerThread.cpp (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/workers/DedicatedWorkerThread.cpp        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebCore/workers/DedicatedWorkerThread.cpp        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -38,8 +38,8 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-DedicatedWorkerThread::DedicatedWorkerThread(const URL&amp; url, const String&amp; userAgent, const String&amp; sourceCode, WorkerLoaderProxy&amp; workerLoaderProxy, WorkerObjectProxy&amp; workerObjectProxy, WorkerThreadStartMode startMode, const ContentSecurityPolicyResponseHeaders&amp; contentSecurityPolicyResponseHeaders, bool shouldBypassMainWorldContentSecurityPolicy, const SecurityOrigin* topOrigin, IDBClient::IDBConnectionProxy* connectionProxy)
-    : WorkerThread(url, userAgent, sourceCode, workerLoaderProxy, workerObjectProxy, startMode, contentSecurityPolicyResponseHeaders, shouldBypassMainWorldContentSecurityPolicy, topOrigin, connectionProxy)
</del><ins>+DedicatedWorkerThread::DedicatedWorkerThread(const URL&amp; url, const String&amp; userAgent, const String&amp; sourceCode, WorkerLoaderProxy&amp; workerLoaderProxy, WorkerObjectProxy&amp; workerObjectProxy, WorkerThreadStartMode startMode, const ContentSecurityPolicyResponseHeaders&amp; contentSecurityPolicyResponseHeaders, bool shouldBypassMainWorldContentSecurityPolicy, const SecurityOrigin* topOrigin, IDBClient::IDBConnectionProxy* connectionProxy, SocketProvider* socketProvider)
+    : WorkerThread(url, userAgent, sourceCode, workerLoaderProxy, workerObjectProxy, startMode, contentSecurityPolicyResponseHeaders, shouldBypassMainWorldContentSecurityPolicy, topOrigin, connectionProxy, socketProvider)
</ins><span class="cx">     , m_workerObjectProxy(workerObjectProxy)
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="lines">@@ -50,7 +50,7 @@
</span><span class="cx"> 
</span><span class="cx"> Ref&lt;WorkerGlobalScope&gt; DedicatedWorkerThread::createWorkerGlobalScope(const URL&amp; url, const String&amp; userAgent, const ContentSecurityPolicyResponseHeaders&amp; contentSecurityPolicyResponseHeaders, bool shouldBypassMainWorldContentSecurityPolicy, PassRefPtr&lt;SecurityOrigin&gt; topOrigin)
</span><span class="cx"> {
</span><del>-    return DedicatedWorkerGlobalScope::create(url, userAgent, *this, contentSecurityPolicyResponseHeaders, shouldBypassMainWorldContentSecurityPolicy, topOrigin, idbConnectionProxy());
</del><ins>+    return DedicatedWorkerGlobalScope::create(url, userAgent, *this, contentSecurityPolicyResponseHeaders, shouldBypassMainWorldContentSecurityPolicy, topOrigin, idbConnectionProxy(), socketProvider());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void DedicatedWorkerThread::runEventLoop()
</span></span></pre></div>
<a id="trunkSourceWebCoreworkersDedicatedWorkerThreadh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/workers/DedicatedWorkerThread.h (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/workers/DedicatedWorkerThread.h        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebCore/workers/DedicatedWorkerThread.h        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -53,7 +53,7 @@
</span><span class="cx">     void runEventLoop() override;
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    DedicatedWorkerThread(const URL&amp;, const String&amp; userAgent, const String&amp; sourceCode, WorkerLoaderProxy&amp;, WorkerObjectProxy&amp;, WorkerThreadStartMode, const ContentSecurityPolicyResponseHeaders&amp;, bool shouldBypassMainWorldContentSecurityPolicy, const SecurityOrigin* topOrigin, IDBClient::IDBConnectionProxy*);
</del><ins>+    DedicatedWorkerThread(const URL&amp;, const String&amp; userAgent, const String&amp; sourceCode, WorkerLoaderProxy&amp;, WorkerObjectProxy&amp;, WorkerThreadStartMode, const ContentSecurityPolicyResponseHeaders&amp;, bool shouldBypassMainWorldContentSecurityPolicy, const SecurityOrigin* topOrigin, IDBClient::IDBConnectionProxy*, SocketProvider*);
</ins><span class="cx"> 
</span><span class="cx">     WorkerObjectProxy&amp; m_workerObjectProxy;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreworkersWorkerGlobalScopecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/workers/WorkerGlobalScope.cpp (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/workers/WorkerGlobalScope.cpp        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebCore/workers/WorkerGlobalScope.cpp        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -43,6 +43,7 @@
</span><span class="cx"> #include &quot;ScriptSourceCode.h&quot;
</span><span class="cx"> #include &quot;SecurityOrigin.h&quot;
</span><span class="cx"> #include &quot;SecurityOriginPolicy.h&quot;
</span><ins>+#include &quot;SocketProvider.h&quot;
</ins><span class="cx"> #include &quot;URL.h&quot;
</span><span class="cx"> #include &quot;WorkerLocation.h&quot;
</span><span class="cx"> #include &quot;WorkerNavigator.h&quot;
</span><span class="lines">@@ -63,7 +64,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-WorkerGlobalScope::WorkerGlobalScope(const URL&amp; url, const String&amp; userAgent, WorkerThread&amp; thread, bool shouldBypassMainWorldContentSecurityPolicy, PassRefPtr&lt;SecurityOrigin&gt; topOrigin, IDBClient::IDBConnectionProxy* connectionProxy)
</del><ins>+WorkerGlobalScope::WorkerGlobalScope(const URL&amp; url, const String&amp; userAgent, WorkerThread&amp; thread, bool shouldBypassMainWorldContentSecurityPolicy, RefPtr&lt;SecurityOrigin&gt;&amp;&amp; topOrigin, IDBClient::IDBConnectionProxy* connectionProxy, SocketProvider* socketProvider)
</ins><span class="cx">     : m_url(url)
</span><span class="cx">     , m_userAgent(userAgent)
</span><span class="cx">     , m_script(std::make_unique&lt;WorkerScriptController&gt;(this))
</span><span class="lines">@@ -75,6 +76,9 @@
</span><span class="cx"> #if ENABLE(INDEXED_DATABASE)
</span><span class="cx">     , m_connectionProxy(connectionProxy)
</span><span class="cx"> #endif
</span><ins>+#if ENABLE(WEB_SOCKETS)
+    , m_socketProvider(socketProvider)
+#endif
</ins><span class="cx"> {
</span><span class="cx"> #if !ENABLE(INDEXED_DATABASE)
</span><span class="cx">     UNUSED_PARAM(connectionProxy);
</span><span class="lines">@@ -123,6 +127,13 @@
</span><span class="cx">     m_script-&gt;disableEval(errorMessage);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if ENABLE(WEB_SOCKETS)
+SocketProvider* WorkerGlobalScope::socketProvider()
+{
+    return m_socketProvider.get();
+}
+#endif
+
</ins><span class="cx"> #if ENABLE(INDEXED_DATABASE)
</span><span class="cx"> IDBClient::IDBConnectionProxy* WorkerGlobalScope::idbConnectionProxy()
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceWebCoreworkersWorkerGlobalScopeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/workers/WorkerGlobalScope.h (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/workers/WorkerGlobalScope.h        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebCore/workers/WorkerGlobalScope.h        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -36,7 +36,6 @@
</span><span class="cx"> #include &lt;memory&gt;
</span><span class="cx"> #include &lt;wtf/Assertions.h&gt;
</span><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</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/TypeCasts.h&gt;
</span><span class="lines">@@ -81,6 +80,10 @@
</span><span class="cx">     void stopIndexedDatabase();
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if ENABLE(WEB_SOCKETS)
+    SocketProvider* socketProvider() final;
+#endif
+
</ins><span class="cx">     bool shouldBypassMainWorldContentSecurityPolicy() const final { return m_shouldBypassMainWorldContentSecurityPolicy; }
</span><span class="cx"> 
</span><span class="cx">     WorkerScriptController* script() { return m_script.get(); }
</span><span class="lines">@@ -147,7 +150,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> protected:
</span><del>-    WorkerGlobalScope(const URL&amp;, const String&amp; userAgent, WorkerThread&amp;, bool shouldBypassMainWorldContentSecurityPolicy, PassRefPtr&lt;SecurityOrigin&gt; topOrigin, IDBClient::IDBConnectionProxy*);
</del><ins>+    WorkerGlobalScope(const URL&amp;, const String&amp; userAgent, WorkerThread&amp;, bool shouldBypassMainWorldContentSecurityPolicy, RefPtr&lt;SecurityOrigin&gt;&amp;&amp; topOrigin, IDBClient::IDBConnectionProxy*, SocketProvider*);
</ins><span class="cx">     void applyContentSecurityPolicyResponseHeaders(const ContentSecurityPolicyResponseHeaders&amp;);
</span><span class="cx"> 
</span><span class="cx">     void logExceptionToConsole(const String&amp; errorMessage, const String&amp; sourceURL, int lineNumber, int columnNumber, RefPtr&lt;Inspector::ScriptCallStack&gt;&amp;&amp;) override;
</span><span class="lines">@@ -188,6 +191,9 @@
</span><span class="cx"> #if ENABLE(INDEXED_DATABASE)
</span><span class="cx">     RefPtr&lt;IDBClient::IDBConnectionProxy&gt; m_connectionProxy;
</span><span class="cx"> #endif
</span><ins>+#if ENABLE(WEB_SOCKETS)
+    RefPtr&lt;SocketProvider&gt; m_socketProvider;
+#endif
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreworkersWorkerMessagingProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/workers/WorkerMessagingProxy.cpp (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/workers/WorkerMessagingProxy.cpp        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebCore/workers/WorkerMessagingProxy.cpp        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -79,11 +79,19 @@
</span><span class="cx">     Document&amp; document = downcast&lt;Document&gt;(*m_scriptExecutionContext);
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INDEXED_DATABASE)
</span><del>-    RefPtr&lt;DedicatedWorkerThread&gt; thread = DedicatedWorkerThread::create(scriptURL, userAgent, sourceCode, *this, *this, startMode, contentSecurityPolicyResponseHeaders, shouldBypassMainWorldContentSecurityPolicy, document.topOrigin(), document.idbConnectionProxy());
</del><ins>+    IDBClient::IDBConnectionProxy* proxy = document.idbConnectionProxy();
</ins><span class="cx"> #else
</span><del>-    RefPtr&lt;DedicatedWorkerThread&gt; thread = DedicatedWorkerThread::create(scriptURL, userAgent, sourceCode, *this, *this, startMode, contentSecurityPolicyResponseHeaders, shouldBypassMainWorldContentSecurityPolicy, document.topOrigin(), nullptr);
</del><ins>+    IDBClient::IDBConnectionProxy* proxy = nullptr;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if ENABLE(WEB_SOCKETS)
+    SocketProvider* socketProvider = document.socketProvider();
+#else
+    SocketProvider* socketProvider = nullptr;
+#endif
+
+    RefPtr&lt;DedicatedWorkerThread&gt; thread = DedicatedWorkerThread::create(scriptURL, userAgent, sourceCode, *this, *this, startMode, contentSecurityPolicyResponseHeaders, shouldBypassMainWorldContentSecurityPolicy, document.topOrigin(), proxy, socketProvider);
+
</ins><span class="cx">     workerThreadCreated(thread);
</span><span class="cx">     thread-&gt;start();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreworkersWorkerThreadcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/workers/WorkerThread.cpp (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/workers/WorkerThread.cpp        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebCore/workers/WorkerThread.cpp        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -33,6 +33,7 @@
</span><span class="cx"> #include &quot;IDBConnectionProxy.h&quot;
</span><span class="cx"> #include &quot;ScriptSourceCode.h&quot;
</span><span class="cx"> #include &quot;SecurityOrigin.h&quot;
</span><ins>+#include &quot;SocketProvider.h&quot;
</ins><span class="cx"> #include &quot;ThreadGlobalData.h&quot;
</span><span class="cx"> #include &quot;URL.h&quot;
</span><span class="cx"> #include &lt;utility&gt;
</span><span class="lines">@@ -93,7 +94,7 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-WorkerThread::WorkerThread(const URL&amp; scriptURL, const String&amp; userAgent, const String&amp; sourceCode, WorkerLoaderProxy&amp; workerLoaderProxy, WorkerReportingProxy&amp; workerReportingProxy, WorkerThreadStartMode startMode, const ContentSecurityPolicyResponseHeaders&amp; contentSecurityPolicyResponseHeaders, bool shouldBypassMainWorldContentSecurityPolicy, const SecurityOrigin* topOrigin, IDBClient::IDBConnectionProxy* connectionProxy)
</del><ins>+WorkerThread::WorkerThread(const URL&amp; scriptURL, const String&amp; userAgent, const String&amp; sourceCode, WorkerLoaderProxy&amp; workerLoaderProxy, WorkerReportingProxy&amp; workerReportingProxy, WorkerThreadStartMode startMode, const ContentSecurityPolicyResponseHeaders&amp; contentSecurityPolicyResponseHeaders, bool shouldBypassMainWorldContentSecurityPolicy, const SecurityOrigin* topOrigin, IDBClient::IDBConnectionProxy* connectionProxy, SocketProvider* socketProvider)
</ins><span class="cx">     : m_threadID(0)
</span><span class="cx">     , m_workerLoaderProxy(workerLoaderProxy)
</span><span class="cx">     , m_workerReportingProxy(workerReportingProxy)
</span><span class="lines">@@ -104,6 +105,9 @@
</span><span class="cx"> #if ENABLE(INDEXED_DATABASE)
</span><span class="cx">     , m_idbConnectionProxy(connectionProxy)
</span><span class="cx"> #endif
</span><ins>+#if ENABLE(WEB_SOCKETS)
+    , m_socketProvider(socketProvider)
+#endif
</ins><span class="cx"> {
</span><span class="cx"> #if !ENABLE(INDEXED_DATABASE)
</span><span class="cx">     UNUSED_PARAM(connectionProxy);
</span><span class="lines">@@ -253,4 +257,13 @@
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+SocketProvider* WorkerThread::socketProvider()
+{
+#if ENABLE(WEB_SOCKETS)
+    return m_socketProvider.get();
+#else
+    return nullptr;
+#endif
+}
+
</ins><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreworkersWorkerThreadh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/workers/WorkerThread.h (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/workers/WorkerThread.h        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebCore/workers/WorkerThread.h        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -38,6 +38,7 @@
</span><span class="cx"> class URL;
</span><span class="cx"> class NotificationClient;
</span><span class="cx"> class SecurityOrigin;
</span><ins>+class SocketProvider;
</ins><span class="cx"> class WorkerGlobalScope;
</span><span class="cx"> class WorkerLoaderProxy;
</span><span class="cx"> class WorkerReportingProxy;
</span><span class="lines">@@ -72,7 +73,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> protected:
</span><del>-    WorkerThread(const URL&amp;, const String&amp; userAgent, const String&amp; sourceCode, WorkerLoaderProxy&amp;, WorkerReportingProxy&amp;, WorkerThreadStartMode, const ContentSecurityPolicyResponseHeaders&amp;, bool shouldBypassMainWorldContentSecurityPolicy, const SecurityOrigin* topOrigin, IDBClient::IDBConnectionProxy*);
</del><ins>+    WorkerThread(const URL&amp;, const String&amp; userAgent, const String&amp; sourceCode, WorkerLoaderProxy&amp;, WorkerReportingProxy&amp;, WorkerThreadStartMode, const ContentSecurityPolicyResponseHeaders&amp;, bool shouldBypassMainWorldContentSecurityPolicy, const SecurityOrigin* topOrigin, IDBClient::IDBConnectionProxy*, SocketProvider*);
</ins><span class="cx"> 
</span><span class="cx">     // Factory method for creating a new worker context for the thread.
</span><span class="cx">     virtual Ref&lt;WorkerGlobalScope&gt; createWorkerGlobalScope(const URL&amp;, const String&amp; userAgent, const ContentSecurityPolicyResponseHeaders&amp;, bool shouldBypassMainWorldContentSecurityPolicy, PassRefPtr&lt;SecurityOrigin&gt; topOrigin) = 0;
</span><span class="lines">@@ -83,6 +84,7 @@
</span><span class="cx">     WorkerGlobalScope* workerGlobalScope() { return m_workerGlobalScope.get(); }
</span><span class="cx"> 
</span><span class="cx">     IDBClient::IDBConnectionProxy* idbConnectionProxy();
</span><ins>+    SocketProvider* socketProvider();
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     // Static function executed as the core routine on the new thread. Passed a pointer to a WorkerThread object.
</span><span class="lines">@@ -106,6 +108,9 @@
</span><span class="cx"> #if ENABLE(INDEXED_DATABASE)
</span><span class="cx">     RefPtr&lt;IDBClient::IDBConnectionProxy&gt; m_idbConnectionProxy;
</span><span class="cx"> #endif
</span><ins>+#if ENABLE(WEB_SOCKETS)
+    RefPtr&lt;SocketProvider&gt; m_socketProvider;
+#endif
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebKitChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/ChangeLog (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/ChangeLog        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebKit/ChangeLog        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -1,3 +1,14 @@
</span><ins>+2016-07-07  Alex Christensen  &lt;achristensen@webkit.org&gt;
+
+        Use SocketProvider to create WebSocketChannels
+        https://bugs.webkit.org/show_bug.cgi?id=158776
+
+        Reviewed by Brent Fulgham.
+
+        * PlatformMac.cmake:
+        * PlatformWin.cmake:
+        * WebKit.xcodeproj/project.pbxproj:
+
</ins><span class="cx"> 2016-07-03  Per Arne Vollan  &lt;pvollan@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [Win] DLLs are missing version information.
</span></span></pre></div>
<a id="trunkSourceWebKitPlatformMaccmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/PlatformMac.cmake (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/PlatformMac.cmake        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebKit/PlatformMac.cmake        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -114,6 +114,7 @@
</span><span class="cx">     mac/Misc/WebNSViewExtras.m
</span><span class="cx">     mac/Misc/WebNSWindowExtras.m
</span><span class="cx">     mac/Misc/WebSharingServicePickerController.mm
</span><ins>+    mac/Misc/WebSocketProvider.mm
</ins><span class="cx">     mac/Misc/WebStringTruncator.mm
</span><span class="cx">     mac/Misc/WebUserContentURLPattern.mm
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKitPlatformWincmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/PlatformWin.cmake (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/PlatformWin.cmake        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebKit/PlatformWin.cmake        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -195,6 +195,7 @@
</span><span class="cx">     win/WebScriptWorld.cpp
</span><span class="cx">     win/WebSecurityOrigin.cpp
</span><span class="cx">     win/WebSerializedJSValue.cpp
</span><ins>+    win/WebSocketProvider.cpp
</ins><span class="cx">     win/WebTextRenderer.cpp
</span><span class="cx">     win/WebURLAuthenticationChallenge.cpp
</span><span class="cx">     win/WebURLAuthenticationChallengeSender.cpp
</span></span></pre></div>
<a id="trunkSourceWebKitWebKitxcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -147,6 +147,8 @@
</span><span class="cx">                 598AD9281201CF3200ABAE4E /* WebDeviceOrientationProviderMock.mm in Sources */ = {isa = PBXBuildFile; fileRef = 598AD9271201CF3200ABAE4E /* WebDeviceOrientationProviderMock.mm */; };
</span><span class="cx">                 598AD92A1201CF3B00ABAE4E /* WebDeviceOrientationProviderMockInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 598AD9291201CF3B00ABAE4E /* WebDeviceOrientationProviderMockInternal.h */; };
</span><span class="cx">                 598ADA461202275000ABAE4E /* WebDeviceOrientationProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 598ADA451202275000ABAE4E /* WebDeviceOrientationProvider.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><ins>+                5C7706701D111B020012700F /* WebSocketProvider.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5C77066F1D111B020012700F /* WebSocketProvider.mm */; };
+                5C7706721D111B220012700F /* QuickDrawCompatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C7706711D111B220012700F /* QuickDrawCompatibility.h */; };
</ins><span class="cx">                 5C7C88DA1D0F3BF2009D2F6D /* WebSocketProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C7C88D91D0F3BF2009D2F6D /* WebSocketProvider.h */; };
</span><span class="cx">                 5D7BF8140C2A1D90008CE06D /* WebInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D7BF8120C2A1D90008CE06D /* WebInspector.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 5D7BF8150C2A1D90008CE06D /* WebInspector.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5D7BF8130C2A1D90008CE06D /* WebInspector.mm */; };
</span><span class="lines">@@ -649,6 +651,8 @@
</span><span class="cx">                 598AD9271201CF3200ABAE4E /* WebDeviceOrientationProviderMock.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebDeviceOrientationProviderMock.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 598AD9291201CF3B00ABAE4E /* WebDeviceOrientationProviderMockInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebDeviceOrientationProviderMockInternal.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 598ADA451202275000ABAE4E /* WebDeviceOrientationProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebDeviceOrientationProvider.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                5C77066F1D111B020012700F /* WebSocketProvider.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebSocketProvider.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                5C7706711D111B220012700F /* QuickDrawCompatibility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QuickDrawCompatibility.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 5C7C88D91D0F3BF2009D2F6D /* WebSocketProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebSocketProvider.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 5D7BF8120C2A1D90008CE06D /* WebInspector.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WebInspector.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 5D7BF8130C2A1D90008CE06D /* WebInspector.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = WebInspector.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -1093,6 +1097,8 @@
</span><span class="cx">                 254DC334016E1D3F0ECA149E /* Misc */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><ins>+                                5C7706711D111B220012700F /* QuickDrawCompatibility.h */,
+                                5C77066F1D111B020012700F /* WebSocketProvider.mm */,
</ins><span class="cx">                                 5C7C88D91D0F3BF2009D2F6D /* WebSocketProvider.h */,
</span><span class="cx">                                 A10C1D2018202FAF0036883A /* ios */,
</span><span class="cx">                                 1CCFFD120B1F81F2002EE926 /* OldWebAssertions.c */,
</span><span class="lines">@@ -1958,6 +1964,7 @@
</span><span class="cx">                                 939810150824BF01008DF038 /* WebURLsWithTitles.h in Headers */,
</span><span class="cx">                                 C0C5B3EE1177A4A0002B0AEF /* WebUserContentURLPattern.h in Headers */,
</span><span class="cx">                                 070F549B17F1E42B00169E04 /* WebUserMediaClient.h in Headers */,
</span><ins>+                                5C7706721D111B220012700F /* QuickDrawCompatibility.h in Headers */,
</ins><span class="cx">                                 939810700824BF01008DF038 /* WebView.h in Headers */,
</span><span class="cx">                                 BC2E464D0FD8A96800A9D9DE /* WebViewData.h in Headers */,
</span><span class="cx">                                 1430C12D1B2C5DF700DEA01D /* WebViewGroup.h in Headers */,
</span><span class="lines">@@ -2271,6 +2278,7 @@
</span><span class="cx">                                 1C0D40880AC1C8F40009C113 /* WebKitVersionChecks.m in Sources */,
</span><span class="cx">                                 ED5B9524111B725A00472298 /* WebLocalizableStrings.mm in Sources */,
</span><span class="cx">                                 BC42D34D131ED3880075FA4B /* WebLocalizableStringsInternal.mm in Sources */,
</span><ins>+                                5C7706701D111B020012700F /* WebSocketProvider.mm in Sources */,
</ins><span class="cx">                                 072E5F461ABF88750003B164 /* WebMediaPlaybackTargetPicker.mm in Sources */,
</span><span class="cx">                                 A10C1D731820300E0036883A /* WebMIMETypeRegistry.mm in Sources */,
</span><span class="cx">                                 5185F62810712B97007AA393 /* WebNavigationData.mm in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebKitmacChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/ChangeLog (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/ChangeLog        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebKit/mac/ChangeLog        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -1,3 +1,18 @@
</span><ins>+2016-07-07  Alex Christensen  &lt;achristensen@webkit.org&gt;
+
+        Use SocketProvider to create WebSocketChannels
+        https://bugs.webkit.org/show_bug.cgi?id=158776
+
+        Reviewed by Brent Fulgham.
+
+        * Misc/WebSocketProvider.mm: Copied from Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.cpp.
+        (WebSocketProvider::createWebSocketChannel):
+        (WebCore::ThreadableWebSocketChannel::create): Deleted.
+        * Misc/WebSocketProvider.h:
+        * WebView/WebView.mm:
+        (-[WebView _commonInitializationWithFrameName:groupName:]):
+        (-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):
+
</ins><span class="cx"> 2016-07-06  Benjamin Poulain  &lt;bpoulain@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [JSC] Unify how we throw TypeError from C++
</span></span></pre></div>
<a id="trunkSourceWebKitmacMiscWebSocketProviderh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/Misc/WebSocketProvider.h (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/Misc/WebSocketProvider.h        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebKit/mac/Misc/WebSocketProvider.h        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -25,7 +25,11 @@
</span><span class="cx"> 
</span><span class="cx"> #pragma once
</span><span class="cx"> 
</span><del>-#include &lt;WebCore/SocketProvider.h&gt;
</del><ins>+#import &lt;WebCore/SocketProvider.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> class WebSocketProvider final : public WebCore::SocketProvider {
</span><ins>+public:
+    static Ref&lt;WebSocketProvider&gt; create() { return adoptRef(*new WebSocketProvider); }
+    RefPtr&lt;WebCore::ThreadableWebSocketChannel&gt; createWebSocketChannel(WebCore::ScriptExecutionContext&amp;, WebCore::WebSocketChannelClient&amp;) override;
+    virtual ~WebSocketProvider() { }
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebKitmacMiscWebSocketProvidermmfromrev202929trunkSourceWebCoreModuleswebsocketsThreadableWebSocketChannelcpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebKit/mac/Misc/WebSocketProvider.mm (from rev 202929, trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.cpp) (0 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/Misc/WebSocketProvider.mm                                (rev 0)
+++ trunk/Source/WebKit/mac/Misc/WebSocketProvider.mm        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -0,0 +1,64 @@
</span><ins>+/*
+ * Copyright (C) 2009, 2012 Google Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;WebSocketProvider.h&quot;
+
+#if ENABLE(WEB_SOCKETS)
+
+#import &lt;WebCore/Document.h&gt;
+#import &lt;WebCore/ScriptExecutionContext.h&gt;
+#import &lt;WebCore/ThreadableWebSocketChannelClientWrapper.h&gt;
+#import &lt;WebCore/WebSocketChannel.h&gt;
+#import &lt;WebCore/WebSocketChannelClient.h&gt;
+#import &lt;WebCore/WorkerGlobalScope.h&gt;
+#import &lt;WebCore/WorkerRunLoop.h&gt;
+#import &lt;WebCore/WorkerThread.h&gt;
+#import &lt;WebCore/WorkerThreadableWebSocketChannel.h&gt;
+#import &lt;wtf/text/StringBuilder.h&gt;
+
+using namespace WebCore;
+
+static const char webSocketChannelMode[] = &quot;webSocketChannelMode&quot;;
+
+RefPtr&lt;ThreadableWebSocketChannel&gt; WebSocketProvider::createWebSocketChannel(ScriptExecutionContext&amp; context, WebSocketChannelClient&amp; client)
+{
+    if (is&lt;WorkerGlobalScope&gt;(context)) {
+        WorkerGlobalScope&amp; workerGlobalScope = downcast&lt;WorkerGlobalScope&gt;(context);
+        WorkerRunLoop&amp; runLoop = workerGlobalScope.thread().runLoop();
+        StringBuilder mode;
+        mode.appendLiteral(webSocketChannelMode);
+        mode.appendNumber(runLoop.createUniqueId());
+        return WorkerThreadableWebSocketChannel::create(workerGlobalScope, client, mode.toString());
+    }
+
+    return WebSocketChannel::create(downcast&lt;Document&gt;(context), client);
+}
+
+#endif // ENABLE(WEB_SOCKETS)
</ins></span></pre></div>
<a id="trunkSourceWebKitmacWebViewWebViewmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebView/WebView.mm (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebView/WebView.mm        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebKit/mac/WebView/WebView.mm        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -996,7 +996,7 @@
</span><span class="cx">     _private-&gt;group = WebViewGroup::getOrCreate(groupName, _private-&gt;preferences._localStorageDatabasePath);
</span><span class="cx">     _private-&gt;group-&gt;addWebView(self);
</span><span class="cx"> 
</span><del>-    PageConfiguration pageConfiguration(makeUniqueRef&lt;WebEditorClient&gt;(self), makeUniqueRef&lt;WebSocketProvider&gt;());
</del><ins>+    PageConfiguration pageConfiguration(makeUniqueRef&lt;WebEditorClient&gt;(self), WebSocketProvider::create());
</ins><span class="cx"> #if !PLATFORM(IOS)
</span><span class="cx">     pageConfiguration.chromeClient = new WebChromeClient(self);
</span><span class="cx">     pageConfiguration.contextMenuClient = new WebContextMenuClient(self);
</span><span class="lines">@@ -1246,7 +1246,7 @@
</span><span class="cx">     _private-&gt;group = WebViewGroup::getOrCreate(groupName, _private-&gt;preferences._localStorageDatabasePath);
</span><span class="cx">     _private-&gt;group-&gt;addWebView(self);
</span><span class="cx"> 
</span><del>-    PageConfiguration pageConfiguration(makeUniqueRef&lt;WebEditorClient&gt;(self), makeUniqueRef&lt;WebSocketProvider&gt;());
</del><ins>+    PageConfiguration pageConfiguration(makeUniqueRef&lt;WebEditorClient&gt;(self), WebSocketProvider::create());
</ins><span class="cx">     pageConfiguration.chromeClient = new WebChromeClientIOS(self);
</span><span class="cx"> #if ENABLE(DRAG_SUPPORT)
</span><span class="cx">     pageConfiguration.dragClient = new WebDragClient(self);
</span></span></pre></div>
<a id="trunkSourceWebKitwinChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/ChangeLog (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/ChangeLog        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebKit/win/ChangeLog        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -1,3 +1,15 @@
</span><ins>+2016-07-07  Alex Christensen  &lt;achristensen@webkit.org&gt;
+
+        Use SocketProvider to create WebSocketChannels
+        https://bugs.webkit.org/show_bug.cgi?id=158776
+
+        Reviewed by Brent Fulgham.
+
+        * WebSocketProvider.cpp: Copied from Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.cpp.
+        (WebSocketProvider::createWebSocketChannel):
+        (WebCore::ThreadableWebSocketChannel::create): Deleted.
+        * WebSocketProvider.h:
+
</ins><span class="cx"> 2016-07-06  Per Arne Vollan  &lt;pvollan@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [Win] Add null pointer check in gesture handling.
</span></span></pre></div>
<a id="trunkSourceWebKitwinWebSocketProvidercppfromrev202929trunkSourceWebCoreModuleswebsocketsThreadableWebSocketChannelcpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebKit/win/WebSocketProvider.cpp (from rev 202929, trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.cpp) (0 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/WebSocketProvider.cpp                                (rev 0)
+++ trunk/Source/WebKit/win/WebSocketProvider.cpp        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -0,0 +1,65 @@
</span><ins>+/*
+ * Copyright (C) 2009, 2012 Google Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;WebSocketProvider.h&quot;
+
+#if ENABLE(WEB_SOCKETS)
+
+#include &lt;WebCore/Document.h&gt;
+#include &lt;WebCore/ScriptExecutionContext.h&gt;
+#include &lt;WebCore/ThreadableWebSocketChannelClientWrapper.h&gt;
+#include &lt;WebCore/WebSocketChannel.h&gt;
+#include &lt;WebCore/WebSocketChannelClient.h&gt;
+#include &lt;WebCore/WorkerGlobalScope.h&gt;
+#include &lt;WebCore/WorkerRunLoop.h&gt;
+#include &lt;WebCore/WorkerThread.h&gt;
+#include &lt;WebCore/WorkerThreadableWebSocketChannel.h&gt;
+#include &lt;wtf/text/StringBuilder.h&gt;
+
+using namespace WebCore;
+
+static const char webSocketChannelMode[] = &quot;webSocketChannelMode&quot;;
+
+RefPtr&lt;ThreadableWebSocketChannel&gt; WebSocketProvider::createWebSocketChannel(ScriptExecutionContext&amp; context, WebSocketChannelClient&amp; client)
+{
+    if (is&lt;WorkerGlobalScope&gt;(context)) {
+        WorkerGlobalScope&amp; workerGlobalScope = downcast&lt;WorkerGlobalScope&gt;(context);
+        WorkerRunLoop&amp; runLoop = workerGlobalScope.thread().runLoop();
+        StringBuilder mode;
+        mode.appendLiteral(webSocketChannelMode);
+        mode.appendNumber(runLoop.createUniqueId());
+        return WorkerThreadableWebSocketChannel::create(workerGlobalScope, client, mode.toString());
+    }
+
+    return WebSocketChannel::create(downcast&lt;Document&gt;(context), client);
+}
+
+#endif // ENABLE(WEB_SOCKETS)
</ins></span></pre></div>
<a id="trunkSourceWebKitwinWebSocketProviderh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/WebSocketProvider.h (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/WebSocketProvider.h        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebKit/win/WebSocketProvider.h        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -28,4 +28,8 @@
</span><span class="cx"> #include &lt;WebCore/SocketProvider.h&gt;
</span><span class="cx"> 
</span><span class="cx"> class WebSocketProvider final : public WebCore::SocketProvider {
</span><ins>+public:
+    static Ref&lt;WebSocketProvider&gt; create() { return adoptRef(*new WebSocketProvider); }
+    RefPtr&lt;WebCore::ThreadableWebSocketChannel&gt; createWebSocketChannel(WebCore::ScriptExecutionContext&amp;, WebCore::WebSocketChannelClient&amp;) override;
+    virtual ~WebSocketProvider() { }
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebKit2CMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/CMakeLists.txt (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/CMakeLists.txt        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebKit2/CMakeLists.txt        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -133,6 +133,7 @@
</span><span class="cx">     &quot;${WEBCORE_DIR}/svg&quot;
</span><span class="cx">     &quot;${WEBCORE_DIR}/svg/graphics&quot;
</span><span class="cx">     &quot;${WEBCORE_DIR}/svg/properties&quot;
</span><ins>+    &quot;${WEBCORE_DIR}/workers&quot;
</ins><span class="cx">     &quot;${JAVASCRIPTCORE_DIR}&quot;
</span><span class="cx">     &quot;${JAVASCRIPTCORE_DIR}/ForwardingHeaders&quot;
</span><span class="cx">     &quot;${JAVASCRIPTCORE_DIR}/API&quot;
</span><span class="lines">@@ -573,6 +574,7 @@
</span><span class="cx">     WebProcess/Network/NetworkProcessConnection.cpp
</span><span class="cx">     WebProcess/Network/WebLoaderStrategy.cpp
</span><span class="cx">     WebProcess/Network/WebResourceLoader.cpp
</span><ins>+    WebProcess/Network/WebSocketProvider.cpp
</ins><span class="cx"> 
</span><span class="cx">     WebProcess/Notifications/NotificationPermissionRequestManager.cpp
</span><span class="cx">     WebProcess/Notifications/WebNotificationManager.cpp
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebKit2/ChangeLog        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -1,3 +1,19 @@
</span><ins>+2016-07-07  Alex Christensen  &lt;achristensen@webkit.org&gt;
+
+        Use SocketProvider to create WebSocketChannels
+        https://bugs.webkit.org/show_bug.cgi?id=158776
+
+        Reviewed by Brent Fulgham.
+
+        * CMakeLists.txt:
+        * WebKit2.xcodeproj/project.pbxproj:
+        * WebProcess/Network/WebSocketProvider.cpp: Copied from Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.cpp.
+        (WebKit::WebSocketProvider::createWebSocketChannel):
+        (WebCore::ThreadableWebSocketChannel::create): Deleted.
+        * WebProcess/Network/WebSocketProvider.h:
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::m_shouldDispatchFakeMouseMoveEvents):
+
</ins><span class="cx"> 2016-07-07  Antoine Quint  &lt;graouts@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         &lt;img&gt; with a wide gamut PDF does not display using a wide gamut color space
</span></span></pre></div>
<a id="trunkSourceWebKit2WebKit2xcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -1045,6 +1045,7 @@
</span><span class="cx">                 5C20CB9D1BB0DCFA00895BB1 /* NetworkSessionCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5C20CB9B1BB0DCD200895BB1 /* NetworkSessionCocoa.mm */; };
</span><span class="cx">                 5C20CBA01BB1ECD800895BB1 /* NetworkSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C20CB9E1BB0DD1800895BB1 /* NetworkSession.h */; };
</span><span class="cx">                 5C298DA01C3DF02100470AFE /* PendingDownload.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C298D9E1C3DEF2900470AFE /* PendingDownload.h */; };
</span><ins>+                5C7706741D1138380012700F /* WebSocketProvider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5C7706731D111D8B0012700F /* WebSocketProvider.cpp */; };
</ins><span class="cx">                 5C85C7881C3F23CE0061A4FA /* PendingDownload.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5C85C7861C3F23C50061A4FA /* PendingDownload.cpp */; };
</span><span class="cx">                 5CBC9B8D1C65279C00A8FDCF /* NetworkDataTaskCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5CBC9B8B1C65257300A8FDCF /* NetworkDataTaskCocoa.mm */; };
</span><span class="cx">                 5CBC9B8E1C652CA000A8FDCF /* NetworkDataTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CBC9B891C6524A500A8FDCF /* NetworkDataTask.h */; };
</span><span class="lines">@@ -3093,6 +3094,7 @@
</span><span class="cx">                 5C20CB9B1BB0DCD200895BB1 /* NetworkSessionCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = NetworkSessionCocoa.mm; path = NetworkProcess/cocoa/NetworkSessionCocoa.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 5C20CB9E1BB0DD1800895BB1 /* NetworkSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NetworkSession.h; path = NetworkProcess/NetworkSession.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 5C298D9E1C3DEF2900470AFE /* PendingDownload.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PendingDownload.h; path = NetworkProcess/Downloads/PendingDownload.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                5C7706731D111D8B0012700F /* WebSocketProvider.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebSocketProvider.cpp; path = Network/WebSocketProvider.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 5C7C88DC1D0F41A0009D2F6D /* WebSocketProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebSocketProvider.h; path = Network/WebSocketProvider.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 5C85C7861C3F23C50061A4FA /* PendingDownload.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PendingDownload.cpp; path = NetworkProcess/Downloads/PendingDownload.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 5CBC9B891C6524A500A8FDCF /* NetworkDataTask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NetworkDataTask.h; path = NetworkProcess/NetworkDataTask.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -5333,6 +5335,7 @@
</span><span class="cx">                 5105B0D2162F7A5E00E27709 /* Network */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><ins>+                                5C7706731D111D8B0012700F /* WebSocketProvider.cpp */,
</ins><span class="cx">                                 5C7C88DC1D0F41A0009D2F6D /* WebSocketProvider.h */,
</span><span class="cx">                                 5105B0D4162F7A7A00E27709 /* NetworkProcessConnection.cpp */,
</span><span class="cx">                                 5105B0D5162F7A7A00E27709 /* NetworkProcessConnection.h */,
</span><span class="lines">@@ -9259,6 +9262,7 @@
</span><span class="cx">                                 1AA83F6C1A5B63FF00026EC6 /* WebDatabaseProvider.cpp in Sources */,
</span><span class="cx">                                 CD19A26D1A13E82A008D650E /* WebDiagnosticLoggingClient.cpp in Sources */,
</span><span class="cx">                                 1A5B1C5418987EDF004FCF9B /* WebDocumentLoader.cpp in Sources */,
</span><ins>+                                5C7706741D1138380012700F /* WebSocketProvider.cpp in Sources */,
</ins><span class="cx">                                 BC111A5D112F4FBB00337BAB /* WebDragClient.cpp in Sources */,
</span><span class="cx">                                 C574A37712E6099D002DFE98 /* WebDragClientMac.mm in Sources */,
</span><span class="cx">                                 BCA0EFA012332642007D3CFB /* WebEditCommandProxy.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessNetworkWebSocketProvidercppfromrev202929trunkSourceWebCoreModuleswebsocketsThreadableWebSocketChannelcpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebKit2/WebProcess/Network/WebSocketProvider.cpp (from rev 202929, trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.cpp) (0 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Network/WebSocketProvider.cpp                                (rev 0)
+++ trunk/Source/WebKit2/WebProcess/Network/WebSocketProvider.cpp        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -0,0 +1,70 @@
</span><ins>+/*
+ * Copyright (C) 2009, 2012 Google Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;WebSocketProvider.h&quot;
+
+#if ENABLE(WEB_SOCKETS)
+
+#include &lt;WebCore/Document.h&gt;
+#include &lt;WebCore/ScriptExecutionContext.h&gt;
+#include &lt;WebCore/ThreadableWebSocketChannelClientWrapper.h&gt;
+#include &lt;WebCore/WebSocketChannel.h&gt;
+#include &lt;WebCore/WebSocketChannelClient.h&gt;
+#include &lt;WebCore/WorkerGlobalScope.h&gt;
+#include &lt;WebCore/WorkerRunLoop.h&gt;
+#include &lt;WebCore/WorkerThread.h&gt;
+#include &lt;WebCore/WorkerThreadableWebSocketChannel.h&gt;
+#include &lt;wtf/text/StringBuilder.h&gt;
+
+using namespace WebCore;
+
+namespace WebKit {
+
+static const char webSocketChannelMode[] = &quot;webSocketChannelMode&quot;;
+
+RefPtr&lt;ThreadableWebSocketChannel&gt; WebSocketProvider::createWebSocketChannel(ScriptExecutionContext&amp; context, WebSocketChannelClient&amp; client)
+{
+    // FIXME: This should return a proxy so we can do the actual network interactions in the NetworkProcess.
+    if (is&lt;WorkerGlobalScope&gt;(context)) {
+        WorkerGlobalScope&amp; workerGlobalScope = downcast&lt;WorkerGlobalScope&gt;(context);
+        WorkerRunLoop&amp; runLoop = workerGlobalScope.thread().runLoop();
+        StringBuilder mode;
+        mode.appendLiteral(webSocketChannelMode);
+        mode.appendNumber(runLoop.createUniqueId());
+        return WorkerThreadableWebSocketChannel::create(workerGlobalScope, client, mode.toString());
+    }
+
+    return WebSocketChannel::create(downcast&lt;Document&gt;(context), client);
+}
+
+} // namespace WebKit
+
+#endif // ENABLE(WEB_SOCKETS)
</ins></span></pre></div>
<a id="trunkSourceWebKit2WebProcessNetworkWebSocketProviderh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Network/WebSocketProvider.h (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Network/WebSocketProvider.h        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebKit2/WebProcess/Network/WebSocketProvider.h        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -30,6 +30,10 @@
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><span class="cx"> class WebSocketProvider final : public WebCore::SocketProvider {
</span><ins>+public:
+    static Ref&lt;WebSocketProvider&gt; create() { return adoptRef(*new WebSocketProvider); }
+    RefPtr&lt;WebCore::ThreadableWebSocketChannel&gt; createWebSocketChannel(WebCore::ScriptExecutionContext&amp;, WebCore::WebSocketChannelClient&amp;) override;
+    virtual ~WebSocketProvider() { }
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (202929 => 202930)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2016-07-07 20:53:41 UTC (rev 202929)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2016-07-07 21:09:14 UTC (rev 202930)
</span><span class="lines">@@ -388,7 +388,7 @@
</span><span class="cx">     Settings::setShouldManageAudioSessionCategory(true);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    PageConfiguration pageConfiguration(makeUniqueRef&lt;WebEditorClient&gt;(this), makeUniqueRef&lt;WebSocketProvider&gt;());
</del><ins>+    PageConfiguration pageConfiguration(makeUniqueRef&lt;WebEditorClient&gt;(this), WebSocketProvider::create());
</ins><span class="cx">     pageConfiguration.chromeClient = new WebChromeClient(this);
</span><span class="cx"> #if ENABLE(CONTEXT_MENUS)
</span><span class="cx">     pageConfiguration.contextMenuClient = new WebContextMenuClient(this);
</span></span></pre>
</div>
</div>

</body>
</html>