Title: [266467] trunk/Source
Revision
266467
Author
you...@apple.com
Date
2020-09-02 09:10:19 -0700 (Wed, 02 Sep 2020)

Log Message

Introduce a ThreadableWebSocketChannel identifier
https://bugs.webkit.org/show_bug.cgi?id=216034

Reviewed by Alex Christensen.

Source/WebCore:

Clean-up code to have a single identifier for all WebSockets.
We use a WebSocketIdentifier that is now moved from WebKit to WebCore.
Introduce CookieGetter name following comments from https://bugs.webkit.org/show_bug.cgi?id=215928 review.
No change of behavior.

* Headers.cmake:
* Modules/websockets/ThreadableWebSocketChannel.cpp:
(WebCore::ThreadableWebSocketChannel::ThreadableWebSocketChannel):
* Modules/websockets/ThreadableWebSocketChannel.h:
(WebCore::ThreadableWebSocketChannel::ref):
(WebCore::ThreadableWebSocketChannel::deref):
(WebCore::ThreadableWebSocketChannel::identifier const):
* Modules/websockets/WebSocketChannel.cpp:
(WebCore::WebSocketChannel::connect):
(WebCore::WebSocketChannel::clientHandshakeRequest const):
* Modules/websockets/WebSocketChannel.h:
* Modules/websockets/WebSocketHandshake.cpp:
(WebCore::WebSocketHandshake::clientHandshakeRequest const):
* Modules/websockets/WebSocketHandshake.h:
* Modules/websockets/WebSocketIdentifier.h: Added.
* Modules/websockets/WorkerThreadableWebSocketChannel.h:
* WebCore.xcodeproj/project.pbxproj:
* inspector/agents/InspectorNetworkAgent.cpp:
(WebCore::InspectorNetworkAgent::enable):
(WebCore::InspectorNetworkAgent::webSocketForRequestId):
* page/SocketProvider.cpp:
(WebCore::SocketProvider::createSocketStreamHandle):
* page/SocketProvider.h:

Source/WebKit:

* NetworkProcess/NetworkConnectionToWebProcess.cpp:
* NetworkProcess/NetworkConnectionToWebProcess.h:
* NetworkProcess/NetworkConnectionToWebProcess.messages.in:
* NetworkProcess/NetworkSocketChannel.h:
* NetworkProcess/NetworkSocketStream.h:
* Scripts/webkit/messages.py:
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/Network/WebSocketChannel.cpp:
(WebKit::WebSocketChannel::WebSocketChannel):
* WebProcess/Network/WebSocketChannel.h:
(WebKit::WebSocketChannel::identifier const): Deleted.
* WebProcess/Network/WebSocketChannelManager.h:
* WebProcess/Network/WebSocketIdentifier.h: Removed.
* WebProcess/Network/WebSocketProvider.cpp:
(WebKit::WebSocketProvider::createSocketStreamHandle):
* WebProcess/Network/WebSocketProvider.h:
* WebProcess/Network/WebSocketStream.cpp:
(WebKit::WebSocketStream::create):
(WebKit::WebSocketStream::WebSocketStream):
* WebProcess/Network/WebSocketStream.h:

Modified Paths

Added Paths

Removed Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (266466 => 266467)


--- trunk/Source/WebCore/ChangeLog	2020-09-02 15:52:14 UTC (rev 266466)
+++ trunk/Source/WebCore/ChangeLog	2020-09-02 16:10:19 UTC (rev 266467)
@@ -1,3 +1,39 @@
+2020-09-02  Youenn Fablet  <you...@apple.com>
+
+        Introduce a ThreadableWebSocketChannel identifier
+        https://bugs.webkit.org/show_bug.cgi?id=216034
+
+        Reviewed by Alex Christensen.
+
+        Clean-up code to have a single identifier for all WebSockets.
+        We use a WebSocketIdentifier that is now moved from WebKit to WebCore.
+        Introduce CookieGetter name following comments from https://bugs.webkit.org/show_bug.cgi?id=215928 review.
+        No change of behavior.
+
+        * Headers.cmake:
+        * Modules/websockets/ThreadableWebSocketChannel.cpp:
+        (WebCore::ThreadableWebSocketChannel::ThreadableWebSocketChannel):
+        * Modules/websockets/ThreadableWebSocketChannel.h:
+        (WebCore::ThreadableWebSocketChannel::ref):
+        (WebCore::ThreadableWebSocketChannel::deref):
+        (WebCore::ThreadableWebSocketChannel::identifier const):
+        * Modules/websockets/WebSocketChannel.cpp:
+        (WebCore::WebSocketChannel::connect):
+        (WebCore::WebSocketChannel::clientHandshakeRequest const):
+        * Modules/websockets/WebSocketChannel.h:
+        * Modules/websockets/WebSocketHandshake.cpp:
+        (WebCore::WebSocketHandshake::clientHandshakeRequest const):
+        * Modules/websockets/WebSocketHandshake.h:
+        * Modules/websockets/WebSocketIdentifier.h: Added.
+        * Modules/websockets/WorkerThreadableWebSocketChannel.h:
+        * WebCore.xcodeproj/project.pbxproj:
+        * inspector/agents/InspectorNetworkAgent.cpp:
+        (WebCore::InspectorNetworkAgent::enable):
+        (WebCore::InspectorNetworkAgent::webSocketForRequestId):
+        * page/SocketProvider.cpp:
+        (WebCore::SocketProvider::createSocketStreamHandle):
+        * page/SocketProvider.h:
+
 2020-09-02  Alex Christensen  <achristen...@webkit.org>
 
         Allow direct creation of replacement codec

Modified: trunk/Source/WebCore/Headers.cmake (266466 => 266467)


--- trunk/Source/WebCore/Headers.cmake	2020-09-02 15:52:14 UTC (rev 266466)
+++ trunk/Source/WebCore/Headers.cmake	2020-09-02 16:10:19 UTC (rev 266467)
@@ -165,6 +165,7 @@
     Modules/websockets/WebSocketExtensionDispatcher.h
     Modules/websockets/WebSocketExtensionProcessor.h
     Modules/websockets/WebSocketFrame.h
+    Modules/websockets/WebSocketIdentifier.h
     Modules/websockets/WebSocketHandshake.h
 
     accessibility/AXLogger.h

