Title: [201575] trunk/Source
Revision
201575
Author
[email protected]
Date
2016-06-01 16:38:37 -0700 (Wed, 01 Jun 2016)

Log Message

Modernize lambda usage for all callers of RunLoop::dispatch().
https://bugs.webkit.org/show_bug.cgi?id=158265

Reviewed by Chris Dumez.

Source/WebCore:

No new tests (Refactor, no behavior change).

* Modules/indexeddb/shared/InProcessIDBServer.cpp:
(WebCore::InProcessIDBServer::deleteDatabase):
(WebCore::InProcessIDBServer::didDeleteDatabase):
(WebCore::InProcessIDBServer::openDatabase):
(WebCore::InProcessIDBServer::didOpenDatabase):
(WebCore::InProcessIDBServer::didAbortTransaction):
(WebCore::InProcessIDBServer::didCommitTransaction):
(WebCore::InProcessIDBServer::didCreateObjectStore):
(WebCore::InProcessIDBServer::didDeleteObjectStore):
(WebCore::InProcessIDBServer::didClearObjectStore):
(WebCore::InProcessIDBServer::didCreateIndex):
(WebCore::InProcessIDBServer::didDeleteIndex):
(WebCore::InProcessIDBServer::didPutOrAdd):
(WebCore::InProcessIDBServer::didGetRecord):
(WebCore::InProcessIDBServer::didGetCount):
(WebCore::InProcessIDBServer::didDeleteRecord):
(WebCore::InProcessIDBServer::didOpenCursor):
(WebCore::InProcessIDBServer::didIterateCursor):
(WebCore::InProcessIDBServer::abortTransaction):
(WebCore::InProcessIDBServer::commitTransaction):
(WebCore::InProcessIDBServer::didFinishHandlingVersionChangeTransaction):
(WebCore::InProcessIDBServer::createObjectStore):
(WebCore::InProcessIDBServer::deleteObjectStore):
(WebCore::InProcessIDBServer::clearObjectStore):
(WebCore::InProcessIDBServer::createIndex):
(WebCore::InProcessIDBServer::deleteIndex):
(WebCore::InProcessIDBServer::putOrAdd):
(WebCore::InProcessIDBServer::getRecord):
(WebCore::InProcessIDBServer::getCount):
(WebCore::InProcessIDBServer::deleteRecord):
(WebCore::InProcessIDBServer::openCursor):
(WebCore::InProcessIDBServer::iterateCursor):
(WebCore::InProcessIDBServer::establishTransaction):
(WebCore::InProcessIDBServer::fireVersionChangeEvent):
(WebCore::InProcessIDBServer::didStartTransaction):
(WebCore::InProcessIDBServer::didCloseFromServer):
(WebCore::InProcessIDBServer::notifyOpenDBRequestBlocked):
(WebCore::InProcessIDBServer::databaseConnectionClosed):
(WebCore::InProcessIDBServer::abortOpenAndUpgradeNeeded):
(WebCore::InProcessIDBServer::didFireVersionChangeEvent):
(WebCore::InProcessIDBServer::openDBRequestCancelled):
(WebCore::InProcessIDBServer::confirmDidCloseFromServer):
(WebCore::InProcessIDBServer::getAllDatabaseNames):
(WebCore::InProcessIDBServer::didGetAllDatabaseNames):

* Modules/websockets/WebSocket.cpp:
(WebCore::WebSocket::connect):

* bindings/js/SerializedScriptValue.cpp:
(WebCore::SerializedScriptValue::writeBlobsToDiskForIndexedDBSynchronously):

* page/scrolling/ThreadedScrollingTree.cpp:
(WebCore::ThreadedScrollingTree::invalidate):
(WebCore::ThreadedScrollingTree::scrollingTreeNodeDidScroll):
(WebCore::ThreadedScrollingTree::currentSnapPointIndicesDidChange):
(WebCore::ThreadedScrollingTree::handleWheelEventPhase):
(WebCore::ThreadedScrollingTree::setActiveScrollSnapIndices):
(WebCore::ThreadedScrollingTree::deferTestsForReason):
(WebCore::ThreadedScrollingTree::removeTestDeferralForReason):

* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::FontCache::platformPrecache):

* platform/graphics/mac/DisplayRefreshMonitorMac.cpp:
(WebCore::DisplayRefreshMonitorMac::displayLinkFired):

* platform/network/DataURLDecoder.cpp:
(WebCore::DataURLDecoder::createDecodeTask):
(WebCore::DataURLDecoder::decode):

Source/WebKit2:

* DatabaseProcess/DatabaseProcess.cpp:
(WebKit::DatabaseProcess::fetchWebsiteData):
(WebKit::DatabaseProcess::deleteWebsiteData):
(WebKit::DatabaseProcess::deleteWebsiteDataForOrigins):

* NetworkProcess/NetworkProcess.cpp:
(WebKit::fetchDiskCacheEntries):
(WebKit::NetworkProcess::fetchWebsiteData):

* NetworkProcess/cache/NetworkCacheStorage.cpp:
(WebKit::NetworkCache::Storage::remove):
(WebKit::NetworkCache::retrieveFromMemory):

* Platform/IPC/Connection.cpp:
(IPC::Connection::SyncMessageState::processIncomingMessage):
(IPC::Connection::processIncomingMessage):
(IPC::Connection::connectionDidClose):
(IPC::Connection::enqueueIncomingMessage):
* Platform/IPC/mac/ConnectionMac.mm:
(IPC::Connection::receiveSourceEventHandler):

* Shared/mac/CookieStorageShim.mm:
(-[WKNSURLSessionLocal _getCookieHeadersForTask:completionHandler:]):
* UIProcess/API/APIUserContentExtensionStore.cpp:
(API::UserContentExtensionStore::lookupContentExtension):
(API::UserContentExtensionStore::compileContentExtension):
(API::UserContentExtensionStore::removeContentExtension):

* UIProcess/Launcher/ProcessLauncher.cpp:
(WebKit::ProcessLauncher::ProcessLauncher):
* UIProcess/Launcher/mac/ProcessLauncherMac.mm:
(WebKit::connectToService):

* UIProcess/Storage/StorageManager.cpp:
(WebKit::StorageManager::getSessionStorageOrigins):
(WebKit::StorageManager::deleteSessionStorageOrigins):
(WebKit::StorageManager::deleteSessionStorageEntriesForOrigins):
(WebKit::StorageManager::getLocalStorageOrigins):
(WebKit::StorageManager::getLocalStorageOriginDetails):
(WebKit::StorageManager::deleteLocalStorageEntriesForOrigin):
(WebKit::StorageManager::deleteLocalStorageOriginsModifiedSince):
(WebKit::StorageManager::deleteLocalStorageEntriesForOrigins):

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::isWebProcessResponsive):

* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::isResponsive):

* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::fetchData):

* WebProcess/Plugins/Netscape/NetscapePlugin.cpp:
(WebKit::NetscapePlugin::pluginThreadAsyncCall):

* WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::unprotectPluginFromDestruction):

* WebProcess/WebPage/EventDispatcher.cpp:
(WebKit::EventDispatcher::wheelEvent):
(WebKit::EventDispatcher::gestureEvent):
(WebKit::EventDispatcher::touchEvent):

* WebProcess/WebPage/ViewUpdateDispatcher.cpp:
(WebKit::ViewUpdateDispatcher::visibleContentRectUpdate):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (201574 => 201575)


--- trunk/Source/WebCore/ChangeLog	2016-06-01 22:49:07 UTC (rev 201574)
+++ trunk/Source/WebCore/ChangeLog	2016-06-01 23:38:37 UTC (rev 201575)
@@ -1,3 +1,82 @@
+2016-06-01  Brady Eidson  <[email protected]>
+
+        Modernize lambda usage for all callers of RunLoop::dispatch().
+        https://bugs.webkit.org/show_bug.cgi?id=158265
+
+        Reviewed by Chris Dumez.
+
+        No new tests (Refactor, no behavior change).
+
+        * Modules/indexeddb/shared/InProcessIDBServer.cpp:
+        (WebCore::InProcessIDBServer::deleteDatabase):
+        (WebCore::InProcessIDBServer::didDeleteDatabase):
+        (WebCore::InProcessIDBServer::openDatabase):
+        (WebCore::InProcessIDBServer::didOpenDatabase):
+        (WebCore::InProcessIDBServer::didAbortTransaction):
+        (WebCore::InProcessIDBServer::didCommitTransaction):
+        (WebCore::InProcessIDBServer::didCreateObjectStore):
+        (WebCore::InProcessIDBServer::didDeleteObjectStore):
+        (WebCore::InProcessIDBServer::didClearObjectStore):
+        (WebCore::InProcessIDBServer::didCreateIndex):
+        (WebCore::InProcessIDBServer::didDeleteIndex):
+        (WebCore::InProcessIDBServer::didPutOrAdd):
+        (WebCore::InProcessIDBServer::didGetRecord):
+        (WebCore::InProcessIDBServer::didGetCount):
+        (WebCore::InProcessIDBServer::didDeleteRecord):
+        (WebCore::InProcessIDBServer::didOpenCursor):
+        (WebCore::InProcessIDBServer::didIterateCursor):
+        (WebCore::InProcessIDBServer::abortTransaction):
+        (WebCore::InProcessIDBServer::commitTransaction):
+        (WebCore::InProcessIDBServer::didFinishHandlingVersionChangeTransaction):
+        (WebCore::InProcessIDBServer::createObjectStore):
+        (WebCore::InProcessIDBServer::deleteObjectStore):
+        (WebCore::InProcessIDBServer::clearObjectStore):
+        (WebCore::InProcessIDBServer::createIndex):
+        (WebCore::InProcessIDBServer::deleteIndex):
+        (WebCore::InProcessIDBServer::putOrAdd):
+        (WebCore::InProcessIDBServer::getRecord):
+        (WebCore::InProcessIDBServer::getCount):
+        (WebCore::InProcessIDBServer::deleteRecord):
+        (WebCore::InProcessIDBServer::openCursor):
+        (WebCore::InProcessIDBServer::iterateCursor):
+        (WebCore::InProcessIDBServer::establishTransaction):
+        (WebCore::InProcessIDBServer::fireVersionChangeEvent):
+        (WebCore::InProcessIDBServer::didStartTransaction):
+        (WebCore::InProcessIDBServer::didCloseFromServer):
+        (WebCore::InProcessIDBServer::notifyOpenDBRequestBlocked):
+        (WebCore::InProcessIDBServer::databaseConnectionClosed):
+        (WebCore::InProcessIDBServer::abortOpenAndUpgradeNeeded):
+        (WebCore::InProcessIDBServer::didFireVersionChangeEvent):
+        (WebCore::InProcessIDBServer::openDBRequestCancelled):
+        (WebCore::InProcessIDBServer::confirmDidCloseFromServer):
+        (WebCore::InProcessIDBServer::getAllDatabaseNames):
+        (WebCore::InProcessIDBServer::didGetAllDatabaseNames):
+        
+        * Modules/websockets/WebSocket.cpp:
+        (WebCore::WebSocket::connect):
+        
+        * bindings/js/SerializedScriptValue.cpp:
+        (WebCore::SerializedScriptValue::writeBlobsToDiskForIndexedDBSynchronously):
+        
+        * page/scrolling/ThreadedScrollingTree.cpp:
+        (WebCore::ThreadedScrollingTree::invalidate):
+        (WebCore::ThreadedScrollingTree::scrollingTreeNodeDidScroll):
+        (WebCore::ThreadedScrollingTree::currentSnapPointIndicesDidChange):
+        (WebCore::ThreadedScrollingTree::handleWheelEventPhase):
+        (WebCore::ThreadedScrollingTree::setActiveScrollSnapIndices):
+        (WebCore::ThreadedScrollingTree::deferTestsForReason):
+        (WebCore::ThreadedScrollingTree::removeTestDeferralForReason):
+        
+        * platform/graphics/cocoa/FontCacheCoreText.cpp:
+        (WebCore::FontCache::platformPrecache):
+        
+        * platform/graphics/mac/DisplayRefreshMonitorMac.cpp:
+        (WebCore::DisplayRefreshMonitorMac::displayLinkFired):
+        
+        * platform/network/DataURLDecoder.cpp:
+        (WebCore::DataURLDecoder::createDecodeTask):
+        (WebCore::DataURLDecoder::decode):
+
 2016-06-01  Eric Carlson  <[email protected]>
 
         REGRESSION(r201385) ASSERT in WebCore::HTMLMediaElement::updateActiveTextTrackCues + 5688

