Modified: trunk/Source/WebKit2/ChangeLog (218016 => 218017)
--- trunk/Source/WebKit2/ChangeLog 2017-06-09 20:55:11 UTC (rev 218016)
+++ trunk/Source/WebKit2/ChangeLog 2017-06-09 21:09:18 UTC (rev 218017)
@@ -1,3 +1,24 @@
+2017-06-09 Chris Dumez <[email protected]>
+
+ Use WTF::Function instead of std::function in StorageManager
+ https://bugs.webkit.org/show_bug.cgi?id=173177
+
+ Reviewed by Brady Eidson.
+
+ Use WTF::Function instead of std::function in StorageManager. This eliminates some
+ potential implicit copying of captured variables, which is important here because
+ we pass those lambdas to other threads.
+
+ * UIProcess/Storage/StorageManager.cpp:
+ (WebKit::StorageManager::getSessionStorageOrigins):
+ (WebKit::StorageManager::deleteSessionStorageOrigins):
+ (WebKit::StorageManager::deleteSessionStorageEntriesForOrigins):
+ (WebKit::StorageManager::getLocalStorageOrigins):
+ (WebKit::StorageManager::getLocalStorageOriginDetails):
+ (WebKit::StorageManager::deleteLocalStorageOriginsModifiedSince):
+ (WebKit::StorageManager::deleteLocalStorageEntriesForOrigins):
+ * UIProcess/Storage/StorageManager.h:
+
2017-06-09 Daniel Bates <[email protected]>
CSP: Apply img-src directive to favicon loads
Modified: trunk/Source/WebKit2/UIProcess/Storage/StorageManager.cpp (218016 => 218017)
--- trunk/Source/WebKit2/UIProcess/Storage/StorageManager.cpp 2017-06-09 20:55:11 UTC (rev 218016)
+++ trunk/Source/WebKit2/UIProcess/Storage/StorageManager.cpp 2017-06-09 21:09:18 UTC (rev 218017)
@@ -531,7 +531,7 @@
});
}
-void StorageManager::getSessionStorageOrigins(std::function<void(HashSet<WebCore::SecurityOriginData>&&)>&& completionHandler)
+void StorageManager::getSessionStorageOrigins(Function<void(HashSet<WebCore::SecurityOriginData>&&)>&& completionHandler)
{
m_queue->dispatch([this, protectedThis = makeRef(*this), completionHandler = WTFMove(completionHandler)]() mutable {
HashSet<SecurityOriginData> origins;
@@ -547,7 +547,7 @@
});
}
-void StorageManager::deleteSessionStorageOrigins(std::function<void()>&& completionHandler)
+void StorageManager::deleteSessionStorageOrigins(Function<void()>&& completionHandler)
{
m_queue->dispatch([this, protectedThis = makeRef(*this), completionHandler = WTFMove(completionHandler)]() mutable {
for (auto& sessionStorageNamespace : m_sessionStorageNamespaces.values())
@@ -557,7 +557,7 @@
});
}
-void StorageManager::deleteSessionStorageEntriesForOrigins(const Vector<WebCore::SecurityOriginData>& origins, std::function<void()>&& completionHandler)
+void StorageManager::deleteSessionStorageEntriesForOrigins(const Vector<WebCore::SecurityOriginData>& origins, Function<void()>&& completionHandler)
{
Vector<WebCore::SecurityOriginData> copiedOrigins;
copiedOrigins.reserveInitialCapacity(origins.size());
@@ -575,7 +575,7 @@
});
}
-void StorageManager::getLocalStorageOrigins(std::function<void(HashSet<WebCore::SecurityOriginData>&&)>&& completionHandler)
+void StorageManager::getLocalStorageOrigins(Function<void(HashSet<WebCore::SecurityOriginData>&&)>&& completionHandler)
{
m_queue->dispatch([this, protectedThis = makeRef(*this), completionHandler = WTFMove(completionHandler)]() mutable {
HashSet<SecurityOriginData> origins;
@@ -594,7 +594,7 @@
});
}
-void StorageManager::getLocalStorageOriginDetails(std::function<void (Vector<LocalStorageDatabaseTracker::OriginDetails>)>&& completionHandler)
+void StorageManager::getLocalStorageOriginDetails(Function<void (Vector<LocalStorageDatabaseTracker::OriginDetails>)>&& completionHandler)
{
m_queue->dispatch([this, protectedThis = makeRef(*this), completionHandler = WTFMove(completionHandler)]() mutable {
auto originDetails = m_localStorageDatabaseTracker->originDetails();
@@ -618,7 +618,7 @@
});
}
-void StorageManager::deleteLocalStorageOriginsModifiedSince(std::chrono::system_clock::time_point time, std::function<void()>&& completionHandler)
+void StorageManager::deleteLocalStorageOriginsModifiedSince(std::chrono::system_clock::time_point time, Function<void()>&& completionHandler)
{
m_queue->dispatch([this, protectedThis = makeRef(*this), time, completionHandler = WTFMove(completionHandler)]() mutable {
auto deletedOrigins = m_localStorageDatabaseTracker->deleteDatabasesModifiedSince(time);
@@ -635,7 +635,7 @@
});
}
-void StorageManager::deleteLocalStorageEntriesForOrigins(const Vector<WebCore::SecurityOriginData>& origins, std::function<void()>&& completionHandler)
+void StorageManager::deleteLocalStorageEntriesForOrigins(const Vector<WebCore::SecurityOriginData>& origins, Function<void()>&& completionHandler)
{
Vector<SecurityOriginData> copiedOrigins;
copiedOrigins.reserveInitialCapacity(origins.size());
Modified: trunk/Source/WebKit2/UIProcess/Storage/StorageManager.h (218016 => 218017)
--- trunk/Source/WebKit2/UIProcess/Storage/StorageManager.h 2017-06-09 20:55:11 UTC (rev 218016)
+++ trunk/Source/WebKit2/UIProcess/Storage/StorageManager.h 2017-06-09 21:09:18 UTC (rev 218017)
@@ -31,6 +31,7 @@
#include <WebCore/SecurityOriginHash.h>
#include <chrono>
#include <wtf/Forward.h>
+#include <wtf/Function.h>
#include <wtf/HashSet.h>
#include <wtf/ThreadSafeRefCounted.h>
#include <wtf/text/StringHash.h>
@@ -58,17 +59,17 @@
void processDidCloseConnection(WebProcessProxy&, IPC::Connection&);
void applicationWillTerminate();
- void getSessionStorageOrigins(std::function<void(HashSet<WebCore::SecurityOriginData>&&)>&& completionHandler);
- void deleteSessionStorageOrigins(std::function<void()>&& completionHandler);
- void deleteSessionStorageEntriesForOrigins(const Vector<WebCore::SecurityOriginData>&, std::function<void()>&& completionHandler);
+ void getSessionStorageOrigins(Function<void(HashSet<WebCore::SecurityOriginData>&&)>&& completionHandler);
+ void deleteSessionStorageOrigins(Function<void()>&& completionHandler);
+ void deleteSessionStorageEntriesForOrigins(const Vector<WebCore::SecurityOriginData>&, Function<void()>&& completionHandler);
- void getLocalStorageOrigins(std::function<void(HashSet<WebCore::SecurityOriginData>&&)>&& completionHandler);
+ void getLocalStorageOrigins(Function<void(HashSet<WebCore::SecurityOriginData>&&)>&& completionHandler);
void deleteLocalStorageEntriesForOrigin(WebCore::SecurityOriginData&&);
- void deleteLocalStorageOriginsModifiedSince(std::chrono::system_clock::time_point, std::function<void()>&& completionHandler);
- void deleteLocalStorageEntriesForOrigins(const Vector<WebCore::SecurityOriginData>&, std::function<void()>&& completionHandler);
+ void deleteLocalStorageOriginsModifiedSince(std::chrono::system_clock::time_point, Function<void()>&& completionHandler);
+ void deleteLocalStorageEntriesForOrigins(const Vector<WebCore::SecurityOriginData>&, Function<void()>&& completionHandler);
- void getLocalStorageOriginDetails(std::function<void(Vector<LocalStorageDatabaseTracker::OriginDetails>)>&& completionHandler);
+ void getLocalStorageOriginDetails(Function<void(Vector<LocalStorageDatabaseTracker::OriginDetails>)>&& completionHandler);
private:
explicit StorageManager(const String& localStorageDirectory);