Modified: trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.cpp (266466 => 266467)


--- trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.cpp	2020-09-02 15:52:14 UTC (rev 266466)
+++ trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.cpp	2020-09-02 16:10:19 UTC (rev 266467)
@@ -79,6 +79,11 @@
     return create(downcast<Document>(context), client, provider);
 }
 
+ThreadableWebSocketChannel::ThreadableWebSocketChannel()
+    : m_identifier(WebSocketIdentifier::generateThreadSafe())
+{
+}
+
 Optional<ThreadableWebSocketChannel::ValidatedURL> ThreadableWebSocketChannel::validateURL(Document& document, const URL& requestedURL)
 {
     ValidatedURL validatedURL { requestedURL, true };

Modified: trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.h (266466 => 266467)


--- trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.h	2020-09-02 15:52:14 UTC (rev 266466)
+++ trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.h	2020-09-02 16:10:19 UTC (rev 266467)
@@ -30,6 +30,7 @@
 
 #pragma once
 
+#include "WebSocketIdentifier.h"
 #include <wtf/Forward.h>
 #include <wtf/Noncopyable.h>
 #include <wtf/URL.h>
@@ -53,20 +54,23 @@
 public:
     static Ref<ThreadableWebSocketChannel> create(Document&, WebSocketChannelClient&, SocketProvider&);
     static Ref<ThreadableWebSocketChannel> create(ScriptExecutionContext&, WebSocketChannelClient&, SocketProvider&);
-    ThreadableWebSocketChannel() = default;
+    WEBCORE_EXPORT ThreadableWebSocketChannel();
 
-    enum SendResult {
-        SendSuccess,
-        SendFail
-    };
+    void ref() { refThreadableWebSocketChannel(); }
+    void deref() { derefThreadableWebSocketChannel(); }
 
+    WebSocketIdentifier identifier() const { return m_identifier; };
+
     enum class ConnectStatus { KO, OK };
     virtual ConnectStatus connect(const URL&, const String& protocol) = 0;
     virtual String subprotocol() = 0; // Will be available after didConnect() callback is invoked.
     virtual String extensions() = 0; // Will be available after didConnect() callback is invoked.
+
+    enum SendResult { SendSuccess, SendFail };
     virtual SendResult send(const String& message) = 0;
     virtual SendResult send(const JSC::ArrayBuffer&, unsigned byteOffset, unsigned byteLength) = 0;
     virtual SendResult send(Blob&) = 0;
+
     virtual unsigned bufferedAmount() const = 0;
     virtual void close(int code, const String& reason) = 0;
     // Log the reason text and close the connection. Will call didClose().
@@ -76,14 +80,10 @@
     virtual void suspend() = 0;
     virtual void resume() = 0;
 
-    void ref() { refThreadableWebSocketChannel(); }
-    void deref() { derefThreadableWebSocketChannel(); }
-
-    // FIXME: Merge channelIdentifier and identifier.
-    virtual unsigned channelIdentifier() const = 0;
     virtual bool hasCreatedHandshake() const = 0;
     virtual bool isConnected() const = 0;
-    virtual ResourceRequest clientHandshakeRequest(Function<String(const URL&)>&&) const = 0;
+    using CookieGetter = Function<String(const URL&)>;
+    virtual ResourceRequest clientHandshakeRequest(const CookieGetter&) const = 0;
     virtual const ResourceResponse& serverHandshakeResponse() const = 0;
 
 protected:
@@ -97,6 +97,8 @@
     };
     static Optional<ValidatedURL> validateURL(Document&, const URL&);
     WEBCORE_EXPORT static Optional<ResourceRequest> webSocketConnectRequest(Document&, const URL&);
+
+    WebSocketIdentifier m_identifier;
 };
 
 } // namespace WebCore

Modified: trunk/Source/WebCore/Modules/websockets/WebSocketChannel.cpp (266466 => 266467)


--- trunk/Source/WebCore/Modules/websockets/WebSocketChannel.cpp	2020-09-02 15:52:14 UTC (rev 266466)
+++ trunk/Source/WebCore/Modules/websockets/WebSocketChannel.cpp	2020-09-02 16:10:19 UTC (rev 266467)
@@ -110,7 +110,7 @@
 
     ref();
     String partition = m_document->domainForCachePartition();
-    m_handle = m_socketProvider->createSocketStreamHandle(m_handshake->url(), *this, page->sessionID(), partition, frame->loader().networkingContext());
+    m_handle = m_socketProvider->createSocketStreamHandle(m_handshake->url(), *this, identifier(), page->sessionID(), partition, frame->loader().networkingContext());
     return ConnectStatus::OK;
 }
 
@@ -833,9 +833,9 @@
     m_handle->sendData(frameData.data(), frameData.size(), WTFMove(completionHandler));
 }
 
-ResourceRequest WebSocketChannel::clientHandshakeRequest(Function<String(const URL&)>&& cookieRequestHeaderFieldValue) const
+ResourceRequest WebSocketChannel::clientHandshakeRequest(const CookieGetter& cookieRequestHeaderFieldValue) const
 {
-    return m_handshake->clientHandshakeRequest(WTFMove(cookieRequestHeaderFieldValue));
+    return m_handshake->clientHandshakeRequest(cookieRequestHeaderFieldValue);
 }
 
 const ResourceResponse& WebSocketChannel::serverHandshakeResponse() const

Modified: trunk/Source/WebCore/Modules/websockets/WebSocketChannel.h (266466 => 266467)


--- trunk/Source/WebCore/Modules/websockets/WebSocketChannel.h	2020-09-02 15:52:14 UTC (rev 266466)
+++ trunk/Source/WebCore/Modules/websockets/WebSocketChannel.h	2020-09-02 16:10:19 UTC (rev 266467)
@@ -114,11 +114,9 @@
     void didFinishLoading() override;
     void didFail(ExceptionCode errorCode) override;
 
-    unsigned identifier() const { return m_identifier; }
-    unsigned channelIdentifier() const final { return m_identifier; }
     bool hasCreatedHandshake() const final { return !!m_handshake; }
     bool isConnected() const final { return m_handshake->mode() == WebSocketHandshake::Mode::Connected; }