Modified: trunk/Source/WebCore/Modules/indexeddb/shared/InProcessIDBServer.cpp (201574 => 201575)


--- trunk/Source/WebCore/Modules/indexeddb/shared/InProcessIDBServer.cpp	2016-06-01 22:49:07 UTC (rev 201574)
+++ trunk/Source/WebCore/Modules/indexeddb/shared/InProcessIDBServer.cpp	2016-06-01 23:38:37 UTC (rev 201575)
@@ -91,351 +91,301 @@
 
 void InProcessIDBServer::deleteDatabase(const IDBRequestData& requestData)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-    RunLoop::current().dispatch([this, protectedThis, requestData] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), requestData] {
         m_server->deleteDatabase(requestData);
     });
 }
 
 void InProcessIDBServer::didDeleteDatabase(const IDBResultData& resultData)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-    RunLoop::current().dispatch([this, protectedThis, resultData] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), resultData] {
         m_connectionToServer->didDeleteDatabase(resultData);
     });
 }
 
 void InProcessIDBServer::openDatabase(const IDBRequestData& requestData)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-    RunLoop::current().dispatch([this, protectedThis, requestData] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), requestData] {
         m_server->openDatabase(requestData);
     });
 }
 
 void InProcessIDBServer::didOpenDatabase(const IDBResultData& resultData)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-    RunLoop::current().dispatch([this, protectedThis, resultData] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), resultData] {
         m_connectionToServer->didOpenDatabase(resultData);
     });
 }
 
 void InProcessIDBServer::didAbortTransaction(const IDBResourceIdentifier& transactionIdentifier, const IDBError& error)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-    RunLoop::current().dispatch([this, protectedThis, transactionIdentifier, error] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), transactionIdentifier, error] {
         m_connectionToServer->didAbortTransaction(transactionIdentifier, error);
     });
 }
 
 void InProcessIDBServer::didCommitTransaction(const IDBResourceIdentifier& transactionIdentifier, const IDBError& error)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-    RunLoop::current().dispatch([this, protectedThis, transactionIdentifier, error] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), transactionIdentifier, error] {
         m_connectionToServer->didCommitTransaction(transactionIdentifier, error);
     });
 }
 
 void InProcessIDBServer::didCreateObjectStore(const IDBResultData& resultData)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-    RunLoop::current().dispatch([this, protectedThis, resultData] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), resultData] {
         m_connectionToServer->didCreateObjectStore(resultData);
     });
 }
 
 void InProcessIDBServer::didDeleteObjectStore(const IDBResultData& resultData)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-    RunLoop::current().dispatch([this, protectedThis, resultData] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), resultData] {
         m_connectionToServer->didDeleteObjectStore(resultData);
     });
 }
 
 void InProcessIDBServer::didClearObjectStore(const IDBResultData& resultData)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-    RunLoop::current().dispatch([this, protectedThis, resultData] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), resultData] {
         m_connectionToServer->didClearObjectStore(resultData);
     });
 }
 
 void InProcessIDBServer::didCreateIndex(const IDBResultData& resultData)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-    RunLoop::current().dispatch([this, protectedThis, resultData] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), resultData] {
         m_connectionToServer->didCreateIndex(resultData);
     });
 }
 
 void InProcessIDBServer::didDeleteIndex(const IDBResultData& resultData)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-    RunLoop::current().dispatch([this, protectedThis, resultData] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), resultData] {
         m_connectionToServer->didDeleteIndex(resultData);
     });
 }
 
 void InProcessIDBServer::didPutOrAdd(const IDBResultData& resultData)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-    RunLoop::current().dispatch([this, protectedThis, resultData] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), resultData] {
         m_connectionToServer->didPutOrAdd(resultData);
     });
 }
 
 void InProcessIDBServer::didGetRecord(const IDBResultData& resultData)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-    RunLoop::current().dispatch([this, protectedThis, resultData] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), resultData] {
         m_connectionToServer->didGetRecord(resultData);
     });
 }
 
 void InProcessIDBServer::didGetCount(const IDBResultData& resultData)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-    RunLoop::current().dispatch([this, protectedThis, resultData] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), resultData] {
         m_connectionToServer->didGetCount(resultData);
     });
 }
 
 void InProcessIDBServer::didDeleteRecord(const IDBResultData& resultData)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-    RunLoop::current().dispatch([this, protectedThis, resultData] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), resultData] {
         m_connectionToServer->didDeleteRecord(resultData);
     });
 }
 
 void InProcessIDBServer::didOpenCursor(const IDBResultData& resultData)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-    RunLoop::current().dispatch([this, protectedThis, resultData] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), resultData] {
         m_connectionToServer->didOpenCursor(resultData);
     });
 }
 
 void InProcessIDBServer::didIterateCursor(const IDBResultData& resultData)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-    RunLoop::current().dispatch([this, protectedThis, resultData] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), resultData] {
         m_connectionToServer->didIterateCursor(resultData);
     });
 }
 
 void InProcessIDBServer::abortTransaction(const IDBResourceIdentifier& resourceIdentifier)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-    RunLoop::current().dispatch([this, protectedThis, resourceIdentifier] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), resourceIdentifier] {
         m_server->abortTransaction(resourceIdentifier);
     });
 }
 
 void InProcessIDBServer::commitTransaction(const IDBResourceIdentifier& resourceIdentifier)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-    RunLoop::current().dispatch([this, protectedThis, resourceIdentifier] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), resourceIdentifier] {
         m_server->commitTransaction(resourceIdentifier);
     });
 }
 
 void InProcessIDBServer::didFinishHandlingVersionChangeTransaction(uint64_t databaseConnectionIdentifier, const IDBResourceIdentifier& transactionIdentifier)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-    RunLoop::current().dispatch([this, protectedThis, databaseConnectionIdentifier, transactionIdentifier] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), databaseConnectionIdentifier, transactionIdentifier] {
         m_server->didFinishHandlingVersionChangeTransaction(databaseConnectionIdentifier, transactionIdentifier);
     });
 }
 
 void InProcessIDBServer::createObjectStore(const IDBRequestData& resultData, const IDBObjectStoreInfo& info)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-    RunLoop::current().dispatch([this, protectedThis, resultData, info] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), resultData, info] {
         m_server->createObjectStore(resultData, info);
     });
 }
 
 void InProcessIDBServer::deleteObjectStore(const IDBRequestData& requestData, const String& objectStoreName)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-    RunLoop::current().dispatch([this, protectedThis, requestData, objectStoreName] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), requestData, objectStoreName] {
         m_server->deleteObjectStore(requestData, objectStoreName);
     });
 }
 
 void InProcessIDBServer::clearObjectStore(const IDBRequestData& requestData, uint64_t objectStoreIdentifier)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-    RunLoop::current().dispatch([this, protectedThis, requestData, objectStoreIdentifier] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), requestData, objectStoreIdentifier] {
         m_server->clearObjectStore(requestData, objectStoreIdentifier);
     });
 }
 
 void InProcessIDBServer::createIndex(const IDBRequestData& requestData, const IDBIndexInfo& info)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-    RunLoop::current().dispatch([this, protectedThis, requestData, info] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), requestData, info] {
         m_server->createIndex(requestData, info);
     });
 }
 
 void InProcessIDBServer::deleteIndex(const IDBRequestData& requestData, uint64_t objectStoreIdentifier, const String& indexName)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-    RunLoop::current().dispatch([this, protectedThis, requestData, objectStoreIdentifier, indexName] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), requestData, objectStoreIdentifier, indexName] {
         m_server->deleteIndex(requestData, objectStoreIdentifier, indexName);
     });
 }
 
 void InProcessIDBServer::putOrAdd(const IDBRequestData& requestData, const IDBKeyData& keyData, const IDBValue& value, const IndexedDB::ObjectStoreOverwriteMode overwriteMode)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-    RunLoop::current().dispatch([this, protectedThis, requestData, keyData, value, overwriteMode] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), requestData, keyData, value, overwriteMode] {
         m_server->putOrAdd(requestData, keyData, value, overwriteMode);
     });
 }
 
 void InProcessIDBServer::getRecord(const IDBRequestData& requestData, const IDBKeyRangeData& keyRangeData)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-
-    RunLoop::current().dispatch([this, protectedThis, requestData, keyRangeData] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), requestData, keyRangeData] {
         m_server->getRecord(requestData, keyRangeData);
     });
 }
 
 void InProcessIDBServer::getCount(const IDBRequestData& requestData, const IDBKeyRangeData& keyRangeData)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-    RunLoop::current().dispatch([this, protectedThis, requestData, keyRangeData] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), requestData, keyRangeData] {
         m_server->getCount(requestData, keyRangeData);
     });
 }
 
 void InProcessIDBServer::deleteRecord(const IDBRequestData& requestData, const IDBKeyRangeData& keyRangeData)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-
