Title: [277787] trunk
Revision
277787
Author
[email protected]
Date
2021-05-20 09:11:24 -0700 (Thu, 20 May 2021)

Log Message

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:

Modified Paths

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);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to