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; }