<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[201587] trunk/Source/WebKit2</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/201587">201587</a></dd>
<dt>Author</dt> <dd>beidson@apple.com</dd>
<dt>Date</dt> <dd>2016-06-01 20:38:39 -0700 (Wed, 01 Jun 2016)</dd>
</dl>
<h3>Log Message</h3>
<pre>Modernize lambda usage for all callers of RunLoop::dispatch() (take 2).
https://bugs.webkit.org/show_bug.cgi?id=158277
Reviewed by Chris Dumez.
* NetworkProcess/cache/NetworkCache.cpp:
(WebKit::NetworkCache::Cache::deleteDumpFile):
* Platform/IPC/Connection.cpp:
(IPC::Connection::addWorkQueueMessageReceiver):
(IPC::Connection::removeWorkQueueMessageReceiver):
(IPC::Connection::invalidate):
(IPC::Connection::sendMessage):
(IPC::Connection::processIncomingMessage):
(IPC::Connection::postConnectionDidCloseOnConnectionWorkQueue):
* UIProcess/Storage/LocalStorageDatabaseTracker.cpp:
(WebKit::LocalStorageDatabaseTracker::LocalStorageDatabaseTracker):
* UIProcess/Storage/StorageManager.cpp:
(WebKit::StorageManager::createSessionStorageNamespace):
(WebKit::StorageManager::destroySessionStorageNamespace):
(WebKit::StorageManager::setAllowedSessionStorageNamespaceConnection):
(WebKit::StorageManager::cloneSessionStorageNamespace):
(WebKit::StorageManager::processDidCloseConnection):
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::readDataFromDiskIfNeeded):
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::fetchData):
(WebKit::WebsiteDataStore::removeData):</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2NetworkProcesscacheNetworkCachecpp">trunk/Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp</a></li>
<li><a href="#trunkSourceWebKit2PlatformIPCConnectioncpp">trunk/Source/WebKit2/Platform/IPC/Connection.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessStorageLocalStorageDatabaseTrackercpp">trunk/Source/WebKit2/UIProcess/Storage/LocalStorageDatabaseTracker.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessStorageStorageManagercpp">trunk/Source/WebKit2/UIProcess/Storage/StorageManager.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebResourceLoadStatisticsStorecpp">trunk/Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebsiteDataWebsiteDataStorecpp">trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (201586 => 201587)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2016-06-02 03:34:31 UTC (rev 201586)
+++ trunk/Source/WebKit2/ChangeLog        2016-06-02 03:38:39 UTC (rev 201587)
</span><span class="lines">@@ -1,3 +1,38 @@
</span><ins>+2016-06-01 Brady Eidson <beidson@apple.com>
+
+ Modernize lambda usage for all callers of RunLoop::dispatch() (take 2).
+ https://bugs.webkit.org/show_bug.cgi?id=158277
+
+ Reviewed by Chris Dumez.
+
+ * NetworkProcess/cache/NetworkCache.cpp:
+ (WebKit::NetworkCache::Cache::deleteDumpFile):
+
+ * Platform/IPC/Connection.cpp:
+ (IPC::Connection::addWorkQueueMessageReceiver):
+ (IPC::Connection::removeWorkQueueMessageReceiver):
+ (IPC::Connection::invalidate):
+ (IPC::Connection::sendMessage):
+ (IPC::Connection::processIncomingMessage):
+ (IPC::Connection::postConnectionDidCloseOnConnectionWorkQueue):
+
+ * UIProcess/Storage/LocalStorageDatabaseTracker.cpp:
+ (WebKit::LocalStorageDatabaseTracker::LocalStorageDatabaseTracker):
+
+ * UIProcess/Storage/StorageManager.cpp:
+ (WebKit::StorageManager::createSessionStorageNamespace):
+ (WebKit::StorageManager::destroySessionStorageNamespace):
+ (WebKit::StorageManager::setAllowedSessionStorageNamespaceConnection):
+ (WebKit::StorageManager::cloneSessionStorageNamespace):
+ (WebKit::StorageManager::processDidCloseConnection):
+
+ * UIProcess/WebResourceLoadStatisticsStore.cpp:
+ (WebKit::WebResourceLoadStatisticsStore::readDataFromDiskIfNeeded):
+
+ * UIProcess/WebsiteData/WebsiteDataStore.cpp:
+ (WebKit::WebsiteDataStore::fetchData):
+ (WebKit::WebsiteDataStore::removeData):
+
</ins><span class="cx"> 2016-06-01 Chris Dumez <cdumez@apple.com>
</span><span class="cx">
</span><span class="cx"> [iOS] Regression(r200972): Crash under WebKit::WebPage::selectTextWithGranularityAtPoint()
</span></span></pre></div>
<a id="trunkSourceWebKit2NetworkProcesscacheNetworkCachecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp (201586 => 201587)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp        2016-06-02 03:34:31 UTC (rev 201586)
+++ trunk/Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp        2016-06-02 03:38:39 UTC (rev 201587)
</span><span class="lines">@@ -616,10 +616,8 @@
</span><span class="cx">
</span><span class="cx"> void Cache::deleteDumpFile()
</span><span class="cx"> {
</span><del>- auto queue = WorkQueue::create("com.apple.WebKit.Cache.delete");
- StringCapture dumpFilePathCapture(dumpFilePath());
- queue->dispatch([dumpFilePathCapture] {
- WebCore::deleteFile(dumpFilePathCapture.string());
</del><ins>+ WorkQueue::create("com.apple.WebKit.Cache.delete")->dispatch([path = dumpFilePath().isolatedCopy()] {
+ WebCore::deleteFile(path);
</ins><span class="cx"> });
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebKit2PlatformIPCConnectioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Platform/IPC/Connection.cpp (201586 => 201587)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Platform/IPC/Connection.cpp        2016-06-02 03:34:31 UTC (rev 201586)
+++ trunk/Source/WebKit2/Platform/IPC/Connection.cpp        2016-06-02 03:38:39 UTC (rev 201587)
</span><span class="lines">@@ -253,11 +253,10 @@
</span><span class="cx"> {
</span><span class="cx"> ASSERT(RunLoop::isMain());
</span><span class="cx">
</span><del>- RefPtr<Connection> connection(this);
- m_connectionQueue->dispatch([connection, messageReceiverName, workQueue, workQueueMessageReceiver] {
- ASSERT(!connection->m_workQueueMessageReceivers.contains(messageReceiverName));
</del><ins>+ m_connectionQueue->dispatch([protectedThis = Ref<Connection>(*this), messageReceiverName = WTFMove(messageReceiverName), workQueue, workQueueMessageReceiver]() mutable {
+ ASSERT(!protectedThis->m_workQueueMessageReceivers.contains(messageReceiverName));
</ins><span class="cx">
</span><del>- connection->m_workQueueMessageReceivers.add(messageReceiverName, std::make_pair(workQueue, workQueueMessageReceiver));
</del><ins>+ protectedThis->m_workQueueMessageReceivers.add(messageReceiverName, std::make_pair(workQueue, workQueueMessageReceiver));
</ins><span class="cx"> });
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -265,10 +264,9 @@
</span><span class="cx"> {
</span><span class="cx"> ASSERT(RunLoop::isMain());
</span><span class="cx">
</span><del>- RefPtr<Connection> connection(this);
- m_connectionQueue->dispatch([connection, messageReceiverName] {
- ASSERT(connection->m_workQueueMessageReceivers.contains(messageReceiverName));
- connection->m_workQueueMessageReceivers.remove(messageReceiverName);
</del><ins>+ m_connectionQueue->dispatch([protectedThis = Ref<Connection>(*this), messageReceiverName = WTFMove(messageReceiverName)]() mutable {
+ ASSERT(protectedThis->m_workQueueMessageReceivers.contains(messageReceiverName));
+ protectedThis->m_workQueueMessageReceivers.remove(messageReceiverName);
</ins><span class="cx"> });
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -319,8 +317,7 @@
</span><span class="cx">
</span><span class="cx"> m_client = nullptr;
</span><span class="cx">
</span><del>- RefPtr<Connection> protectedThis(this);
- m_connectionQueue->dispatch([protectedThis] {
</del><ins>+ m_connectionQueue->dispatch([protectedThis = Ref<Connection>(*this)]() mutable {
</ins><span class="cx"> protectedThis->platformInvalidate();
</span><span class="cx"> });
</span><span class="cx"> }
</span><span class="lines">@@ -377,8 +374,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // FIXME: We should add a boolean flag so we don't call this when work has already been scheduled.
</span><del>- RefPtr<Connection> protectedThis(this);
- m_connectionQueue->dispatch([protectedThis] {
</del><ins>+ m_connectionQueue->dispatch([protectedThis = Ref<Connection>(*this)]() mutable {
</ins><span class="cx"> protectedThis->sendOutgoingMessages();
</span><span class="cx"> });
</span><span class="cx"> return true;
</span><span class="lines">@@ -659,11 +655,7 @@
</span><span class="cx">
</span><span class="cx"> auto it = m_workQueueMessageReceivers.find(message->messageReceiverName());
</span><span class="cx"> if (it != m_workQueueMessageReceivers.end()) {
</span><del>- RefPtr<Connection> protectedThis(this);
- RefPtr<WorkQueueMessageReceiver>& workQueueMessageReceiver = it->value.second;
- MessageDecoder* decoderPtr = message.release();
- it->value.first->dispatch([protectedThis, workQueueMessageReceiver, decoderPtr] {
- std::unique_ptr<MessageDecoder> decoder(decoderPtr);
</del><ins>+ it->value.first->dispatch([protectedThis = Ref<Connection>(*this), workQueueMessageReceiver = it->value.second, decoder = WTFMove(message)]() mutable {
</ins><span class="cx"> protectedThis->dispatchWorkQueueMessageReceiverMessage(*workQueueMessageReceiver, *decoder);
</span><span class="cx"> });
</span><span class="cx"> return;
</span><span class="lines">@@ -747,9 +739,8 @@
</span><span class="cx">
</span><span class="cx"> void Connection::postConnectionDidCloseOnConnectionWorkQueue()
</span><span class="cx"> {
</span><del>- RefPtr<Connection> connection(this);
- m_connectionQueue->dispatch([connection] {
- connection->connectionDidClose();
</del><ins>+ m_connectionQueue->dispatch([protectedThis = Ref<Connection>(*this)]() mutable {
+ protectedThis->connectionDidClose();
</ins><span class="cx"> });
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessStorageLocalStorageDatabaseTrackercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/Storage/LocalStorageDatabaseTracker.cpp (201586 => 201587)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/Storage/LocalStorageDatabaseTracker.cpp        2016-06-02 03:34:31 UTC (rev 201586)
+++ trunk/Source/WebKit2/UIProcess/Storage/LocalStorageDatabaseTracker.cpp        2016-06-02 03:38:39 UTC (rev 201587)
</span><span class="lines">@@ -51,9 +51,8 @@
</span><span class="cx"> // Make sure the encoding is initialized before we start dispatching things to the queue.
</span><span class="cx"> UTF8Encoding();
</span><span class="cx">
</span><del>- RefPtr<LocalStorageDatabaseTracker> localStorageDatabaseTracker(this);
- m_queue->dispatch([localStorageDatabaseTracker] {
- localStorageDatabaseTracker->importOriginIdentifiers();
</del><ins>+ m_queue->dispatch([protectedThis = Ref<LocalStorageDatabaseTracker>(*this)]() mutable {
+ protectedThis->importOriginIdentifiers();
</ins><span class="cx"> });
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessStorageStorageManagercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/Storage/StorageManager.cpp (201586 => 201587)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/Storage/StorageManager.cpp        2016-06-02 03:34:31 UTC (rev 201586)
+++ trunk/Source/WebKit2/UIProcess/Storage/StorageManager.cpp        2016-06-02 03:38:39 UTC (rev 201587)
</span><span class="lines">@@ -473,43 +473,34 @@
</span><span class="cx">
</span><span class="cx"> void StorageManager::createSessionStorageNamespace(uint64_t storageNamespaceID, unsigned quotaInBytes)
</span><span class="cx"> {
</span><del>- RefPtr<StorageManager> storageManager(this);
</del><ins>+ m_queue->dispatch([this, protectedThis = Ref<StorageManager>(*this), storageNamespaceID, quotaInBytes]() mutable {
+ ASSERT(!m_sessionStorageNamespaces.contains(storageNamespaceID));
</ins><span class="cx">
</span><del>- m_queue->dispatch([storageManager, storageNamespaceID, quotaInBytes] {
- ASSERT(!storageManager->m_sessionStorageNamespaces.contains(storageNamespaceID));
-
- storageManager->m_sessionStorageNamespaces.set(storageNamespaceID, SessionStorageNamespace::create(quotaInBytes));
</del><ins>+ m_sessionStorageNamespaces.set(storageNamespaceID, SessionStorageNamespace::create(quotaInBytes));
</ins><span class="cx"> });
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void StorageManager::destroySessionStorageNamespace(uint64_t storageNamespaceID)
</span><span class="cx"> {
</span><del>- RefPtr<StorageManager> storageManager(this);
-
- m_queue->dispatch([storageManager, storageNamespaceID] {
- ASSERT(storageManager->m_sessionStorageNamespaces.contains(storageNamespaceID));
- storageManager->m_sessionStorageNamespaces.remove(storageNamespaceID);
</del><ins>+ m_queue->dispatch([this, protectedThis = Ref<StorageManager>(*this), storageNamespaceID] {
+ ASSERT(m_sessionStorageNamespaces.contains(storageNamespaceID));
+ m_sessionStorageNamespaces.remove(storageNamespaceID);
</ins><span class="cx"> });
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void StorageManager::setAllowedSessionStorageNamespaceConnection(uint64_t storageNamespaceID, IPC::Connection* allowedConnection)
</span><span class="cx"> {
</span><del>- RefPtr<StorageManager> storageManager(this);
- RefPtr<IPC::Connection> connection(allowedConnection);
</del><ins>+ m_queue->dispatch([this, protectedThis = Ref<StorageManager>(*this), connection = RefPtr<IPC::Connection>(allowedConnection), storageNamespaceID]() mutable {
+ ASSERT(m_sessionStorageNamespaces.contains(storageNamespaceID));
</ins><span class="cx">
</span><del>- m_queue->dispatch([storageManager, connection, storageNamespaceID] {
- ASSERT(storageManager->m_sessionStorageNamespaces.contains(storageNamespaceID));
-
- storageManager->m_sessionStorageNamespaces.get(storageNamespaceID)->setAllowedConnection(connection.get());
</del><ins>+ m_sessionStorageNamespaces.get(storageNamespaceID)->setAllowedConnection(connection.get());
</ins><span class="cx"> });
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void StorageManager::cloneSessionStorageNamespace(uint64_t storageNamespaceID, uint64_t newStorageNamespaceID)
</span><span class="cx"> {
</span><del>- RefPtr<StorageManager> storageManager(this);
-
- m_queue->dispatch([storageManager, storageNamespaceID, newStorageNamespaceID] {
- SessionStorageNamespace* sessionStorageNamespace = storageManager->m_sessionStorageNamespaces.get(storageNamespaceID);
</del><ins>+ m_queue->dispatch([this, protectedThis = Ref<StorageManager>(*this), storageNamespaceID, newStorageNamespaceID] {
+ SessionStorageNamespace* sessionStorageNamespace = m_sessionStorageNamespaces.get(storageNamespaceID);
</ins><span class="cx"> if (!sessionStorageNamespace) {
</span><span class="cx"> // FIXME: We can get into this situation if someone closes the originating page from within a
</span><span class="cx"> // createNewPage callback. We bail for now, but we should really find a way to keep the session storage alive
</span><span class="lines">@@ -517,7 +508,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- SessionStorageNamespace* newSessionStorageNamespace = storageManager->m_sessionStorageNamespaces.get(newStorageNamespaceID);
</del><ins>+ SessionStorageNamespace* newSessionStorageNamespace = m_sessionStorageNamespaces.get(newStorageNamespaceID);
</ins><span class="cx"> ASSERT(newSessionStorageNamespace);
</span><span class="cx">
</span><span class="cx"> sessionStorageNamespace->cloneTo(*newSessionStorageNamespace);
</span><span class="lines">@@ -533,23 +524,18 @@
</span><span class="cx"> {
</span><span class="cx"> connection.removeWorkQueueMessageReceiver(Messages::StorageManager::messageReceiverName());
</span><span class="cx">
</span><del>- RefPtr<StorageManager> storageManager(this);
- RefPtr<IPC::Connection> protectedConnection(&connection);
-
- m_queue->dispatch([storageManager, protectedConnection] {
</del><ins>+ m_queue->dispatch([this, protectedThis = Ref<StorageManager>(*this), connection = Ref<IPC::Connection>(connection)]() mutable {
</ins><span class="cx"> Vector<std::pair<RefPtr<IPC::Connection>, uint64_t>> connectionAndStorageMapIDPairsToRemove;
</span><del>- auto storageAreasByConnection = storageManager->m_storageAreasByConnection;
-
- for (auto it = storageAreasByConnection.begin(), end = storageAreasByConnection.end(); it != end; ++it) {
- if (it->key.first != protectedConnection)
</del><ins>+ for (auto& storageArea : m_storageAreasByConnection) {
+ if (storageArea.key.first != connection.ptr())
</ins><span class="cx"> continue;
</span><span class="cx">
</span><del>- it->value->removeListener(*it->key.first, it->key.second);
- connectionAndStorageMapIDPairsToRemove.append(it->key);
</del><ins>+ storageArea.value->removeListener(*storageArea.key.first, storageArea.key.second);
+ connectionAndStorageMapIDPairsToRemove.append(storageArea.key);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>- for (size_t i = 0; i < connectionAndStorageMapIDPairsToRemove.size(); ++i)
- storageManager->m_storageAreasByConnection.remove(connectionAndStorageMapIDPairsToRemove[i]);
</del><ins>+ for (auto& pair : connectionAndStorageMapIDPairsToRemove)
+ m_storageAreasByConnection.remove(pair);
</ins><span class="cx"> });
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebResourceLoadStatisticsStorecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp (201586 => 201587)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp        2016-06-02 03:34:31 UTC (rev 201586)
+++ trunk/Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp        2016-06-02 03:38:39 UTC (rev 201587)
</span><span class="lines">@@ -117,15 +117,14 @@
</span><span class="cx"> if (!m_resourceLoadStatisticsEnabled)
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- RefPtr<WebResourceLoadStatisticsStore> self(this);
- m_statisticsQueue->dispatch([self] {
- self->coreStore().clear();
</del><ins>+ m_statisticsQueue->dispatch([this, protectedThis = Ref<WebResourceLoadStatisticsStore>(*this)] {
+ coreStore().clear();
</ins><span class="cx">
</span><del>- auto decoder = self->createDecoderFromDisk("full_browsing_session");
</del><ins>+ auto decoder = createDecoderFromDisk("full_browsing_session");
</ins><span class="cx"> if (!decoder)
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- self->coreStore().readDataFromDecoder(*decoder);
</del><ins>+ coreStore().readDataFromDecoder(*decoder);
</ins><span class="cx"> });
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebsiteDataWebsiteDataStorecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp (201586 => 201587)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp        2016-06-02 03:34:31 UTC (rev 201586)
+++ trunk/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp        2016-06-02 03:38:39 UTC (rev 201587)
</span><span class="lines">@@ -257,13 +257,11 @@
</span><span class="cx">
</span><span class="cx"> RefPtr<CallbackAggregator> callbackAggregator = adoptRef(new CallbackAggregator(fetchOptions, WTFMove(completionHandler)));
</span><span class="cx">
</span><del>- if (dataTypes.contains(WebsiteDataType::DiskCache)) {
- StringCapture mediaCacheDirectory { m_mediaCacheDirectory };
-
</del><span class="cx"> #if ENABLE(VIDEO)
</span><ins>+ if (dataTypes.contains(WebsiteDataType::DiskCache)) {
</ins><span class="cx"> callbackAggregator->addPendingCallback();
</span><del>- m_queue->dispatch([fetchOptions, mediaCacheDirectory, callbackAggregator] {
- HashSet<RefPtr<WebCore::SecurityOrigin>> origins = WebCore::HTMLMediaElement::originsInMediaCache(mediaCacheDirectory.string());
</del><ins>+ m_queue->dispatch([fetchOptions, mediaCacheDirectory = m_mediaCacheDirectory.isolatedCopy(), callbackAggregator] {
+ HashSet<RefPtr<WebCore::SecurityOrigin>> origins = WebCore::HTMLMediaElement::originsInMediaCache(mediaCacheDirectory);
</ins><span class="cx"> WebsiteData websiteData;
</span><span class="cx">
</span><span class="cx"> for (auto& origin : origins) {
</span><span class="lines">@@ -275,8 +273,8 @@
</span><span class="cx"> callbackAggregator->removePendingCallback(WTFMove(websiteData));
</span><span class="cx"> });
</span><span class="cx"> });
</span><del>-#endif
</del><span class="cx"> }
</span><ins>+#endif
</ins><span class="cx">
</span><span class="cx"> auto networkProcessAccessType = computeNetworkProcessAccessTypeForDataFetch(dataTypes, !isPersistent());
</span><span class="cx"> if (networkProcessAccessType != ProcessAccessType::None) {
</span><span class="lines">@@ -354,13 +352,10 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (dataTypes.contains(WebsiteDataType::OfflineWebApplicationCache) && isPersistent()) {
</span><del>- StringCapture applicationCacheDirectory { m_applicationCacheDirectory };
- StringCapture applicationCacheFlatFileSubdirectoryName { m_applicationCacheFlatFileSubdirectoryName };
-
</del><span class="cx"> callbackAggregator->addPendingCallback();
</span><span class="cx">
</span><del>- m_queue->dispatch([fetchOptions, applicationCacheDirectory, applicationCacheFlatFileSubdirectoryName, callbackAggregator] {
- auto storage = WebCore::ApplicationCacheStorage::create(applicationCacheDirectory.string(), applicationCacheFlatFileSubdirectoryName.string());
</del><ins>+ m_queue->dispatch([fetchOptions, applicationCacheDirectory = m_applicationCacheDirectory.isolatedCopy(), applicationCacheFlatFileSubdirectoryName = m_applicationCacheFlatFileSubdirectoryName.isolatedCopy(), callbackAggregator] {
+ auto storage = WebCore::ApplicationCacheStorage::create(applicationCacheDirectory, applicationCacheFlatFileSubdirectoryName);
</ins><span class="cx">
</span><span class="cx"> WebsiteData websiteData;
</span><span class="cx">
</span><span class="lines">@@ -381,13 +376,11 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (dataTypes.contains(WebsiteDataType::WebSQLDatabases) && isPersistent()) {
</span><del>- StringCapture webSQLDatabaseDirectory { m_webSQLDatabaseDirectory };
-
</del><span class="cx"> callbackAggregator->addPendingCallback();
</span><span class="cx">
</span><del>- m_queue->dispatch([webSQLDatabaseDirectory, callbackAggregator] {
</del><ins>+ m_queue->dispatch([webSQLDatabaseDirectory = m_webSQLDatabaseDirectory.isolatedCopy(), callbackAggregator] {
</ins><span class="cx"> Vector<RefPtr<WebCore::SecurityOrigin>> origins;
</span><del>- WebCore::DatabaseTracker::trackerWithDatabasePath(webSQLDatabaseDirectory.string())->origins(origins);
</del><ins>+ WebCore::DatabaseTracker::trackerWithDatabasePath(webSQLDatabaseDirectory)->origins(origins);
</ins><span class="cx">
</span><span class="cx"> RunLoop::main().dispatch([callbackAggregator, origins = WTFMove(origins)]() mutable {
</span><span class="cx"> WebsiteData websiteData;
</span><span class="lines">@@ -413,12 +406,10 @@
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> if (dataTypes.contains(WebsiteDataType::MediaKeys) && isPersistent()) {
</span><del>- StringCapture mediaKeysStorageDirectory { m_mediaKeysStorageDirectory };
-
</del><span class="cx"> callbackAggregator->addPendingCallback();
</span><span class="cx">
</span><del>- m_queue->dispatch([mediaKeysStorageDirectory, callbackAggregator] {
- auto origins = mediaKeyOrigins(mediaKeysStorageDirectory.string());
</del><ins>+ m_queue->dispatch([mediaKeysStorageDirectory = m_mediaKeysStorageDirectory.isolatedCopy(), callbackAggregator] {
+ auto origins = mediaKeyOrigins(mediaKeysStorageDirectory);
</ins><span class="cx">
</span><span class="cx"> RunLoop::main().dispatch([callbackAggregator, origins = WTFMove(origins)]() mutable {
</span><span class="cx"> WebsiteData websiteData;
</span><span class="lines">@@ -551,20 +542,18 @@
</span><span class="cx">
</span><span class="cx"> RefPtr<CallbackAggregator> callbackAggregator = adoptRef(new CallbackAggregator(WTFMove(completionHandler)));
</span><span class="cx">
</span><del>- if (dataTypes.contains(WebsiteDataType::DiskCache)) {
- StringCapture mediaCacheDirectory { m_mediaCacheDirectory };
-
</del><span class="cx"> #if ENABLE(VIDEO)
</span><ins>+ if (dataTypes.contains(WebsiteDataType::DiskCache)) {
</ins><span class="cx"> callbackAggregator->addPendingCallback();
</span><del>- m_queue->dispatch([modifiedSince, mediaCacheDirectory, callbackAggregator] {
- WebCore::HTMLMediaElement::clearMediaCache(mediaCacheDirectory.string(), modifiedSince);
</del><ins>+ m_queue->dispatch([modifiedSince, mediaCacheDirectory = m_mediaCacheDirectory.isolatedCopy(), callbackAggregator] {
+ WebCore::HTMLMediaElement::clearMediaCache(mediaCacheDirectory, modifiedSince);
</ins><span class="cx">
</span><span class="cx"> WTF::RunLoop::main().dispatch([callbackAggregator] {
</span><span class="cx"> callbackAggregator->removePendingCallback();
</span><span class="cx"> });
</span><span class="cx"> });
</span><del>-#endif
</del><span class="cx"> }
</span><ins>+#endif
</ins><span class="cx">
</span><span class="cx"> auto networkProcessAccessType = computeNetworkProcessAccessTypeForDataRemoval(dataTypes, !isPersistent());
</span><span class="cx"> if (networkProcessAccessType != ProcessAccessType::None) {
</span><span class="lines">@@ -632,13 +621,10 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (dataTypes.contains(WebsiteDataType::OfflineWebApplicationCache) && isPersistent()) {
</span><del>- StringCapture applicationCacheDirectory { m_applicationCacheDirectory };
- StringCapture applicationCacheFlatFileSubdirectoryName { m_applicationCacheFlatFileSubdirectoryName };
-
</del><span class="cx"> callbackAggregator->addPendingCallback();
</span><span class="cx">
</span><del>- m_queue->dispatch([applicationCacheDirectory, applicationCacheFlatFileSubdirectoryName, callbackAggregator] {
- auto storage = WebCore::ApplicationCacheStorage::create(applicationCacheDirectory.string(), applicationCacheFlatFileSubdirectoryName.string());
</del><ins>+ m_queue->dispatch([applicationCacheDirectory = m_applicationCacheDirectory.isolatedCopy(), applicationCacheFlatFileSubdirectoryName = m_applicationCacheFlatFileSubdirectoryName.isolatedCopy(), callbackAggregator] {
+ auto storage = WebCore::ApplicationCacheStorage::create(applicationCacheDirectory, applicationCacheFlatFileSubdirectoryName);
</ins><span class="cx">
</span><span class="cx"> storage->deleteAllCaches();
</span><span class="cx">
</span><span class="lines">@@ -649,12 +635,10 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (dataTypes.contains(WebsiteDataType::WebSQLDatabases) && isPersistent()) {
</span><del>- StringCapture webSQLDatabaseDirectory { m_webSQLDatabaseDirectory };
-
</del><span class="cx"> callbackAggregator->addPendingCallback();
</span><span class="cx">
</span><del>- m_queue->dispatch([webSQLDatabaseDirectory, callbackAggregator, modifiedSince] {
- WebCore::DatabaseTracker::trackerWithDatabasePath(webSQLDatabaseDirectory.string())->deleteDatabasesModifiedSince(modifiedSince);
</del><ins>+ m_queue->dispatch([webSQLDatabaseDirectory = m_webSQLDatabaseDirectory.isolatedCopy(), callbackAggregator, modifiedSince] {
+ WebCore::DatabaseTracker::trackerWithDatabasePath(webSQLDatabaseDirectory)->deleteDatabasesModifiedSince(modifiedSince);
</ins><span class="cx">
</span><span class="cx"> RunLoop::main().dispatch([callbackAggregator] {
</span><span class="cx"> callbackAggregator->removePendingCallback();
</span><span class="lines">@@ -676,12 +660,10 @@
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> if (dataTypes.contains(WebsiteDataType::MediaKeys) && isPersistent()) {
</span><del>- StringCapture mediaKeysStorageDirectory { m_mediaKeysStorageDirectory };
-
</del><span class="cx"> callbackAggregator->addPendingCallback();
</span><span class="cx">
</span><del>- m_queue->dispatch([mediaKeysStorageDirectory, callbackAggregator, modifiedSince] {
- removeMediaKeys(mediaKeysStorageDirectory.string(), modifiedSince);
</del><ins>+ m_queue->dispatch([mediaKeysStorageDirectory = m_mediaKeysStorageDirectory.isolatedCopy(), callbackAggregator, modifiedSince] {
+ removeMediaKeys(mediaKeysStorageDirectory, modifiedSince);
</ins><span class="cx">
</span><span class="cx"> RunLoop::main().dispatch([callbackAggregator] {
</span><span class="cx"> callbackAggregator->removePendingCallback();
</span><span class="lines">@@ -795,7 +777,6 @@
</span><span class="cx"> RefPtr<CallbackAggregator> callbackAggregator = adoptRef(new CallbackAggregator(WTFMove(completionHandler)));
</span><span class="cx">
</span><span class="cx"> if (dataTypes.contains(WebsiteDataType::DiskCache)) {
</span><del>- StringCapture mediaCacheDirectory { m_mediaCacheDirectory };
</del><span class="cx"> HashSet<RefPtr<WebCore::SecurityOrigin>> origins;
</span><span class="cx"> for (const auto& dataRecord : dataRecords) {
</span><span class="cx"> for (const auto& origin : dataRecord.origins)
</span><span class="lines">@@ -804,8 +785,8 @@
</span><span class="cx">
</span><span class="cx"> #if ENABLE(VIDEO)
</span><span class="cx"> callbackAggregator->addPendingCallback();
</span><del>- m_queue->dispatch([origins, mediaCacheDirectory, callbackAggregator] {
- WebCore::HTMLMediaElement::clearMediaCacheForOrigins(mediaCacheDirectory.string(), origins);
</del><ins>+ m_queue->dispatch([origins = WTFMove(origins), mediaCacheDirectory = m_mediaCacheDirectory.isolatedCopy(), callbackAggregator] {
+ WebCore::HTMLMediaElement::clearMediaCacheForOrigins(mediaCacheDirectory, origins);
</ins><span class="cx">
</span><span class="cx"> WTF::RunLoop::main().dispatch([callbackAggregator] {
</span><span class="cx"> callbackAggregator->removePendingCallback();
</span><span class="lines">@@ -887,9 +868,6 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (dataTypes.contains(WebsiteDataType::OfflineWebApplicationCache) && isPersistent()) {
</span><del>- StringCapture applicationCacheDirectory { m_applicationCacheDirectory };
- StringCapture applicationCacheFlatFileSubdirectoryName { m_applicationCacheFlatFileSubdirectoryName };
-
</del><span class="cx"> HashSet<RefPtr<WebCore::SecurityOrigin>> origins;
</span><span class="cx"> for (const auto& dataRecord : dataRecords) {
</span><span class="cx"> for (const auto& origin : dataRecord.origins)
</span><span class="lines">@@ -897,8 +875,8 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> callbackAggregator->addPendingCallback();
</span><del>- m_queue->dispatch([origins, applicationCacheDirectory, applicationCacheFlatFileSubdirectoryName, callbackAggregator] {
- auto storage = WebCore::ApplicationCacheStorage::create(applicationCacheDirectory.string(), applicationCacheFlatFileSubdirectoryName.string());
</del><ins>+ m_queue->dispatch([origins = WTFMove(origins), applicationCacheDirectory = m_applicationCacheDirectory.isolatedCopy(), applicationCacheFlatFileSubdirectoryName = m_applicationCacheFlatFileSubdirectoryName.isolatedCopy(), callbackAggregator] {
+ auto storage = WebCore::ApplicationCacheStorage::create(applicationCacheDirectory, applicationCacheFlatFileSubdirectoryName);
</ins><span class="cx">
</span><span class="cx"> for (const auto& origin : origins)
</span><span class="cx"> storage->deleteCacheForOrigin(*origin);
</span><span class="lines">@@ -910,8 +888,6 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (dataTypes.contains(WebsiteDataType::WebSQLDatabases) && isPersistent()) {
</span><del>- StringCapture webSQLDatabaseDirectory { m_webSQLDatabaseDirectory };
-
</del><span class="cx"> HashSet<RefPtr<WebCore::SecurityOrigin>> origins;
</span><span class="cx"> for (const auto& dataRecord : dataRecords) {
</span><span class="cx"> for (const auto& origin : dataRecord.origins)
</span><span class="lines">@@ -919,8 +895,8 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> callbackAggregator->addPendingCallback();
</span><del>- m_queue->dispatch([origins, callbackAggregator, webSQLDatabaseDirectory] {
- auto databaseTracker = WebCore::DatabaseTracker::trackerWithDatabasePath(webSQLDatabaseDirectory.string());
</del><ins>+ m_queue->dispatch([origins = WTFMove(origins), callbackAggregator, webSQLDatabaseDirectory = m_webSQLDatabaseDirectory.isolatedCopy()] {
+ auto databaseTracker = WebCore::DatabaseTracker::trackerWithDatabasePath(webSQLDatabaseDirectory);
</ins><span class="cx">
</span><span class="cx"> for (const auto& origin : origins)
</span><span class="cx"> databaseTracker->deleteOrigin(origin.get());
</span><span class="lines">@@ -945,7 +921,6 @@
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> if (dataTypes.contains(WebsiteDataType::MediaKeys) && isPersistent()) {
</span><del>- StringCapture mediaKeysStorageDirectory { m_mediaKeysStorageDirectory };
</del><span class="cx"> HashSet<RefPtr<WebCore::SecurityOrigin>> origins;
</span><span class="cx"> for (const auto& dataRecord : dataRecords) {
</span><span class="cx"> for (const auto& origin : dataRecord.origins)
</span><span class="lines">@@ -953,9 +928,9 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> callbackAggregator->addPendingCallback();
</span><del>- m_queue->dispatch([mediaKeysStorageDirectory, callbackAggregator, origins] {
</del><ins>+ m_queue->dispatch([mediaKeysStorageDirectory = m_mediaKeysStorageDirectory.isolatedCopy(), callbackAggregator, origins = WTFMove(origins)] {
</ins><span class="cx">
</span><del>- removeMediaKeys(mediaKeysStorageDirectory.string(), origins);
</del><ins>+ removeMediaKeys(mediaKeysStorageDirectory, origins);
</ins><span class="cx">
</span><span class="cx"> RunLoop::main().dispatch([callbackAggregator] {
</span><span class="cx"> callbackAggregator->removePendingCallback();
</span></span></pre>
</div>
</div>
</body>
</html>