-    ResourceRequest clientHandshakeRequest(Function<String(const URL&)>&& cookieRequestHeaderFieldValue) const final;
+    ResourceRequest clientHandshakeRequest(const CookieGetter&) const final;
     const ResourceResponse& serverHandshakeResponse() const final;
 
     using RefCounted<WebSocketChannel>::ref;

Modified: trunk/Source/WebCore/Modules/websockets/WebSocketHandshake.cpp (266466 => 266467)


--- trunk/Source/WebCore/Modules/websockets/WebSocketHandshake.cpp	2020-09-02 15:52:14 UTC (rev 266466)
+++ trunk/Source/WebCore/Modules/websockets/WebSocketHandshake.cpp	2020-09-02 16:10:19 UTC (rev 266467)
@@ -216,7 +216,7 @@
     return builder.toString().utf8();
 }
 
-ResourceRequest WebSocketHandshake::clientHandshakeRequest(Function<String(const URL&)>&& cookieRequestHeaderFieldValue) const
+ResourceRequest WebSocketHandshake::clientHandshakeRequest(const Function<String(const URL&)>& cookieRequestHeaderFieldValue) const
 {
     // Keep the following consistent with clientHandshakeMessage().
     ResourceRequest request(m_url);

Modified: trunk/Source/WebCore/Modules/websockets/WebSocketHandshake.h (266466 => 266467)


--- trunk/Source/WebCore/Modules/websockets/WebSocketHandshake.h	2020-09-02 15:52:14 UTC (rev 266466)
+++ trunk/Source/WebCore/Modules/websockets/WebSocketHandshake.h	2020-09-02 16:10:19 UTC (rev 266467)
@@ -64,7 +64,7 @@
     String clientLocation() const;
 
     CString clientHandshakeMessage() const;
-    ResourceRequest clientHandshakeRequest(Function<String(const URL&)>&& cookieRequestHeaderFieldValue) const;
+    ResourceRequest clientHandshakeRequest(const Function<String(const URL&)>& cookieRequestHeaderFieldValue) const;
 
     void reset();
 

Copied: trunk/Source/WebCore/Modules/websockets/WebSocketIdentifier.h (from rev 266466, trunk/Source/WebKit/WebProcess/Network/WebSocketIdentifier.h) (0 => 266467)


--- trunk/Source/WebCore/Modules/websockets/WebSocketIdentifier.h	                        (rev 0)
+++ trunk/Source/WebCore/Modules/websockets/WebSocketIdentifier.h	2020-09-02 16:10:19 UTC (rev 266467)
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2020 Apple 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:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice , this list of conditions and the following disclaimer.
+ * 2. 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS 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 APPLE INC. OR ITS 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.
+ */
+
+#pragma once
+
+#include <wtf/ObjectIdentifier.h>
+
+namespace WebCore {
+
+enum WebSocketIdentifierType { };
+using WebSocketIdentifier = ObjectIdentifier<WebSocketIdentifierType>;
+
+} // namespace WebCore

Modified: trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.h (266466 => 266467)


--- trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.h	2020-09-02 15:52:14 UTC (rev 266466)
+++ trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.h	2020-09-02 16:10:19 UTC (rev 266467)
@@ -160,11 +160,10 @@
 
     class WorkerGlobalScopeDidInitializeTask;
 
-    // Dummy implementation of inspector related APIs.
-    unsigned channelIdentifier() const final { return 1; }
+    // FIXME: <https://webkit.org/b/168475> Web Inspector: Correctly display iframe's and worker's WebSockets
     bool hasCreatedHandshake() const final { return false; }
     bool isConnected() const final { return false; }
-    ResourceRequest clientHandshakeRequest(Function<String(const URL&)>&&) const final { return m_handshakeRequest; }
+    ResourceRequest clientHandshakeRequest(const CookieGetter&) const final { return m_handshakeRequest; }
     const ResourceResponse& serverHandshakeResponse() const final { return m_handshakeResponse; }
 
     Ref<WorkerGlobalScope> m_workerGlobalScope;

Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (266466 => 266467)


--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2020-09-02 15:52:14 UTC (rev 266466)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2020-09-02 16:10:19 UTC (rev 266467)
@@ -1137,6 +1137,7 @@
 		41D41C672256874F00697942 /* ServiceWorkerInternals.mm in Sources */ = {isa = PBXBuildFile; fileRef = 41D41C652256859200697942 /* ServiceWorkerInternals.mm */; };
 		41DE7C7C222DA14300532B65 /* StorageQuotaManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 41DE7C7B222DA13E00532B65 /* StorageQuotaManager.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		41DEFCB61E56C1BD000D9E5F /* JSDOMMapLike.h in Headers */ = {isa = PBXBuildFile; fileRef = 41DEFCB41E56C1B9000D9E5F /* JSDOMMapLike.h */; };
+		41E12E9F24FE74E20093FFB4 /* WebSocketIdentifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 41E12E9D24FE74E20093FFB4 /* WebSocketIdentifier.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		41E1B1D10FF5986900576B3B /* AbstractWorker.h in Headers */ = {isa = PBXBuildFile; fileRef = 41E1B1CB0FF5986900576B3B /* AbstractWorker.h */; };
 		41E9DCE7231974BF00F35949 /* BlobLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 41E9DCE4231973FE00F35949 /* BlobLoader.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		41E9DCE92319CA7600F35949 /* NetworkSendQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 41E9DCE82319CA7500F35949 /* NetworkSendQueue.h */; settings = {ATTRIBUTES = (Private, ); }; };
@@ -7692,6 +7693,7 @@
 		41DEFCB41E56C1B9000D9E5F /* JSDOMMapLike.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDOMMapLike.h; sourceTree = "<group>"; };
 		41E0A7D923BB590100561060 /* RTCRtpCodecCapability.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = RTCRtpCodecCapability.idl; sourceTree = "<group>"; };
 		41E0A7DC23BB63DB00561060 /* RTCRtpCodecCapability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTCRtpCodecCapability.h; sourceTree = "<group>"; };
+		41E12E9D24FE74E20093FFB4 /* WebSocketIdentifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebSocketIdentifier.h; sourceTree = "<group>"; };
 		41E1B1CA0FF5986900576B3B /* AbstractWorker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AbstractWorker.cpp; sourceTree = "<group>"; };
 		41E1B1CB0FF5986900576B3B /* AbstractWorker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AbstractWorker.h; sourceTree = "<group>"; };
 		41E1B1CC0FF5986900576B3B /* AbstractWorker.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AbstractWorker.idl; sourceTree = "<group>"; };
@@ -23359,6 +23361,7 @@
 				97AABD0914FA09D5007457AE /* WebSocketExtensionProcessor.h */,
 				AAF5B7B11524B4BD0004CB49 /* WebSocketFrame.cpp */,
 				97AABD0A14FA09D5007457AE /* WebSocketFrame.h */,