-    RunLoop::current().dispatch([this, protectedThis, requestData, keyRangeData] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), requestData, keyRangeData] {
         m_server->deleteRecord(requestData, keyRangeData);
     });
 }
 
 void InProcessIDBServer::openCursor(const IDBRequestData& requestData, const IDBCursorInfo& info)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-
-    RunLoop::current().dispatch([this, protectedThis, requestData, info] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), requestData, info] {
         m_server->openCursor(requestData, info);
     });
 }
 
 void InProcessIDBServer::iterateCursor(const IDBRequestData& requestData, const IDBKeyData& key, unsigned long count)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-
-    RunLoop::current().dispatch([this, protectedThis, requestData, key, count] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), requestData, key, count] {
         m_server->iterateCursor(requestData, key, count);
     });
 }
 
 void InProcessIDBServer::establishTransaction(uint64_t databaseConnectionIdentifier, const IDBTransactionInfo& info)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-
-    RunLoop::current().dispatch([this, protectedThis, databaseConnectionIdentifier, info] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), databaseConnectionIdentifier, info] {
         m_server->establishTransaction(databaseConnectionIdentifier, info);
     });
 }
 
 void InProcessIDBServer::fireVersionChangeEvent(IDBServer::UniqueIDBDatabaseConnection& connection, const IDBResourceIdentifier& requestIdentifier, uint64_t requestedVersion)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-    uint64_t databaseConnectionIdentifier = connection.identifier();
-    RunLoop::current().dispatch([this, protectedThis, databaseConnectionIdentifier, requestIdentifier, requestedVersion] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), databaseConnectionIdentifier = connection.identifier(), requestIdentifier, requestedVersion] {
         m_connectionToServer->fireVersionChangeEvent(databaseConnectionIdentifier, requestIdentifier, requestedVersion);
     });
 }
 
 void InProcessIDBServer::didStartTransaction(const IDBResourceIdentifier& transactionIdentifier, const IDBError& error)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-    RunLoop::current().dispatch([this, protectedThis, transactionIdentifier, error] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), transactionIdentifier, error] {
         m_connectionToServer->didStartTransaction(transactionIdentifier, error);
     });
 }
 
 void InProcessIDBServer::didCloseFromServer(IDBServer::UniqueIDBDatabaseConnection& connection, const IDBError& error)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-    uint64_t databaseConnectionIdentifier = connection.identifier();
