Title: [282818] trunk/Source
Revision
282818
Author
[email protected]
Date
2021-09-21 08:24:18 -0700 (Tue, 21 Sep 2021)

Log Message

Use typed identifier for WebSocketChannel identifiers
https://bugs.webkit.org/show_bug.cgi?id=230486

Patch by Alex Christensen <[email protected]> on 2021-09-21
Reviewed by Youenn Fablet.

Source/WebCore:

This also allows us to have an identifier for WebSocketChannels used in workers.

* Modules/websockets/ThreadableWebSocketChannel.h:
* Modules/websockets/WebSocketChannel.cpp:
(WebCore::WebSocketChannel::WebSocketChannel):
* Modules/websockets/WebSocketChannel.h:
* Modules/websockets/WebSocketChannelInspector.cpp:
(WebCore::WebSocketChannelInspector::WebSocketChannelInspector):
(WebCore::WebSocketChannelInspector::progressIdentifier const):
* Modules/websockets/WebSocketChannelInspector.h:
* Modules/websockets/WorkerThreadableWebSocketChannel.cpp:
(WebCore::WorkerThreadableWebSocketChannel::WorkerThreadableWebSocketChannel):
* Modules/websockets/WorkerThreadableWebSocketChannel.h:
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::didCreateWebSocketImpl):
(WebCore::InspectorInstrumentation::willSendWebSocketHandshakeRequestImpl):
(WebCore::InspectorInstrumentation::didReceiveWebSocketHandshakeResponseImpl):
(WebCore::InspectorInstrumentation::didCloseWebSocketImpl):
(WebCore::InspectorInstrumentation::didReceiveWebSocketFrameImpl):
(WebCore::InspectorInstrumentation::didReceiveWebSocketFrameErrorImpl):
(WebCore::InspectorInstrumentation::didSendWebSocketFrameImpl):
* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::didCreateWebSocket):
(WebCore::InspectorInstrumentation::willSendWebSocketHandshakeRequest):
(WebCore::InspectorInstrumentation::didReceiveWebSocketHandshakeResponse):
(WebCore::InspectorInstrumentation::didCloseWebSocket):
(WebCore::InspectorInstrumentation::didReceiveWebSocketFrame):
(WebCore::InspectorInstrumentation::didReceiveWebSocketFrameError):
(WebCore::InspectorInstrumentation::didSendWebSocketFrame):
* inspector/agents/InspectorNetworkAgent.cpp:
(WebCore::InspectorNetworkAgent::didCreateWebSocket):
(WebCore::InspectorNetworkAgent::willSendWebSocketHandshakeRequest):
(WebCore::InspectorNetworkAgent::didReceiveWebSocketHandshakeResponse):
(WebCore::InspectorNetworkAgent::didCloseWebSocket):
(WebCore::InspectorNetworkAgent::didReceiveWebSocketFrame):
(WebCore::InspectorNetworkAgent::didSendWebSocketFrame):
(WebCore::InspectorNetworkAgent::didReceiveWebSocketFrameError):
(WebCore::InspectorNetworkAgent::webSocketForRequestId):
* inspector/agents/InspectorNetworkAgent.h:
* loader/ProgressTracker.cpp:
(WebCore::ProgressTracker::createUniqueIdentifier): Deleted.
* loader/ProgressTracker.h:

Source/WebKit:

* WebProcess/Network/WebSocketChannel.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (282817 => 282818)


