Diff
Modified: trunk/Source/WebKit/ChangeLog (277786 => 277787)
--- trunk/Source/WebKit/ChangeLog 2021-05-20 16:00:28 UTC (rev 277786)
+++ trunk/Source/WebKit/ChangeLog 2021-05-20 16:11:24 UTC (rev 277787)
@@ -1,3 +1,92 @@
+2021-05-20 Chris Dumez <[email protected]>
+
+ Use CheckedLock more in WebKit2 code
+ https://bugs.webkit.org/show_bug.cgi?id=226001
+
+ Reviewed by Alex Christensen.
+
+ Use CheckedLock more in WebKit2 code to benefit from Clang Thread Safety Analysis.
+
+ * NetworkProcess/CustomProtocols/Cocoa/LegacyCustomProtocolManagerCocoa.mm:
+ (LegacyCustomProtocolManager::networkProcessCreated):
+ (WebKit::LegacyCustomProtocolManager::registerScheme):
+ (WebKit::LegacyCustomProtocolManager::unregisterScheme):
+ (WebKit::LegacyCustomProtocolManager::supportsScheme):
+ (WebKit::LegacyCustomProtocolManager::protocolForID):
+ * NetworkProcess/CustomProtocols/LegacyCustomProtocolManager.cpp:
+ (WebKit::LegacyCustomProtocolManager::addCustomProtocol):
+ (WebKit::LegacyCustomProtocolManager::removeCustomProtocol):
+ * NetworkProcess/CustomProtocols/LegacyCustomProtocolManager.h:
+ * NetworkProcess/NetworkProcess.cpp:
+ (WebKit::NetworkProcess::addSessionStorageQuotaManager):
+ (WebKit::NetworkProcess::removeSessionStorageQuotaManager):
+ (WebKit::NetworkProcess::setSessionStorageQuotaManagerIDBRootPath):
+ (WebKit::NetworkProcess::resetQuota):
+ (WebKit::NetworkProcess::storageQuotaManager):
+ * NetworkProcess/NetworkProcess.h:
+ * NetworkProcess/WebStorage/StorageManagerSet.cpp:
+ (WebKit::StorageManagerSet::suspend):
+ (WebKit::StorageManagerSet::resume):
+ * NetworkProcess/WebStorage/StorageManagerSet.h:
+ * NetworkProcess/cocoa/LaunchServicesDatabaseObserver.h:
+ * NetworkProcess/cocoa/LaunchServicesDatabaseObserver.mm:
+ (WebKit::LaunchServicesDatabaseObserver::LaunchServicesDatabaseObserver):
+ (WebKit::LaunchServicesDatabaseObserver::startObserving):
+ (WebKit::LaunchServicesDatabaseObserver::handleEvent):
+ * Shared/BlockingResponseMap.h:
+ (BlockingResponseMap::waitForResponse):
+ (BlockingResponseMap::didReceiveResponse):
+ * Shared/Cocoa/XPCEndpointClient.h:
+ * Shared/Cocoa/XPCEndpointClient.mm:
+ (WebKit::XPCEndpointClient::setEndpoint):
+ (WebKit::XPCEndpointClient::connection):
+ * UIProcess/WebURLSchemeTask.cpp:
+ (WebKit::WebURLSchemeTask::request const):
+ (WebKit::WebURLSchemeTask::willPerformRedirection):
+ (WebKit::WebURLSchemeTask::didPerformRedirection):
+ (WebKit::WebURLSchemeTask::pageDestroyed):
+ (WebKit::WebURLSchemeTask::stop):
+ (WebKit::WebURLSchemeTask::nsRequest const):
+ * UIProcess/WebURLSchemeTask.h:
+ * UIProcess/mac/DisplayLink.cpp:
+ (WebKit::DisplayLink::addObserver):
+ (WebKit::DisplayLink::removeObserver):
+ (WebKit::DisplayLink::removeObservers):
+ (WebKit::DisplayLink::incrementFullSpeedRequestClientCount):
+ (WebKit::DisplayLink::decrementFullSpeedRequestClientCount):
+ (WebKit::DisplayLink::setPreferredFramesPerSecond):
+ (WebKit::DisplayLink::notifyObserversDisplayWasRefreshed):
+ * UIProcess/mac/DisplayLink.h:
+ * WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:
+ (WebKit::LibWebRTCCodecs::ensureGPUProcessConnectionOnMainThread):
+ (WebKit::LibWebRTCCodecs::ensureGPUProcessConnectionAndDispatchToThread):
+ (WebKit::LibWebRTCCodecs::createDecoder):
+ (WebKit::LibWebRTCCodecs::decodeFrame):
+ (WebKit::LibWebRTCCodecs::createEncoder):
+ (WebKit::LibWebRTCCodecs::encodeFrame):
+ (WebKit::LibWebRTCCodecs::setEncodeRates):
+ (WebKit::LibWebRTCCodecs::gpuProcessConnectionDidClose):
+ (WebKit::LibWebRTCCodecs::setLoggingLevel):
+ * WebProcess/GPU/webrtc/LibWebRTCCodecs.h:
+ * WebProcess/Plugins/PluginProcessConnectionManager.cpp:
+ (WebKit::PluginProcessConnectionManager::getPluginProcessConnection):
+ (WebKit::PluginProcessConnectionManager::removePluginProcessConnection):
+ (WebKit::PluginProcessConnectionManager::pluginProcessCrashed):
+ * WebProcess/Plugins/PluginProcessConnectionManager.h:
+ * WebProcess/WebPage/EventDispatcher.cpp:
+ (WebKit::EventDispatcher::addScrollingTreeForPage):
+ (WebKit::EventDispatcher::removeScrollingTreeForPage):
+ (WebKit::EventDispatcher::wheelEvent):
+ (WebKit::EventDispatcher::takeQueuedTouchEventsForPage):
+ (WebKit::EventDispatcher::touchEvent):
+ (WebKit::EventDispatcher::dispatchTouchEvents):
+ (WebKit::EventDispatcher::notifyScrollingTreesDisplayWasRefreshed):
+ * WebProcess/WebPage/EventDispatcher.h:
+ * WebProcess/WebPage/ViewUpdateDispatcher.cpp:
+ (WebKit::ViewUpdateDispatcher::visibleContentRectUpdate):
+ (WebKit::ViewUpdateDispatcher::dispatchVisibleContentRectUpdate):
+ * WebProcess/WebPage/ViewUpdateDispatcher.h:
+
2021-05-20 Per Arne <[email protected]>
The test fast/images/eps-as-image.html is a constant crash
Modified: trunk/Source/WebKit/NetworkProcess/CustomProtocols/Cocoa/LegacyCustomProtocolManagerCocoa.mm (277786 => 277787)
--- trunk/Source/WebKit/NetworkProcess/CustomProtocols/Cocoa/LegacyCustomProtocolManagerCocoa.mm 2021-05-20 16:00:28 UTC (rev 277786)
+++ trunk/Source/WebKit/NetworkProcess/CustomProtocols/Cocoa/LegacyCustomProtocolManagerCocoa.mm 2021-05-20 16:11:24 UTC (rev 277787)
@@ -49,7 +49,7 @@
auto hasRegisteredSchemes = [] (auto* legacyCustomProtocolManager) {
if (!legacyCustomProtocolManager)
return false;
- LockHolder locker(legacyCustomProtocolManager->m_registeredSchemesMutex);
+ Locker locker { legacyCustomProtocolManager->m_registeredSchemesLock };
return !legacyCustomProtocolManager->m_registeredSchemes.isEmpty();
};
@@ -135,7 +135,7 @@
void LegacyCustomProtocolManager::registerScheme(const String& scheme)
{
ASSERT(!scheme.isNull());
- LockHolder locker(m_registeredSchemesMutex);
+ Locker locker { m_registeredSchemesLock };
m_registeredSchemes.add(scheme);
}
@@ -142,7 +142,7 @@
void LegacyCustomProtocolManager::unregisterScheme(const String& scheme)
{
ASSERT(!scheme.isNull());
- LockHolder locker(m_registeredSchemesMutex);
+ Locker locker { m_registeredSchemesLock };
m_registeredSchemes.remove(scheme);
}
@@ -151,7 +151,7 @@
if (scheme.isNull())
return false;
- LockHolder locker(m_registeredSchemesMutex);
+ Locker locker { m_registeredSchemesLock };
return m_registeredSchemes.contains(scheme);
}
@@ -232,7 +232,7 @@
RetainPtr<WKCustomProtocol> LegacyCustomProtocolManager::protocolForID(LegacyCustomProtocolID customProtocolID)
{
- LockHolder locker(m_customProtocolMapMutex);
+ Locker locker { m_customProtocolMapLock };
CustomProtocolMap::const_iterator it = m_customProtocolMap.find(customProtocolID);
if (it == m_customProtocolMap.end())
Modified: trunk/Source/WebKit/NetworkProcess/CustomProtocols/LegacyCustomProtocolManager.cpp (277786 => 277787)
--- trunk/Source/WebKit/NetworkProcess/CustomProtocols/LegacyCustomProtocolManager.cpp 2021-05-20 16:00:28 UTC (rev 277786)
+++ trunk/Source/WebKit/NetworkProcess/CustomProtocols/LegacyCustomProtocolManager.cpp 2021-05-20 16:11:24 UTC (rev 277787)
@@ -57,7 +57,7 @@
LegacyCustomProtocolID LegacyCustomProtocolManager::addCustomProtocol(CustomProtocol&& customProtocol)
{
- LockHolder locker(m_customProtocolMapMutex);
+ Locker locker { m_customProtocolMapLock };
auto customProtocolID = LegacyCustomProtocolID::generate();
m_customProtocolMap.add(customProtocolID, WTFMove(customProtocol));
return customProtocolID;
@@ -65,7 +65,7 @@
void LegacyCustomProtocolManager::removeCustomProtocol(LegacyCustomProtocolID customProtocolID)
{
- LockHolder locker(m_customProtocolMapMutex);
+ Locker locker { m_customProtocolMapLock };
m_customProtocolMap.remove(customProtocolID);
}
Modified: trunk/Source/WebKit/NetworkProcess/CustomProtocols/LegacyCustomProtocolManager.h (277786 => 277787)
--- trunk/Source/WebKit/NetworkProcess/CustomProtocols/LegacyCustomProtocolManager.h 2021-05-20 16:00:28 UTC (rev 277786)
+++ trunk/Source/WebKit/NetworkProcess/CustomProtocols/LegacyCustomProtocolManager.h 2021-05-20 16:11:24 UTC (rev 277787)
@@ -29,6 +29,7 @@
#include "LegacyCustomProtocolID.h"
#include "MessageReceiver.h"
#include "NetworkProcessSupplement.h"
+#include <wtf/CheckedLock.h>
#include <wtf/HashMap.h>
#include <wtf/HashSet.h>
#include <wtf/text/StringHash.h>
@@ -95,12 +96,12 @@
NetworkProcess& m_networkProcess;
typedef HashMap<LegacyCustomProtocolID, CustomProtocol> CustomProtocolMap;
- CustomProtocolMap m_customProtocolMap;
- Lock m_customProtocolMapMutex;
+ CustomProtocolMap m_customProtocolMap WTF_GUARDED_BY_LOCK(m_customProtocolMapLock);
+ CheckedLock m_customProtocolMapLock;
#if PLATFORM(COCOA)
- HashSet<String, ASCIICaseInsensitiveHash> m_registeredSchemes;
- Lock m_registeredSchemesMutex;
+ HashSet<String, ASCIICaseInsensitiveHash> m_registeredSchemes WTF_GUARDED_BY_LOCK(m_registeredSchemesLock);
+ CheckedLock m_registeredSchemesLock;
// WKCustomProtocol objects can be removed from the m_customProtocolMap from multiple threads.
// We return a RetainPtr here because it is unsafe to return a raw pointer since the object might immediately be destroyed from a different thread.
Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp (277786 => 277787)
--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp 2021-05-20 16:00:28 UTC (rev 277786)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp 2021-05-20 16:11:24 UTC (rev 277787)
@@ -428,7 +428,7 @@
void NetworkProcess::addSessionStorageQuotaManager(PAL::SessionID sessionID, uint64_t defaultQuota, uint64_t defaultThirdPartyQuota, const String& cacheRootPath, SandboxExtension::Handle& cacheRootPathHandle)
{
- LockHolder locker(m_sessionStorageQuotaManagersLock);
+ Locker locker { m_sessionStorageQuotaManagersLock };
auto isNewEntry = m_sessionStorageQuotaManagers.ensure(sessionID, [defaultQuota, defaultThirdPartyQuota, &cacheRootPath] {
return makeUnique<SessionStorageQuotaManager>(cacheRootPath, defaultQuota, defaultThirdPartyQuota);
}).isNewEntry;
@@ -440,7 +440,7 @@
void NetworkProcess::removeSessionStorageQuotaManager(PAL::SessionID sessionID)
{
- LockHolder locker(m_sessionStorageQuotaManagersLock);
+ Locker locker { m_sessionStorageQuotaManagersLock };
ASSERT(m_sessionStorageQuotaManagers.contains(sessionID));
m_sessionStorageQuotaManagers.remove(sessionID);
}
@@ -2379,7 +2379,7 @@
void NetworkProcess::setSessionStorageQuotaManagerIDBRootPath(PAL::SessionID sessionID, const String& idbRootPath)
{
- LockHolder locker(m_sessionStorageQuotaManagersLock);
+ Locker locker { m_sessionStorageQuotaManagersLock };
auto* sessionStorageQuotaManager = m_sessionStorageQuotaManagers.get(sessionID);
ASSERT(sessionStorageQuotaManager);
sessionStorageQuotaManager->setIDBRootPath(idbRootPath);
@@ -2393,7 +2393,7 @@
void NetworkProcess::resetQuota(PAL::SessionID sessionID, CompletionHandler<void()>&& completionHandler)
{
- LockHolder locker(m_sessionStorageQuotaManagersLock);
+ Locker locker { m_sessionStorageQuotaManagersLock };
if (auto* sessionStorageQuotaManager = m_sessionStorageQuotaManagers.get(sessionID)) {
for (auto storageQuotaManager : sessionStorageQuotaManager->existingStorageQuotaManagers())
storageQuotaManager->resetQuotaForTesting();
@@ -2498,7 +2498,7 @@
RefPtr<StorageQuotaManager> NetworkProcess::storageQuotaManager(PAL::SessionID sessionID, const ClientOrigin& origin)
{
- LockHolder locker(m_sessionStorageQuotaManagersLock);
+ Locker locker { m_sessionStorageQuotaManagersLock };
auto* sessionStorageQuotaManager = m_sessionStorageQuotaManagers.get(sessionID);
if (!sessionStorageQuotaManager)
return nullptr;
Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.h (277786 => 277787)
--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.h 2021-05-20 16:00:28 UTC (rev 277786)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.h 2021-05-20 16:11:24 UTC (rev 277787)
@@ -51,6 +51,7 @@
#include <WebCore/ServiceWorkerIdentifier.h>
#include <WebCore/ServiceWorkerTypes.h>
#include <memory>
+#include <wtf/CheckedLock.h>
#include <wtf/CrossThreadTask.h>
#include <wtf/Function.h>
#include <wtf/HashSet.h>
@@ -584,8 +585,8 @@
RefPtr<RTCDataChannelRemoteManagerProxy> m_rtcDataChannelProxy;
#endif
- Lock m_sessionStorageQuotaManagersLock;
- HashMap<PAL::SessionID, std::unique_ptr<SessionStorageQuotaManager>> m_sessionStorageQuotaManagers;
+ CheckedLock m_sessionStorageQuotaManagersLock;
+ HashMap<PAL::SessionID, std::unique_ptr<SessionStorageQuotaManager>> m_sessionStorageQuotaManagers WTF_GUARDED_BY_LOCK(m_sessionStorageQuotaManagersLock);
bool m_quotaLoggingEnabled { false };
OptionSet<NetworkCache::CacheOption> m_cacheOptions;
Modified: trunk/Source/WebKit/NetworkProcess/WebStorage/StorageManagerSet.cpp (277786 => 277787)
--- trunk/Source/WebKit/NetworkProcess/WebStorage/StorageManagerSet.cpp 2021-05-20 16:00:28 UTC (rev 277786)
+++ trunk/Source/WebKit/NetworkProcess/WebStorage/StorageManagerSet.cpp 2021-05-20 16:11:24 UTC (rev 277787)
@@ -163,13 +163,13 @@
ASSERT(RunLoop::isMain());
CompletionHandlerCallingScope completionHandlerCaller(WTFMove(completionHandler));
- Locker<Lock> stateLocker(m_stateLock);
+ Locker stateLocker { m_stateLock };
if (m_state != State::Running)
return;
m_state = State::WillSuspend;
m_queue->dispatch([this, protectedThis = makeRef(*this), completionHandler = completionHandlerCaller.release()] () mutable {
- Locker<Lock> stateLocker(m_stateLock);
+ Locker stateLocker { m_stateLock };
ASSERT(m_state != State::Suspended);
if (m_state != State::WillSuspend) {
@@ -190,7 +190,7 @@
{
ASSERT(RunLoop::isMain());
- Locker<Lock> stateLocker(m_stateLock);
+ Locker stateLocker { m_stateLock };
auto previousState = m_state;
m_state = State::Running;
if (previousState == State::Suspended)
Modified: trunk/Source/WebKit/NetworkProcess/WebStorage/StorageManagerSet.h (277786 => 277787)
--- trunk/Source/WebKit/NetworkProcess/WebStorage/StorageManagerSet.h 2021-05-20 16:00:28 UTC (rev 277786)
+++ trunk/Source/WebKit/NetworkProcess/WebStorage/StorageManagerSet.h 2021-05-20 16:11:24 UTC (rev 277787)
@@ -31,6 +31,8 @@
#include "StorageManager.h"
#include <WebCore/SecurityOriginData.h>
#include <pal/SessionID.h>
+#include <wtf/CheckedCondition.h>
+#include <wtf/CheckedLock.h>
#include <wtf/WeakPtr.h>
using WebCore::SecurityOriginData;
@@ -102,8 +104,8 @@
Suspended
};
State m_state { State::Running };
- Lock m_stateLock;
- Condition m_stateChangeCondition;
+ CheckedLock m_stateLock;
+ CheckedCondition m_stateChangeCondition;
};
} // namespace WebKit
Modified: trunk/Source/WebKit/NetworkProcess/cocoa/LaunchServicesDatabaseObserver.h (277786 => 277787)
--- trunk/Source/WebKit/NetworkProcess/cocoa/LaunchServicesDatabaseObserver.h 2021-05-20 16:00:28 UTC (rev 277786)
+++ trunk/Source/WebKit/NetworkProcess/cocoa/LaunchServicesDatabaseObserver.h 2021-05-20 16:11:24 UTC (rev 277787)
@@ -28,7 +28,7 @@
#include "NetworkProcess.h"
#include "NetworkProcessSupplement.h"
#include "XPCEndpoint.h"
-#include <wtf/Lock.h>
+#include <wtf/CheckedLock.h>
#include <wtf/OSObjectPtr.h>
#include <wtf/RetainPtr.h>
@@ -55,8 +55,8 @@
void initializeConnection(IPC::Connection*) final;
RetainPtr<id> m_observer;
- Vector<OSObjectPtr<xpc_connection_t>> m_connections;
- Lock m_connectionsLock;
+ CheckedLock m_connectionsLock;
+ Vector<OSObjectPtr<xpc_connection_t>> m_connections WTF_GUARDED_BY_LOCK(m_connectionsLock);
};
}
Modified: trunk/Source/WebKit/NetworkProcess/cocoa/LaunchServicesDatabaseObserver.mm (277786 => 277787)
--- trunk/Source/WebKit/NetworkProcess/cocoa/LaunchServicesDatabaseObserver.mm 2021-05-20 16:00:28 UTC (rev 277786)
+++ trunk/Source/WebKit/NetworkProcess/cocoa/LaunchServicesDatabaseObserver.mm 2021-05-20 16:11:24 UTC (rev 277787)
@@ -56,7 +56,7 @@
xpc_dictionary_set_string(message.get(), XPCEndpoint::xpcMessageNameKey, LaunchServicesDatabaseXPCConstants::xpcUpdateLaunchServicesDatabaseMessageName);
xpc_dictionary_set_value(message.get(), LaunchServicesDatabaseXPCConstants::xpcLaunchServicesDatabaseKey, change);
- LockHolder holder(m_connectionsLock);
+ Locker locker { m_connectionsLock };
for (auto& connection : m_connections) {
RELEASE_ASSERT(xpc_get_type(connection.get()) == XPC_TYPE_CONNECTION);
xpc_connection_send_message(connection.get(), message.get());
@@ -73,7 +73,7 @@
void LaunchServicesDatabaseObserver::startObserving(OSObjectPtr<xpc_connection_t> connection)
{
{
- LockHolder holder(m_connectionsLock);
+ Locker locker { m_connectionsLock };
m_connections.append(connection);
}
@@ -132,7 +132,7 @@
if (event != XPC_ERROR_CONNECTION_INVALID && event != XPC_ERROR_TERMINATION_IMMINENT)
return;
- LockHolder holder(m_connectionsLock);
+ Locker locker { m_connectionsLock };
for (size_t i = 0; i < m_connections.size(); i++) {
if (m_connections[i].get() == connection) {
m_connections.remove(i);
Modified: trunk/Source/WebKit/Shared/BlockingResponseMap.h (277786 => 277787)
--- trunk/Source/WebKit/Shared/BlockingResponseMap.h 2021-05-20 16:00:28 UTC (rev 277786)
+++ trunk/Source/WebKit/Shared/BlockingResponseMap.h 2021-05-20 16:11:24 UTC (rev 277787)
@@ -26,9 +26,9 @@
#ifndef BlockingResponseMap_h
#define BlockingResponseMap_h
-#include <wtf/Condition.h>
+#include <wtf/CheckedCondition.h>
+#include <wtf/CheckedLock.h>
#include <wtf/HashMap.h>
-#include <wtf/Lock.h>
#include <wtf/Noncopyable.h>
template<typename T>
@@ -41,7 +41,7 @@
std::unique_ptr<T> waitForResponse(uint64_t requestID)
{
while (true) {
- std::unique_lock<Lock> lock(m_mutex);
+ Locker locker { m_responsesLock };
if (m_canceled)
return nullptr;
@@ -49,7 +49,7 @@
if (std::unique_ptr<T> response = m_responses.take(requestID))
return response;
- m_condition.wait(lock);
+ m_condition.wait(m_responsesLock);
}
return nullptr;
@@ -57,7 +57,7 @@
void didReceiveResponse(uint64_t requestID, std::unique_ptr<T> response)
{
- auto locker = holdLock(m_mutex);
+ Locker locker { m_responsesLock };
ASSERT(!m_responses.contains(requestID));
m_responses.set(requestID, WTFMove(response));
@@ -75,10 +75,10 @@
}
private:
- Lock m_mutex;
- Condition m_condition;
+ CheckedLock m_responsesLock;
+ CheckedCondition m_condition;
- HashMap<uint64_t, std::unique_ptr<T>> m_responses;
+ HashMap<uint64_t, std::unique_ptr<T>> m_responses WTF_GUARDED_BY_LOCK(m_responsesLock);
bool m_canceled;
};
Modified: trunk/Source/WebKit/Shared/Cocoa/XPCEndpointClient.h (277786 => 277787)
--- trunk/Source/WebKit/Shared/Cocoa/XPCEndpointClient.h 2021-05-20 16:00:28 UTC (rev 277786)
+++ trunk/Source/WebKit/Shared/Cocoa/XPCEndpointClient.h 2021-05-20 16:11:24 UTC (rev 277787)
@@ -26,7 +26,7 @@
#pragma once
#include "WKDeclarationSpecifiers.h"
-#include <wtf/Lock.h>
+#include <wtf/CheckedLock.h>
#include <wtf/OSObjectPtr.h>
#include <wtf/spi/darwin/XPCSPI.h>
@@ -45,8 +45,8 @@
virtual void handleEvent(xpc_object_t) = 0;
virtual void didConnect() = 0;
- OSObjectPtr<xpc_connection_t> m_connection;
- Lock m_lock;
+ CheckedLock m_connectionLock;
+ OSObjectPtr<xpc_connection_t> m_connection WTF_GUARDED_BY_LOCK(m_connectionLock);
};
}
Modified: trunk/Source/WebKit/Shared/Cocoa/XPCEndpointClient.mm (277786 => 277787)
--- trunk/Source/WebKit/Shared/Cocoa/XPCEndpointClient.mm 2021-05-20 16:00:28 UTC (rev 277786)
+++ trunk/Source/WebKit/Shared/Cocoa/XPCEndpointClient.mm 2021-05-20 16:11:24 UTC (rev 277787)
@@ -33,7 +33,7 @@
void XPCEndpointClient::setEndpoint(xpc_endpoint_t endpoint)
{
{
- LockHolder locker(m_lock);
+ Locker locker { m_connectionLock };
if (m_connection)
return;
@@ -45,7 +45,7 @@
xpc_type_t type = xpc_get_type(message);
if (type == XPC_TYPE_ERROR) {
if (message == XPC_ERROR_CONNECTION_INVALID || message == XPC_ERROR_TERMINATION_IMMINENT) {
- LockHolder locker(m_lock);
+ Locker locker { m_connectionLock };
m_connection = nullptr;
}
return;
@@ -74,7 +74,7 @@
OSObjectPtr<xpc_connection_t> XPCEndpointClient::connection()
{
- LockHolder locker(m_lock);
+ Locker locker { m_connectionLock };
return m_connection;
}
Modified: trunk/Source/WebKit/UIProcess/WebURLSchemeTask.cpp (277786 => 277787)
--- trunk/Source/WebKit/UIProcess/WebURLSchemeTask.cpp 2021-05-20 16:00:28 UTC (rev 277786)
+++ trunk/Source/WebKit/UIProcess/WebURLSchemeTask.cpp 2021-05-20 16:11:24 UTC (rev 277787)
@@ -60,6 +60,13 @@
ASSERT(RunLoop::isMain());
}
+ResourceRequest WebURLSchemeTask::request() const
+{
+ ASSERT(RunLoop::isMain());
+ Locker locker { m_requestLock };
+ return m_request;
+}
+
auto WebURLSchemeTask::willPerformRedirection(ResourceResponse&& response, ResourceRequest&& request, Function<void(ResourceRequest&&)>&& completionHandler) -> ExceptionType
{
ASSERT(RunLoop::isMain());
@@ -83,7 +90,7 @@
m_syncResponse = response;
{
- LockHolder locker(m_requestLock);
+ Locker locker { m_requestLock };
m_request = request;
}
@@ -127,7 +134,7 @@
m_syncResponse = response;
{
- LockHolder locker(m_requestLock);
+ Locker locker { m_requestLock };
m_request = request;
}
@@ -238,7 +245,7 @@
m_stopped = true;
if (isSync()) {
- LockHolder locker(m_requestLock);
+ Locker locker { m_requestLock };
m_syncCompletionHandler({ }, failedCustomProtocolSyncLoad(m_request), { });
}
}
@@ -251,7 +258,7 @@
m_stopped = true;
if (isSync()) {
- LockHolder locker(m_requestLock);
+ Locker locker { m_requestLock };
m_syncCompletionHandler({ }, failedCustomProtocolSyncLoad(m_request), { });
}
}
@@ -259,7 +266,7 @@
#if PLATFORM(COCOA)
NSURLRequest *WebURLSchemeTask::nsRequest() const
{
- LockHolder locker(m_requestLock);
+ Locker locker { m_requestLock };
return m_request.nsURLRequest(WebCore::HTTPBodyUpdatePolicy::UpdateHTTPBody);
}
#endif
Modified: trunk/Source/WebKit/UIProcess/WebURLSchemeTask.h (277786 => 277787)
--- trunk/Source/WebKit/UIProcess/WebURLSchemeTask.h 2021-05-20 16:00:28 UTC (rev 277786)
+++ trunk/Source/WebKit/UIProcess/WebURLSchemeTask.h 2021-05-20 16:11:24 UTC (rev 277787)
@@ -30,6 +30,7 @@
#include <WebCore/ResourceRequest.h>
#include <WebCore/ResourceResponse.h>
#include <WebCore/SharedBuffer.h>
+#include <wtf/CheckedLock.h>
#include <wtf/CompletionHandler.h>
#include <wtf/InstanceCounted.h>
#include <wtf/RefCounted.h>
@@ -64,7 +65,7 @@
WebPageProxyIdentifier pageProxyID() const { ASSERT(RunLoop::isMain()); return m_pageProxyID; }
WebCore::PageIdentifier webPageID() const { ASSERT(RunLoop::isMain()); return m_webPageID; }
WebProcessProxy* process() { ASSERT(RunLoop::isMain()); return m_process.get(); }
- const WebCore::ResourceRequest& request() const { ASSERT(RunLoop::isMain()); return m_request; }
+ WebCore::ResourceRequest request() const;
API::FrameInfo& frameInfo() const { return m_frameInfo.get(); }
#if PLATFORM(COCOA)
@@ -103,9 +104,9 @@
uint64_t m_identifier;
WebPageProxyIdentifier m_pageProxyID;
WebCore::PageIdentifier m_webPageID;
- WebCore::ResourceRequest m_request;
+ WebCore::ResourceRequest m_request WTF_GUARDED_BY_LOCK(m_requestLock);
Ref<API::FrameInfo> m_frameInfo;
- mutable Lock m_requestLock;
+ mutable CheckedLock m_requestLock;
bool m_stopped { false };
bool m_responseSent { false };
bool m_dataSent { false };
Modified: trunk/Source/WebKit/UIProcess/mac/DisplayLink.cpp (277786 => 277787)
--- trunk/Source/WebKit/UIProcess/mac/DisplayLink.cpp 2021-05-20 16:00:28 UTC (rev 277786)
+++ trunk/Source/WebKit/UIProcess/mac/DisplayLink.cpp 2021-05-20 16:11:24 UTC (rev 277787)
@@ -89,7 +89,7 @@
LOG_WITH_STREAM(DisplayLink, stream << "[UI ] DisplayLink " << this << " for display display " << m_displayID << " add observer " << observerID << " fps " << preferredFramesPerSecond);
{
- auto locker = holdLock(m_observersLock);
+ Locker locker { m_observersLock };
m_observers.ensure(&connection, [] {
return ConnectionClientInfo { };
}).iterator->value.observers.append({ observerID, preferredFramesPerSecond });
@@ -109,7 +109,7 @@
{
ASSERT(RunLoop::isMain());
- auto locker = holdLock(m_observersLock);
+ Locker locker { m_observersLock };
auto it = m_observers.find(&connection);
if (it == m_observers.end())
@@ -135,7 +135,7 @@
{
ASSERT(RunLoop::isMain());
- auto locker = holdLock(m_observersLock);
+ Locker locker { m_observersLock };
m_observers.remove(&connection);
// We do not stop the display link right away when |m_observers| becomes empty. Instead, we
@@ -156,7 +156,7 @@
void DisplayLink::incrementFullSpeedRequestClientCount(IPC::Connection& connection)
{
- auto locker = holdLock(m_observersLock);
+ Locker locker { m_observersLock };
auto& connectionInfo = m_observers.ensure(&connection, [] {
return ConnectionClientInfo { };
@@ -167,7 +167,7 @@
void DisplayLink::decrementFullSpeedRequestClientCount(IPC::Connection& connection)
{
- auto locker = holdLock(m_observersLock);
+ Locker locker { m_observersLock };
auto it = m_observers.find(&connection);
if (it == m_observers.end())
@@ -183,7 +183,7 @@
{
LOG_WITH_STREAM(DisplayLink, stream << "[UI ] DisplayLink " << this << " setPreferredFramesPerSecond - display " << m_displayID << " observer " << observerID << " fps " << preferredFramesPerSecond);
- auto locker = holdLock(m_observersLock);
+ Locker locker { m_observersLock };
auto it = m_observers.find(&connection);
if (it == m_observers.end())
@@ -208,7 +208,7 @@
{
ASSERT(!RunLoop::isMain());
- auto locker = holdLock(m_observersLock);
+ Locker locker { m_observersLock };
auto maxFramesPerSecond = [](const Vector<ObserverInfo>& observers) {
Optional<WebCore::FramesPerSecond> observersMaxFramesPerSecond;
Modified: trunk/Source/WebKit/UIProcess/mac/DisplayLink.h (277786 => 277787)
--- trunk/Source/WebKit/UIProcess/mac/DisplayLink.h 2021-05-20 16:00:28 UTC (rev 277786)
+++ trunk/Source/WebKit/UIProcess/mac/DisplayLink.h 2021-05-20 16:11:24 UTC (rev 277787)
@@ -32,8 +32,8 @@
#include <WebCore/AnimationFrameRate.h>
#include <WebCore/DisplayUpdate.h>
#include <WebCore/PlatformScreen.h>
+#include <wtf/CheckedLock.h>
#include <wtf/HashMap.h>
-#include <wtf/Lock.h>
namespace IPC {
class Connection;
@@ -68,7 +68,7 @@
static CVReturn displayLinkCallback(CVDisplayLinkRef, const CVTimeStamp*, const CVTimeStamp*, CVOptionFlags, CVOptionFlags*, void* data);
void notifyObserversDisplayWasRefreshed();
- void removeInfoForConnectionIfPossible(IPC::Connection&);
+ void removeInfoForConnectionIfPossible(IPC::Connection&) WTF_REQUIRES_LOCK(m_observersLock);
static WebCore::FramesPerSecond nominalFramesPerSecondFromDisplayLink(CVDisplayLinkRef);
@@ -83,8 +83,8 @@
};
CVDisplayLinkRef m_displayLink { nullptr };
- Lock m_observersLock;
- HashMap<RefPtr<IPC::Connection>, ConnectionClientInfo> m_observers;
+ CheckedLock m_observersLock;
+ HashMap<RefPtr<IPC::Connection>, ConnectionClientInfo> m_observers WTF_GUARDED_BY_LOCK(m_observersLock);
WebCore::PlatformDisplayID m_displayID;
WebCore::FramesPerSecond m_displayNominalFramesPerSecond { 0 };
WebCore::DisplayUpdate m_currentUpdate;
Modified: trunk/Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp (277786 => 277787)
--- trunk/Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp 2021-05-20 16:00:28 UTC (rev 277786)
+++ trunk/Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp 2021-05-20 16:11:24 UTC (rev 277787)
@@ -174,10 +174,9 @@
{
}
-void LibWebRTCCodecs::ensureGPUProcessConnectionOnMainThread(Locker<Lock>& locker)
+void LibWebRTCCodecs::ensureGPUProcessConnectionOnMainThreadWithLock()
{
ASSERT(isMainRunLoop());
- ASSERT_UNUSED(locker, locker.lockable() == &m_connectionLock);
if (m_connection)
return;
@@ -195,7 +194,7 @@
{
m_needsGPUProcessConnection = true;
- auto locker = holdLock(m_connectionLock);
+ Locker locker { m_connectionLock };
// Fast path when we already have a connection.
if (m_connection) {
@@ -209,8 +208,8 @@
return;
callOnMainRunLoop([this] {
- auto locker = holdLock(m_connectionLock);
- ensureGPUProcessConnectionOnMainThread(locker);
+ Locker locker { m_connectionLock };
+ ensureGPUProcessConnectionOnMainThreadWithLock();
for (auto& task : std::exchange(m_tasksToDispatchAfterEstablishingConnection, { }))
dispatchToThread(WTFMove(task));
});
@@ -258,7 +257,7 @@
decoder->type = type;
ensureGPUProcessConnectionAndDispatchToThread([this, decoder = WTFMove(decoder)]() mutable {
- auto locker = holdLock(m_connectionLock);
+ Locker locker { m_connectionLock };
decoder->connection = m_connection;
createRemoteDecoder(*decoder, *m_connection);
@@ -284,7 +283,7 @@
int32_t LibWebRTCCodecs::decodeFrame(Decoder& decoder, uint32_t timeStamp, const uint8_t* data, size_t size, uint16_t width, uint16_t height)
{
- LockHolder holder(m_connectionLock);
+ Locker locker { m_connectionLock };
if (!decoder.connection || decoder.hasError) {
decoder.hasError = false;
return WEBRTC_VIDEO_CODEC_ERROR;
@@ -380,7 +379,7 @@
parameters.append(std::make_pair(String::fromUTF8(keyValue.first.data(), keyValue.first.length()), String::fromUTF8(keyValue.second.data(), keyValue.second.length())));
ensureGPUProcessConnectionAndDispatchToThread([this, encoder = WTFMove(encoder), type, parameters = WTFMove(parameters)]() mutable {
- LockHolder holder(m_connectionLock);
+ Locker locker { m_connectionLock };
encoder->connection = m_connection;
encoder->connection->send(Messages::LibWebRTCCodecsProxy::CreateEncoder { encoder->identifier, formatNameFromCodecType(type), parameters, RuntimeEnabledFeatures::sharedFeatures().webRTCH264LowLatencyEncoderEnabled() }, 0);
encoder->parameters = WTFMove(parameters);
@@ -416,7 +415,7 @@
int32_t LibWebRTCCodecs::encodeFrame(Encoder& encoder, const webrtc::VideoFrame& frame, bool shouldEncodeAsKeyFrame)
{
- LockHolder holder(m_connectionLock);
+ Locker locker { m_connectionLock };
if (!encoder.connection)
return WEBRTC_VIDEO_CODEC_ERROR;
@@ -462,7 +461,7 @@
void LibWebRTCCodecs::setEncodeRates(Encoder& encoder, uint32_t bitRate, uint32_t frameRate)
{
- LockHolder holder(m_connectionLock);
+ Locker locker { m_connectionLock };
if (!encoder.connection) {
callOnMainRunLoop([encoderIdentifier = encoder.identifier, bitRate, frameRate] {
@@ -510,15 +509,15 @@
void LibWebRTCCodecs::gpuProcessConnectionDidClose(GPUProcessConnection&)
{
ASSERT(isMainRunLoop());
- auto locker = holdLock(m_connectionLock);
+ Locker locker { m_connectionLock };
std::exchange(m_connection, nullptr)->removeThreadMessageReceiver(Messages::LibWebRTCCodecs::messageReceiverName());
if (!m_needsGPUProcessConnection)
return;
- ensureGPUProcessConnectionOnMainThread(locker);
+ ensureGPUProcessConnectionOnMainThreadWithLock();
dispatchToThread([this]() {
// Lock everything so that we can update encoder/decoder connection.
- LockHolder holder(m_connectionLock);
+ Locker locker { m_connectionLock };
// Recreate encoders and initialize them, recreate decoders.
for (auto& encoder : m_encoders.values()) {
m_connection->send(Messages::LibWebRTCCodecsProxy::CreateEncoder { encoder->identifier, formatNameFromWebRTCCodecType(encoder->codecType), encoder->parameters, RuntimeEnabledFeatures::sharedFeatures().webRTCH264LowLatencyEncoderEnabled() }, 0);
@@ -536,6 +535,8 @@
void LibWebRTCCodecs::setLoggingLevel(WTFLogLevel level)
{
m_loggingLevel = level;
+
+ Locker locker { m_connectionLock };
if (m_connection)
m_connection->send(Messages::LibWebRTCCodecsProxy::SetRTCLoggingLevel(level), 0);
}
Modified: trunk/Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.h (277786 => 277787)
--- trunk/Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.h 2021-05-20 16:00:28 UTC (rev 277786)
+++ trunk/Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.h 2021-05-20 16:11:24 UTC (rev 277787)
@@ -37,6 +37,7 @@
#include <WebCore/PixelBufferConformerCV.h>
#include <map>
#include <webrtc/api/video/video_codec_type.h>
+#include <wtf/CheckedLock.h>
#include <wtf/HashMap.h>
#include <wtf/HashSet.h>
#include <wtf/Lock.h>
@@ -122,7 +123,7 @@
private:
LibWebRTCCodecs();
void ensureGPUProcessConnectionAndDispatchToThread(Function<void()>&&);
- void ensureGPUProcessConnectionOnMainThread(Locker<Lock>&);
+ void ensureGPUProcessConnectionOnMainThreadWithLock() WTF_REQUIRES_LOCK(m_connectionLock);
void gpuProcessConnectionMayNoLongerBeNeeded();
void failedDecoding(RTCDecoderIdentifier);
@@ -144,8 +145,8 @@
std::atomic<bool> m_needsGPUProcessConnection;
- Lock m_connectionLock;
- RefPtr<IPC::Connection> m_connection;
+ CheckedLock m_connectionLock;
+ RefPtr<IPC::Connection> m_connection WTF_GUARDED_BY_LOCK(m_connectionLock);
Vector<Function<void()>> m_tasksToDispatchAfterEstablishingConnection;
Ref<WorkQueue> m_queue;
Modified: trunk/Source/WebKit/WebProcess/Plugins/PluginProcessConnectionManager.cpp (277786 => 277787)
--- trunk/Source/WebKit/WebProcess/Plugins/PluginProcessConnectionManager.cpp 2021-05-20 16:00:28 UTC (rev 277786)
+++ trunk/Source/WebKit/WebProcess/Plugins/PluginProcessConnectionManager.cpp 2021-05-20 16:11:24 UTC (rev 277787)
@@ -89,7 +89,7 @@
m_pluginProcessConnections.append(pluginProcessConnection.copyRef());
{
- LockHolder locker(m_tokensAndConnectionsMutex);
+ Locker locker { m_tokensAndConnectionsLock };
ASSERT(!m_tokensAndConnections.contains(pluginProcessToken));
m_tokensAndConnections.set(pluginProcessToken, pluginProcessConnection->connection());
@@ -104,7 +104,7 @@
ASSERT(vectorIndex != notFound);
{
- LockHolder locker(m_tokensAndConnectionsMutex);
+ Locker locker { m_tokensAndConnectionsLock };
ASSERT(m_tokensAndConnections.contains(pluginProcessConnection->pluginProcessToken()));
m_tokensAndConnections.remove(pluginProcessConnection->pluginProcessToken());
@@ -115,7 +115,7 @@
void PluginProcessConnectionManager::pluginProcessCrashed(uint64_t pluginProcessToken)
{
- LockHolder locker(m_tokensAndConnectionsMutex);
+ Locker locker { m_tokensAndConnectionsLock };
IPC::Connection* connection = m_tokensAndConnections.get(pluginProcessToken);
// It's OK for connection to be null here; it will happen if this web process doesn't know
Modified: trunk/Source/WebKit/WebProcess/Plugins/PluginProcessConnectionManager.h (277786 => 277787)
--- trunk/Source/WebKit/WebProcess/Plugins/PluginProcessConnectionManager.h 2021-05-20 16:00:28 UTC (rev 277786)
+++ trunk/Source/WebKit/WebProcess/Plugins/PluginProcessConnectionManager.h 2021-05-20 16:11:24 UTC (rev 277787)
@@ -29,6 +29,7 @@
#if ENABLE(NETSCAPE_PLUGIN_API)
#include "PluginProcess.h"
+#include <wtf/CheckedLock.h>
#include <wtf/Forward.h>
#include <wtf/HashMap.h>
#include <wtf/Noncopyable.h>
@@ -64,8 +65,8 @@
Vector<RefPtr<PluginProcessConnection>> m_pluginProcessConnections;
- Lock m_tokensAndConnectionsMutex;
- HashMap<uint64_t, RefPtr<IPC::Connection>> m_tokensAndConnections;
+ CheckedLock m_tokensAndConnectionsLock;
+ HashMap<uint64_t, RefPtr<IPC::Connection>> m_tokensAndConnections WTF_GUARDED_BY_LOCK(m_tokensAndConnectionsLock);
};
}
Modified: trunk/Source/WebKit/WebProcess/WebPage/EventDispatcher.cpp (277786 => 277787)
--- trunk/Source/WebKit/WebProcess/WebPage/EventDispatcher.cpp 2021-05-20 16:00:28 UTC (rev 277786)
+++ trunk/Source/WebKit/WebProcess/WebPage/EventDispatcher.cpp 2021-05-20 16:11:24 UTC (rev 277787)
@@ -73,7 +73,7 @@
#if ENABLE(SCROLLING_THREAD)
void EventDispatcher::addScrollingTreeForPage(WebPage* webPage)
{
- LockHolder locker(m_scrollingTreesMutex);
+ Locker locker { m_scrollingTreesLock };
ASSERT(webPage->corePage()->scrollingCoordinator());
ASSERT(!m_scrollingTrees.contains(webPage->identifier()));
@@ -84,7 +84,7 @@
void EventDispatcher::removeScrollingTreeForPage(WebPage* webPage)
{
- LockHolder locker(m_scrollingTreesMutex);
+ Locker locker { m_scrollingTreesLock };
ASSERT(m_scrollingTrees.contains(webPage->identifier()));
m_scrollingTrees.remove(webPage->identifier());
@@ -124,7 +124,7 @@
auto processingSteps = OptionSet<WebCore::WheelEventProcessingSteps> { WheelEventProcessingSteps::MainThreadForScrolling, WheelEventProcessingSteps::MainThreadForBlockingDOMEventDispatch };
#if ENABLE(SCROLLING_THREAD)
do {
- LockHolder locker(m_scrollingTreesMutex);
+ Locker locker { m_scrollingTreesLock };
auto scrollingTree = m_scrollingTrees.get(pageID);
if (!scrollingTree) {
@@ -186,7 +186,7 @@
#if ENABLE(IOS_TOUCH_EVENTS)
void EventDispatcher::takeQueuedTouchEventsForPage(const WebPage& webPage, TouchEventQueue& destinationQueue)
{
- LockHolder locker(&m_touchEventsLock);
+ Locker locker { m_touchEventsLock };
destinationQueue = m_touchEvents.take(webPage.identifier());
}
@@ -199,7 +199,7 @@
{
bool updateListWasEmpty;
{
- LockHolder locker(&m_touchEventsLock);
+ Locker locker { m_touchEventsLock };
updateListWasEmpty = m_touchEvents.isEmpty();
auto addResult = m_touchEvents.add(pageID, TouchEventQueue());
if (addResult.isNewEntry)
@@ -229,7 +229,7 @@
HashMap<PageIdentifier, TouchEventQueue> localCopy;
{
- LockHolder locker(&m_touchEventsLock);
+ Locker locker { m_touchEventsLock };
localCopy.swap(m_touchEvents);
}
@@ -282,7 +282,7 @@
void EventDispatcher::notifyScrollingTreesDisplayWasRefreshed(PlatformDisplayID displayID)
{
#if ENABLE(SCROLLING_THREAD)
- LockHolder locker(m_scrollingTreesMutex);
+ Locker locker { m_scrollingTreesLock };
for (auto keyValuePair : m_scrollingTrees)
keyValuePair.value->displayDidRefresh(displayID);
#endif
Modified: trunk/Source/WebKit/WebProcess/WebPage/EventDispatcher.h (277786 => 277787)
--- trunk/Source/WebKit/WebProcess/WebPage/EventDispatcher.h 2021-05-20 16:00:28 UTC (rev 277786)
+++ trunk/Source/WebKit/WebProcess/WebPage/EventDispatcher.h 2021-05-20 16:11:24 UTC (rev 277787)
@@ -32,8 +32,8 @@
#include <WebCore/PlatformWheelEvent.h>
#include <WebCore/WheelEventDeltaFilter.h>
#include <memory>
+#include <wtf/CheckedLock.h>
#include <wtf/HashMap.h>
-#include <wtf/Lock.h>
#include <wtf/Noncopyable.h>
#include <wtf/RefPtr.h>
#include <wtf/ThreadingPrimitives.h>
@@ -118,13 +118,13 @@
Ref<WorkQueue> m_queue;
#if ENABLE(SCROLLING_THREAD)
- Lock m_scrollingTreesMutex;
- HashMap<WebCore::PageIdentifier, RefPtr<WebCore::ThreadedScrollingTree>> m_scrollingTrees;
+ CheckedLock m_scrollingTreesLock;
+ HashMap<WebCore::PageIdentifier, RefPtr<WebCore::ThreadedScrollingTree>> m_scrollingTrees WTF_GUARDED_BY_LOCK(m_scrollingTreesLock);
#endif
std::unique_ptr<WebCore::WheelEventDeltaFilter> m_recentWheelEventDeltaFilter;
#if ENABLE(IOS_TOUCH_EVENTS)
- Lock m_touchEventsLock;
- HashMap<WebCore::PageIdentifier, TouchEventQueue> m_touchEvents;
+ CheckedLock m_touchEventsLock;
+ HashMap<WebCore::PageIdentifier, TouchEventQueue> m_touchEvents WTF_GUARDED_BY_LOCK(m_touchEventsLock);
#endif
};
Modified: trunk/Source/WebKit/WebProcess/WebPage/ViewUpdateDispatcher.cpp (277786 => 277787)
--- trunk/Source/WebKit/WebProcess/WebPage/ViewUpdateDispatcher.cpp 2021-05-20 16:00:28 UTC (rev 277786)
+++ trunk/Source/WebKit/WebProcess/WebPage/ViewUpdateDispatcher.cpp 2021-05-20 16:11:24 UTC (rev 277787)
@@ -60,7 +60,7 @@
{
bool updateListWasEmpty;
{
- LockHolder locker(&m_dataMutex);
+ Locker locker { m_latestUpdateLock };
updateListWasEmpty = m_latestUpdate.isEmpty();
auto iterator = m_latestUpdate.find(pageID);
if (iterator == m_latestUpdate.end())
@@ -79,7 +79,7 @@
{
HashMap<WebCore::PageIdentifier, UniqueRef<UpdateData>> update;
{
- LockHolder locker(&m_dataMutex);
+ Locker locker { m_latestUpdateLock };
update = std::exchange(m_latestUpdate, { });
}
Modified: trunk/Source/WebKit/WebProcess/WebPage/ViewUpdateDispatcher.h (277786 => 277787)
--- trunk/Source/WebKit/WebProcess/WebPage/ViewUpdateDispatcher.h 2021-05-20 16:00:28 UTC (rev 277786)
+++ trunk/Source/WebKit/WebProcess/WebPage/ViewUpdateDispatcher.h 2021-05-20 16:11:24 UTC (rev 277787)
@@ -31,8 +31,8 @@
#include "VisibleContentRectUpdateInfo.h"
#include <WebCore/PageIdentifier.h>
+#include <wtf/CheckedLock.h>
#include <wtf/HashMap.h>
-#include <wtf/Lock.h>
#include <wtf/Ref.h>
namespace WebKit {
@@ -64,8 +64,8 @@
};
Ref<WorkQueue> m_queue;
- Lock m_dataMutex;
- HashMap<WebCore::PageIdentifier, UniqueRef<UpdateData>> m_latestUpdate;
+ CheckedLock m_latestUpdateLock;
+ HashMap<WebCore::PageIdentifier, UniqueRef<UpdateData>> m_latestUpdate WTF_GUARDED_BY_LOCK(m_latestUpdateLock);
};
} // namespace WebKit
Modified: trunk/Tools/TestWebKitAPI/Tests/WebKit/XPCEndpoint.mm (277786 => 277787)
--- trunk/Tools/TestWebKitAPI/Tests/WebKit/XPCEndpoint.mm 2021-05-20 16:00:28 UTC (rev 277786)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKit/XPCEndpoint.mm 2021-05-20 16:11:24 UTC (rev 277787)
@@ -37,21 +37,21 @@
static constexpr auto testMessageFromEndpoint = "test-message-from-endpoint";
static constexpr auto testMessageFromClient = "test-message-from-client";
-class XPCEndpoint : public WebKit::XPCEndpoint {
+class XPCEndpoint final : public WebKit::XPCEndpoint {
private:
- const char* xpcEndpointMessageNameKey() const override
+ const char* xpcEndpointMessageNameKey() const final
{
return nullptr;
}
- const char* xpcEndpointMessageName() const override
+ const char* xpcEndpointMessageName() const final
{
return nullptr;
}
- const char* xpcEndpointNameKey() const override
+ const char* xpcEndpointNameKey() const final
{
return nullptr;
}
- void handleEvent(xpc_connection_t connection, xpc_object_t event) override
+ void handleEvent(xpc_connection_t connection, xpc_object_t event) final
{
String messageName = xpc_dictionary_get_string(event, XPCEndpoint::xpcMessageNameKey);
if (messageName == testMessageFromClient) {
@@ -64,15 +64,15 @@
}
};
-class XPCEndpointClient : public WebKit::XPCEndpointClient {
+class XPCEndpointClient final : public WebKit::XPCEndpointClient {
private:
- void handleEvent(xpc_object_t event) override
+ void handleEvent(xpc_object_t event) final
{
String messageName = xpc_dictionary_get_string(event, XPCEndpoint::xpcMessageNameKey);
if (messageName == testMessageFromEndpoint)
clientReceivedMessageFromEndpoint = true;
}
- void didConnect() override
+ void didConnect() final
{
auto message = adoptOSObject(xpc_dictionary_create(nullptr, nullptr, 0));
xpc_dictionary_set_string(message.get(), XPCEndpoint::xpcMessageNameKey, testMessageFromClient);