Diff
Modified: trunk/Source/WebCore/ChangeLog (201601 => 201602)
--- trunk/Source/WebCore/ChangeLog 2016-06-02 17:50:25 UTC (rev 201601)
+++ trunk/Source/WebCore/ChangeLog 2016-06-02 17:59:56 UTC (rev 201602)
@@ -1,3 +1,39 @@
+2016-06-02 Chris Dumez <[email protected]>
+
+ Modernize various lambda captures
+ https://bugs.webkit.org/show_bug.cgi?id=158292
+
+ Reviewed by Brady Eidson.
+
+ Modernize various lambda captures, especially the ones unnecessarily
+ allocating objects on the heap and destroying them in the lambda.
+
+ * Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp:
+ (WebCore::ThreadableWebSocketChannelClientWrapper::didConnect):
+ (WebCore::ThreadableWebSocketChannelClientWrapper::didReceiveMessage):
+ (WebCore::ThreadableWebSocketChannelClientWrapper::didReceiveBinaryData):
+ (WebCore::ThreadableWebSocketChannelClientWrapper::didUpdateBufferedAmount):
+ (WebCore::ThreadableWebSocketChannelClientWrapper::didStartClosingHandshake):
+ (WebCore::ThreadableWebSocketChannelClientWrapper::didClose):
+ (WebCore::ThreadableWebSocketChannelClientWrapper::didReceiveMessageError):
+ (WebCore::ThreadableWebSocketChannelClientWrapper::processPendingTasks):
+ (WebCore::ThreadableWebSocketChannelClientWrapper::resume): Deleted.
+ * Modules/websockets/WorkerThreadableWebSocketChannel.cpp:
+ (WebCore::WorkerThreadableWebSocketChannel::Bridge::disconnect):
+ * bindings/js/JSCallbackData.h:
+ (WebCore::DeleteCallbackDataTask::DeleteCallbackDataTask):
+ * loader/WorkerThreadableLoader.cpp:
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::MainThreadBridge):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::destroy):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::didSendData):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::didReceiveResponse):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::didReceiveData):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::didFinishLoading):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::didFail):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::didFailAccessControlCheck):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::didFailRedirectCheck):
+ (WebCore::WorkerThreadableLoader::MainThreadBridge::cancel): Deleted.
+
2016-06-02 Adam Bergkvist <[email protected]>
WebRTC: Update RTCPeerConnection.addTrack() to create (or reuse) an RTCRtpTransceiver
Modified: trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp (201601 => 201602)
--- trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp 2016-06-02 17:50:25 UTC (rev 201601)
+++ trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp 2016-06-02 17:59:56 UTC (rev 201602)
@@ -155,11 +155,9 @@
void ThreadableWebSocketChannelClientWrapper::didConnect()
{
- ref();
- m_pendingTasks.append(std::make_unique<ScriptExecutionContext::Task>([this] (ScriptExecutionContext&) {
+ m_pendingTasks.append(std::make_unique<ScriptExecutionContext::Task>([this, protectedThis = Ref<ThreadableWebSocketChannelClientWrapper>(*this)] (ScriptExecutionContext&) {
if (m_client)
m_client->didConnect();
- deref();
}));
if (!m_suspended)
@@ -168,12 +166,9 @@
void ThreadableWebSocketChannelClientWrapper::didReceiveMessage(const String& message)
{
- ref();
- String messageCopy = message.isolatedCopy();
- m_pendingTasks.append(std::make_unique<ScriptExecutionContext::Task>([this, message] (ScriptExecutionContext&) {
+ m_pendingTasks.append(std::make_unique<ScriptExecutionContext::Task>([this, protectedThis = Ref<ThreadableWebSocketChannelClientWrapper>(*this), message = message.isolatedCopy()] (ScriptExecutionContext&) {
if (m_client)
m_client->didReceiveMessage(message);
- deref();
}));
if (!m_suspended)
@@ -182,13 +177,9 @@
void ThreadableWebSocketChannelClientWrapper::didReceiveBinaryData(Vector<uint8_t>&& binaryData)
{
- ref();
- Vector<uint8_t>* capturedData = new Vector<uint8_t>(WTFMove(binaryData));
- m_pendingTasks.append(std::make_unique<ScriptExecutionContext::Task>([this, capturedData] (ScriptExecutionContext&) {
+ m_pendingTasks.append(std::make_unique<ScriptExecutionContext::Task>([this, protectedThis = Ref<ThreadableWebSocketChannelClientWrapper>(*this), binaryData = WTFMove(binaryData)] (ScriptExecutionContext&) mutable {
if (m_client)
- m_client->didReceiveBinaryData(WTFMove(*capturedData));
- delete capturedData;
- deref();
+ m_client->didReceiveBinaryData(WTFMove(binaryData));
}));
if (!m_suspended)
@@ -197,11 +188,9 @@
void ThreadableWebSocketChannelClientWrapper::didUpdateBufferedAmount(unsigned long bufferedAmount)
{
- ref();
- m_pendingTasks.append(std::make_unique<ScriptExecutionContext::Task>([this, bufferedAmount] (ScriptExecutionContext&) {
+ m_pendingTasks.append(std::make_unique<ScriptExecutionContext::Task>([this, protectedThis = Ref<ThreadableWebSocketChannelClientWrapper>(*this), bufferedAmount] (ScriptExecutionContext&) {
if (m_client)
m_client->didUpdateBufferedAmount(bufferedAmount);
- deref();
}));
if (!m_suspended)
@@ -210,11 +199,9 @@
void ThreadableWebSocketChannelClientWrapper::didStartClosingHandshake()
{
- ref();
- m_pendingTasks.append(std::make_unique<ScriptExecutionContext::Task>([this] (ScriptExecutionContext&) {
+ m_pendingTasks.append(std::make_unique<ScriptExecutionContext::Task>([this, protectedThis = Ref<ThreadableWebSocketChannelClientWrapper>(*this)] (ScriptExecutionContext&) {
if (m_client)
m_client->didStartClosingHandshake();
- deref();
}));
if (!m_suspended)
@@ -223,13 +210,9 @@
void ThreadableWebSocketChannelClientWrapper::didClose(unsigned long unhandledBufferedAmount, WebSocketChannelClient::ClosingHandshakeCompletionStatus closingHandshakeCompletion, unsigned short code, const String& reason)
{
- ref();
- String reasonCopy = reason.isolatedCopy();
- m_pendingTasks.append(std::make_unique<ScriptExecutionContext::Task>(
- [this, unhandledBufferedAmount, closingHandshakeCompletion, code, reasonCopy] (ScriptExecutionContext&) {
+ m_pendingTasks.append(std::make_unique<ScriptExecutionContext::Task>([this, protectedThis = Ref<ThreadableWebSocketChannelClientWrapper>(*this), unhandledBufferedAmount, closingHandshakeCompletion, code, reason = reason.isolatedCopy()] (ScriptExecutionContext&) {
if (m_client)
- m_client->didClose(unhandledBufferedAmount, closingHandshakeCompletion, code, reasonCopy);
- deref();
+ m_client->didClose(unhandledBufferedAmount, closingHandshakeCompletion, code, reason);
}));
if (!m_suspended)
@@ -238,11 +221,9 @@
void ThreadableWebSocketChannelClientWrapper::didReceiveMessageError()
{
- ref();
- m_pendingTasks.append(std::make_unique<ScriptExecutionContext::Task>([this] (ScriptExecutionContext&) {
+ m_pendingTasks.append(std::make_unique<ScriptExecutionContext::Task>([this, protectedThis = Ref<ThreadableWebSocketChannelClientWrapper>(*this)] (ScriptExecutionContext&) {
if (m_client)
m_client->didReceiveMessageError();
- deref();
}));
if (!m_suspended)
@@ -267,11 +248,9 @@
if (!m_syncMethodDone) {
// When a synchronous operation is in progress (i.e. the execution stack contains
// WorkerThreadableWebSocketChannel::waitForMethodCompletion()), we cannot invoke callbacks in this run loop.
- ref();
- m_context->postTask([this] (ScriptExecutionContext& context) {
+ m_context->postTask([this, protectedThis = Ref<ThreadableWebSocketChannelClientWrapper>(*this)] (ScriptExecutionContext& context) {
ASSERT_UNUSED(context, context.isWorkerGlobalScope());
processPendingTasks();
- deref();
});
return;
}
Modified: trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp (201601 => 201602)
--- trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp 2016-06-02 17:50:25 UTC (rev 201601)
+++ trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp 2016-06-02 17:59:56 UTC (rev 201602)
@@ -544,10 +544,9 @@
{
clearClientWrapper();
if (m_peer) {
- m_loaderProxy.postTaskToLoader([peer = m_peer] (ScriptExecutionContext& context) {
+ m_loaderProxy.postTaskToLoader([peer = std::unique_ptr<Peer>(m_peer)] (ScriptExecutionContext& context) {
ASSERT(isMainThread());
ASSERT_UNUSED(context, context.isDocument());
- delete peer;
});
m_peer = nullptr;
}
Modified: trunk/Source/WebCore/bindings/js/JSCallbackData.h (201601 => 201602)
--- trunk/Source/WebCore/bindings/js/JSCallbackData.h 2016-06-02 17:50:25 UTC (rev 201601)
+++ trunk/Source/WebCore/bindings/js/JSCallbackData.h 2016-06-02 17:59:56 UTC (rev 201602)
@@ -116,8 +116,7 @@
public:
template <typename CallbackDataType>
explicit DeleteCallbackDataTask(CallbackDataType* data)
- : ScriptExecutionContext::Task(ScriptExecutionContext::Task::CleanupTask, [data] (ScriptExecutionContext&) {
- delete data;
+ : ScriptExecutionContext::Task(ScriptExecutionContext::Task::CleanupTask, [data = "" (ScriptExecutionContext&) {
})
{
}
Modified: trunk/Source/WebCore/loader/WorkerThreadableLoader.cpp (201601 => 201602)
--- trunk/Source/WebCore/loader/WorkerThreadableLoader.cpp 2016-06-02 17:50:25 UTC (rev 201601)
+++ trunk/Source/WebCore/loader/WorkerThreadableLoader.cpp 2016-06-02 17:59:56 UTC (rev 201602)
@@ -117,10 +117,9 @@
clearClientWrapper();
// "delete this" and m_mainThreadLoader::deref() on the worker object's thread.
- m_loaderProxy.postTaskToLoader([this] (ScriptExecutionContext& context) {
+ m_loaderProxy.postTaskToLoader([self = std::unique_ptr<WorkerThreadableLoader::MainThreadBridge>(this)] (ScriptExecutionContext& context) {
ASSERT(isMainThread());
ASSERT_UNUSED(context, context.isDocument());
- delete this;
});
}
@@ -154,81 +153,71 @@
void WorkerThreadableLoader::MainThreadBridge::didSendData(unsigned long long bytesSent, unsigned long long totalBytesToBeSent)
{
- RefPtr<ThreadableLoaderClientWrapper> workerClientWrapper = m_workerClientWrapper;
- m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper, bytesSent, totalBytesToBeSent] (ScriptExecutionContext& context) {
+ Ref<ThreadableLoaderClientWrapper> protectedWorkerClientWrapper = *m_workerClientWrapper;
+ m_loaderProxy.postTaskForModeToWorkerGlobalScope([protectedWorkerClientWrapper = WTFMove(protectedWorkerClientWrapper), bytesSent, totalBytesToBeSent] (ScriptExecutionContext& context) mutable {
ASSERT_UNUSED(context, context.isWorkerGlobalScope());
- workerClientWrapper->didSendData(bytesSent, totalBytesToBeSent);
+ protectedWorkerClientWrapper->didSendData(bytesSent, totalBytesToBeSent);
}, m_taskMode);
}
void WorkerThreadableLoader::MainThreadBridge::didReceiveResponse(unsigned long identifier, const ResourceResponse& response)
{
- RefPtr<ThreadableLoaderClientWrapper> workerClientWrapper = m_workerClientWrapper;
- auto* responseData = response.copyData().release();
- if (!m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper, identifier, responseData] (ScriptExecutionContext& context) {
+ Ref<ThreadableLoaderClientWrapper> protectedWorkerClientWrapper = *m_workerClientWrapper;
+ m_loaderProxy.postTaskForModeToWorkerGlobalScope([protectedWorkerClientWrapper = WTFMove(protectedWorkerClientWrapper), identifier, responseData = response.copyData()] (ScriptExecutionContext& context) mutable {
ASSERT_UNUSED(context, context.isWorkerGlobalScope());
- auto response(ResourceResponse::adopt(std::unique_ptr<CrossThreadResourceResponseData>(responseData)));
- workerClientWrapper->didReceiveResponse(identifier, *response);
- }, m_taskMode))
- delete responseData;
+ auto response(ResourceResponse::adopt(WTFMove(responseData)));
+ protectedWorkerClientWrapper->didReceiveResponse(identifier, *response);
+ }, m_taskMode);
}
void WorkerThreadableLoader::MainThreadBridge::didReceiveData(const char* data, int dataLength)
{
- RefPtr<ThreadableLoaderClientWrapper> workerClientWrapper = m_workerClientWrapper;
- Vector<char>* vectorPtr = new Vector<char>(dataLength);
- memcpy(vectorPtr->data(), data, dataLength);
- if (!m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper, vectorPtr] (ScriptExecutionContext& context) {
+ Ref<ThreadableLoaderClientWrapper> protectedWorkerClientWrapper = *m_workerClientWrapper;
+ Vector<char> vector(dataLength);
+ memcpy(vector.data(), data, dataLength);
+ m_loaderProxy.postTaskForModeToWorkerGlobalScope([protectedWorkerClientWrapper = WTFMove(protectedWorkerClientWrapper), vector = WTFMove(vector)] (ScriptExecutionContext& context) mutable {
ASSERT_UNUSED(context, context.isWorkerGlobalScope());
- workerClientWrapper->didReceiveData(vectorPtr->data(), vectorPtr->size());
- delete vectorPtr;
- }, m_taskMode))
- delete vectorPtr;
+ protectedWorkerClientWrapper->didReceiveData(vector.data(), vector.size());
+ }, m_taskMode);
}
void WorkerThreadableLoader::MainThreadBridge::didFinishLoading(unsigned long identifier, double finishTime)
{
m_loadingFinished = true;
- RefPtr<ThreadableLoaderClientWrapper> workerClientWrapper = m_workerClientWrapper;
- m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper, identifier, finishTime] (ScriptExecutionContext& context) {
+ Ref<ThreadableLoaderClientWrapper> protectedWorkerClientWrapper = *m_workerClientWrapper;
+ m_loaderProxy.postTaskForModeToWorkerGlobalScope([protectedWorkerClientWrapper = WTFMove(protectedWorkerClientWrapper), identifier, finishTime] (ScriptExecutionContext& context) mutable {
ASSERT_UNUSED(context, context.isWorkerGlobalScope());
- workerClientWrapper->didFinishLoading(identifier, finishTime);
+ protectedWorkerClientWrapper->didFinishLoading(identifier, finishTime);
}, m_taskMode);
}
void WorkerThreadableLoader::MainThreadBridge::didFail(const ResourceError& error)
{
m_loadingFinished = true;
- RefPtr<ThreadableLoaderClientWrapper> workerClientWrapper = m_workerClientWrapper;
- ResourceError* capturedError = new ResourceError(error.copy());
- if (!m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper, capturedError] (ScriptExecutionContext& context) {
+ Ref<ThreadableLoaderClientWrapper> protectedWorkerClientWrapper = *m_workerClientWrapper;
+ m_loaderProxy.postTaskForModeToWorkerGlobalScope([protectedWorkerClientWrapper = WTFMove(protectedWorkerClientWrapper), error = error.copy()] (ScriptExecutionContext& context) mutable {
ASSERT_UNUSED(context, context.isWorkerGlobalScope());
- workerClientWrapper->didFail(*capturedError);
- delete capturedError;
- }, m_taskMode))
- delete capturedError;
+ protectedWorkerClientWrapper->didFail(error);
+ }, m_taskMode);
}
void WorkerThreadableLoader::MainThreadBridge::didFailAccessControlCheck(const ResourceError& error)
{
m_loadingFinished = true;
- RefPtr<ThreadableLoaderClientWrapper> workerClientWrapper = m_workerClientWrapper;
- ResourceError* capturedError = new ResourceError(error.copy());
- if (!m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper, capturedError] (ScriptExecutionContext& context) {
+ Ref<ThreadableLoaderClientWrapper> protectedWorkerClientWrapper = *m_workerClientWrapper;
+ m_loaderProxy.postTaskForModeToWorkerGlobalScope([protectedWorkerClientWrapper = WTFMove(protectedWorkerClientWrapper), error = error.copy()] (ScriptExecutionContext& context) mutable {
ASSERT_UNUSED(context, context.isWorkerGlobalScope());
- workerClientWrapper->didFailAccessControlCheck(*capturedError);
- delete capturedError;
- }, m_taskMode))
- delete capturedError;
+ protectedWorkerClientWrapper->didFailAccessControlCheck(error);
+ }, m_taskMode);
}
void WorkerThreadableLoader::MainThreadBridge::didFailRedirectCheck()
{
m_loadingFinished = true;
- RefPtr<ThreadableLoaderClientWrapper> workerClientWrapper = m_workerClientWrapper;
- m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper] (ScriptExecutionContext& context) {
+ Ref<ThreadableLoaderClientWrapper> protectedWorkerClientWrapper = *m_workerClientWrapper;
+ m_loaderProxy.postTaskForModeToWorkerGlobalScope([protectedWorkerClientWrapper = WTFMove(protectedWorkerClientWrapper)] (ScriptExecutionContext& context) mutable {
ASSERT_UNUSED(context, context.isWorkerGlobalScope());
- workerClientWrapper->didFailRedirectCheck();
+ protectedWorkerClientWrapper->didFailRedirectCheck();
}, m_taskMode);
}
Modified: trunk/Source/WebKit2/ChangeLog (201601 => 201602)
--- trunk/Source/WebKit2/ChangeLog 2016-06-02 17:50:25 UTC (rev 201601)
+++ trunk/Source/WebKit2/ChangeLog 2016-06-02 17:59:56 UTC (rev 201602)
@@ -1,5 +1,26 @@
2016-06-02 Chris Dumez <[email protected]>
+ Modernize various lambda captures
+ https://bugs.webkit.org/show_bug.cgi?id=158292
+
+ Reviewed by Brady Eidson.
+
+ Modernize various lambda captures, especially the ones unnecessarily
+ allocating objects on the heap and destroying them in the lambda.
+
+ * NetworkProcess/NetworkProcess.cpp:
+ (WebKit::fetchDiskCacheEntries):
+ (WebKit::clearDiskCacheEntries):
+ (WebKit::NetworkProcess::fetchWebsiteData): Deleted.
+ * NetworkProcess/cache/NetworkCache.cpp:
+ (WebKit::NetworkCache::Cache::traverse):
+ * NetworkProcess/cache/NetworkCache.h:
+ * NetworkProcess/cache/NetworkCacheStorage.cpp:
+ (WebKit::NetworkCache::Storage::TraverseOperation::TraverseOperation):
+ * NetworkProcess/cache/NetworkCacheStorage.h:
+
+2016-06-02 Chris Dumez <[email protected]>
+
Speculative revalidated request returns 200 instead of 304
https://bugs.webkit.org/show_bug.cgi?id=158256
Modified: trunk/Source/WebKit2/NetworkProcess/NetworkProcess.cpp (201601 => 201602)
--- trunk/Source/WebKit2/NetworkProcess/NetworkProcess.cpp 2016-06-02 17:50:25 UTC (rev 201601)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkProcess.cpp 2016-06-02 17:59:56 UTC (rev 201602)
@@ -308,32 +308,26 @@
handler();
}
-static void fetchDiskCacheEntries(SessionID sessionID, OptionSet<WebsiteDataFetchOption> fetchOptions, std::function<void (Vector<WebsiteData::Entry>)> completionHandler)
+static void fetchDiskCacheEntries(SessionID sessionID, OptionSet<WebsiteDataFetchOption> fetchOptions, NoncopyableFunction<void (Vector<WebsiteData::Entry>)>&& completionHandler)
{
#if ENABLE(NETWORK_CACHE)
if (NetworkCache::singleton().isEnabled()) {
- auto* originsAndSizes = new HashMap<RefPtr<SecurityOrigin>, uint64_t>();
-
- NetworkCache::singleton().traverse([fetchOptions, completionHandler, originsAndSizes](auto* traversalEntry) {
+ HashMap<RefPtr<SecurityOrigin>, uint64_t> originsAndSizes;
+ NetworkCache::singleton().traverse([fetchOptions, completionHandler = WTFMove(completionHandler), originsAndSizes = WTFMove(originsAndSizes)](auto* traversalEntry) mutable {
if (!traversalEntry) {
Vector<WebsiteData::Entry> entries;
- for (auto& originAndSize : *originsAndSizes) {
- WebsiteData::Entry entry { originAndSize.key, WebsiteDataType::DiskCache, originAndSize.value };
+ for (auto& originAndSize : originsAndSizes)
+ entries.append(WebsiteData::Entry { originAndSize.key, WebsiteDataType::DiskCache, originAndSize.value });
- entries.append(WTFMove(entry));
- }
-
- delete originsAndSizes;
-
- RunLoop::main().dispatch([completionHandler, entries = WTFMove(entries)] {
+ RunLoop::main().dispatch([completionHandler = WTFMove(completionHandler), entries = WTFMove(entries)] {
completionHandler(entries);
});
return;
}
- auto result = originsAndSizes->add(SecurityOrigin::create(traversalEntry->entry.response().url()), 0);
+ auto result = originsAndSizes.add(SecurityOrigin::create(traversalEntry->entry.response().url()), 0);
if (fetchOptions.contains(WebsiteDataFetchOption::ComputeSizes))
result.iterator->value += traversalEntry->entry.sourceStorageRecord().header.size() + traversalEntry->recordInfo.bodySize;
@@ -350,7 +344,7 @@
entries.append(WebsiteData::Entry { WTFMove(origin), WebsiteDataType::DiskCache, 0 });
#endif
- RunLoop::main().dispatch([completionHandler, entries = WTFMove(entries)] {
+ RunLoop::main().dispatch([completionHandler = WTFMove(completionHandler), entries = WTFMove(entries)] {
completionHandler(entries);
});
}
@@ -358,7 +352,7 @@
void NetworkProcess::fetchWebsiteData(SessionID sessionID, OptionSet<WebsiteDataType> websiteDataTypes, OptionSet<WebsiteDataFetchOption> fetchOptions, uint64_t callbackID)
{
struct CallbackAggregator final : public RefCounted<CallbackAggregator> {
- explicit CallbackAggregator(std::function<void (WebsiteData)> completionHandler)
+ explicit CallbackAggregator(NoncopyableFunction<void (WebsiteData)>&& completionHandler)
: m_completionHandler(WTFMove(completionHandler))
{
}
@@ -372,11 +366,11 @@
});
}
- std::function<void (WebsiteData)> m_completionHandler;
+ NoncopyableFunction<void (WebsiteData)> m_completionHandler;
WebsiteData m_websiteData;
};
- RefPtr<CallbackAggregator> callbackAggregator = adoptRef(new CallbackAggregator([this, callbackID] (WebsiteData websiteData) {
+ auto callbackAggregator = adoptRef(*new CallbackAggregator([this, callbackID] (WebsiteData websiteData) {
parentProcessConnection()->send(Messages::NetworkProcessProxy::DidFetchWebsiteData(callbackID, websiteData), 0);
}));
@@ -386,7 +380,7 @@
}
if (websiteDataTypes.contains(WebsiteDataType::DiskCache)) {
- fetchDiskCacheEntries(sessionID, fetchOptions, [callbackAggregator](auto entries) {
+ fetchDiskCacheEntries(sessionID, fetchOptions, [callbackAggregator = WTFMove(callbackAggregator)](auto entries) mutable {
callbackAggregator->m_websiteData.entries.appendVector(entries);
});
}
@@ -418,31 +412,25 @@
completionHandler();
}
-static void clearDiskCacheEntries(const Vector<SecurityOriginData>& origins, std::function<void ()>&& completionHandler)
+static void clearDiskCacheEntries(const Vector<SecurityOriginData>& origins, NoncopyableFunction<void ()>&& completionHandler)
{
#if ENABLE(NETWORK_CACHE)
if (NetworkCache::singleton().isEnabled()) {
- auto* originsToDelete = new HashSet<RefPtr<SecurityOrigin>>();
-
+ HashSet<RefPtr<SecurityOrigin>> originsToDelete;
for (auto& origin : origins)
- originsToDelete->add(origin.securityOrigin());
+ originsToDelete.add(origin.securityOrigin());
- auto* cacheKeysToDelete = new Vector<NetworkCache::Key>;
-
- NetworkCache::singleton().traverse([completionHandler = WTFMove(completionHandler), originsToDelete, cacheKeysToDelete](auto* traversalEntry) mutable {
+ Vector<NetworkCache::Key> cacheKeysToDelete;
+ NetworkCache::singleton().traverse([completionHandler = WTFMove(completionHandler), originsToDelete = WTFMove(originsToDelete), cacheKeysToDelete = WTFMove(cacheKeysToDelete)](auto* traversalEntry) mutable {
if (traversalEntry) {
- if (originsToDelete->contains(SecurityOrigin::create(traversalEntry->entry.response().url())))
- cacheKeysToDelete->append(traversalEntry->entry.key());
+ if (originsToDelete.contains(SecurityOrigin::create(traversalEntry->entry.response().url())))
+ cacheKeysToDelete.append(traversalEntry->entry.key());
return;
}
- delete originsToDelete;
-
- for (auto& key : *cacheKeysToDelete)
+ for (auto& key : cacheKeysToDelete)
NetworkCache::singleton().remove(key);
- delete cacheKeysToDelete;
-
RunLoop::main().dispatch(WTFMove(completionHandler));
return;
});
Modified: trunk/Source/WebKit2/NetworkProcess/NetworkProcess.h (201601 => 201602)
--- trunk/Source/WebKit2/NetworkProcess/NetworkProcess.h 2016-06-02 17:50:25 UTC (rev 201601)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkProcess.h 2016-06-02 17:59:56 UTC (rev 201602)
@@ -36,6 +36,7 @@
#include <memory>
#include <wtf/Forward.h>
#include <wtf/NeverDestroyed.h>
+#include <wtf/NoncopyableFunction.h>
#include <wtf/RetainPtr.h>
#if PLATFORM(IOS)
Modified: trunk/Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp (201601 => 201602)
--- trunk/Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp 2016-06-02 17:50:25 UTC (rev 201601)
+++ trunk/Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp 2016-06-02 17:59:56 UTC (rev 201602)
@@ -521,7 +521,7 @@
remove(makeCacheKey(request));
}
-void Cache::traverse(std::function<void (const TraversalEntry*)>&& traverseHandler)
+void Cache::traverse(NoncopyableFunction<void (const TraversalEntry*)>&& traverseHandler)
{
ASSERT(isEnabled());
Modified: trunk/Source/WebKit2/NetworkProcess/cache/NetworkCache.h (201601 => 201602)
--- trunk/Source/WebKit2/NetworkProcess/cache/NetworkCache.h 2016-06-02 17:50:25 UTC (rev 201601)
+++ trunk/Source/WebKit2/NetworkProcess/cache/NetworkCache.h 2016-06-02 17:59:56 UTC (rev 201602)
@@ -32,6 +32,7 @@
#include "NetworkCacheStorage.h"
#include "ShareableResource.h"
#include <WebCore/ResourceResponse.h>
+#include <wtf/NoncopyableFunction.h>
#include <wtf/text/WTFString.h>
namespace WebCore {
@@ -113,7 +114,7 @@
const Entry& entry;
const Storage::RecordInfo& recordInfo;
};
- void traverse(std::function<void (const TraversalEntry*)>&&);
+ void traverse(NoncopyableFunction<void (const TraversalEntry*)>&&);
void remove(const Key&);
void remove(const WebCore::ResourceRequest&);
Modified: trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp (201601 => 201602)
--- trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp 2016-06-02 17:50:25 UTC (rev 201601)
+++ trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp 2016-06-02 17:59:56 UTC (rev 201602)
@@ -113,10 +113,10 @@
struct Storage::TraverseOperation {
WTF_MAKE_FAST_ALLOCATED;
public:
- TraverseOperation(const String& type, TraverseFlags flags, const TraverseHandler& handler)
+ TraverseOperation(const String& type, TraverseFlags flags, TraverseHandler&& handler)
: type(type)
, flags(flags)
- , handler(handler)
+ , handler(WTFMove(handler))
{ }
const String type;
Modified: trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.h (201601 => 201602)
--- trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.h 2016-06-02 17:50:25 UTC (rev 201601)
+++ trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.h 2016-06-02 17:59:56 UTC (rev 201602)
@@ -35,6 +35,7 @@
#include <wtf/BloomFilter.h>
#include <wtf/Deque.h>
#include <wtf/HashSet.h>
+#include <wtf/NoncopyableFunction.h>
#include <wtf/Optional.h>
#include <wtf/WorkQueue.h>
#include <wtf/text/WTFString.h>
@@ -78,7 +79,7 @@
ShareCount = 1 << 1,
};
typedef unsigned TraverseFlags;
- typedef std::function<void (const Record*, const RecordInfo&)> TraverseHandler;
+ typedef NoncopyableFunction<void (const Record*, const RecordInfo&)> TraverseHandler;
// Null record signals end.
void traverse(const String& type, TraverseFlags, TraverseHandler&&);