--- trunk/Source/WebCore/ChangeLog	2021-09-21 15:10:33 UTC (rev 282817)
+++ trunk/Source/WebCore/ChangeLog	2021-09-21 15:24:18 UTC (rev 282818)
@@ -1,3 +1,53 @@
+2021-09-21  Alex Christensen  <[email protected]>
+
+        Use typed identifier for WebSocketChannel identifiers
+        https://bugs.webkit.org/show_bug.cgi?id=230486
+
+        Reviewed by Youenn Fablet.
+
+        This also allows us to have an identifier for WebSocketChannels used in workers.
+
+        * Modules/websockets/ThreadableWebSocketChannel.h:
+        * Modules/websockets/WebSocketChannel.cpp:
+        (WebCore::WebSocketChannel::WebSocketChannel):
+        * Modules/websockets/WebSocketChannel.h:
+        * Modules/websockets/WebSocketChannelInspector.cpp:
+        (WebCore::WebSocketChannelInspector::WebSocketChannelInspector):
+        (WebCore::WebSocketChannelInspector::progressIdentifier const):
+        * Modules/websockets/WebSocketChannelInspector.h:
+        * Modules/websockets/WorkerThreadableWebSocketChannel.cpp:
+        (WebCore::WorkerThreadableWebSocketChannel::WorkerThreadableWebSocketChannel):
+        * Modules/websockets/WorkerThreadableWebSocketChannel.h:
+        * inspector/InspectorInstrumentation.cpp:
+        (WebCore::InspectorInstrumentation::didCreateWebSocketImpl):
+        (WebCore::InspectorInstrumentation::willSendWebSocketHandshakeRequestImpl):
+        (WebCore::InspectorInstrumentation::didReceiveWebSocketHandshakeResponseImpl):
+        (WebCore::InspectorInstrumentation::didCloseWebSocketImpl):
+        (WebCore::InspectorInstrumentation::didReceiveWebSocketFrameImpl):
+        (WebCore::InspectorInstrumentation::didReceiveWebSocketFrameErrorImpl):
+        (WebCore::InspectorInstrumentation::didSendWebSocketFrameImpl):
+        * inspector/InspectorInstrumentation.h:
+        (WebCore::InspectorInstrumentation::didCreateWebSocket):
+        (WebCore::InspectorInstrumentation::willSendWebSocketHandshakeRequest):
+        (WebCore::InspectorInstrumentation::didReceiveWebSocketHandshakeResponse):
+        (WebCore::InspectorInstrumentation::didCloseWebSocket):
+        (WebCore::InspectorInstrumentation::didReceiveWebSocketFrame):
+        (WebCore::InspectorInstrumentation::didReceiveWebSocketFrameError):
+        (WebCore::InspectorInstrumentation::didSendWebSocketFrame):
+        * inspector/agents/InspectorNetworkAgent.cpp:
+        (WebCore::InspectorNetworkAgent::didCreateWebSocket):
+        (WebCore::InspectorNetworkAgent::willSendWebSocketHandshakeRequest):
+        (WebCore::InspectorNetworkAgent::didReceiveWebSocketHandshakeResponse):
+        (WebCore::InspectorNetworkAgent::didCloseWebSocket):
+        (WebCore::InspectorNetworkAgent::didReceiveWebSocketFrame):
+        (WebCore::InspectorNetworkAgent::didSendWebSocketFrame):
+        (WebCore::InspectorNetworkAgent::didReceiveWebSocketFrameError):
+        (WebCore::InspectorNetworkAgent::webSocketForRequestId):
+        * inspector/agents/InspectorNetworkAgent.h:
+        * loader/ProgressTracker.cpp:
+        (WebCore::ProgressTracker::createUniqueIdentifier): Deleted.
+        * loader/ProgressTracker.h:
+
 2021-09-21  Antti Koivisto  <[email protected]>
 
         REGRESSION(r282129): Double clicking margin of a block inside a <span> may select a wrong block

Modified: trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.h (282817 => 282818)


--- trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.h	2021-09-21 15:10:33 UTC (rev 282817)
+++ trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.h	2021-09-21 15:24:18 UTC (rev 282818)
@@ -33,6 +33,7 @@
 #include "WebSocketIdentifier.h"
 #include <wtf/Forward.h>
 #include <wtf/Noncopyable.h>