+				41E12E9D24FE74E20093FFB4 /* WebSocketIdentifier.h */,
 				97AABD0B14FA09D5007457AE /* WebSocketHandshake.cpp */,
 				97AABD0C14FA09D5007457AE /* WebSocketHandshake.h */,
 				97AABD1114FA09D5007457AE /* WorkerThreadableWebSocketChannel.cpp */,
@@ -33040,6 +33043,7 @@
 				1A58E8661D19D4F000C0EA73 /* PaymentCoordinatorClient.h in Headers */,
 				A1F76B371F44C60F0014C318 /* PaymentCurrencyAmount.h in Headers */,
 				A1F76B1F1F44C3FE0014C318 /* PaymentDetailsBase.h in Headers */,
+				41E12E9F24FE74E20093FFB4 /* WebSocketIdentifier.h in Headers */,
 				A1F76B251F44C4910014C318 /* PaymentDetailsInit.h in Headers */,
 				A1F76B4F1F44D2420014C318 /* PaymentDetailsModifier.h in Headers */,
 				A1F600491F47594E0077E83F /* PaymentDetailsUpdate.h in Headers */,

Modified: trunk/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp (266466 => 266467)


--- trunk/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp	2020-09-02 15:52:14 UTC (rev 266466)
+++ trunk/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp	2020-09-02 16:10:19 UTC (rev 266467)
@@ -819,7 +819,7 @@
             auto& document = downcast<Document>(*webSocket->scriptExecutionContext());
             auto channel = webSocket->channel();
 
