<!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 <achristensen@webkit.org> 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 <achristensen@webkit.org>
+
+ 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 <commit-queue@webkit.org>
</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
- * "AS IS" 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 "config.h"
-
-#if ENABLE(WEB_SOCKETS)
-
-#include "ThreadableWebSocketChannel.h"
-
-#include "Document.h"
-#include "ScriptExecutionContext.h"
-#include "ThreadableWebSocketChannelClientWrapper.h"
-#include "WebSocketChannel.h"
-#include "WebSocketChannelClient.h"
-#include "WorkerGlobalScope.h"
-#include "WorkerRunLoop.h"
-#include "WorkerThread.h"
-#include "WorkerThreadableWebSocketChannel.h"
-#include <wtf/text/StringBuilder.h>
-
-namespace WebCore {
-
-static const char webSocketChannelMode[] = "webSocketChannelMode";
-
-Ref<ThreadableWebSocketChannel> ThreadableWebSocketChannel::create(ScriptExecutionContext& context, WebSocketChannelClient& client)
-{
- if (is<WorkerGlobalScope>(context)) {
- WorkerGlobalScope& workerGlobalScope = downcast<WorkerGlobalScope>(context);
- WorkerRunLoop& runLoop = workerGlobalScope.thread().runLoop();
- StringBuilder mode;
- mode.appendLiteral(webSocketChannelMode);
- mode.appendNumber(runLoop.createUniqueId());
- return WorkerThreadableWebSocketChannel::create(workerGlobalScope, client, mode.toString());
- }
-
- return WebSocketChannel::create(downcast<Document>(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<ThreadableWebSocketChannel> create(ScriptExecutionContext&, WebSocketChannelClient&);
</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 "ScriptController.h"
</span><span class="cx"> #include "ScriptExecutionContext.h"
</span><span class="cx"> #include "SecurityOrigin.h"
</span><ins>+#include "SocketProvider.h"
</ins><span class="cx"> #include "ThreadableWebSocketChannel.h"
</span><span class="cx"> #include "WebSocketChannel.h"
</span><span class="cx"> #include <inspector/ScriptCallStack.h>
</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()->socketProvider())
+ m_channel = socketProvider->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 "only characters in the range U+0021 to U+007E are allowed," while the latter
</span><span class="cx"> // imposes a stricter rule: "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&, WebSocketChannelClient&);
</del><ins>+ WEBCORE_EXPORT WebSocketChannel(Document&, WebSocketChannelClient&);
</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&, WebSocketChannelClient&, const String& taskMode);
</del><ins>+ WEBCORE_EXPORT WorkerThreadableWebSocketChannel(WorkerGlobalScope&, WebSocketChannelClient&, const String& 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 = "<group>"; };
</span><span class="cx">                 97AABCF814FA09D5007457AE /* CloseEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CloseEvent.h; sourceTree = "<group>"; };
</span><span class="cx">                 97AABCF914FA09D5007457AE /* CloseEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CloseEvent.idl; sourceTree = "<group>"; };
</span><del>-                97AABCFB14FA09D5007457AE /* ThreadableWebSocketChannel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ThreadableWebSocketChannel.cpp; sourceTree = "<group>"; };
</del><span class="cx">                 97AABCFC14FA09D5007457AE /* ThreadableWebSocketChannel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThreadableWebSocketChannel.h; sourceTree = "<group>"; };
</span><span class="cx">                 97AABCFD14FA09D5007457AE /* ThreadableWebSocketChannelClientWrapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ThreadableWebSocketChannelClientWrapper.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 97AABCFE14FA09D5007457AE /* ThreadableWebSocketChannelClientWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThreadableWebSocketChannelClientWrapper.h; sourceTree = "<group>"; };
</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 "SelectorQuery.h"
</span><span class="cx"> #include "Settings.h"
</span><span class="cx"> #include "ShadowRoot.h"
</span><ins>+#include "SocketProvider.h"
</ins><span class="cx"> #include "StorageEvent.h"
</span><span class="cx"> #include "StyleProperties.h"
</span><span class="cx"> #include "StyleResolveForDocument.h"
</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() ? &page()->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<IDBClient::IDBConnectionProxy> m_idbConnectionProxy;
</span><span class="cx"> #endif
</span><ins>+#if ENABLE(WEB_SOCKETS)
+ RefPtr<SocketProvider> 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& errorMessage, int& lineNumber, int& columnNumber, String& sourceURL, Deprecated::ScriptValue& error, CachedScript* = nullptr);
</span><span class="cx"> void reportException(const String& errorMessage, int lineNumber, int columnNumber, const String& sourceURL, JSC::Exception*, RefPtr<Inspector::ScriptCallStack>&&, 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<EmptyEditorClient>(), makeUniqueRef<EmptySocketProvider>());
</del><ins>+ PageConfiguration pageConfiguration(makeUniqueRef<EmptyEditorClient>(), EmptySocketProvider::create());
</ins><span class="cx"> fillWithEmptyClients(pageConfiguration);
</span><span class="cx"> m_overlayPage = std::make_unique<Page>(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 "StorageArea.h"
</span><span class="cx"> #include "StorageNamespace.h"
</span><span class="cx"> #include "StorageNamespaceProvider.h"
</span><ins>+#include "ThreadableWebSocketChannel.h"
</ins><span class="cx"> #include "UserContentProvider.h"
</span><span class="cx"> #include <wtf/NeverDestroyed.h>
</span><span class="cx">
</span><span class="lines">@@ -263,5 +264,10 @@
</span><span class="cx"> void EmptyEditorClient::registerRedoStep(PassRefPtr<UndoStep>)
</span><span class="cx"> {
</span><span class="cx"> }
</span><ins>+
+RefPtr<ThreadableWebSocketChannel> EmptySocketProvider::createWebSocketChannel(ScriptExecutionContext&, WebSocketChannelClient&)
+{
+ 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<EmptySocketProvider> create() { return adoptRef(*new EmptySocketProvider); }
+ RefPtr<ThreadableWebSocketChannel> createWebSocketChannel(ScriptExecutionContext&, WebSocketChannelClient&) override;
</ins><span class="cx"> };
</span><del>-
</del><ins>+
</ins><span class="cx"> void fillWithEmptyClients(PageConfiguration&);
</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<SocketProvider> m_socketProvider;
</del><ins>+ Ref<SocketProvider> m_socketProvider;
</ins><span class="cx"> Ref<ApplicationCacheStorage> m_applicationCacheStorage;
</span><span class="cx"> Ref<DatabaseProvider> m_databaseProvider;
</span><span class="cx"> Ref<StorageNamespaceProvider> 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<EditorClient>&& editorClient, UniqueRef<SocketProvider>&& socketProvider)
</del><ins>+PageConfiguration::PageConfiguration(UniqueRef<EditorClient>&& editorClient, Ref<SocketProvider>&& 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<EditorClient>&&, UniqueRef<SocketProvider>&&);
</del><ins>+ WEBCORE_EXPORT PageConfiguration(UniqueRef<EditorClient>&&, Ref<SocketProvider>&&);
</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<EditorClient> editorClient;
</span><del>- UniqueRef<SocketProvider> socketProvider;
</del><ins>+ Ref<SocketProvider> 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 <wtf/RefPtr.h>
+#include <wtf/ThreadSafeRefCounted.h>
+
</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<SocketProvider> {
</ins><span class="cx"> public:
</span><ins>+ virtual RefPtr<ThreadableWebSocketChannel> createWebSocketChannel(ScriptExecutionContext&, WebSocketChannelClient&) = 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<EmptyEditorClient>(), makeUniqueRef<EmptySocketProvider>());
</del><ins>+ PageConfiguration pageConfiguration(makeUniqueRef<EmptyEditorClient>(), EmptySocketProvider::create());
</ins><span class="cx"> fillWithEmptyClients(pageConfiguration);
</span><span class="cx"> m_chromeClient = std::make_unique<SVGImageChromeClient>(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<DedicatedWorkerGlobalScope> DedicatedWorkerGlobalScope::create(const URL& url, const String& userAgent, DedicatedWorkerThread& thread, const ContentSecurityPolicyResponseHeaders& contentSecurityPolicyResponseHeaders, bool shouldBypassMainWorldContentSecurityPolicy, PassRefPtr<SecurityOrigin> topOrigin, IDBClient::IDBConnectionProxy* connectionProxy)
</del><ins>+Ref<DedicatedWorkerGlobalScope> DedicatedWorkerGlobalScope::create(const URL& url, const String& userAgent, DedicatedWorkerThread& thread, const ContentSecurityPolicyResponseHeaders& contentSecurityPolicyResponseHeaders, bool shouldBypassMainWorldContentSecurityPolicy, PassRefPtr<SecurityOrigin> topOrigin, IDBClient::IDBConnectionProxy* connectionProxy, SocketProvider* socketProvider)
</ins><span class="cx"> {
</span><del>- Ref<DedicatedWorkerGlobalScope> context = adoptRef(*new DedicatedWorkerGlobalScope(url, userAgent, thread, shouldBypassMainWorldContentSecurityPolicy, topOrigin, connectionProxy));
</del><ins>+ Ref<DedicatedWorkerGlobalScope> context = adoptRef(*new DedicatedWorkerGlobalScope(url, userAgent, thread, shouldBypassMainWorldContentSecurityPolicy, topOrigin, connectionProxy, socketProvider));
</ins><span class="cx"> if (!shouldBypassMainWorldContentSecurityPolicy)
</span><span class="cx"> context->applyContentSecurityPolicyResponseHeaders(contentSecurityPolicyResponseHeaders);
</span><span class="cx"> return context;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-DedicatedWorkerGlobalScope::DedicatedWorkerGlobalScope(const URL& url, const String& userAgent, DedicatedWorkerThread& thread, bool shouldBypassMainWorldContentSecurityPolicy, PassRefPtr<SecurityOrigin> topOrigin, IDBClient::IDBConnectionProxy* connectionProxy)
- : WorkerGlobalScope(url, userAgent, thread, shouldBypassMainWorldContentSecurityPolicy, topOrigin, connectionProxy)
</del><ins>+DedicatedWorkerGlobalScope::DedicatedWorkerGlobalScope(const URL& url, const String& userAgent, DedicatedWorkerThread& thread, bool shouldBypassMainWorldContentSecurityPolicy, PassRefPtr<SecurityOrigin> 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<DedicatedWorkerGlobalScope> create(const URL&, const String& userAgent, DedicatedWorkerThread&, const ContentSecurityPolicyResponseHeaders&, bool shouldBypassMainWorldContentSecurityPolicy, PassRefPtr<SecurityOrigin> topOrigin, IDBClient::IDBConnectionProxy*);
</del><ins>+ static Ref<DedicatedWorkerGlobalScope> create(const URL&, const String& userAgent, DedicatedWorkerThread&, const ContentSecurityPolicyResponseHeaders&, bool shouldBypassMainWorldContentSecurityPolicy, PassRefPtr<SecurityOrigin> 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& thread();
</span><span class="cx">
</span><span class="cx"> private:
</span><del>- DedicatedWorkerGlobalScope(const URL&, const String& userAgent, DedicatedWorkerThread&, bool shouldBypassMainWorldContentSecurityPolicy, PassRefPtr<SecurityOrigin> topOrigin, IDBClient::IDBConnectionProxy*);
</del><ins>+ DedicatedWorkerGlobalScope(const URL&, const String& userAgent, DedicatedWorkerThread&, bool shouldBypassMainWorldContentSecurityPolicy, PassRefPtr<SecurityOrigin> 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& url, const String& userAgent, const String& sourceCode, WorkerLoaderProxy& workerLoaderProxy, WorkerObjectProxy& workerObjectProxy, WorkerThreadStartMode startMode, const ContentSecurityPolicyResponseHeaders& 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& url, const String& userAgent, const String& sourceCode, WorkerLoaderProxy& workerLoaderProxy, WorkerObjectProxy& workerObjectProxy, WorkerThreadStartMode startMode, const ContentSecurityPolicyResponseHeaders& 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<WorkerGlobalScope> DedicatedWorkerThread::createWorkerGlobalScope(const URL& url, const String& userAgent, const ContentSecurityPolicyResponseHeaders& contentSecurityPolicyResponseHeaders, bool shouldBypassMainWorldContentSecurityPolicy, PassRefPtr<SecurityOrigin> 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&, const String& userAgent, const String& sourceCode, WorkerLoaderProxy&, WorkerObjectProxy&, WorkerThreadStartMode, const ContentSecurityPolicyResponseHeaders&, bool shouldBypassMainWorldContentSecurityPolicy, const SecurityOrigin* topOrigin, IDBClient::IDBConnectionProxy*);
</del><ins>+ DedicatedWorkerThread(const URL&, const String& userAgent, const String& sourceCode, WorkerLoaderProxy&, WorkerObjectProxy&, WorkerThreadStartMode, const ContentSecurityPolicyResponseHeaders&, bool shouldBypassMainWorldContentSecurityPolicy, const SecurityOrigin* topOrigin, IDBClient::IDBConnectionProxy*, SocketProvider*);
</ins><span class="cx">
</span><span class="cx"> WorkerObjectProxy& 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 "ScriptSourceCode.h"
</span><span class="cx"> #include "SecurityOrigin.h"
</span><span class="cx"> #include "SecurityOriginPolicy.h"
</span><ins>+#include "SocketProvider.h"
</ins><span class="cx"> #include "URL.h"
</span><span class="cx"> #include "WorkerLocation.h"
</span><span class="cx"> #include "WorkerNavigator.h"
</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& url, const String& userAgent, WorkerThread& thread, bool shouldBypassMainWorldContentSecurityPolicy, PassRefPtr<SecurityOrigin> topOrigin, IDBClient::IDBConnectionProxy* connectionProxy)
</del><ins>+WorkerGlobalScope::WorkerGlobalScope(const URL& url, const String& userAgent, WorkerThread& thread, bool shouldBypassMainWorldContentSecurityPolicy, RefPtr<SecurityOrigin>&& 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<WorkerScriptController>(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->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 <memory>
</span><span class="cx"> #include <wtf/Assertions.h>
</span><span class="cx"> #include <wtf/HashMap.h>
</span><del>-#include <wtf/PassRefPtr.h>
</del><span class="cx"> #include <wtf/RefCounted.h>
</span><span class="cx"> #include <wtf/RefPtr.h>
</span><span class="cx"> #include <wtf/TypeCasts.h>
</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&, const String& userAgent, WorkerThread&, bool shouldBypassMainWorldContentSecurityPolicy, PassRefPtr<SecurityOrigin> topOrigin, IDBClient::IDBConnectionProxy*);
</del><ins>+ WorkerGlobalScope(const URL&, const String& userAgent, WorkerThread&, bool shouldBypassMainWorldContentSecurityPolicy, RefPtr<SecurityOrigin>&& topOrigin, IDBClient::IDBConnectionProxy*, SocketProvider*);
</ins><span class="cx"> void applyContentSecurityPolicyResponseHeaders(const ContentSecurityPolicyResponseHeaders&);
</span><span class="cx">
</span><span class="cx"> void logExceptionToConsole(const String& errorMessage, const String& sourceURL, int lineNumber, int columnNumber, RefPtr<Inspector::ScriptCallStack>&&) override;
</span><span class="lines">@@ -188,6 +191,9 @@
</span><span class="cx"> #if ENABLE(INDEXED_DATABASE)
</span><span class="cx"> RefPtr<IDBClient::IDBConnectionProxy> m_connectionProxy;
</span><span class="cx"> #endif
</span><ins>+#if ENABLE(WEB_SOCKETS)
+ RefPtr<SocketProvider> 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& document = downcast<Document>(*m_scriptExecutionContext);
</span><span class="cx">
</span><span class="cx"> #if ENABLE(INDEXED_DATABASE)
</span><del>- RefPtr<DedicatedWorkerThread> 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<DedicatedWorkerThread> 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<DedicatedWorkerThread> 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->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 "IDBConnectionProxy.h"
</span><span class="cx"> #include "ScriptSourceCode.h"
</span><span class="cx"> #include "SecurityOrigin.h"
</span><ins>+#include "SocketProvider.h"
</ins><span class="cx"> #include "ThreadGlobalData.h"
</span><span class="cx"> #include "URL.h"
</span><span class="cx"> #include <utility>
</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& scriptURL, const String& userAgent, const String& sourceCode, WorkerLoaderProxy& workerLoaderProxy, WorkerReportingProxy& workerReportingProxy, WorkerThreadStartMode startMode, const ContentSecurityPolicyResponseHeaders& contentSecurityPolicyResponseHeaders, bool shouldBypassMainWorldContentSecurityPolicy, const SecurityOrigin* topOrigin, IDBClient::IDBConnectionProxy* connectionProxy)
</del><ins>+WorkerThread::WorkerThread(const URL& scriptURL, const String& userAgent, const String& sourceCode, WorkerLoaderProxy& workerLoaderProxy, WorkerReportingProxy& workerReportingProxy, WorkerThreadStartMode startMode, const ContentSecurityPolicyResponseHeaders& 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&, const String& userAgent, const String& sourceCode, WorkerLoaderProxy&, WorkerReportingProxy&, WorkerThreadStartMode, const ContentSecurityPolicyResponseHeaders&, bool shouldBypassMainWorldContentSecurityPolicy, const SecurityOrigin* topOrigin, IDBClient::IDBConnectionProxy*);
</del><ins>+ WorkerThread(const URL&, const String& userAgent, const String& sourceCode, WorkerLoaderProxy&, WorkerReportingProxy&, WorkerThreadStartMode, const ContentSecurityPolicyResponseHeaders&, 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<WorkerGlobalScope> createWorkerGlobalScope(const URL&, const String& userAgent, const ContentSecurityPolicyResponseHeaders&, bool shouldBypassMainWorldContentSecurityPolicy, PassRefPtr<SecurityOrigin> 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<IDBClient::IDBConnectionProxy> m_idbConnectionProxy;
</span><span class="cx"> #endif
</span><ins>+#if ENABLE(WEB_SOCKETS)
+ RefPtr<SocketProvider> 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 <achristensen@webkit.org>
+
+ 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 <pvollan@apple.com>
</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 = "<group>"; };
</span><span class="cx">                 598AD9291201CF3B00ABAE4E /* WebDeviceOrientationProviderMockInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebDeviceOrientationProviderMockInternal.h; sourceTree = "<group>"; };
</span><span class="cx">                 598ADA451202275000ABAE4E /* WebDeviceOrientationProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebDeviceOrientationProvider.h; sourceTree = "<group>"; };
</span><ins>+                5C77066F1D111B020012700F /* WebSocketProvider.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebSocketProvider.mm; sourceTree = "<group>"; };
+                5C7706711D111B220012700F /* QuickDrawCompatibility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QuickDrawCompatibility.h; sourceTree = "<group>"; };
</ins><span class="cx">                 5C7C88D91D0F3BF2009D2F6D /* WebSocketProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebSocketProvider.h; sourceTree = "<group>"; };
</span><span class="cx">                 5D7BF8120C2A1D90008CE06D /* WebInspector.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = WebInspector.h; sourceTree = "<group>"; };
</span><span class="cx">                 5D7BF8130C2A1D90008CE06D /* WebInspector.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = WebInspector.mm; sourceTree = "<group>"; };
</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 <achristensen@webkit.org>
+
+ 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 <bpoulain@apple.com>
</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 <WebCore/SocketProvider.h>
</del><ins>+#import <WebCore/SocketProvider.h>
</ins><span class="cx">
</span><span class="cx"> class WebSocketProvider final : public WebCore::SocketProvider {
</span><ins>+public:
+ static Ref<WebSocketProvider> create() { return adoptRef(*new WebSocketProvider); }
+ RefPtr<WebCore::ThreadableWebSocketChannel> createWebSocketChannel(WebCore::ScriptExecutionContext&, WebCore::WebSocketChannelClient&) 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
+ * "AS IS" 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 "WebSocketProvider.h"
+
+#if ENABLE(WEB_SOCKETS)
+
+#import <WebCore/Document.h>
+#import <WebCore/ScriptExecutionContext.h>
+#import <WebCore/ThreadableWebSocketChannelClientWrapper.h>
+#import <WebCore/WebSocketChannel.h>
+#import <WebCore/WebSocketChannelClient.h>
+#import <WebCore/WorkerGlobalScope.h>
+#import <WebCore/WorkerRunLoop.h>
+#import <WebCore/WorkerThread.h>
+#import <WebCore/WorkerThreadableWebSocketChannel.h>
+#import <wtf/text/StringBuilder.h>
+
+using namespace WebCore;
+
+static const char webSocketChannelMode[] = "webSocketChannelMode";
+
+RefPtr<ThreadableWebSocketChannel> WebSocketProvider::createWebSocketChannel(ScriptExecutionContext& context, WebSocketChannelClient& client)
+{
+ if (is<WorkerGlobalScope>(context)) {
+ WorkerGlobalScope& workerGlobalScope = downcast<WorkerGlobalScope>(context);
+ WorkerRunLoop& runLoop = workerGlobalScope.thread().runLoop();
+ StringBuilder mode;
+ mode.appendLiteral(webSocketChannelMode);
+ mode.appendNumber(runLoop.createUniqueId());
+ return WorkerThreadableWebSocketChannel::create(workerGlobalScope, client, mode.toString());
+ }
+
+ return WebSocketChannel::create(downcast<Document>(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->group = WebViewGroup::getOrCreate(groupName, _private->preferences._localStorageDatabasePath);
</span><span class="cx"> _private->group->addWebView(self);
</span><span class="cx">
</span><del>- PageConfiguration pageConfiguration(makeUniqueRef<WebEditorClient>(self), makeUniqueRef<WebSocketProvider>());
</del><ins>+ PageConfiguration pageConfiguration(makeUniqueRef<WebEditorClient>(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->group = WebViewGroup::getOrCreate(groupName, _private->preferences._localStorageDatabasePath);
</span><span class="cx"> _private->group->addWebView(self);
</span><span class="cx">
</span><del>- PageConfiguration pageConfiguration(makeUniqueRef<WebEditorClient>(self), makeUniqueRef<WebSocketProvider>());
</del><ins>+ PageConfiguration pageConfiguration(makeUniqueRef<WebEditorClient>(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 <achristensen@webkit.org>
+
+ 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 <pvollan@apple.com>
</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
+ * "AS IS" 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 "config.h"
+#include "WebSocketProvider.h"
+
+#if ENABLE(WEB_SOCKETS)
+
+#include <WebCore/Document.h>
+#include <WebCore/ScriptExecutionContext.h>
+#include <WebCore/ThreadableWebSocketChannelClientWrapper.h>
+#include <WebCore/WebSocketChannel.h>
+#include <WebCore/WebSocketChannelClient.h>
+#include <WebCore/WorkerGlobalScope.h>
+#include <WebCore/WorkerRunLoop.h>
+#include <WebCore/WorkerThread.h>
+#include <WebCore/WorkerThreadableWebSocketChannel.h>
+#include <wtf/text/StringBuilder.h>
+
+using namespace WebCore;
+
+static const char webSocketChannelMode[] = "webSocketChannelMode";
+
+RefPtr<ThreadableWebSocketChannel> WebSocketProvider::createWebSocketChannel(ScriptExecutionContext& context, WebSocketChannelClient& client)
+{
+ if (is<WorkerGlobalScope>(context)) {
+ WorkerGlobalScope& workerGlobalScope = downcast<WorkerGlobalScope>(context);
+ WorkerRunLoop& runLoop = workerGlobalScope.thread().runLoop();
+ StringBuilder mode;
+ mode.appendLiteral(webSocketChannelMode);
+ mode.appendNumber(runLoop.createUniqueId());
+ return WorkerThreadableWebSocketChannel::create(workerGlobalScope, client, mode.toString());
+ }
+
+ return WebSocketChannel::create(downcast<Document>(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 <WebCore/SocketProvider.h>
</span><span class="cx">
</span><span class="cx"> class WebSocketProvider final : public WebCore::SocketProvider {
</span><ins>+public:
+ static Ref<WebSocketProvider> create() { return adoptRef(*new WebSocketProvider); }
+ RefPtr<WebCore::ThreadableWebSocketChannel> createWebSocketChannel(WebCore::ScriptExecutionContext&, WebCore::WebSocketChannelClient&) 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"> "${WEBCORE_DIR}/svg"
</span><span class="cx"> "${WEBCORE_DIR}/svg/graphics"
</span><span class="cx"> "${WEBCORE_DIR}/svg/properties"
</span><ins>+ "${WEBCORE_DIR}/workers"
</ins><span class="cx"> "${JAVASCRIPTCORE_DIR}"
</span><span class="cx"> "${JAVASCRIPTCORE_DIR}/ForwardingHeaders"
</span><span class="cx"> "${JAVASCRIPTCORE_DIR}/API"
</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 <achristensen@webkit.org>
+
+ 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 <graouts@apple.com>
</span><span class="cx">
</span><span class="cx"> <img> 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 = "<group>"; };
</span><span class="cx">                 5C20CB9E1BB0DD1800895BB1 /* NetworkSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NetworkSession.h; path = NetworkProcess/NetworkSession.h; sourceTree = "<group>"; };
</span><span class="cx">                 5C298D9E1C3DEF2900470AFE /* PendingDownload.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PendingDownload.h; path = NetworkProcess/Downloads/PendingDownload.h; sourceTree = "<group>"; };
</span><ins>+                5C7706731D111D8B0012700F /* WebSocketProvider.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebSocketProvider.cpp; path = Network/WebSocketProvider.cpp; sourceTree = "<group>"; };
</ins><span class="cx">                 5C7C88DC1D0F41A0009D2F6D /* WebSocketProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebSocketProvider.h; path = Network/WebSocketProvider.h; sourceTree = "<group>"; };
</span><span class="cx">                 5C85C7861C3F23C50061A4FA /* PendingDownload.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PendingDownload.cpp; path = NetworkProcess/Downloads/PendingDownload.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 5CBC9B891C6524A500A8FDCF /* NetworkDataTask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NetworkDataTask.h; path = NetworkProcess/NetworkDataTask.h; sourceTree = "<group>"; };
</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
+ * "AS IS" 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 "config.h"
+#include "WebSocketProvider.h"
+
+#if ENABLE(WEB_SOCKETS)
+
+#include <WebCore/Document.h>
+#include <WebCore/ScriptExecutionContext.h>
+#include <WebCore/ThreadableWebSocketChannelClientWrapper.h>
+#include <WebCore/WebSocketChannel.h>
+#include <WebCore/WebSocketChannelClient.h>
+#include <WebCore/WorkerGlobalScope.h>
+#include <WebCore/WorkerRunLoop.h>
+#include <WebCore/WorkerThread.h>
+#include <WebCore/WorkerThreadableWebSocketChannel.h>
+#include <wtf/text/StringBuilder.h>
+
+using namespace WebCore;
+
+namespace WebKit {
+
+static const char webSocketChannelMode[] = "webSocketChannelMode";
+
+RefPtr<ThreadableWebSocketChannel> WebSocketProvider::createWebSocketChannel(ScriptExecutionContext& context, WebSocketChannelClient& client)
+{
+ // FIXME: This should return a proxy so we can do the actual network interactions in the NetworkProcess.
+ if (is<WorkerGlobalScope>(context)) {
+ WorkerGlobalScope& workerGlobalScope = downcast<WorkerGlobalScope>(context);
+ WorkerRunLoop& runLoop = workerGlobalScope.thread().runLoop();
+ StringBuilder mode;
+ mode.appendLiteral(webSocketChannelMode);
+ mode.appendNumber(runLoop.createUniqueId());
+ return WorkerThreadableWebSocketChannel::create(workerGlobalScope, client, mode.toString());
+ }
+
+ return WebSocketChannel::create(downcast<Document>(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<WebSocketProvider> create() { return adoptRef(*new WebSocketProvider); }
+ RefPtr<WebCore::ThreadableWebSocketChannel> createWebSocketChannel(WebCore::ScriptExecutionContext&, WebCore::WebSocketChannelClient&) 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<WebEditorClient>(this), makeUniqueRef<WebSocketProvider>());
</del><ins>+ PageConfiguration pageConfiguration(makeUniqueRef<WebEditorClient>(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>