+#include <wtf/ObjectIdentifier.h>
 #include <wtf/URL.h>
 
 namespace JSC {
@@ -47,8 +48,11 @@
 class ResourceResponse;
 class ScriptExecutionContext;
 class SocketProvider;
+class WebSocketChannel;
 class WebSocketChannelClient;
 
+using WebSocketChannelIdentifier = ObjectIdentifier<WebSocketChannel>;
+
 class ThreadableWebSocketChannel {
     WTF_MAKE_NONCOPYABLE(ThreadableWebSocketChannel);
 public:
@@ -80,7 +84,7 @@
     virtual void suspend() = 0;
     virtual void resume() = 0;
 
-    virtual unsigned long progressIdentifier() const = 0;
+    virtual WebSocketChannelIdentifier progressIdentifier() const = 0;
     virtual bool hasCreatedHandshake() const = 0;
     virtual bool isConnected() const = 0;
     using CookieGetter = Function<String(const URL&)>;

Modified: trunk/Source/WebCore/Modules/websockets/WebSocketChannel.cpp (282817 => 282818)


--- trunk/Source/WebCore/Modules/websockets/WebSocketChannel.cpp	2021-09-21 15:10:33 UTC (rev 282817)
+++ trunk/Source/WebCore/Modules/websockets/WebSocketChannel.cpp	2021-09-21 15:24:18 UTC (rev 282818)
@@ -66,12 +66,10 @@
     , m_client(makeWeakPtr(client))
     , m_resumeTimer(*this, &WebSocketChannel::resumeTimerFired)
     , m_closingTimer(*this, &WebSocketChannel::closingTimerFired)
+    , m_progressIdentifier(WebSocketChannelIdentifier::generateThreadSafe())
     , m_socketProvider(provider)
 {
-    if (Page* page = document.page())
-        m_progressIdentifier = page->progress().createUniqueIdentifier();
-
-    LOG(Network, "WebSocketChannel %p ctor, progress identifier %u", this, m_progressIdentifier);
+    LOG(Network, "WebSocketChannel %p ctor, progress identifier %" PRIu64, this, m_progressIdentifier.toUInt64());
 }
 
 WebSocketChannel::~WebSocketChannel()

Modified: trunk/Source/WebCore/Modules/websockets/WebSocketChannel.h (282817 => 282818)


--- trunk/Source/WebCore/Modules/websockets/WebSocketChannel.h	2021-09-21 15:10:33 UTC (rev 282817)
+++ trunk/Source/WebCore/Modules/websockets/WebSocketChannel.h	2021-09-21 15:24:18 UTC (rev 282818)
@@ -40,6 +40,7 @@
 #include "WebSocketHandshake.h"
 #include <wtf/Deque.h>
 #include <wtf/Forward.h>
+#include <wtf/ObjectIdentifier.h>
 #include <wtf/RefCounted.h>
 #include <wtf/TypeCasts.h>
 #include <wtf/Vector.h>
@@ -56,6 +57,8 @@
 class SocketStreamHandle;
 class SocketStreamError;
 class WebSocketChannelClient;
+class WebSocketChannel;
+using WebSocketChannelIdentifier = ObjectIdentifier<WebSocketChannel>;
 
 class WebSocketChannel final : public RefCounted<WebSocketChannel>, public SocketStreamHandleClient, public ThreadableWebSocketChannel, public FileReaderLoaderClient
 {
@@ -114,7 +117,7 @@
     void didFinishLoading() override;
     void didFail(ExceptionCode errorCode) override;
 
-    unsigned long progressIdentifier() const final { return m_progressIdentifier; }
+    WebSocketChannelIdentifier progressIdentifier() const final { return m_progressIdentifier; }
     bool hasCreatedHandshake() const final { return !!m_handshake; }
     bool isConnected() const final { return m_handshake->mode() == WebSocketHandshake::Mode::Connected; }
     ResourceRequest clientHandshakeRequest(const CookieGetter&) const final;
@@ -209,7 +212,7 @@
     bool m_shouldDiscardReceivedData { false };
     unsigned m_unhandledBufferedAmount { 0 };
 
-    unsigned m_progressIdentifier { 0 }; // m_progressIdentifier == 0 means that we could not obtain a progress identifier.
+    WebSocketChannelIdentifier m_progressIdentifier;
 
     // Private members only for hybi-10 protocol.
     bool m_hasContinuousFrame { false };

Modified: trunk/Source/WebCore/Modules/websockets/WebSocketChannelInspector.cpp (282817 => 282818)


--- trunk/Source/WebCore/Modules/websockets/WebSocketChannelInspector.cpp	2021-09-21 15:10:33 UTC (rev 282817)
+++ trunk/Source/WebCore/Modules/websockets/WebSocketChannelInspector.cpp	2021-09-21 15:24:18 UTC (rev 282818)
@@ -33,11 +33,8 @@
 
 namespace WebCore {
 
-WebSocketChannelInspector::WebSocketChannelInspector(Document& document)
-{
-    if (auto* page = document.page())
-        m_progressIdentifier = page->progress().createUniqueIdentifier();
-}
+WebSocketChannelInspector::WebSocketChannelInspector(Document&)
+    : m_progressIdentifier(WebSocketChannelIdentifier::generateThreadSafe()) { }
 
 void WebSocketChannelInspector::didCreateWebSocket(Document* document, const URL& url)
 {
@@ -95,7 +92,7 @@
     InspectorInstrumentation::didReceiveWebSocketFrameError(document, m_progressIdentifier, errorMessage);
 }
 
-unsigned long WebSocketChannelInspector::progressIdentifier() const
+WebSocketChannelIdentifier WebSocketChannelInspector::progressIdentifier() const
 {
     return m_progressIdentifier;
 }

Modified: trunk/Source/WebCore/Modules/websockets/WebSocketChannelInspector.h (282817 => 282818)


--- trunk/Source/WebCore/Modules/websockets/WebSocketChannelInspector.h	2021-09-21 15:10:33 UTC (rev 282817)
+++ trunk/Source/WebCore/Modules/websockets/WebSocketChannelInspector.h	2021-09-21 15:24:18 UTC (rev 282818)
@@ -26,6 +26,7 @@
 #pragma once
 
 #include <wtf/Forward.h>
+#include <wtf/ObjectIdentifier.h>
 
 namespace WebCore {
 
@@ -32,8 +33,12 @@
 class Document;
 class ResourceRequest;
 class ResourceResponse;
+class WebSocketChannel;
+class WebSocketChannelInspector;
 struct WebSocketFrame;
 
+using WebSocketChannelIdentifier = ObjectIdentifier<WebSocketChannel>;
+
 class WEBCORE_EXPORT WebSocketChannelInspector {
 public:
     explicit WebSocketChannelInspector(Document&);
@@ -46,10 +51,10 @@
     void didSendWebSocketFrame(Document*, const WebSocketFrame&);
     void didReceiveWebSocketFrameError(Document*, const String& errorMessage);
     
-    unsigned long progressIdentifier() const;
+    WebSocketChannelIdentifier progressIdentifier() const;
 
 private:
-    unsigned long m_progressIdentifier { 0 };
+    WebSocketChannelIdentifier m_progressIdentifier;
 };
 
 } // namespace WebCore

Modified: trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp (282817 => 282818)


--- trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp	2021-09-21 15:10:33 UTC (rev 282817)
+++ trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp	2021-09-21 15:24:18 UTC (rev 282818)
@@ -55,6 +55,7 @@
     , m_workerClientWrapper(ThreadableWebSocketChannelClientWrapper::create(context, client))
     , m_bridge(Bridge::create(m_workerClientWrapper.copyRef(), m_workerGlobalScope.copyRef(), taskMode, provider))
     , m_socketProvider(provider)
+    , m_progressIdentifier(WebSocketChannelIdentifier::generateThreadSafe())
 {
     m_bridge->initialize();
 }

Modified: trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.h (282817 => 282818)


--- trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.h	2021-09-21 15:10:33 UTC (rev 282817)
+++ trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.h	2021-09-21 15:24:18 UTC (rev 282818)
@@ -160,7 +160,7 @@
 
     class WorkerGlobalScopeDidInitializeTask;
     
-    unsigned long progressIdentifier() const final { return 0; }
+    WebSocketChannelIdentifier progressIdentifier() const final { return m_progressIdentifier; }
     // FIXME: <https://webkit.org/b/168475> Web Inspector: Correctly display iframe's and worker's WebSockets
     // Dummy implementation of inspector related APIs.
     bool hasCreatedHandshake() const final { return false; }
@@ -174,6 +174,7 @@
     Ref<SocketProvider> m_socketProvider;
     ResourceRequest m_handshakeRequest;
     ResourceResponse m_handshakeResponse;
+    WebSocketChannelIdentifier m_progressIdentifier;
 };
 
 } // namespace WebCore

Modified: trunk/Source/WebCore/inspector/InspectorInstrumentation.cpp (282817 => 282818)


--- trunk/Source/WebCore/inspector/InspectorInstrumentation.cpp	2021-09-21 15:10:33 UTC (rev 282817)
+++ trunk/Source/WebCore/inspector/InspectorInstrumentation.cpp	2021-09-21 15:24:18 UTC (rev 282818)
@@ -1017,43 +1017,43 @@
         workerAgent->workerTerminated(proxy);
 }
 
-void InspectorInstrumentation::didCreateWebSocketImpl(InstrumentingAgents& instrumentingAgents, unsigned long identifier, const URL& requestURL)
+void InspectorInstrumentation::didCreateWebSocketImpl(InstrumentingAgents& instrumentingAgents, WebSocketChannelIdentifier identifier, const URL& requestURL)
 {
     if (auto* networkAgent = instrumentingAgents.enabledNetworkAgent())
         networkAgent->didCreateWebSocket(identifier, requestURL);
 }
 
-void InspectorInstrumentation::willSendWebSocketHandshakeRequestImpl(InstrumentingAgents& instrumentingAgents, unsigned long identifier, const ResourceRequest& request)
+void InspectorInstrumentation::willSendWebSocketHandshakeRequestImpl(InstrumentingAgents& instrumentingAgents, WebSocketChannelIdentifier identifier, const ResourceRequest& request)
 {
     if (auto* networkAgent = instrumentingAgents.enabledNetworkAgent())
         networkAgent->willSendWebSocketHandshakeRequest(identifier, request);
 }
 
-void InspectorInstrumentation::didReceiveWebSocketHandshakeResponseImpl(InstrumentingAgents& instrumentingAgents, unsigned long identifier, const ResourceResponse& response)
+void InspectorInstrumentation::didReceiveWebSocketHandshakeResponseImpl(InstrumentingAgents& instrumentingAgents, WebSocketChannelIdentifier identifier, const ResourceResponse& response)
 {
     if (auto* networkAgent = instrumentingAgents.enabledNetworkAgent())
         networkAgent->didReceiveWebSocketHandshakeResponse(identifier, response);
 }
 
-void InspectorInstrumentation::didCloseWebSocketImpl(InstrumentingAgents& instrumentingAgents, unsigned long identifier)
+void InspectorInstrumentation::didCloseWebSocketImpl(InstrumentingAgents& instrumentingAgents, WebSocketChannelIdentifier identifier)
 {
     if (auto* networkAgent = instrumentingAgents.enabledNetworkAgent())
         networkAgent->didCloseWebSocket(identifier);
 }
 
-void InspectorInstrumentation::didReceiveWebSocketFrameImpl(InstrumentingAgents& instrumentingAgents, unsigned long identifier, const WebSocketFrame& frame)
+void InspectorInstrumentation::didReceiveWebSocketFrameImpl(InstrumentingAgents& instrumentingAgents, WebSocketChannelIdentifier identifier, const WebSocketFrame& frame)
 {
     if (auto* networkAgent = instrumentingAgents.enabledNetworkAgent())
         networkAgent->didReceiveWebSocketFrame(identifier, frame);
 }
 
-void InspectorInstrumentation::didReceiveWebSocketFrameErrorImpl(InstrumentingAgents& instrumentingAgents, unsigned long identifier, const String& errorMessage)
+void InspectorInstrumentation::didReceiveWebSocketFrameErrorImpl(InstrumentingAgents& instrumentingAgents, WebSocketChannelIdentifier identifier, const String& errorMessage)
 {
     if (auto* networkAgent = instrumentingAgents.enabledNetworkAgent())
         networkAgent->didReceiveWebSocketFrameError(identifier, errorMessage);
 }
 
-void InspectorInstrumentation::didSendWebSocketFrameImpl(InstrumentingAgents& instrumentingAgents, unsigned long identifier, const WebSocketFrame& frame)
+void InspectorInstrumentation::didSendWebSocketFrameImpl(InstrumentingAgents& instrumentingAgents, WebSocketChannelIdentifier identifier, const WebSocketFrame& frame)
 {
     if (auto* networkAgent = instrumentingAgents.enabledNetworkAgent())
         networkAgent->didSendWebSocketFrame(identifier, frame);

Modified: trunk/Source/WebCore/inspector/InspectorInstrumentation.h (282817 => 282818)


--- trunk/Source/WebCore/inspector/InspectorInstrumentation.h	2021-09-21 15:10:33 UTC (rev 282817)
+++ trunk/Source/WebCore/inspector/InspectorInstrumentation.h	2021-09-21 15:24:18 UTC (rev 282818)
@@ -54,6 +54,7 @@
 #include <wtf/CompletionHandler.h>
 #include <wtf/Function.h>
 #include <wtf/MemoryPressureHandler.h>
+#include <wtf/ObjectIdentifier.h>
 #include <wtf/RefPtr.h>
 
 #if ENABLE(WEBGL)
@@ -94,6 +95,7 @@
 class SharedBuffer;
 class TimerBase;
 class WebKitNamedFlow;
+class WebSocketChannel;
 class WorkerOrWorkletGlobalScope;
 
 #if ENABLE(WEBGL)
@@ -100,6 +102,7 @@
 class WebGLProgram;
 #endif
 
+using WebSocketChannelIdentifier = ObjectIdentifier<WebSocketChannel>;
 enum class StorageType : uint8_t;
 
 struct ComputedEffectTiming;
@@ -271,13 +274,13 @@
     static void workerStarted(WorkerInspectorProxy&);
     static void workerTerminated(WorkerInspectorProxy&);
 
-    static void didCreateWebSocket(Document*, unsigned long identifier, const URL& requestURL);
-    static void willSendWebSocketHandshakeRequest(Document*, unsigned long identifier, const ResourceRequest&);
-    static void didReceiveWebSocketHandshakeResponse(Document*, unsigned long identifier, const ResourceResponse&);
-    static void didCloseWebSocket(Document*, unsigned long identifier);
-    static void didReceiveWebSocketFrame(Document*, unsigned long identifier, const WebSocketFrame&);
-    static void didSendWebSocketFrame(Document*, unsigned long identifier, const WebSocketFrame&);
-    static void didReceiveWebSocketFrameError(Document*, unsigned long identifier, const String& errorMessage);
+    static void didCreateWebSocket(Document*, WebSocketChannelIdentifier, const URL& requestURL);
+    static void willSendWebSocketHandshakeRequest(Document*, WebSocketChannelIdentifier, const ResourceRequest&);
+    static void didReceiveWebSocketHandshakeResponse(Document*, WebSocketChannelIdentifier, const ResourceResponse&);
+    static void didCloseWebSocket(Document*, WebSocketChannelIdentifier);
+    static void didReceiveWebSocketFrame(Document*, WebSocketChannelIdentifier, const WebSocketFrame&);
+    static void didSendWebSocketFrame(Document*, WebSocketChannelIdentifier, const WebSocketFrame&);
+    static void didReceiveWebSocketFrameError(Document*, WebSocketChannelIdentifier, const String& errorMessage);
 
 #if ENABLE(RESOURCE_USAGE)
     static void didHandleMemoryPressure(Page&, Critical);
@@ -471,13 +474,13 @@
     static void workerStartedImpl(InstrumentingAgents&, WorkerInspectorProxy&);
     static void workerTerminatedImpl(InstrumentingAgents&, WorkerInspectorProxy&);
 
-    static void didCreateWebSocketImpl(InstrumentingAgents&, unsigned long identifier, const URL& requestURL);
-    static void willSendWebSocketHandshakeRequestImpl(InstrumentingAgents&, unsigned long identifier, const ResourceRequest&);
-    static void didReceiveWebSocketHandshakeResponseImpl(InstrumentingAgents&, unsigned long identifier, const ResourceResponse&);
-    static void didCloseWebSocketImpl(InstrumentingAgents&, unsigned long identifier);
-    static void didReceiveWebSocketFrameImpl(InstrumentingAgents&, unsigned long identifier, const WebSocketFrame&);
-    static void didSendWebSocketFrameImpl(InstrumentingAgents&, unsigned long identifier, const WebSocketFrame&);
-    static void didReceiveWebSocketFrameErrorImpl(InstrumentingAgents&, unsigned long identifier, const String&);
+    static void didCreateWebSocketImpl(InstrumentingAgents&, WebSocketChannelIdentifier, const URL& requestURL);
+    static void willSendWebSocketHandshakeRequestImpl(InstrumentingAgents&, WebSocketChannelIdentifier, const ResourceRequest&);
+    static void didReceiveWebSocketHandshakeResponseImpl(InstrumentingAgents&, WebSocketChannelIdentifier, const ResourceResponse&);
+    static void didCloseWebSocketImpl(InstrumentingAgents&, WebSocketChannelIdentifier);
+    static void didReceiveWebSocketFrameImpl(InstrumentingAgents&, WebSocketChannelIdentifier, const WebSocketFrame&);
+    static void didSendWebSocketFrameImpl(InstrumentingAgents&, WebSocketChannelIdentifier, const WebSocketFrame&);
+    static void didReceiveWebSocketFrameErrorImpl(InstrumentingAgents&, WebSocketChannelIdentifier, const String&);
 
 #if ENABLE(RESOURCE_USAGE)
     static void didHandleMemoryPressureImpl(InstrumentingAgents&, Critical);
@@ -1327,7 +1330,7 @@
         workerTerminatedImpl(*agents, proxy);
 }
 
-inline void InspectorInstrumentation::didCreateWebSocket(Document* document, unsigned long identifier, const URL& requestURL)
+inline void InspectorInstrumentation::didCreateWebSocket(Document* document, WebSocketChannelIdentifier identifier, const URL& requestURL)
 {
     FAST_RETURN_IF_NO_FRONTENDS(void());
     if (auto* agents = instrumentingAgents(document))
@@ -1334,7 +1337,7 @@
         didCreateWebSocketImpl(*agents, identifier, requestURL);
 }
 
-inline void InspectorInstrumentation::willSendWebSocketHandshakeRequest(Document* document, unsigned long identifier, const ResourceRequest& request)
+inline void InspectorInstrumentation::willSendWebSocketHandshakeRequest(Document* document, WebSocketChannelIdentifier identifier, const ResourceRequest& request)
 {
     FAST_RETURN_IF_NO_FRONTENDS(void());
     if (auto* agents = instrumentingAgents(document))
@@ -1341,7 +1344,7 @@
         willSendWebSocketHandshakeRequestImpl(*agents, identifier, request);
 }
 
-inline void InspectorInstrumentation::didReceiveWebSocketHandshakeResponse(Document* document, unsigned long identifier, const ResourceResponse& response)
+inline void InspectorInstrumentation::didReceiveWebSocketHandshakeResponse(Document* document, WebSocketChannelIdentifier identifier, const ResourceResponse& response)
 {
     FAST_RETURN_IF_NO_FRONTENDS(void());
     if (auto* agents = instrumentingAgents(document))
@@ -1348,7 +1351,7 @@
         didReceiveWebSocketHandshakeResponseImpl(*agents, identifier, response);
 }
 
-inline void InspectorInstrumentation::didCloseWebSocket(Document* document, unsigned long identifier)
+inline void InspectorInstrumentation::didCloseWebSocket(Document* document, WebSocketChannelIdentifier identifier)
 {
     FAST_RETURN_IF_NO_FRONTENDS(void());
     if (auto* agents = instrumentingAgents(document))
@@ -1355,7 +1358,7 @@
         didCloseWebSocketImpl(*agents, identifier);
 }
 
-inline void InspectorInstrumentation::didReceiveWebSocketFrame(Document* document, unsigned long identifier, const WebSocketFrame& frame)
+inline void InspectorInstrumentation::didReceiveWebSocketFrame(Document* document, WebSocketChannelIdentifier identifier, const WebSocketFrame& frame)
 {
     FAST_RETURN_IF_NO_FRONTENDS(void());
     if (auto* agents = instrumentingAgents(document))
@@ -1362,7 +1365,7 @@
         didReceiveWebSocketFrameImpl(*agents, identifier, frame);
 }
 
-inline void InspectorInstrumentation::didReceiveWebSocketFrameError(Document* document, unsigned long identifier, const String& errorMessage)
+inline void InspectorInstrumentation::didReceiveWebSocketFrameError(Document* document, WebSocketChannelIdentifier identifier, const String& errorMessage)
 {
     FAST_RETURN_IF_NO_FRONTENDS(void());
     if (auto* agents = instrumentingAgents(document))
@@ -1369,7 +1372,7 @@
         didReceiveWebSocketFrameErrorImpl(*agents, identifier, errorMessage);
 }
 
-inline void InspectorInstrumentation::didSendWebSocketFrame(Document* document, unsigned long identifier, const WebSocketFrame& frame)
+inline void InspectorInstrumentation::didSendWebSocketFrame(Document* document, WebSocketChannelIdentifier identifier, const WebSocketFrame& frame)
 {
     FAST_RETURN_IF_NO_FRONTENDS(void());
     if (auto* agents = instrumentingAgents(document))

Modified: trunk/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp (282817 => 282818)


--- trunk/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp	2021-09-21 15:10:33 UTC (rev 282817)
+++ trunk/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp	2021-09-21 15:24:18 UTC (rev 282818)
@@ -779,20 +779,20 @@
         .release();
 }
 
-void InspectorNetworkAgent::didCreateWebSocket(unsigned long identifier, const URL& requestURL)
+void InspectorNetworkAgent::didCreateWebSocket(WebSocketChannelIdentifier identifier, const URL& requestURL)
 {
-    m_frontendDispatcher->webSocketCreated(IdentifiersFactory::requestId(identifier), requestURL.string());
+    m_frontendDispatcher->webSocketCreated(IdentifiersFactory::requestId(identifier.toUInt64()), requestURL.string());
 }
 
-void InspectorNetworkAgent::willSendWebSocketHandshakeRequest(unsigned long identifier, const ResourceRequest& request)
+void InspectorNetworkAgent::willSendWebSocketHandshakeRequest(WebSocketChannelIdentifier identifier, const ResourceRequest& request)
 {
     auto requestObject = Protocol::Network::WebSocketRequest::create()
         .setHeaders(buildObjectForHeaders(request.httpHeaderFields()))
         .release();
-    m_frontendDispatcher->webSocketWillSendHandshakeRequest(IdentifiersFactory::requestId(identifier), timestamp(), WallTime::now().secondsSinceEpoch().seconds(), WTFMove(requestObject));
+    m_frontendDispatcher->webSocketWillSendHandshakeRequest(IdentifiersFactory::requestId(identifier.toUInt64()), timestamp(), WallTime::now().secondsSinceEpoch().seconds(), WTFMove(requestObject));
 }
 
-void InspectorNetworkAgent::didReceiveWebSocketHandshakeResponse(unsigned long identifier, const ResourceResponse& response)
+void InspectorNetworkAgent::didReceiveWebSocketHandshakeResponse(WebSocketChannelIdentifier identifier, const ResourceResponse& response)
 {
     auto responseObject = Protocol::Network::WebSocketResponse::create()
         .setStatus(response.httpStatusCode())
@@ -799,26 +799,26 @@
         .setStatusText(response.httpStatusText())
         .setHeaders(buildObjectForHeaders(response.httpHeaderFields()))
         .release();
-    m_frontendDispatcher->webSocketHandshakeResponseReceived(IdentifiersFactory::requestId(identifier), timestamp(), WTFMove(responseObject));
+    m_frontendDispatcher->webSocketHandshakeResponseReceived(IdentifiersFactory::requestId(identifier.toUInt64()), timestamp(), WTFMove(responseObject));
 }
 
-void InspectorNetworkAgent::didCloseWebSocket(unsigned long identifier)
+void InspectorNetworkAgent::didCloseWebSocket(WebSocketChannelIdentifier identifier)
 {
-    m_frontendDispatcher->webSocketClosed(IdentifiersFactory::requestId(identifier), timestamp());
+    m_frontendDispatcher->webSocketClosed(IdentifiersFactory::requestId(identifier.toUInt64()), timestamp());
 }
 
-void InspectorNetworkAgent::didReceiveWebSocketFrame(unsigned long identifier, const WebSocketFrame& frame)
+void InspectorNetworkAgent::didReceiveWebSocketFrame(WebSocketChannelIdentifier identifier, const WebSocketFrame& frame)
 {
-    m_frontendDispatcher->webSocketFrameReceived(IdentifiersFactory::requestId(identifier), timestamp(), buildWebSocketMessage(frame));
+    m_frontendDispatcher->webSocketFrameReceived(IdentifiersFactory::requestId(identifier.toUInt64()), timestamp(), buildWebSocketMessage(frame));
 }
-void InspectorNetworkAgent::didSendWebSocketFrame(unsigned long identifier, const WebSocketFrame& frame)
+void InspectorNetworkAgent::didSendWebSocketFrame(WebSocketChannelIdentifier identifier, const WebSocketFrame& frame)
 {
-    m_frontendDispatcher->webSocketFrameSent(IdentifiersFactory::requestId(identifier), timestamp(), buildWebSocketMessage(frame));
+    m_frontendDispatcher->webSocketFrameSent(IdentifiersFactory::requestId(identifier.toUInt64()), timestamp(), buildWebSocketMessage(frame));
 }
 
-void InspectorNetworkAgent::didReceiveWebSocketFrameError(unsigned long identifier, const String& errorMessage)
+void InspectorNetworkAgent::didReceiveWebSocketFrameError(WebSocketChannelIdentifier identifier, const String& errorMessage)
 {
-    m_frontendDispatcher->webSocketFrameError(IdentifiersFactory::requestId(identifier), timestamp(), errorMessage);
+    m_frontendDispatcher->webSocketFrameError(IdentifiersFactory::requestId(identifier.toUInt64()), timestamp(), errorMessage);
 }
 
 Protocol::ErrorStringOr<void> InspectorNetworkAgent::enable()
@@ -1013,7 +1013,7 @@
     Locker locker { WebSocket::allActiveWebSocketsLock() };
 
     for (auto* webSocket : activeWebSockets()) {
-        if (IdentifiersFactory::requestId(webSocket->channel()->progressIdentifier()) == requestId)
+        if (IdentifiersFactory::requestId(webSocket->channel()->progressIdentifier().toUInt64()) == requestId)
             return webSocket;
     }
 

Modified: trunk/Source/WebCore/inspector/agents/InspectorNetworkAgent.h (282817 => 282818)


--- trunk/Source/WebCore/inspector/agents/InspectorNetworkAgent.h	2021-09-21 15:10:33 UTC (rev 282817)
+++ trunk/Source/WebCore/inspector/agents/InspectorNetworkAgent.h	2021-09-21 15:24:18 UTC (rev 282818)
@@ -110,13 +110,13 @@
     void didLoadXHRSynchronously();
     void didReceiveScriptResponse(ResourceLoaderIdentifier);
     void willDestroyCachedResource(CachedResource&);
-    void didCreateWebSocket(unsigned long identifier, const URL& requestURL);
-    void willSendWebSocketHandshakeRequest(unsigned long identifier, const ResourceRequest&);
-    void didReceiveWebSocketHandshakeResponse(unsigned long identifier, const ResourceResponse&);
-    void didCloseWebSocket(unsigned long identifier);
-    void didReceiveWebSocketFrame(unsigned long identifier, const WebSocketFrame&);
-    void didSendWebSocketFrame(unsigned long identifier, const WebSocketFrame&);
-    void didReceiveWebSocketFrameError(unsigned long identifier, const String&);
+    void didCreateWebSocket(WebSocketChannelIdentifier, const URL& requestURL);
+    void willSendWebSocketHandshakeRequest(WebSocketChannelIdentifier, const ResourceRequest&);
+    void didReceiveWebSocketHandshakeResponse(WebSocketChannelIdentifier, const ResourceResponse&);
+    void didCloseWebSocket(WebSocketChannelIdentifier);
+    void didReceiveWebSocketFrame(WebSocketChannelIdentifier, const WebSocketFrame&);
+    void didSendWebSocketFrame(WebSocketChannelIdentifier, const WebSocketFrame&);
+    void didReceiveWebSocketFrameError(WebSocketChannelIdentifier, const String&);
     void mainFrameNavigated(DocumentLoader&);
     void setInitialScriptContent(ResourceLoaderIdentifier, const String& sourceString);
     void didScheduleStyleRecalculation(Document&);

Modified: trunk/Source/WebCore/loader/ProgressTracker.cpp (282817 => 282818)


--- trunk/Source/WebCore/loader/ProgressTracker.cpp	2021-09-21 15:10:33 UTC (rev 282817)
+++ trunk/Source/WebCore/loader/ProgressTracker.cpp	2021-09-21 15:24:18 UTC (rev 282818)
@@ -75,8 +75,6 @@
     long long estimatedLength;
 };
 