-            auto identifier = channel->channelIdentifier();
+            auto identifier = channel->identifier().toUInt64();
             didCreateWebSocket(identifier, webSocket->url());
 
             auto cookieRequestHeaderFieldValue = [document = makeWeakPtr(document)](const URL& url) -> String {
@@ -997,7 +997,7 @@
     LockHolder lock(WebSocket::allActiveWebSocketsMutex());
 
     for (auto* webSocket : activeWebSockets(lock)) {
-        if (IdentifiersFactory::requestId(webSocket->channel()->channelIdentifier()) == requestId)
+        if (IdentifiersFactory::requestId(webSocket->channel()->identifier().toUInt64()) == requestId)
             return webSocket;
     }
 

Modified: trunk/Source/WebCore/page/SocketProvider.cpp (266466 => 266467)


--- trunk/Source/WebCore/page/SocketProvider.cpp	2020-09-02 15:52:14 UTC (rev 266466)
+++ trunk/Source/WebCore/page/SocketProvider.cpp	2020-09-02 16:10:19 UTC (rev 266467)
@@ -31,7 +31,7 @@
 
 namespace WebCore {
     
-Ref<SocketStreamHandle> SocketProvider::createSocketStreamHandle(const URL& url, SocketStreamHandleClient& client, PAL::SessionID sessionID, const String& credentialPartition, const StorageSessionProvider* provider)
+Ref<SocketStreamHandle> SocketProvider::createSocketStreamHandle(const URL& url, SocketStreamHandleClient& client, WebSocketIdentifier, PAL::SessionID sessionID, const String& credentialPartition, const StorageSessionProvider* provider)
 {
     return SocketStreamHandleImpl::create(url, client, sessionID, credentialPartition, { }, provider);
 }

Modified: trunk/Source/WebCore/page/SocketProvider.h (266466 => 266467)


--- trunk/Source/WebCore/page/SocketProvider.h	2020-09-02 15:52:14 UTC (rev 266466)
+++ trunk/Source/WebCore/page/SocketProvider.h	2020-09-02 16:10:19 UTC (rev 266467)
@@ -25,6 +25,7 @@
 
 #pragma once
 
+#include "WebSocketIdentifier.h"
 #include <pal/SessionID.h>
 #include <wtf/ThreadSafeRefCounted.h>
 #include <wtf/text/WTFString.h>
@@ -43,7 +44,7 @@
 class WEBCORE_EXPORT SocketProvider : public ThreadSafeRefCounted<SocketProvider> {
 public:
     static Ref<SocketProvider> create() { return adoptRef(*new SocketProvider); }
-    virtual Ref<SocketStreamHandle> createSocketStreamHandle(const URL&, SocketStreamHandleClient&, PAL::SessionID, const String& credentialPartition, const StorageSessionProvider*);
+    virtual Ref<SocketStreamHandle> createSocketStreamHandle(const URL&, SocketStreamHandleClient&, WebSocketIdentifier, PAL::SessionID, const String& credentialPartition, const StorageSessionProvider*);
 
     virtual RefPtr<ThreadableWebSocketChannel> createWebSocketChannel(Document&, WebSocketChannelClient&);
 

Modified: trunk/Source/WebKit/ChangeLog (266466 => 266467)


--- trunk/Source/WebKit/ChangeLog	2020-09-02 15:52:14 UTC (rev 266466)
+++ trunk/Source/WebKit/ChangeLog	2020-09-02 16:10:19 UTC (rev 266467)
@@ -1,3 +1,31 @@
+2020-09-02  Youenn Fablet  <you...@apple.com>
+
+        Introduce a ThreadableWebSocketChannel identifier
+        https://bugs.webkit.org/show_bug.cgi?id=216034
+
+        Reviewed by Alex Christensen.
+
+        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
+        * NetworkProcess/NetworkConnectionToWebProcess.h:
+        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
+        * NetworkProcess/NetworkSocketChannel.h:
+        * NetworkProcess/NetworkSocketStream.h:
+        * Scripts/webkit/messages.py:
+        * WebKit.xcodeproj/project.pbxproj:
+        * WebProcess/Network/WebSocketChannel.cpp:
+        (WebKit::WebSocketChannel::WebSocketChannel):
+        * WebProcess/Network/WebSocketChannel.h:
+        (WebKit::WebSocketChannel::identifier const): Deleted.
+        * WebProcess/Network/WebSocketChannelManager.h:
+        * WebProcess/Network/WebSocketIdentifier.h: Removed.
+        * WebProcess/Network/WebSocketProvider.cpp:
+        (WebKit::WebSocketProvider::createSocketStreamHandle):
+        * WebProcess/Network/WebSocketProvider.h:
+        * WebProcess/Network/WebSocketStream.cpp:
+        (WebKit::WebSocketStream::create):
+        (WebKit::WebSocketStream::WebSocketStream):
+        * WebProcess/Network/WebSocketStream.h:
+
 2020-09-02  Aditya Keerthi  <akeer...@apple.com>
 
         [macOS] Update date picker when the inner control is edited

Modified: trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp (266466 => 266467)


--- trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp	2020-09-02 15:52:14 UTC (rev 266466)
+++ trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp	2020-09-02 16:10:19 UTC (rev 266467)
@@ -60,7 +60,6 @@
 #include "WebSWServerConnectionMessages.h"
 #include "WebSWServerToContextConnection.h"
 #include "WebSWServerToContextConnectionMessages.h"
-#include "WebSocketIdentifier.h"
 #include "WebsiteDataStoreParameters.h"
 #include <WebCore/DocumentStorageAccess.h>
 #include <WebCore/HTTPCookieAcceptPolicy.h>

Modified: trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h (266466 => 266467)


--- trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h	2020-09-02 15:52:14 UTC (rev 266466)
+++ trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h	2020-09-02 16:10:19 UTC (rev 266467)
@@ -38,7 +38,6 @@
 #include "WebPageProxyIdentifier.h"
 #include "WebPaymentCoordinatorProxy.h"
 #include "WebResourceLoadObserver.h"
-#include "WebSocketIdentifier.h"
 #include <_javascript_Core/ConsoleTypes.h>
 #include <WebCore/FrameIdentifier.h>
 #include <WebCore/MessagePortChannelProvider.h>
@@ -48,6 +47,7 @@
 #include <WebCore/PageIdentifier.h>
 #include <WebCore/ProcessIdentifier.h>
 #include <WebCore/RegistrableDomain.h>
+#include <WebCore/WebSocketIdentifier.h>
 #include <wtf/RefCounted.h>
 
 namespace PAL {
@@ -158,7 +158,7 @@
 
     Vector<RefPtr<WebCore::BlobDataFileReference>> resolveBlobReferences(const NetworkResourceLoadParameters&);
 
-    void removeSocketChannel(WebSocketIdentifier);
+    void removeSocketChannel(WebCore::WebSocketIdentifier);
 
     WebCore::ProcessIdentifier webProcessIdentifier() const { return m_webProcessIdentifier; }
 
@@ -227,9 +227,9 @@
 
     void setCaptureExtraNetworkLoadMetricsEnabled(bool);
 
-    void createSocketStream(URL&&, String cachePartition, WebSocketIdentifier);
+    void createSocketStream(URL&&, String cachePartition, WebCore::WebSocketIdentifier);
 
-    void createSocketChannel(const WebCore::ResourceRequest&, const String& protocol, WebSocketIdentifier);
+    void createSocketChannel(const WebCore::ResourceRequest&, const String& protocol, WebCore::WebSocketIdentifier);
     void updateQuotaBasedOnSpaceUsageForTesting(const WebCore::ClientOrigin&);
 
 #if ENABLE(SERVICE_WORKER)
@@ -339,8 +339,8 @@
     Ref<NetworkProcess> m_networkProcess;
     PAL::SessionID m_sessionID;
 
-    HashMap<WebSocketIdentifier, RefPtr<NetworkSocketStream>> m_networkSocketStreams;
-    HashMap<WebSocketIdentifier, std::unique_ptr<NetworkSocketChannel>> m_networkSocketChannels;
+    HashMap<WebCore::WebSocketIdentifier, RefPtr<NetworkSocketStream>> m_networkSocketStreams;
+    HashMap<WebCore::WebSocketIdentifier, std::unique_ptr<NetworkSocketChannel>> m_networkSocketChannels;
     NetworkResourceLoadMap m_networkResourceLoaders;
     HashMap<String, RefPtr<WebCore::BlobDataFileReference>> m_blobDataFileReferences;
     Vector<ResourceNetworkActivityTracker> m_networkActivityTrackers;

Modified: trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in (266466 => 266467)


--- trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in	2020-09-02 15:52:14 UTC (rev 266466)
+++ trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in	2020-09-02 16:10:19 UTC (rev 266467)
@@ -58,8 +58,8 @@
 
     SetCaptureExtraNetworkLoadMetricsEnabled(bool enabled)
 
-    CreateSocketStream(URL url, String cachePartition, WebKit::WebSocketIdentifier identifier)
-    CreateSocketChannel(WebCore::ResourceRequest request, String protocol, WebKit::WebSocketIdentifier identifier)
+    CreateSocketStream(URL url, String cachePartition, WebCore::WebSocketIdentifier identifier)
+    CreateSocketChannel(WebCore::ResourceRequest request, String protocol, WebCore::WebSocketIdentifier identifier)
 
 #if ENABLE(RESOURCE_LOAD_STATISTICS)
     RemoveStorageAccessForFrame(WebCore::FrameIdentifier frameID, WebCore::PageIdentifier pageID);

Modified: trunk/Source/WebKit/NetworkProcess/NetworkSocketChannel.h (266466 => 266467)


--- trunk/Source/WebKit/NetworkProcess/NetworkSocketChannel.h	2020-09-02 15:52:14 UTC (rev 266466)
+++ trunk/Source/WebKit/NetworkProcess/NetworkSocketChannel.h	2020-09-02 16:10:19 UTC (rev 266467)
@@ -27,8 +27,8 @@
 
 #include "MessageReceiver.h"
 #include "MessageSender.h"
-#include "WebSocketIdentifier.h"
 #include <WebCore/Timer.h>
+#include <WebCore/WebSocketIdentifier.h>
 #include <pal/SessionID.h>
 #include <wtf/CompletionHandler.h>
 #include <wtf/WeakPtr.h>
@@ -53,9 +53,9 @@
 class NetworkSocketChannel : public IPC::MessageSender, public IPC::MessageReceiver {
     WTF_MAKE_FAST_ALLOCATED;
 public:
-    static std::unique_ptr<NetworkSocketChannel> create(NetworkConnectionToWebProcess&, PAL::SessionID, const WebCore::ResourceRequest&, const String& protocol, WebSocketIdentifier);
+    static std::unique_ptr<NetworkSocketChannel> create(NetworkConnectionToWebProcess&, PAL::SessionID, const WebCore::ResourceRequest&, const String& protocol, WebCore::WebSocketIdentifier);
 
-    NetworkSocketChannel(NetworkConnectionToWebProcess&, NetworkSession*, const WebCore::ResourceRequest&, const String& protocol, WebSocketIdentifier);
+    NetworkSocketChannel(NetworkConnectionToWebProcess&, NetworkSession*, const WebCore::ResourceRequest&, const String& protocol, WebCore::WebSocketIdentifier);
     ~NetworkSocketChannel();
 
     void didReceiveMessage(IPC::Connection&, IPC::Decoder&);
@@ -84,7 +84,7 @@
     void finishClosingIfPossible();
 
     NetworkConnectionToWebProcess& m_connectionToWebProcess;
-    WebSocketIdentifier m_identifier;
+    WebCore::WebSocketIdentifier m_identifier;
     WeakPtr<NetworkSession> m_session;
     std::unique_ptr<WebSocketTask> m_socket;
 

Modified: trunk/Source/WebKit/NetworkProcess/NetworkSocketStream.h (266466 => 266467)


--- trunk/Source/WebKit/NetworkProcess/NetworkSocketStream.h	2020-09-02 15:52:14 UTC (rev 266466)
+++ trunk/Source/WebKit/NetworkProcess/NetworkSocketStream.h	2020-09-02 16:10:19 UTC (rev 266467)
@@ -27,11 +27,11 @@
 
 #include "MessageReceiver.h"
 #include "MessageSender.h"
-#include "WebSocketIdentifier.h"
 #include <WebCore/SocketStreamError.h>
 #include <WebCore/SocketStreamHandleClient.h>
 #include <WebCore/SocketStreamHandleImpl.h>
 #include <WebCore/Timer.h>
+#include <WebCore/WebSocketIdentifier.h>
 #include <pal/SessionID.h>
 
 namespace IPC {
@@ -46,7 +46,7 @@
 
 class NetworkSocketStream : public RefCounted<NetworkSocketStream>, public IPC::MessageSender, public IPC::MessageReceiver, public WebCore::SocketStreamHandleClient {
 public:
-    static Ref<NetworkSocketStream> create(NetworkProcess&, URL&&, PAL::SessionID, const String& credentialPartition, WebSocketIdentifier, IPC::Connection&, WebCore::SourceApplicationAuditToken&&);
+    static Ref<NetworkSocketStream> create(NetworkProcess&, URL&&, PAL::SessionID, const String& credentialPartition, WebCore::WebSocketIdentifier, IPC::Connection&, WebCore::SourceApplicationAuditToken&&);
     ~NetworkSocketStream();
 
     void didReceiveMessage(IPC::Connection&, IPC::Decoder&);
@@ -68,9 +68,9 @@
     IPC::Connection* messageSenderConnection() const final;
     uint64_t messageSenderDestinationID() const final;
 
-    NetworkSocketStream(NetworkProcess&, URL&&, PAL::SessionID, const String& credentialPartition, WebSocketIdentifier, IPC::Connection&, WebCore::SourceApplicationAuditToken&&);
+    NetworkSocketStream(NetworkProcess&, URL&&, PAL::SessionID, const String& credentialPartition, WebCore::WebSocketIdentifier, IPC::Connection&, WebCore::SourceApplicationAuditToken&&);
 
-    WebSocketIdentifier m_identifier;
+    WebCore::WebSocketIdentifier m_identifier;
     IPC::Connection& m_connection;
     Ref<WebCore::SocketStreamHandleImpl> m_impl;
     WebCore::Timer m_delayFailTimer;

Modified: trunk/Source/WebKit/Scripts/webkit/messages.py (266466 => 266467)


--- trunk/Source/WebKit/Scripts/webkit/messages.py	2020-09-02 15:52:14 UTC (rev 266466)
+++ trunk/Source/WebKit/Scripts/webkit/messages.py	2020-09-02 16:10:19 UTC (rev 266467)
@@ -229,6 +229,7 @@
         'WebCore::SharedStringHash',
         'WebCore::SleepDisablerIdentifier',
         'WebCore::SWServerConnectionIdentifier',
+        'WebCore::WebSocketIdentifier',
         'WebKit::ActivityStateChangeID',
         'WebKit::AudioMediaStreamTrackRendererIdentifier',
         'WebKit::ContentWorldIdentifier',
@@ -264,7 +265,6 @@
         'WebKit::TransactionID',
         'WebKit::UserContentControllerIdentifier',
         'WebKit::WebPageProxyIdentifier',
-        'WebKit::WebSocketIdentifier',
     ])
 
 

Modified: trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj (266466 => 266467)


--- trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj	2020-09-02 15:52:14 UTC (rev 266466)
+++ trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj	2020-09-02 16:10:19 UTC (rev 266467)
@@ -3457,7 +3457,6 @@
 		417915B62257046E00D6F97E /* NetworkSocketChannel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetworkSocketChannel.h; sourceTree = "<group>"; };
 		417915B72257046E00D6F97E /* NetworkSocketChannel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NetworkSocketChannel.cpp; sourceTree = "<group>"; };
 		417915B82257046E00D6F97E /* NetworkSocketChannel.messages.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = NetworkSocketChannel.messages.in; sourceTree = "<group>"; };
-		41794D1C23EDD757008C453F /* WebSocketIdentifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebSocketIdentifier.h; path = Network/WebSocketIdentifier.h; sourceTree = "<group>"; };
 		41897ECC1F415D5C0016FA42 /* WebCacheStorageProvider.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WebCacheStorageProvider.cpp; sourceTree = "<group>"; };
 		41897ECD1F415D5C0016FA42 /* WebCacheStorageConnection.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebCacheStorageConnection.h; sourceTree = "<group>"; };
 		41897ECE1F415D5C0016FA42 /* WebCacheStorageConnection.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WebCacheStorageConnection.cpp; sourceTree = "<group>"; };
@@ -7751,7 +7750,6 @@
 				417915B42256D1A700D6F97E /* WebSocketChannel.messages.in */,
 				417915B22256C2E200D6F97E /* WebSocketChannelManager.cpp */,
 				417915B02256C0D600D6F97E /* WebSocketChannelManager.h */,
-				41794D1C23EDD757008C453F /* WebSocketIdentifier.h */,
 				5C7706731D111D8B0012700F /* WebSocketProvider.cpp */,
 				5C7C88DC1D0F41A0009D2F6D /* WebSocketProvider.h */,
 				5C0B177A1E7C884F00E9123C /* WebSocketStream.cpp */,

Modified: trunk/Source/WebKit/WebProcess/Network/WebSocketChannel.cpp (266466 => 266467)


--- trunk/Source/WebKit/WebProcess/Network/WebSocketChannel.cpp	2020-09-02 15:52:14 UTC (rev 266466)
+++ trunk/Source/WebKit/WebProcess/Network/WebSocketChannel.cpp	2020-09-02 16:10:19 UTC (rev 266467)
@@ -71,7 +71,6 @@
 
 WebSocketChannel::WebSocketChannel(Document& document, WebSocketChannelClient& client)
     : m_document(makeWeakPtr(document))
-    ,  m_identifier(WebSocketIdentifier::generate())
     , m_client(makeWeakPtr(client))
     , m_messageQueue(createMessageQueue(document, *this))
     , m_inspector(document)

Modified: trunk/Source/WebKit/WebProcess/Network/WebSocketChannel.h (266466 => 266467)


--- trunk/Source/WebKit/WebProcess/Network/WebSocketChannel.h	2020-09-02 15:52:14 UTC (rev 266466)
+++ trunk/Source/WebKit/WebProcess/Network/WebSocketChannel.h	2020-09-02 16:10:19 UTC (rev 266467)
@@ -27,7 +27,6 @@
 
 #include "MessageReceiver.h"
 #include "MessageSender.h"
-#include "WebSocketIdentifier.h"
 #include <WebCore/NetworkSendQueue.h>
 #include <WebCore/ResourceRequest.h>
 #include <WebCore/ResourceResponse.h>
@@ -49,8 +48,6 @@
     static Ref<WebSocketChannel> create(WebCore::Document&, WebCore::WebSocketChannelClient&);
     ~WebSocketChannel();
 
-    WebSocketIdentifier identifier() const { return m_identifier; }
-
     void didReceiveMessage(IPC::Connection&, IPC::Decoder&);
 
     void networkProcessCrashed();
@@ -100,14 +97,12 @@
     template<typename T> void sendMessage(T&&, size_t byteLength);
     void enqueueTask(Function<void()>&&);
 
-    unsigned channelIdentifier() const final { return m_identifier.toUInt64(); }
     bool hasCreatedHandshake() const final { return !m_url.isNull(); }
     bool isConnected() const final { return !m_handshakeResponse.isNull(); }
-    WebCore::ResourceRequest clientHandshakeRequest(Function<String(const URL&)>&&) const final { return m_handshakeRequest; }
+    WebCore::ResourceRequest clientHandshakeRequest(const CookieGetter&) const final { return m_handshakeRequest; }
     const WebCore::ResourceResponse& serverHandshakeResponse() const final { return m_handshakeResponse; }
 
     WeakPtr<WebCore::Document> m_document;
-    WebSocketIdentifier m_identifier;
     WeakPtr<WebCore::WebSocketChannelClient> m_client;
     URL m_url;
     String m_subprotocol;

Modified: trunk/Source/WebKit/WebProcess/Network/WebSocketChannelManager.h (266466 => 266467)


--- trunk/Source/WebKit/WebProcess/Network/WebSocketChannelManager.h	2020-09-02 15:52:14 UTC (rev 266466)
+++ trunk/Source/WebKit/WebProcess/Network/WebSocketChannelManager.h	2020-09-02 16:10:19 UTC (rev 266467)
@@ -50,7 +50,7 @@
     void removeChannel(WebSocketChannel& channel) { m_channels.remove(channel.identifier() ); }
 
 private:
-    HashMap<WebSocketIdentifier, WeakPtr<WebSocketChannel>> m_channels;
+    HashMap<WebCore::WebSocketIdentifier, WeakPtr<WebSocketChannel>> m_channels;
 };
 
 } // namespace WebKit

Deleted: trunk/Source/WebKit/WebProcess/Network/WebSocketIdentifier.h (266466 => 266467)


--- trunk/Source/WebKit/WebProcess/Network/WebSocketIdentifier.h	2020-09-02 15:52:14 UTC (rev 266466)
+++ trunk/Source/WebKit/WebProcess/Network/WebSocketIdentifier.h	2020-09-02 16:10:19 UTC (rev 266467)
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2020 Apple 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:
- * 1. Redistributions of source code must retain the above copyright
- *    notice , this list of conditions and the following disclaimer.
- * 2. 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.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS 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 APPLE INC. OR ITS 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.
- */
-
-#pragma once
-
-#include <wtf/ObjectIdentifier.h>
-
-namespace WebKit {
-
-enum WebSocketIdentifierType { };
-using WebSocketIdentifier = ObjectIdentifier<WebSocketIdentifierType>;
-
-} // namespace WebKit

Modified: trunk/Source/WebKit/WebProcess/Network/WebSocketProvider.cpp (266466 => 266467)


--- trunk/Source/WebKit/WebProcess/Network/WebSocketProvider.cpp	2020-09-02 15:52:14 UTC (rev 266466)
+++ trunk/Source/WebKit/WebProcess/Network/WebSocketProvider.cpp	2020-09-02 16:10:19 UTC (rev 266467)
@@ -38,10 +38,10 @@
 namespace WebKit {
 using namespace WebCore;
 
-Ref<SocketStreamHandle> WebSocketProvider::createSocketStreamHandle(const URL& url, SocketStreamHandleClient& client, PAL::SessionID sessionID, const String& credentialPartition, const StorageSessionProvider*)
+Ref<SocketStreamHandle> WebSocketProvider::createSocketStreamHandle(const URL& url, SocketStreamHandleClient& client, WebSocketIdentifier identifier, PAL::SessionID sessionID, const String& credentialPartition, const StorageSessionProvider*)
 {
     ASSERT_UNUSED(sessionID, sessionID == WebProcess::singleton().sessionID());
-    return WebSocketStream::create(url, client, credentialPartition);
+    return WebSocketStream::create(url, client, identifier, credentialPartition);
 }
 
 RefPtr<ThreadableWebSocketChannel> WebSocketProvider::createWebSocketChannel(Document& document, WebSocketChannelClient& client)

Modified: trunk/Source/WebKit/WebProcess/Network/WebSocketProvider.h (266466 => 266467)


--- trunk/Source/WebKit/WebProcess/Network/WebSocketProvider.h	2020-09-02 15:52:14 UTC (rev 266466)
+++ trunk/Source/WebKit/WebProcess/Network/WebSocketProvider.h	2020-09-02 16:10:19 UTC (rev 266467)
@@ -32,7 +32,7 @@
 class WebSocketProvider final : public WebCore::SocketProvider {
 public:
     static Ref<WebSocketProvider> create() { return adoptRef(*new WebSocketProvider); }
-    Ref<WebCore::SocketStreamHandle> createSocketStreamHandle(const URL&, WebCore::SocketStreamHandleClient&, PAL::SessionID, const String& credentialPartition, const WebCore::StorageSessionProvider*) final;
+    Ref<WebCore::SocketStreamHandle> createSocketStreamHandle(const URL&, WebCore::SocketStreamHandleClient&, WebCore::WebSocketIdentifier, PAL::SessionID, const String& credentialPartition, const WebCore::StorageSessionProvider*) final;
     RefPtr<WebCore::ThreadableWebSocketChannel> createWebSocketChannel(WebCore::Document&, WebCore::WebSocketChannelClient&) final;
     virtual ~WebSocketProvider() { }
 };

Modified: trunk/Source/WebKit/WebProcess/Network/WebSocketStream.cpp (266466 => 266467)


--- trunk/Source/WebKit/WebProcess/Network/WebSocketStream.cpp	2020-09-02 15:52:14 UTC (rev 266466)
+++ trunk/Source/WebKit/WebProcess/Network/WebSocketStream.cpp	2020-09-02 16:10:19 UTC (rev 266467)
@@ -32,7 +32,6 @@
 #include "NetworkSocketStreamMessages.h"
 #include "WebCoreArgumentCoders.h"
 #include "WebProcess.h"
-#include "WebSocketIdentifier.h"
 #include <WebCore/CookieRequestHeaderFieldProxy.h>
 #include <WebCore/SocketStreamError.h>
 #include <WebCore/SocketStreamHandleClient.h>
@@ -77,14 +76,14 @@
     globalWebSocketStreamMap().clear();
 }
 
-Ref<WebSocketStream> WebSocketStream::create(const URL& url, SocketStreamHandleClient& client, const String& credentialPartition)
+Ref<WebSocketStream> WebSocketStream::create(const URL& url, SocketStreamHandleClient& client, WebSocketIdentifier identifier, const String& credentialPartition)
 {
-    return adoptRef(*new WebSocketStream(url, client, credentialPartition));
+    return adoptRef(*new WebSocketStream(url, client, identifier, credentialPartition));
 }
 
-WebSocketStream::WebSocketStream(const URL& url, WebCore::SocketStreamHandleClient& client, const String& cachePartition)
+WebSocketStream::WebSocketStream(const URL& url, WebCore::SocketStreamHandleClient& client, WebSocketIdentifier identifier, const String& cachePartition)
     : SocketStreamHandle(url, client)
-    ,  m_identifier(WebSocketIdentifier::generate())
+    ,  m_identifier(identifier)
     , m_client(client)
 {
     WebProcess::singleton().ensureNetworkProcessConnection().connection().send(Messages::NetworkConnectionToWebProcess::CreateSocketStream(url, cachePartition, m_identifier), 0);

Modified: trunk/Source/WebKit/WebProcess/Network/WebSocketStream.h (266466 => 266467)


--- trunk/Source/WebKit/WebProcess/Network/WebSocketStream.h	2020-09-02 15:52:14 UTC (rev 266466)
+++ trunk/Source/WebKit/WebProcess/Network/WebSocketStream.h	2020-09-02 16:10:19 UTC (rev 266467)
@@ -27,8 +27,8 @@
 
 #include "MessageReceiver.h"
 #include "MessageSender.h"
-#include "WebSocketIdentifier.h"
 #include <WebCore/SocketStreamHandle.h>
+#include <WebCore/WebSocketIdentifier.h>
 
 namespace IPC {
 class Connection;
@@ -44,9 +44,9 @@
 
 class WebSocketStream : public IPC::MessageSender, public IPC::MessageReceiver, public WebCore::SocketStreamHandle {
 public:
-    static Ref<WebSocketStream> create(const URL&, WebCore::SocketStreamHandleClient&, const String& credentialPartition);
+    static Ref<WebSocketStream> create(const URL&, WebCore::SocketStreamHandleClient&, WebCore::WebSocketIdentifier, const String& credentialPartition);
     static void networkProcessCrashed();
-    static WebSocketStream* streamWithIdentifier(WebSocketIdentifier);
+    static WebSocketStream* streamWithIdentifier(WebCore::WebSocketIdentifier);
     
     void didReceiveMessage(IPC::Connection&, IPC::Decoder&);
     
@@ -72,10 +72,10 @@
     IPC::Connection* messageSenderConnection() const final;
     uint64_t messageSenderDestinationID() const final;
 
-    WebSocketStream(const URL&, WebCore::SocketStreamHandleClient&, const String& credentialPartition);
+    WebSocketStream(const URL&, WebCore::SocketStreamHandleClient&, WebCore::WebSocketIdentifier, const String& credentialPartition);
     ~WebSocketStream();
 
-    WebSocketIdentifier m_identifier;
+    WebCore::WebSocketIdentifier m_identifier;
     size_t m_bufferedAmount { 0 };
     WebCore::SocketStreamHandleClient& m_client;
     HashMap<uint64_t, Function<void(bool)>> m_sendDataCallbacks;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to