-    RunLoop::current().dispatch([this, protectedThis, databaseConnectionIdentifier, error] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), databaseConnectionIdentifier = connection.identifier(), error] {
         m_connectionToServer->didCloseFromServer(databaseConnectionIdentifier, error);
     });
 }
 
 void InProcessIDBServer::notifyOpenDBRequestBlocked(const IDBResourceIdentifier& requestIdentifier, uint64_t oldVersion, uint64_t newVersion)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-    RunLoop::current().dispatch([this, protectedThis, requestIdentifier, oldVersion, newVersion] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), requestIdentifier, oldVersion, newVersion] {
         m_connectionToServer->notifyOpenDBRequestBlocked(requestIdentifier, oldVersion, newVersion);
     });
 }
 
 void InProcessIDBServer::databaseConnectionClosed(uint64_t databaseConnectionIdentifier)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-    RunLoop::current().dispatch([this, protectedThis, databaseConnectionIdentifier] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), databaseConnectionIdentifier] {
         m_server->databaseConnectionClosed(databaseConnectionIdentifier);
     });
 }
 
 void InProcessIDBServer::abortOpenAndUpgradeNeeded(uint64_t databaseConnectionIdentifier, const IDBResourceIdentifier& transactionIdentifier)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-    RunLoop::current().dispatch([this, protectedThis, databaseConnectionIdentifier, transactionIdentifier] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), databaseConnectionIdentifier, transactionIdentifier] {
         m_server->abortOpenAndUpgradeNeeded(databaseConnectionIdentifier, transactionIdentifier);
     });
 }
 
 void InProcessIDBServer::didFireVersionChangeEvent(uint64_t databaseConnectionIdentifier, const IDBResourceIdentifier& requestIdentifier)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-    RunLoop::current().dispatch([this, protectedThis, databaseConnectionIdentifier, requestIdentifier] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), databaseConnectionIdentifier, requestIdentifier] {
         m_server->didFireVersionChangeEvent(databaseConnectionIdentifier, requestIdentifier);
     });
 }
 
 void InProcessIDBServer::openDBRequestCancelled(const IDBRequestData& requestData)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-    RunLoop::current().dispatch([this, protectedThis, requestData] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), requestData] {
         m_server->openDBRequestCancelled(requestData);
     });
 }
 
 void InProcessIDBServer::confirmDidCloseFromServer(uint64_t databaseConnectionIdentifier)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-    RunLoop::current().dispatch([this, protectedThis, databaseConnectionIdentifier] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), databaseConnectionIdentifier] {
         m_server->confirmDidCloseFromServer(databaseConnectionIdentifier);
     });
 }
 
 void InProcessIDBServer::getAllDatabaseNames(const SecurityOriginData& mainFrameOrigin, const SecurityOriginData& openingOrigin, uint64_t callbackID)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-    RunLoop::current().dispatch([this, protectedThis, mainFrameOrigin, openingOrigin, callbackID] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), mainFrameOrigin, openingOrigin, callbackID] {
         m_server->getAllDatabaseNames(m_connectionToServer->identifier(), mainFrameOrigin, openingOrigin, callbackID);
     });
 }
 
 void InProcessIDBServer::didGetAllDatabaseNames(uint64_t callbackID, const Vector<String>& databaseNames)
 {
-    RefPtr<InProcessIDBServer> protectedThis(this);
-    RunLoop::current().dispatch([this, protectedThis, callbackID, databaseNames] {
+    RunLoop::current().dispatch([this, protectedThis = Ref<InProcessIDBServer>(*this), callbackID, databaseNames] {
         m_connectionToServer->didGetAllDatabaseNames(callbackID, databaseNames);
     });
 }

Modified: trunk/Source/WebCore/Modules/websockets/WebSocket.cpp (201574 => 201575)


--- trunk/Source/WebCore/Modules/websockets/WebSocket.cpp	2016-06-01 22:49:07 UTC (rev 201574)
+++ trunk/Source/WebCore/Modules/websockets/WebSocket.cpp	2016-06-01 23:38:37 UTC (rev 201575)
@@ -283,7 +283,7 @@
             // using the error event. But since this code executes as part of the WebSocket's
             // constructor, we have to wait until the constructor has completed before firing the
             // event; otherwise, users can't connect to the event.
-            RunLoop::main().dispatch([this]() {
+            RunLoop::main().dispatch([this, protectedThis = Ref<WebSocket>(*this)]() {
                 dispatchOrQueueErrorEvent();
                 stop();
             });

Modified: trunk/Source/WebCore/bindings/js/SerializedScriptValue.cpp (201574 => 201575)


--- trunk/Source/WebCore/bindings/js/SerializedScriptValue.cpp	2016-06-01 22:49:07 UTC (rev 201574)
+++ trunk/Source/WebCore/bindings/js/SerializedScriptValue.cpp	2016-06-01 23:38:37 UTC (rev 201575)
@@ -2823,14 +2823,11 @@
     ASSERT(!isMainThread());
 
     IDBValue value;
-    IDBValue* valuePtr = &value;
-
     Lock lock;
     Condition condition;
-    Condition* conditionPtr = &condition;
     lock.lock();
 
-    RunLoop::main().dispatch([this, conditionPtr, valuePtr] {
+    RunLoop::main().dispatch([this, conditionPtr = &condition, valuePtr = &value] {
         writeBlobsToDiskForIndexedDB([conditionPtr, valuePtr](const IDBValue& result) {
             ASSERT(isMainThread());
             valuePtr->setAsIsolatedCopy(result);

Modified: trunk/Source/WebCore/page/scrolling/ThreadedScrollingTree.cpp (201574 => 201575)


--- trunk/Source/WebCore/page/scrolling/ThreadedScrollingTree.cpp	2016-06-01 22:49:07 UTC (rev 201574)
+++ trunk/Source/WebCore/page/scrolling/ThreadedScrollingTree.cpp	2016-06-01 23:38:37 UTC (rev 201575)
@@ -83,9 +83,7 @@
     // Since this can potentially be the last reference to the scrolling coordinator,
     // we need to release it on the main thread since it has member variables (such as timers)
     // that expect to be destroyed from the main thread.
-    ScrollingCoordinator* scrollingCoordinator = m_scrollingCoordinator.release().leakRef();
-    RunLoop::main().dispatch([scrollingCoordinator] {
-        scrollingCoordinator->deref();
+    RunLoop::main().dispatch([scrollingCoordinator = WTFMove(m_scrollingCoordinator)] {
     });
 }
 
@@ -103,10 +101,7 @@
     if (nodeID == rootNode()->scrollingNodeID())
         setMainFrameScrollPosition(scrollPosition);
 
-    RefPtr<AsyncScrollingCoordinator> scrollingCoordinator = m_scrollingCoordinator;
-    bool localIsHandlingProgrammaticScroll = isHandlingProgrammaticScroll();
-    
-    RunLoop::main().dispatch([scrollingCoordinator, nodeID, scrollPosition, localIsHandlingProgrammaticScroll, scrollingLayerPositionAction] {
+    RunLoop::main().dispatch([scrollingCoordinator = m_scrollingCoordinator, nodeID, scrollPosition, localIsHandlingProgrammaticScroll = isHandlingProgrammaticScroll(), scrollingLayerPositionAction] {
         scrollingCoordinator->scheduleUpdateScrollPositionAfterAsyncScroll(nodeID, scrollPosition, localIsHandlingProgrammaticScroll, scrollingLayerPositionAction);
     });
 }
@@ -116,8 +111,7 @@
     if (!m_scrollingCoordinator)
         return;
 
-    RefPtr<AsyncScrollingCoordinator> scrollingCoordinator = m_scrollingCoordinator;
-    RunLoop::main().dispatch([scrollingCoordinator, nodeID, horizontal, vertical] {
+    RunLoop::main().dispatch([scrollingCoordinator = m_scrollingCoordinator, nodeID, horizontal, vertical] {
         scrollingCoordinator->setActiveScrollSnapIndices(nodeID, horizontal, vertical);
     });
 }
@@ -128,8 +122,7 @@
     if (!m_scrollingCoordinator)
         return;
 
-    RefPtr<AsyncScrollingCoordinator> scrollingCoordinator = m_scrollingCoordinator;
-    RunLoop::main().dispatch([scrollingCoordinator, phase] {
+    RunLoop::main().dispatch([scrollingCoordinator = m_scrollingCoordinator, phase] {
         scrollingCoordinator->handleWheelEventPhase(phase);
     });
 }
@@ -139,8 +132,7 @@
     if (!m_scrollingCoordinator)
         return;
     
-    RefPtr<AsyncScrollingCoordinator> scrollingCoordinator = m_scrollingCoordinator;
-    RunLoop::main().dispatch([scrollingCoordinator, nodeID, horizontalIndex, verticalIndex] {
+    RunLoop::main().dispatch([scrollingCoordinator = m_scrollingCoordinator, nodeID, horizontalIndex, verticalIndex] {
         scrollingCoordinator->setActiveScrollSnapIndices(nodeID, horizontalIndex, verticalIndex);
     });
 }
@@ -150,8 +142,7 @@
     if (!m_scrollingCoordinator)
         return;
 
-    RefPtr<AsyncScrollingCoordinator> scrollingCoordinator = m_scrollingCoordinator;
-    RunLoop::main().dispatch([scrollingCoordinator, identifier, reason] {
+    RunLoop::main().dispatch([scrollingCoordinator = m_scrollingCoordinator, identifier, reason] {
         scrollingCoordinator->deferTestsForReason(identifier, reason);
     });
 }
@@ -161,8 +152,7 @@
     if (!m_scrollingCoordinator)
         return;
     
-    RefPtr<AsyncScrollingCoordinator> scrollingCoordinator = m_scrollingCoordinator;
-    RunLoop::main().dispatch([scrollingCoordinator, identifier, reason] {
+    RunLoop::main().dispatch([scrollingCoordinator = m_scrollingCoordinator, identifier, reason] {
         scrollingCoordinator->removeTestDeferralForReason(identifier, reason);
     });
 }

Modified: trunk/Source/WebCore/platform/graphics/mac/DisplayRefreshMonitorMac.cpp (201574 => 201575)


--- trunk/Source/WebCore/platform/graphics/mac/DisplayRefreshMonitorMac.cpp	2016-06-01 22:49:07 UTC (rev 201574)
+++ trunk/Source/WebCore/platform/graphics/mac/DisplayRefreshMonitorMac.cpp	2016-06-01 23:38:37 UTC (rev 201575)
@@ -101,9 +101,9 @@
     // FIXME: Should this be using webKitMonotonicNow?
     setMonotonicAnimationStartTime(webKitMonotonicNow + timeUntilOutput);
 
-    auto weakPtr = m_weakFactory.createWeakPtr();
 
-    RunLoop::main().dispatch([weakPtr] {
+    // FIXME: Is it really okay to create a weakPtr on a background thread and then use it on the main thread?
+    RunLoop::main().dispatch([weakPtr = m_weakFactory.createWeakPtr()] {
         if (auto* monitor = weakPtr.get())
             handleDisplayRefreshedNotificationOnMainThread(monitor);
     });

Modified: trunk/Source/WebCore/platform/network/DataURLDecoder.cpp (201574 => 201575)


--- trunk/Source/WebCore/platform/network/DataURLDecoder.cpp	2016-06-01 22:49:07 UTC (rev 201574)
+++ trunk/Source/WebCore/platform/network/DataURLDecoder.cpp	2016-06-01 23:38:37 UTC (rev 201575)
@@ -135,7 +135,7 @@
     auto mediaType = (isBase64 ? header.substring(0, header.length() - strlen(base64String)) : header).toString();
 
     return std::make_unique<DecodeTask>(DecodeTask {
-        WTFMove(urlString),
+        urlString.isolatedCopy(),
         WTFMove(encodedData),
         isBase64,
         scheduleContext,
@@ -172,8 +172,7 @@
 {
     ASSERT(url.protocolIsData());
 
-    auto decodeTask = createDecodeTask(url, scheduleContext, WTFMove(completionHandler));
-    decodeQueue().dispatch([decodeTask = WTFMove(decodeTask)]() mutable {
+    decodeQueue().dispatch([decodeTask = createDecodeTask(url, scheduleContext, WTFMove(completionHandler))]() mutable {
         if (decodeTask->isBase64)
             decodeBase64(*decodeTask);
         else

Modified: trunk/Source/WebKit2/ChangeLog (201574 => 201575)


--- trunk/Source/WebKit2/ChangeLog	2016-06-01 22:49:07 UTC (rev 201574)
+++ trunk/Source/WebKit2/ChangeLog	2016-06-01 23:38:37 UTC (rev 201575)
@@ -1,3 +1,76 @@
+2016-06-01  Brady Eidson  <[email protected]>
+
+        Modernize lambda usage for all callers of RunLoop::dispatch().
+        https://bugs.webkit.org/show_bug.cgi?id=158265
+
+        Reviewed by Chris Dumez.
+
+        * DatabaseProcess/DatabaseProcess.cpp:
+        (WebKit::DatabaseProcess::fetchWebsiteData):
+        (WebKit::DatabaseProcess::deleteWebsiteData):
+        (WebKit::DatabaseProcess::deleteWebsiteDataForOrigins):
+        
+        * NetworkProcess/NetworkProcess.cpp:
+        (WebKit::fetchDiskCacheEntries):
+        (WebKit::NetworkProcess::fetchWebsiteData):
+        
+        * NetworkProcess/cache/NetworkCacheStorage.cpp:
+        (WebKit::NetworkCache::Storage::remove):
+        (WebKit::NetworkCache::retrieveFromMemory):
+        
+        * Platform/IPC/Connection.cpp:
+        (IPC::Connection::SyncMessageState::processIncomingMessage):
+        (IPC::Connection::processIncomingMessage):
+        (IPC::Connection::connectionDidClose):
+        (IPC::Connection::enqueueIncomingMessage):
+        * Platform/IPC/mac/ConnectionMac.mm:
+        (IPC::Connection::receiveSourceEventHandler):
+        
+        * Shared/mac/CookieStorageShim.mm:
+        (-[WKNSURLSessionLocal _getCookieHeadersForTask:completionHandler:]):
+        * UIProcess/API/APIUserContentExtensionStore.cpp:
+        (API::UserContentExtensionStore::lookupContentExtension):
+        (API::UserContentExtensionStore::compileContentExtension):
+        (API::UserContentExtensionStore::removeContentExtension):
+        
+        * UIProcess/Launcher/ProcessLauncher.cpp:
+        (WebKit::ProcessLauncher::ProcessLauncher):
+        * UIProcess/Launcher/mac/ProcessLauncherMac.mm:
+        (WebKit::connectToService):
+        
+        * UIProcess/Storage/StorageManager.cpp:
+        (WebKit::StorageManager::getSessionStorageOrigins):
+        (WebKit::StorageManager::deleteSessionStorageOrigins):
+        (WebKit::StorageManager::deleteSessionStorageEntriesForOrigins):
+        (WebKit::StorageManager::getLocalStorageOrigins):
+        (WebKit::StorageManager::getLocalStorageOriginDetails):
+        (WebKit::StorageManager::deleteLocalStorageEntriesForOrigin):
+        (WebKit::StorageManager::deleteLocalStorageOriginsModifiedSince):
+        (WebKit::StorageManager::deleteLocalStorageEntriesForOrigins):
+        
+        * UIProcess/WebPageProxy.cpp:
+        (WebKit::WebPageProxy::isWebProcessResponsive):
+        
+        * UIProcess/WebProcessProxy.cpp:
+        (WebKit::WebProcessProxy::isResponsive):
+        
+        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
+        (WebKit::WebsiteDataStore::fetchData):
+        
+        * WebProcess/Plugins/Netscape/NetscapePlugin.cpp:
+        (WebKit::NetscapePlugin::pluginThreadAsyncCall):
+        
+        * WebProcess/Plugins/PluginView.cpp:
+        (WebKit::PluginView::unprotectPluginFromDestruction):
+        
+        * WebProcess/WebPage/EventDispatcher.cpp:
+        (WebKit::EventDispatcher::wheelEvent):
+        (WebKit::EventDispatcher::gestureEvent):
+        (WebKit::EventDispatcher::touchEvent):
+        
+        * WebProcess/WebPage/ViewUpdateDispatcher.cpp:
+        (WebKit::ViewUpdateDispatcher::visibleContentRectUpdate):
+
 2016-05-31  Yusuke Suzuki  <[email protected]>
 
         Unreviewed, roll out r201481, r201523: 0.3% regression in Octane code-load

Modified: trunk/Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp (201574 => 201575)


--- trunk/Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp	2016-06-01 22:49:07 UTC (rev 201574)
+++ trunk/Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp	2016-06-01 23:38:37 UTC (rev 201575)
@@ -194,42 +194,20 @@
 
 void DatabaseProcess::fetchWebsiteData(SessionID, OptionSet<WebsiteDataType> websiteDataTypes, uint64_t callbackID)
 {
-    struct CallbackAggregator final : public ThreadSafeRefCounted<CallbackAggregator> {
-        explicit CallbackAggregator(std::function<void (WebsiteData)> completionHandler)
-            : m_completionHandler(WTFMove(completionHandler))
-        {
-        }
-
-        ~CallbackAggregator()
-        {
-            ASSERT(RunLoop::isMain());
-
-            auto completionHandler = WTFMove(m_completionHandler);
-            auto websiteData = WTFMove(m_websiteData);
-
-            RunLoop::main().dispatch([completionHandler, websiteData] {
-                completionHandler(websiteData);
-            });
-        }
-
-        std::function<void (WebsiteData)> m_completionHandler;
-        WebsiteData m_websiteData;
+    auto completionHandler = [this, callbackID](const WebsiteData& websiteData) {
+        parentProcessConnection()->send(Messages::DatabaseProcessProxy::DidFetchWebsiteData(callbackID, websiteData), 0);
     };
 
-    RefPtr<CallbackAggregator> callbackAggregator = adoptRef(new CallbackAggregator([this, callbackID](WebsiteData websiteData) {
-        parentProcessConnection()->send(Messages::DatabaseProcessProxy::DidFetchWebsiteData(callbackID, websiteData), 0);
-    }));
-
 #if ENABLE(INDEXED_DATABASE)
     if (websiteDataTypes.contains(WebsiteDataType::IndexedDBDatabases)) {
         // FIXME: Pick the right database store based on the session ID.
-        postDatabaseTask(CrossThreadTask([callbackAggregator, websiteDataTypes, this] {
-
-            Vector<RefPtr<SecurityOrigin>> securityOrigins = indexedDatabaseOrigins();
-
-            RunLoop::main().dispatch([callbackAggregator, securityOrigins] {
+        postDatabaseTask(CrossThreadTask([this, websiteDataTypes, completionHandler = WTFMove(completionHandler)]() mutable {
+            RunLoop::main().dispatch([completionHandler = WTFMove(completionHandler), securityOrigins = indexedDatabaseOrigins()] {
+                WebsiteData websiteData;
                 for (const auto& securityOrigin : securityOrigins)
-                    callbackAggregator->m_websiteData.entries.append(WebsiteData::Entry { securityOrigin, WebsiteDataType::IndexedDBDatabases, 0 });
+                    websiteData.entries.append({ securityOrigin, WebsiteDataType::IndexedDBDatabases, 0 });
+
+                completionHandler(websiteData);
             });
         }));
     }
@@ -238,57 +216,25 @@
 
 void DatabaseProcess::deleteWebsiteData(WebCore::SessionID, OptionSet<WebsiteDataType> websiteDataTypes, std::chrono::system_clock::time_point modifiedSince, uint64_t callbackID)
 {
-    struct CallbackAggregator final : public ThreadSafeRefCounted<CallbackAggregator> {
-        explicit CallbackAggregator(std::function<void ()> completionHandler)
-            : m_completionHandler(WTFMove(completionHandler))
-        {
-        }
-
-        ~CallbackAggregator()
-        {
-            ASSERT(RunLoop::isMain());
-
-            RunLoop::main().dispatch(WTFMove(m_completionHandler));
-        }
-
-        std::function<void ()> m_completionHandler;
+    auto completionHandler = [this, callbackID]() {
+        parentProcessConnection()->send(Messages::DatabaseProcessProxy::DidDeleteWebsiteData(callbackID), 0);
     };
 
-    RefPtr<CallbackAggregator> callbackAggregator = adoptRef(new CallbackAggregator([this, callbackID]() {
-        parentProcessConnection()->send(Messages::DatabaseProcessProxy::DidDeleteWebsiteData(callbackID), 0);
-    }));
-
 #if ENABLE(INDEXED_DATABASE)
     if (websiteDataTypes.contains(WebsiteDataType::IndexedDBDatabases))
-        idbServer().closeAndDeleteDatabasesModifiedSince(modifiedSince, [callbackAggregator] { });
+        idbServer().closeAndDeleteDatabasesModifiedSince(modifiedSince, WTFMove(completionHandler));
 #endif
 }
 
 void DatabaseProcess::deleteWebsiteDataForOrigins(WebCore::SessionID, OptionSet<WebsiteDataType> websiteDataTypes, const Vector<SecurityOriginData>& securityOriginDatas, uint64_t callbackID)
 {
-    struct CallbackAggregator final : public ThreadSafeRefCounted<CallbackAggregator> {
-        explicit CallbackAggregator(std::function<void ()> completionHandler)
-            : m_completionHandler(WTFMove(completionHandler))
-        {
-        }
-
-        ~CallbackAggregator()
-        {
-            ASSERT(RunLoop::isMain());
-
-            RunLoop::main().dispatch(WTFMove(m_completionHandler));
-        }
-
-        std::function<void ()> m_completionHandler;
+    auto completionHandler = [this, callbackID]() {
+        parentProcessConnection()->send(Messages::DatabaseProcessProxy::DidDeleteWebsiteDataForOrigins(callbackID), 0);
     };
 
-    RefPtr<CallbackAggregator> callbackAggregator = adoptRef(new CallbackAggregator([this, callbackID]() {
-        parentProcessConnection()->send(Messages::DatabaseProcessProxy::DidDeleteWebsiteDataForOrigins(callbackID), 0);
-    }));
-
 #if ENABLE(INDEXED_DATABASE)
     if (websiteDataTypes.contains(WebsiteDataType::IndexedDBDatabases))
-        idbServer().closeAndDeleteDatabasesForOrigins(securityOriginDatas, [callbackAggregator] { });
+        idbServer().closeAndDeleteDatabasesForOrigins(securityOriginDatas, WTFMove(completionHandler));
 #endif
 }
 

Modified: trunk/Source/WebKit2/NetworkProcess/NetworkProcess.cpp (201574 => 201575)


--- trunk/Source/WebKit2/NetworkProcess/NetworkProcess.cpp	2016-06-01 22:49:07 UTC (rev 201574)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkProcess.cpp	2016-06-01 23:38:37 UTC (rev 201575)
@@ -326,7 +326,7 @@
 
                 delete originsAndSizes;
 
-                RunLoop::main().dispatch([completionHandler, entries] {
+                RunLoop::main().dispatch([completionHandler, entries = WTFMove(entries)] {
                     completionHandler(entries);
                 });
 
@@ -350,7 +350,7 @@
         entries.append(WebsiteData::Entry { WTFMove(origin), WebsiteDataType::DiskCache, 0 });
 #endif
 
-    RunLoop::main().dispatch([completionHandler, entries] {
+    RunLoop::main().dispatch([completionHandler, entries = WTFMove(entries)] {
         completionHandler(entries);
     });
 }
@@ -367,10 +367,7 @@
         {
             ASSERT(RunLoop::isMain());
 
-            auto completionHandler = WTFMove(m_completionHandler);
-            auto websiteData = WTFMove(m_websiteData);
-
-            RunLoop::main().dispatch([completionHandler, websiteData] {
+            RunLoop::main().dispatch([completionHandler = WTFMove(m_completionHandler), websiteData = WTFMove(m_websiteData)] {
                 completionHandler(websiteData);
             });
         }

Modified: trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp (201574 => 201575)


--- trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp	2016-06-01 22:49:07 UTC (rev 201574)
+++ trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp	2016-06-01 23:38:37 UTC (rev 201575)
@@ -662,8 +662,7 @@
     for (auto& operation : operations) {
         if (operation->record.key == key) {
             LOG(NetworkCacheStorage, "(NetworkProcess) found write operation in progress");
-            auto record = operation->record;
-            RunLoop::main().dispatch([record, completionHandler] {
+            RunLoop::main().dispatch([record = operation->record, completionHandler = WTFMove(completionHandler)] {
                 completionHandler(std::make_unique<Storage::Record>(record));
             });
             return true;

Modified: trunk/Source/WebKit2/Platform/IPC/Connection.cpp (201574 => 201575)


--- trunk/Source/WebKit2/Platform/IPC/Connection.cpp	2016-06-01 22:49:07 UTC (rev 201574)
+++ trunk/Source/WebKit2/Platform/IPC/Connection.cpp	2016-06-01 23:38:37 UTC (rev 201575)
@@ -136,9 +136,8 @@
         std::lock_guard<Lock> lock(m_mutex);
         
         if (m_didScheduleDispatchMessagesWorkSet.add(&connection).isNewEntry) {
-            RefPtr<Connection> protectedConnection(&connection);
-            RunLoop::main().dispatch([this, protectedConnection] {
-                dispatchMessageAndResetDidScheduleDispatchMessagesForConnection(*protectedConnection);
+            RunLoop::main().dispatch([this, protectedConnection = Ref<Connection>(connection)]() mutable {
+                dispatchMessageAndResetDidScheduleDispatchMessagesForConnection(protectedConnection);
             });
         }
 
@@ -647,13 +646,13 @@
 
     if (!m_workQueueMessageReceivers.isValidKey(message->messageReceiverName())) {
         RefPtr<Connection> protectedThis(this);
-        StringReference messageReceiverName = message->messageReceiverName();
-        StringCapture capturedMessageReceiverName(messageReceiverName.isEmpty() ? "<unknown message receiver>" : String(messageReceiverName.data(), messageReceiverName.size()));
-        StringReference messageName = message->messageName();
-        StringCapture capturedMessageName(messageName.isEmpty() ? "<unknown message>" : String(messageName.data(), messageName.size()));
+        StringReference messageReceiverNameReference = message->messageReceiverName();
+        String messageReceiverName(messageReceiverNameReference.isEmpty() ? "<unknown message receiver>" : String(messageReceiverNameReference.data(), messageReceiverNameReference.size()));
+        StringReference messageNameReference = message->messageName();
+        String messageName(messageNameReference.isEmpty() ? "<unknown message>" : String(messageNameReference.data(), messageNameReference.size()));
 
-        RunLoop::main().dispatch([protectedThis, capturedMessageReceiverName, capturedMessageName] {
-            protectedThis->dispatchDidReceiveInvalidMessage(capturedMessageReceiverName.string().utf8(), capturedMessageName.string().utf8());
+        RunLoop::main().dispatch([protectedThis = Ref<Connection>(*this), messageReceiverName = WTFMove(messageReceiverName), messageName = WTFMove(messageName)]() mutable {
+            protectedThis->dispatchDidReceiveInvalidMessage(messageReceiverName.utf8(), messageName.utf8());
         });
         return;
     }
@@ -782,20 +781,19 @@
     if (m_didCloseOnConnectionWorkQueueCallback)
         m_didCloseOnConnectionWorkQueueCallback(this);
 
-    RefPtr<Connection> connection(this);
-    RunLoop::main().dispatch([connection] {
+    RunLoop::main().dispatch([protectedThis = Ref<Connection>(*this)]() mutable {
         // If the connection has been explicitly invalidated before dispatchConnectionDidClose was called,
         // then the client will be null here.
-        if (!connection->m_client)
+        if (!protectedThis->m_client)
             return;
 
         // Because we define a connection as being "valid" based on wheter it has a null client, we null out
         // the client before calling didClose here. Otherwise, sendSync will try to send a message to the connection and
         // will then wait indefinitely for a reply.
-        Client* client = connection->m_client;
-        connection->m_client = nullptr;
+        Client* client = protectedThis->m_client;
+        protectedThis->m_client = nullptr;
 
-        client->didClose(*connection);
+        client->didClose(protectedThis.get());
     });
 }
 
@@ -888,8 +886,7 @@
         m_incomingMessages.append(WTFMove(incomingMessage));
     }
 
-    RefPtr<Connection> protectedThis(this);
-    RunLoop::main().dispatch([protectedThis] {
+    RunLoop::main().dispatch([protectedThis = Ref<Connection>(*this)]() mutable {
         protectedThis->dispatchOneMessage();
     });
 }

Modified: trunk/Source/WebKit2/Platform/IPC/mac/ConnectionMac.mm (201574 => 201575)


--- trunk/Source/WebKit2/Platform/IPC/mac/ConnectionMac.mm	2016-06-01 22:49:07 UTC (rev 201574)
+++ trunk/Source/WebKit2/Platform/IPC/mac/ConnectionMac.mm	2016-06-01 23:38:37 UTC (rev 201575)
@@ -518,13 +518,13 @@
     if (decoder->messageReceiverName() == "IPC" && decoder->messageName() == "SetExceptionPort") {
         if (m_isServer) {
             // Server connections aren't supposed to have their exception ports overriden. Treat this as an invalid message.
-            RefPtr<Connection> protectedThis(this);
-            StringReference messageReceiverName = decoder->messageReceiverName();
-            StringCapture capturedMessageReceiverName(String(messageReceiverName.data(), messageReceiverName.size()));
-            StringReference messageName = decoder->messageName();
-            StringCapture capturedMessageName(String(messageName.data(), messageName.size()));
-            RunLoop::main().dispatch([protectedThis, capturedMessageReceiverName, capturedMessageName] {
-                protectedThis->dispatchDidReceiveInvalidMessage(capturedMessageReceiverName.string().utf8(), capturedMessageName.string().utf8());
+            StringReference messageReceiverNameReference = decoder->messageReceiverName();
+            String messageReceiverName(String(messageReceiverNameReference.data(), messageReceiverNameReference.size()));
+            StringReference messageNameReference = decoder->messageName();
+            String messageName(String(messageNameReference.data(), messageNameReference.size()));
+
+            RunLoop::main().dispatch([protectedThis = Ref<Connection>(*this), messageReceiverName = WTFMove(messageReceiverName), messageName = WTFMove(messageName)]() mutable {
+                protectedThis->dispatchDidReceiveInvalidMessage(messageReceiverName.utf8(), messageName.utf8());
             });
             return;
         }

Modified: trunk/Source/WebKit2/Shared/mac/CookieStorageShim.mm (201574 => 201575)


--- trunk/Source/WebKit2/Shared/mac/CookieStorageShim.mm	2016-06-01 22:49:07 UTC (rev 201574)
+++ trunk/Source/WebKit2/Shared/mac/CookieStorageShim.mm	2016-06-01 23:38:37 UTC (rev 201575)
@@ -123,10 +123,9 @@
         return;
     }
 
-    RetainPtr<NSURLSessionTask> strongTask = task;
     CompletionHandlerBlock completionHandlerCopy = [completionHandler copy];
-    RunLoop::main().dispatch([strongTask, completionHandlerCopy] {
-        RetainPtr<CFDictionaryRef> headers = adoptCF(WebKit::webKitCookieStorageCopyRequestHeaderFieldsForURL(nullptr, (CFURLRef)[[strongTask currentRequest] URL]));
+    RunLoop::main().dispatch([task = RetainPtr<NSURLSessionTask>(task), completionHandlerCopy] {
+        RetainPtr<CFDictionaryRef> headers = adoptCF(WebKit::webKitCookieStorageCopyRequestHeaderFieldsForURL(nullptr, (CFURLRef)[[task currentRequest] URL]));
         completionHandlerCopy(headers.get());
         [completionHandlerCopy release];
     });

Modified: trunk/Source/WebKit2/UIProcess/API/APIUserContentExtensionStore.cpp (201574 => 201575)


--- trunk/Source/WebKit2/UIProcess/API/APIUserContentExtensionStore.cpp	2016-06-01 22:49:07 UTC (rev 201574)
+++ trunk/Source/WebKit2/UIProcess/API/APIUserContentExtensionStore.cpp	2016-06-01 23:38:37 UTC (rev 201575)
@@ -306,31 +306,27 @@
 
 void UserContentExtensionStore::lookupContentExtension(const WTF::String& identifier, std::function<void(RefPtr<API::UserContentExtension>, std::error_code)> completionHandler)
 {
-    RefPtr<UserContentExtensionStore> self(this);
-    StringCapture identifierCapture(identifier);
-    StringCapture pathCapture(m_storePath);
-
-    m_readQueue->dispatch([self, identifierCapture, pathCapture, completionHandler] {
-        auto path = constructedPath(pathCapture.string(), identifierCapture.string());
+    m_readQueue->dispatch([protectedThis = Ref<Object>(*this), identifier = identifier.isolatedCopy(), storePath = m_storePath.isolatedCopy(), completionHandler = WTFMove(completionHandler)]() mutable {
+        auto path = constructedPath(storePath, identifier);
         
         ContentExtensionMetaData metaData;
         Data fileData;
         if (!openAndMapContentExtension(path, metaData, fileData)) {
-            RunLoop::main().dispatch([self, completionHandler] {
+            RunLoop::main().dispatch([protectedThis = WTFMove(protectedThis), completionHandler = WTFMove(completionHandler)] {
                 completionHandler(nullptr, Error::LookupFailed);
             });
             return;
         }
         
         if (metaData.version != UserContentExtensionStore::CurrentContentExtensionFileVersion) {
-            RunLoop::main().dispatch([self, completionHandler] {
+            RunLoop::main().dispatch([protectedThis = WTFMove(protectedThis), completionHandler = WTFMove(completionHandler)] {
                 completionHandler(nullptr, Error::VersionMismatch);
             });
             return;
         }
         
-        RunLoop::main().dispatch([self, identifierCapture, fileData, metaData, completionHandler] {
-            RefPtr<API::UserContentExtension> userContentExtension = createExtension(identifierCapture.string(), metaData, fileData);
+        RunLoop::main().dispatch([protectedThis = WTFMove(protectedThis), identifier = WTFMove(identifier), fileData = WTFMove(fileData), metaData = WTFMove(metaData), completionHandler = WTFMove(completionHandler)] {
+            RefPtr<API::UserContentExtension> userContentExtension = createExtension(identifier, metaData, fileData);
             completionHandler(userContentExtension, { });
         });
     });
@@ -338,26 +334,21 @@
 
 void UserContentExtensionStore::compileContentExtension(const WTF::String& identifier, WTF::String&& json, std::function<void(RefPtr<API::UserContentExtension>, std::error_code)> completionHandler)
 {
-    RefPtr<UserContentExtensionStore> self(this);
-    StringCapture identifierCapture(identifier);
-    StringCapture jsonCapture(WTFMove(json));
-    StringCapture pathCapture(m_storePath);
+    m_compileQueue->dispatch([protectedThis = Ref<Object>(*this), identifier = identifier.isolatedCopy(), json = json.isolatedCopy(), storePath = m_storePath.isolatedCopy(), completionHandler = WTFMove(completionHandler)] () mutable {
+        auto path = constructedPath(storePath, identifier);
 
-    m_compileQueue->dispatch([self, identifierCapture, jsonCapture, pathCapture, completionHandler] () mutable {
-        auto path = constructedPath(pathCapture.string(), identifierCapture.string());
-
         ContentExtensionMetaData metaData;
         Data fileData;
-        auto error = compiledToFile(jsonCapture.releaseString(), path, metaData, fileData);
+        auto error = compiledToFile(WTFMove(json), path, metaData, fileData);
         if (error) {
-            RunLoop::main().dispatch([self, error, completionHandler] {
+            RunLoop::main().dispatch([protectedThis = WTFMove(protectedThis), error = WTFMove(error), completionHandler = WTFMove(completionHandler)] {
                 completionHandler(nullptr, error);
             });
             return;
         }
 
-        RunLoop::main().dispatch([self, identifierCapture, fileData, metaData, completionHandler] {
-            RefPtr<API::UserContentExtension> userContentExtension = createExtension(identifierCapture.string(), metaData, fileData);
+        RunLoop::main().dispatch([protectedThis = WTFMove(protectedThis), identifier = WTFMove(identifier), fileData = WTFMove(fileData), metaData = WTFMove(metaData), completionHandler = WTFMove(completionHandler)] {
+            RefPtr<API::UserContentExtension> userContentExtension = createExtension(identifier, metaData, fileData);
             completionHandler(userContentExtension, { });
         });
     });
@@ -365,21 +356,17 @@
 
 void UserContentExtensionStore::removeContentExtension(const WTF::String& identifier, std::function<void(std::error_code)> completionHandler)
 {
-    RefPtr<UserContentExtensionStore> self(this);
-    StringCapture identifierCapture(identifier);
-    StringCapture pathCapture(m_storePath);
+    m_removeQueue->dispatch([protectedThis = Ref<Object>(*this), identifier = identifier.isolatedCopy(), storePath = m_storePath.isolatedCopy(), completionHandler = WTFMove(completionHandler)]() mutable {
+        auto path = constructedPath(storePath, identifier);
 
-    m_removeQueue->dispatch([self, identifierCapture, pathCapture, completionHandler] {
-        auto path = constructedPath(pathCapture.string(), identifierCapture.string());
-
         if (!WebCore::deleteFile(path)) {
-            RunLoop::main().dispatch([self, completionHandler] {
+            RunLoop::main().dispatch([protectedThis = WTFMove(protectedThis), completionHandler = WTFMove(completionHandler)] {
                 completionHandler(Error::RemoveFailed);
             });
             return;
         }
 
-        RunLoop::main().dispatch([self, completionHandler] {
+        RunLoop::main().dispatch([protectedThis = WTFMove(protectedThis), completionHandler = WTFMove(completionHandler)] {
             completionHandler({ });
         });
     });

Modified: trunk/Source/WebKit2/UIProcess/Launcher/ProcessLauncher.cpp (201574 => 201575)


--- trunk/Source/WebKit2/UIProcess/Launcher/ProcessLauncher.cpp	2016-06-01 22:49:07 UTC (rev 201574)
+++ trunk/Source/WebKit2/UIProcess/Launcher/ProcessLauncher.cpp	2016-06-01 23:38:37 UTC (rev 201575)
@@ -45,8 +45,7 @@
 {
     m_isLaunching = true;
 
-    RefPtr<ProcessLauncher> processLauncher(this);
-    processLauncherWorkQueue().dispatch([processLauncher] {
+    processLauncherWorkQueue().dispatch([processLauncher = Ref<ProcessLauncher>(*this)]() mutable {
         processLauncher->launchProcess();
     });
 }

Modified: trunk/Source/WebKit2/UIProcess/Launcher/mac/ProcessLauncherMac.mm (201574 => 201575)


--- trunk/Source/WebKit2/UIProcess/Launcher/mac/ProcessLauncherMac.mm	2016-06-01 22:49:07 UTC (rev 201574)
+++ trunk/Source/WebKit2/UIProcess/Launcher/mac/ProcessLauncherMac.mm	2016-06-01 23:38:37 UTC (rev 201575)
@@ -180,9 +180,8 @@
             // And the receive right.
             mach_port_mod_refs(mach_task_self(), listeningPort, MACH_PORT_RIGHT_RECEIVE, -1);
 
-            RefPtr<ProcessLauncher> protector(that);
-            RunLoop::main().dispatch([protector, didFinishLaunchingProcessFunction] {
-                (*protector.*didFinishLaunchingProcessFunction)(0, IPC::Connection::Identifier());
+            RunLoop::main().dispatch([protectedThat = RefPtr<ProcessLauncher>(that), didFinishLaunchingProcessFunction]() mutable {
+                (*protectedThat.*didFinishLaunchingProcessFunction)(0, IPC::Connection::Identifier());
             });
         } else {
             ASSERT(type == XPC_TYPE_DICTIONARY);
@@ -192,9 +191,8 @@
             pid_t processIdentifier = xpc_connection_get_pid(connection.get());
 
             // We've finished launching the process, message back to the main run loop. This takes ownership of the connection.
-            RefPtr<ProcessLauncher> protector(that);
-            RunLoop::main().dispatch([protector, didFinishLaunchingProcessFunction, processIdentifier, listeningPort, connection] {
-                (*protector.*didFinishLaunchingProcessFunction)(processIdentifier, IPC::Connection::Identifier(listeningPort, connection));
+            RunLoop::main().dispatch([protectedThat = RefPtr<ProcessLauncher>(that), didFinishLaunchingProcessFunction, processIdentifier, listeningPort, connection] {
+                (*protectedThat.*didFinishLaunchingProcessFunction)(processIdentifier, IPC::Connection::Identifier(listeningPort, connection));
             });
         }
 

Modified: trunk/Source/WebKit2/UIProcess/Storage/StorageManager.cpp (201574 => 201575)


--- trunk/Source/WebKit2/UIProcess/Storage/StorageManager.cpp	2016-06-01 22:49:07 UTC (rev 201574)
+++ trunk/Source/WebKit2/UIProcess/Storage/StorageManager.cpp	2016-06-01 23:38:37 UTC (rev 201575)
@@ -557,15 +557,15 @@
 {
     RefPtr<StorageManager> storageManager(this);
 
-    m_queue->dispatch([storageManager, completionHandler = WTFMove(completionHandler)]() mutable {
+    m_queue->dispatch([this, protectedThis = Ref<StorageManager>(*this), completionHandler = WTFMove(completionHandler)]() mutable {
         HashSet<RefPtr<SecurityOrigin>> origins;
 
-        for (const auto& sessionStorageNamespace : storageManager->m_sessionStorageNamespaces.values()) {
+        for (const auto& sessionStorageNamespace : m_sessionStorageNamespaces.values()) {
             for (auto& origin : sessionStorageNamespace->origins())
                 origins.add(WTFMove(origin));
         }
 
-        RunLoop::main().dispatch([origins, completionHandler = WTFMove(completionHandler)]() mutable {
+        RunLoop::main().dispatch([origins = WTFMove(origins), completionHandler = WTFMove(completionHandler)]() mutable {
             completionHandler(WTFMove(origins));
         });
     });
@@ -573,10 +573,8 @@
 
 void StorageManager::deleteSessionStorageOrigins(std::function<void ()>&& completionHandler)
 {
-    RefPtr<StorageManager> storageManager(this);
-
-    m_queue->dispatch([storageManager, completionHandler = WTFMove(completionHandler)]() mutable {
-        for (auto& sessionStorageNamespace : storageManager->m_sessionStorageNamespaces.values())
+    m_queue->dispatch([this, protectedThis = Ref<StorageManager>(*this), completionHandler = WTFMove(completionHandler)]() mutable {
+        for (auto& sessionStorageNamespace : m_sessionStorageNamespaces.values())
             sessionStorageNamespace->clearAllStorageAreas();
 
         RunLoop::main().dispatch(WTFMove(completionHandler));
@@ -591,10 +589,9 @@
     for (auto& origin : origins)
         copiedOrigins.uncheckedAppend(origin->isolatedCopy());
 
-    RefPtr<StorageManager> storageManager(this);
-    m_queue->dispatch([storageManager, copiedOrigins, completionHandler = WTFMove(completionHandler)]() mutable {
+    m_queue->dispatch([this, protectedThis = Ref<StorageManager>(*this), copiedOrigins = WTFMove(copiedOrigins), completionHandler = WTFMove(completionHandler)]() mutable {
         for (auto& origin : copiedOrigins) {
-            for (auto& sessionStorageNamespace : storageManager->m_sessionStorageNamespaces.values())
+            for (auto& sessionStorageNamespace : m_sessionStorageNamespaces.values())
                 sessionStorageNamespace->clearStorageAreasMatchingOrigin(*origin);
         }
 
@@ -604,20 +601,18 @@
 
 void StorageManager::getLocalStorageOrigins(std::function<void (HashSet<RefPtr<WebCore::SecurityOrigin>>&&)>&& completionHandler)
 {
-    RefPtr<StorageManager> storageManager(this);
-
-    m_queue->dispatch([storageManager, completionHandler = WTFMove(completionHandler)]() mutable {
+    m_queue->dispatch([this, protectedThis = Ref<StorageManager>(*this), completionHandler = WTFMove(completionHandler)]() mutable {
         HashSet<RefPtr<SecurityOrigin>> origins;
 
-        for (auto& origin : storageManager->m_localStorageDatabaseTracker->origins())
+        for (auto& origin : m_localStorageDatabaseTracker->origins())
             origins.add(WTFMove(origin));
 
-        for (auto& transientLocalStorageNamespace : storageManager->m_transientLocalStorageNamespaces.values()) {
+        for (auto& transientLocalStorageNamespace : m_transientLocalStorageNamespaces.values()) {
             for (auto& origin : transientLocalStorageNamespace->origins())
                 origins.add(WTFMove(origin));
         }
 
-        RunLoop::main().dispatch([origins, completionHandler = WTFMove(completionHandler)]() mutable {
+        RunLoop::main().dispatch([origins = WTFMove(origins), completionHandler = WTFMove(completionHandler)]() mutable {
             completionHandler(WTFMove(origins));
         });
     });
@@ -625,12 +620,10 @@
 
 void StorageManager::getLocalStorageOriginDetails(std::function<void (Vector<LocalStorageDatabaseTracker::OriginDetails>)>&& completionHandler)
 {
-    RefPtr<StorageManager> storageManager(this);
+    m_queue->dispatch([this, protectedThis = Ref<StorageManager>(*this), completionHandler = WTFMove(completionHandler)]() mutable {
+        auto originDetails = m_localStorageDatabaseTracker->originDetails();
 
-    m_queue->dispatch([storageManager, completionHandler = WTFMove(completionHandler)]() mutable {
-        auto originDetails = storageManager->m_localStorageDatabaseTracker->originDetails();
-
-        RunLoop::main().dispatch([originDetails, completionHandler = WTFMove(completionHandler)]() mutable {
+        RunLoop::main().dispatch([originDetails = WTFMove(originDetails), completionHandler = WTFMove(completionHandler)]() mutable {
             completionHandler(WTFMove(originDetails));
         });
     });
@@ -638,33 +631,28 @@
 
 void StorageManager::deleteLocalStorageEntriesForOrigin(const SecurityOrigin& securityOrigin)
 {
-    RefPtr<StorageManager> storageManager(this);
+    m_queue->dispatch([this, protectedThis = Ref<StorageManager>(*this), copiedOrigin = securityOrigin.isolatedCopy()]() mutable {
+        for (auto& localStorageNamespace : m_localStorageNamespaces.values())
+            localStorageNamespace->clearStorageAreasMatchingOrigin(copiedOrigin);
 
-    RefPtr<SecurityOrigin> copiedOrigin = securityOrigin.isolatedCopy();
-    m_queue->dispatch([storageManager, copiedOrigin] {
-        for (auto& localStorageNamespace : storageManager->m_localStorageNamespaces.values())
-            localStorageNamespace->clearStorageAreasMatchingOrigin(*copiedOrigin);
+        for (auto& transientLocalStorageNamespace : m_transientLocalStorageNamespaces.values())
+            transientLocalStorageNamespace->clearStorageAreasMatchingOrigin(copiedOrigin);
 
-        for (auto& transientLocalStorageNamespace : storageManager->m_transientLocalStorageNamespaces.values())
-            transientLocalStorageNamespace->clearStorageAreasMatchingOrigin(*copiedOrigin);
-
-        storageManager->m_localStorageDatabaseTracker->deleteDatabaseWithOrigin(copiedOrigin.get());
+        m_localStorageDatabaseTracker->deleteDatabaseWithOrigin(copiedOrigin.ptr());
     });
 }
 
 void StorageManager::deleteLocalStorageOriginsModifiedSince(std::chrono::system_clock::time_point time, std::function<void ()>&& completionHandler)
 {
-    RefPtr<StorageManager> storageManager(this);
+    m_queue->dispatch([this, protectedThis = Ref<StorageManager>(*this), time, completionHandler = WTFMove(completionHandler)]() mutable {
+        auto deletedOrigins = m_localStorageDatabaseTracker->deleteDatabasesModifiedSince(time);
 
-    m_queue->dispatch([storageManager, time, completionHandler = WTFMove(completionHandler)]() mutable {
-        auto deletedOrigins = storageManager->m_localStorageDatabaseTracker->deleteDatabasesModifiedSince(time);
-
         for (const auto& origin : deletedOrigins) {
-            for (auto& localStorageNamespace : storageManager->m_localStorageNamespaces.values())
+            for (auto& localStorageNamespace : m_localStorageNamespaces.values())
                 localStorageNamespace->clearStorageAreasMatchingOrigin(origin.get());
         }
 
-        for (auto& transientLocalStorageNamespace : storageManager->m_transientLocalStorageNamespaces.values())
+        for (auto& transientLocalStorageNamespace : m_transientLocalStorageNamespaces.values())
             transientLocalStorageNamespace->clearAllStorageAreas();
 
         RunLoop::main().dispatch(WTFMove(completionHandler));
@@ -679,16 +667,15 @@
     for (auto& origin : origins)
         copiedOrigins.uncheckedAppend(origin->isolatedCopy());
 
-    RefPtr<StorageManager> storageManager(this);
-    m_queue->dispatch([storageManager, copiedOrigins, completionHandler = WTFMove(completionHandler)]() mutable {
+    m_queue->dispatch([this, protectedThis = Ref<StorageManager>(*this), copiedOrigins = WTFMove(copiedOrigins), completionHandler = WTFMove(completionHandler)]() mutable {
         for (auto& origin : copiedOrigins) {
-            for (auto& localStorageNamespace : storageManager->m_localStorageNamespaces.values())
+            for (auto& localStorageNamespace : m_localStorageNamespaces.values())
                 localStorageNamespace->clearStorageAreasMatchingOrigin(*origin);
 
-            for (auto& transientLocalStorageNamespace : storageManager->m_transientLocalStorageNamespaces.values())
+            for (auto& transientLocalStorageNamespace : m_transientLocalStorageNamespaces.values())
                 transientLocalStorageNamespace->clearStorageAreasMatchingOrigin(*origin);
 
-            storageManager->m_localStorageDatabaseTracker->deleteDatabaseWithOrigin(origin.get());
+            m_localStorageDatabaseTracker->deleteDatabaseWithOrigin(origin.get());
         }
 
         RunLoop::main().dispatch(WTFMove(completionHandler));

Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (201574 => 201575)


--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp	2016-06-01 22:49:07 UTC (rev 201574)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp	2016-06-01 23:38:37 UTC (rev 201575)
@@ -2714,7 +2714,7 @@
 void WebPageProxy::isWebProcessResponsive(std::function<void (bool isWebProcessResponsive)> callbackFunction)
 {
     if (!isValid()) {
-        RunLoop::main().dispatch([callbackFunction] {
+        RunLoop::main().dispatch([callbackFunction = WTFMove(callbackFunction)] {
             bool isWebProcessResponsive = true;
             callbackFunction(isWebProcessResponsive);
         });

Modified: trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp (201574 => 201575)


--- trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp	2016-06-01 22:49:07 UTC (rev 201574)
+++ trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp	2016-06-01 23:38:37 UTC (rev 201575)
@@ -998,7 +998,7 @@
 {
     if (m_isResponsive == NoOrMaybe::No) {
         if (callback) {
-            RunLoop::main().dispatch([callback] {
+            RunLoop::main().dispatch([callback = WTFMove(callback)] {
                 bool isWebProcessResponsive = false;
                 callback(isWebProcessResponsive);
             });

Modified: trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp (201574 => 201575)


--- trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp	2016-06-01 22:49:07 UTC (rev 201574)
+++ trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp	2016-06-01 23:38:37 UTC (rev 201575)
@@ -235,8 +235,7 @@
             if (pendingCallbacks)
                 return;
 
-            RefPtr<CallbackAggregator> callbackAggregator(this);
-            RunLoop::main().dispatch([callbackAggregator] {
+            RunLoop::main().dispatch([callbackAggregator = Ref<CallbackAggregator>(*this)]() mutable {
 
                 WTF::Vector<WebsiteDataRecord> records;
                 records.reserveInitialCapacity(callbackAggregator->m_websiteDataRecords.size());
@@ -265,17 +264,15 @@
         callbackAggregator->addPendingCallback();
         m_queue->dispatch([fetchOptions, mediaCacheDirectory, callbackAggregator] {
             HashSet<RefPtr<WebCore::SecurityOrigin>> origins = WebCore::HTMLMediaElement::originsInMediaCache(mediaCacheDirectory.string());
-            WebsiteData* websiteData = new WebsiteData;
+            WebsiteData websiteData;
             
             for (auto& origin : origins) {
                 WebsiteData::Entry entry { origin, WebsiteDataType::DiskCache, 0 };
-                websiteData->entries.append(WTFMove(entry));
+                websiteData.entries.append(WTFMove(entry));
             }
             
-            WTF::RunLoop::main().dispatch([callbackAggregator, origins, websiteData] {
-                callbackAggregator->removePendingCallback(WTFMove(*websiteData));
-                
-                delete websiteData;
+            RunLoop::main().dispatch([callbackAggregator, origins = WTFMove(origins), websiteData = WTFMove(websiteData)]() mutable {
+                callbackAggregator->removePendingCallback(WTFMove(websiteData));
             });
         });
 #endif
@@ -365,7 +362,7 @@
         m_queue->dispatch([fetchOptions, applicationCacheDirectory, applicationCacheFlatFileSubdirectoryName, callbackAggregator] {
             auto storage = WebCore::ApplicationCacheStorage::create(applicationCacheDirectory.string(), applicationCacheFlatFileSubdirectoryName.string());
 
-            WebsiteData* websiteData = new WebsiteData;
+            WebsiteData websiteData;
 
             HashSet<RefPtr<WebCore::SecurityOrigin>> origins;
             storage->getOriginsWithCache(origins);
@@ -374,13 +371,11 @@
                 uint64_t size = fetchOptions.contains(WebsiteDataFetchOption::ComputeSizes) ? storage->diskUsageForOrigin(*origin) : 0;
                 WebsiteData::Entry entry { origin, WebsiteDataType::OfflineWebApplicationCache, size };
 
-                websiteData->entries.append(WTFMove(entry));
+                websiteData.entries.append(WTFMove(entry));
             }
 
-            WTF::RunLoop::main().dispatch([callbackAggregator, origins, websiteData]() mutable {
-                callbackAggregator->removePendingCallback(WTFMove(*websiteData));
-
-                delete websiteData;
+            RunLoop::main().dispatch([callbackAggregator, origins = WTFMove(origins), websiteData = WTFMove(websiteData)]() mutable {
+                callbackAggregator->removePendingCallback(WTFMove(websiteData));
             });
         });
     }
@@ -394,7 +389,7 @@
             Vector<RefPtr<WebCore::SecurityOrigin>> origins;
             WebCore::DatabaseTracker::trackerWithDatabasePath(webSQLDatabaseDirectory.string())->origins(origins);
 
-            RunLoop::main().dispatch([callbackAggregator, origins]() mutable {
+            RunLoop::main().dispatch([callbackAggregator, origins = WTFMove(origins)]() mutable {
                 WebsiteData websiteData;
                 for (auto& origin : origins)
                     websiteData.entries.append(WebsiteData::Entry { WTFMove(origin), WebsiteDataType::WebSQLDatabases, 0 });
@@ -425,7 +420,7 @@
         m_queue->dispatch([mediaKeysStorageDirectory, callbackAggregator] {
             auto origins = mediaKeyOrigins(mediaKeysStorageDirectory.string());
 
-            RunLoop::main().dispatch([callbackAggregator, origins]() mutable {
+            RunLoop::main().dispatch([callbackAggregator, origins = WTFMove(origins)]() mutable {
                 WebsiteData websiteData;
                 for (auto& origin : origins)
                     websiteData.entries.append(WebsiteData::Entry { WTFMove(origin), WebsiteDataType::MediaKeys, 0 });

Modified: trunk/Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp (201574 => 201575)


--- trunk/Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp	2016-06-01 22:49:07 UTC (rev 201574)
+++ trunk/Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp	2016-06-01 23:38:37 UTC (rev 201575)
@@ -302,9 +302,8 @@
 
 void NetscapePlugin::pluginThreadAsyncCall(void (*function)(void*), void* userData)
 {
-    RefPtr<NetscapePlugin> plugin(this);
-    RunLoop::main().dispatch([plugin, function, userData] {
-        if (!plugin->m_isStarted)
+    RunLoop::main().dispatch([protectedThis = Ref<NetscapePlugin>(*this), function, userData] {
+        if (!protectedThis->m_isStarted)
             return;
 
         function(userData);

Modified: trunk/Source/WebKit2/WebProcess/Plugins/PluginView.cpp (201574 => 201575)


--- trunk/Source/WebKit2/WebProcess/Plugins/PluginView.cpp	2016-06-01 22:49:07 UTC (rev 201574)
+++ trunk/Source/WebKit2/WebProcess/Plugins/PluginView.cpp	2016-06-01 23:38:37 UTC (rev 201575)
@@ -1679,8 +1679,7 @@
     // the destroyed object higher on the stack. To prevent this, if the plug-in has
     // only one remaining reference, call deref() asynchronously.
     if (hasOneRef()) {
-        RunLoop::main().dispatch([this] {
-            deref();
+        RunLoop::main().dispatch([lastRef = adoptRef(*this)] {
         });
         return;
     }

Modified: trunk/Source/WebKit2/WebProcess/WebPage/EventDispatcher.cpp (201574 => 201575)


--- trunk/Source/WebKit2/WebProcess/WebPage/EventDispatcher.cpp	2016-06-01 22:49:07 UTC (rev 201574)
+++ trunk/Source/WebKit2/WebProcess/WebPage/EventDispatcher.cpp	2016-06-01 23:38:37 UTC (rev 201575)
@@ -138,18 +138,16 @@
     UNUSED_PARAM(canRubberBandAtBottom);
 #endif
 
-    RefPtr<EventDispatcher> eventDispatcher = this;
-    RunLoop::main().dispatch([eventDispatcher, pageID, wheelEvent] {
-        eventDispatcher->dispatchWheelEvent(pageID, wheelEvent);
+    RunLoop::main().dispatch([protectedThis = Ref<EventDispatcher>(*this), pageID, wheelEvent]() mutable {
+        protectedThis->dispatchWheelEvent(pageID, wheelEvent);
     }); 
 }
 
 #if ENABLE(MAC_GESTURE_EVENTS)
 void EventDispatcher::gestureEvent(uint64_t pageID, const WebKit::WebGestureEvent& gestureEvent)
 {
-    RefPtr<EventDispatcher> eventDispatcher = this;
-    RunLoop::main().dispatch([eventDispatcher, pageID, gestureEvent] {
-        eventDispatcher->dispatchGestureEvent(pageID, gestureEvent);
+    RunLoop::main().dispatch([protectedThis = Ref<EventDispatcher>(*this), pageID, gestureEvent]() mutable {
+        protectedThis->dispatchGestureEvent(pageID, gestureEvent);
     });
 }
 #endif
@@ -191,8 +189,7 @@
     }
 
     if (updateListWasEmpty) {
-        RefPtr<EventDispatcher> eventDispatcher = this;
-        RunLoop::main().dispatch([eventDispatcher] {
+        RunLoop::main().dispatch([protectedThis = Ref<EventDispatcher>(*this)]() mutable {
             eventDispatcher->dispatchTouchEvents();
         });
     }

Modified: trunk/Source/WebKit2/WebProcess/WebPage/ViewUpdateDispatcher.cpp (201574 => 201575)


--- trunk/Source/WebKit2/WebProcess/WebPage/ViewUpdateDispatcher.cpp	2016-06-01 22:49:07 UTC (rev 201574)
+++ trunk/Source/WebKit2/WebProcess/WebPage/ViewUpdateDispatcher.cpp	2016-06-01 23:38:37 UTC (rev 201575)
@@ -67,9 +67,8 @@
             iterator->value.visibleContentRectUpdateInfo = visibleContentRectUpdateInfo;
     }
     if (updateListWasEmpty) {
-        RefPtr<ViewUpdateDispatcher> protector(this);
-        RunLoop::main().dispatch([protector] {
-            protector->dispatchVisibleContentRectUpdate();
+        RunLoop::main().dispatch([protectedThis = Ref<ViewUpdateDispatcher>(*this)]() mutable {
+            protectedThis->dispatchVisibleContentRectUpdate();
         });
     }
 }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to