-unsigned long ProgressTracker::s_uniqueIdentifier = 0;
-
 ProgressTracker::ProgressTracker(UniqueRef<ProgressTrackerClient>&& client)
     : m_client(WTFMove(client))
     , m_progressHeartbeatTimer(*this, &ProgressTracker::progressHeartbeatTimerFired)
@@ -283,12 +281,6 @@
     m_progressItems.remove(it);
 }
 
-unsigned long ProgressTracker::createUniqueIdentifier()
-{
-    // FIXME: Use a strongly typed identifier for websockets and remove this.
-    return ++s_uniqueIdentifier;
-}
-
 bool ProgressTracker::isMainLoadProgressing() const
 {
     if (!m_originatingProgressFrame)

Modified: trunk/Source/WebCore/loader/ProgressTracker.h (282817 => 282818)


--- trunk/Source/WebCore/loader/ProgressTracker.h	2021-09-21 15:10:33 UTC (rev 282817)
+++ trunk/Source/WebCore/loader/ProgressTracker.h	2021-09-21 15:24:18 UTC (rev 282818)
@@ -49,8 +49,6 @@
 
     ProgressTrackerClient& client() { return m_client.get(); }
 
-    static unsigned long createUniqueIdentifier();
-
     WEBCORE_EXPORT double estimatedProgress() const;
 
     void progressStarted(Frame&);
@@ -71,8 +69,6 @@
 
     void progressHeartbeatTimerFired();
 
-    static unsigned long s_uniqueIdentifier;
-
     UniqueRef<ProgressTrackerClient> m_client;
     RefPtr<Frame> m_originatingProgressFrame;
     HashMap<ResourceLoaderIdentifier, std::unique_ptr<ProgressItem>> m_progressItems;

Modified: trunk/Source/WebKit/ChangeLog (282817 => 282818)


--- trunk/Source/WebKit/ChangeLog	2021-09-21 15:10:33 UTC (rev 282817)
+++ trunk/Source/WebKit/ChangeLog	2021-09-21 15:24:18 UTC (rev 282818)
@@ -1,3 +1,12 @@
+2021-09-21  Alex Christensen  <[email protected]>
+
+        Use typed identifier for WebSocketChannel identifiers
+        https://bugs.webkit.org/show_bug.cgi?id=230486
+
+        Reviewed by Youenn Fablet.
+
+        * WebProcess/Network/WebSocketChannel.h:
+
 2021-09-21  Youenn Fablet  <[email protected]>
 
         Ensure that capture attribution works even for URLS without hostnames

Modified: trunk/Source/WebKit/WebProcess/Network/WebSocketChannel.h (282817 => 282818)


--- trunk/Source/WebKit/WebProcess/Network/WebSocketChannel.h	2021-09-21 15:10:33 UTC (rev 282817)
+++ trunk/Source/WebKit/WebProcess/Network/WebSocketChannel.h	2021-09-21 15:24:18 UTC (rev 282818)
@@ -98,7 +98,7 @@
     template<typename T> void sendMessage(T&&, size_t byteLength);
     void enqueueTask(Function<void()>&&);
 
-    unsigned long progressIdentifier() const final { return m_inspector.progressIdentifier(); }
+    WebCore::WebSocketChannelIdentifier progressIdentifier() const final { return m_inspector.progressIdentifier(); }
     bool hasCreatedHandshake() const final { return !m_url.isNull(); }
     bool isConnected() const final { return !m_handshakeResponse.isNull(); }
     WebCore::ResourceRequest clientHandshakeRequest(const CookieGetter&) const final { return m_handshakeRequest; }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to