Changeset 201602 in webkit
- Timestamp:
- Jun 2, 2016, 10:59:56 AM (10 years ago)
- Location:
- trunk/Source
- Files:
-
- 12 edited
-
WebCore/ChangeLog (modified) (1 diff)
-
WebCore/Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp (modified) (8 diffs)
-
WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp (modified) (1 diff)
-
WebCore/bindings/js/JSCallbackData.h (modified) (1 diff)
-
WebCore/loader/WorkerThreadableLoader.cpp (modified) (7 diffs)
-
WebKit2/ChangeLog (modified) (1 diff)
-
WebKit2/NetworkProcess/NetworkProcess.cpp (modified) (7 diffs)
-
WebKit2/NetworkProcess/NetworkProcess.h (modified) (1 diff)
-
WebKit2/NetworkProcess/cache/NetworkCache.cpp (modified) (1 diff)
-
WebKit2/NetworkProcess/cache/NetworkCache.h (modified) (2 diffs)
-
WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp (modified) (1 diff)
-
WebKit2/NetworkProcess/cache/NetworkCacheStorage.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r201601 r201602 1 2016-06-02 Chris Dumez <cdumez@apple.com> 2 3 Modernize various lambda captures 4 https://bugs.webkit.org/show_bug.cgi?id=158292 5 6 Reviewed by Brady Eidson. 7 8 Modernize various lambda captures, especially the ones unnecessarily 9 allocating objects on the heap and destroying them in the lambda. 10 11 * Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp: 12 (WebCore::ThreadableWebSocketChannelClientWrapper::didConnect): 13 (WebCore::ThreadableWebSocketChannelClientWrapper::didReceiveMessage): 14 (WebCore::ThreadableWebSocketChannelClientWrapper::didReceiveBinaryData): 15 (WebCore::ThreadableWebSocketChannelClientWrapper::didUpdateBufferedAmount): 16 (WebCore::ThreadableWebSocketChannelClientWrapper::didStartClosingHandshake): 17 (WebCore::ThreadableWebSocketChannelClientWrapper::didClose): 18 (WebCore::ThreadableWebSocketChannelClientWrapper::didReceiveMessageError): 19 (WebCore::ThreadableWebSocketChannelClientWrapper::processPendingTasks): 20 (WebCore::ThreadableWebSocketChannelClientWrapper::resume): Deleted. 21 * Modules/websockets/WorkerThreadableWebSocketChannel.cpp: 22 (WebCore::WorkerThreadableWebSocketChannel::Bridge::disconnect): 23 * bindings/js/JSCallbackData.h: 24 (WebCore::DeleteCallbackDataTask::DeleteCallbackDataTask): 25 * loader/WorkerThreadableLoader.cpp: 26 (WebCore::WorkerThreadableLoader::MainThreadBridge::MainThreadBridge): 27 (WebCore::WorkerThreadableLoader::MainThreadBridge::destroy): 28 (WebCore::WorkerThreadableLoader::MainThreadBridge::didSendData): 29 (WebCore::WorkerThreadableLoader::MainThreadBridge::didReceiveResponse): 30 (WebCore::WorkerThreadableLoader::MainThreadBridge::didReceiveData): 31 (WebCore::WorkerThreadableLoader::MainThreadBridge::didFinishLoading): 32 (WebCore::WorkerThreadableLoader::MainThreadBridge::didFail): 33 (WebCore::WorkerThreadableLoader::MainThreadBridge::didFailAccessControlCheck): 34 (WebCore::WorkerThreadableLoader::MainThreadBridge::didFailRedirectCheck): 35 (WebCore::WorkerThreadableLoader::MainThreadBridge::cancel): Deleted. 36 1 37 2016-06-02 Adam Bergkvist <adam.bergkvist@ericsson.com> 2 38 -
trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp
r198869 r201602 156 156 void ThreadableWebSocketChannelClientWrapper::didConnect() 157 157 { 158 ref(); 159 m_pendingTasks.append(std::make_unique<ScriptExecutionContext::Task>([this] (ScriptExecutionContext&) { 158 m_pendingTasks.append(std::make_unique<ScriptExecutionContext::Task>([this, protectedThis = Ref<ThreadableWebSocketChannelClientWrapper>(*this)] (ScriptExecutionContext&) { 160 159 if (m_client) 161 160 m_client->didConnect(); 162 deref();163 161 })); 164 162 … … 169 167 void ThreadableWebSocketChannelClientWrapper::didReceiveMessage(const String& message) 170 168 { 171 ref(); 172 String messageCopy = message.isolatedCopy(); 173 m_pendingTasks.append(std::make_unique<ScriptExecutionContext::Task>([this, message] (ScriptExecutionContext&) { 169 m_pendingTasks.append(std::make_unique<ScriptExecutionContext::Task>([this, protectedThis = Ref<ThreadableWebSocketChannelClientWrapper>(*this), message = message.isolatedCopy()] (ScriptExecutionContext&) { 174 170 if (m_client) 175 171 m_client->didReceiveMessage(message); 176 deref();177 172 })); 178 173 … … 183 178 void ThreadableWebSocketChannelClientWrapper::didReceiveBinaryData(Vector<uint8_t>&& binaryData) 184 179 { 185 ref(); 186 Vector<uint8_t>* capturedData = new Vector<uint8_t>(WTFMove(binaryData)); 187 m_pendingTasks.append(std::make_unique<ScriptExecutionContext::Task>([this, capturedData] (ScriptExecutionContext&) { 188 if (m_client) 189 m_client->didReceiveBinaryData(WTFMove(*capturedData)); 190 delete capturedData; 191 deref(); 180 m_pendingTasks.append(std::make_unique<ScriptExecutionContext::Task>([this, protectedThis = Ref<ThreadableWebSocketChannelClientWrapper>(*this), binaryData = WTFMove(binaryData)] (ScriptExecutionContext&) mutable { 181 if (m_client) 182 m_client->didReceiveBinaryData(WTFMove(binaryData)); 192 183 })); 193 184 … … 198 189 void ThreadableWebSocketChannelClientWrapper::didUpdateBufferedAmount(unsigned long bufferedAmount) 199 190 { 200 ref(); 201 m_pendingTasks.append(std::make_unique<ScriptExecutionContext::Task>([this, bufferedAmount] (ScriptExecutionContext&) { 191 m_pendingTasks.append(std::make_unique<ScriptExecutionContext::Task>([this, protectedThis = Ref<ThreadableWebSocketChannelClientWrapper>(*this), bufferedAmount] (ScriptExecutionContext&) { 202 192 if (m_client) 203 193 m_client->didUpdateBufferedAmount(bufferedAmount); 204 deref();205 194 })); 206 195 … … 211 200 void ThreadableWebSocketChannelClientWrapper::didStartClosingHandshake() 212 201 { 213 ref(); 214 m_pendingTasks.append(std::make_unique<ScriptExecutionContext::Task>([this] (ScriptExecutionContext&) { 202 m_pendingTasks.append(std::make_unique<ScriptExecutionContext::Task>([this, protectedThis = Ref<ThreadableWebSocketChannelClientWrapper>(*this)] (ScriptExecutionContext&) { 215 203 if (m_client) 216 204 m_client->didStartClosingHandshake(); 217 deref();218 205 })); 219 206 … … 224 211 void ThreadableWebSocketChannelClientWrapper::didClose(unsigned long unhandledBufferedAmount, WebSocketChannelClient::ClosingHandshakeCompletionStatus closingHandshakeCompletion, unsigned short code, const String& reason) 225 212 { 226 ref(); 227 String reasonCopy = reason.isolatedCopy(); 228 m_pendingTasks.append(std::make_unique<ScriptExecutionContext::Task>( 229 [this, unhandledBufferedAmount, closingHandshakeCompletion, code, reasonCopy] (ScriptExecutionContext&) { 213 m_pendingTasks.append(std::make_unique<ScriptExecutionContext::Task>([this, protectedThis = Ref<ThreadableWebSocketChannelClientWrapper>(*this), unhandledBufferedAmount, closingHandshakeCompletion, code, reason = reason.isolatedCopy()] (ScriptExecutionContext&) { 230 214 if (m_client) 231 m_client->didClose(unhandledBufferedAmount, closingHandshakeCompletion, code, reasonCopy); 232 deref(); 215 m_client->didClose(unhandledBufferedAmount, closingHandshakeCompletion, code, reason); 233 216 })); 234 217 … … 239 222 void ThreadableWebSocketChannelClientWrapper::didReceiveMessageError() 240 223 { 241 ref(); 242 m_pendingTasks.append(std::make_unique<ScriptExecutionContext::Task>([this] (ScriptExecutionContext&) { 224 m_pendingTasks.append(std::make_unique<ScriptExecutionContext::Task>([this, protectedThis = Ref<ThreadableWebSocketChannelClientWrapper>(*this)] (ScriptExecutionContext&) { 243 225 if (m_client) 244 226 m_client->didReceiveMessageError(); 245 deref();246 227 })); 247 228 … … 268 249 // When a synchronous operation is in progress (i.e. the execution stack contains 269 250 // WorkerThreadableWebSocketChannel::waitForMethodCompletion()), we cannot invoke callbacks in this run loop. 270 ref(); 271 m_context->postTask([this] (ScriptExecutionContext& context) { 251 m_context->postTask([this, protectedThis = Ref<ThreadableWebSocketChannelClientWrapper>(*this)] (ScriptExecutionContext& context) { 272 252 ASSERT_UNUSED(context, context.isWorkerGlobalScope()); 273 253 processPendingTasks(); 274 deref();275 254 }); 276 255 return; -
trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp
r201543 r201602 545 545 clearClientWrapper(); 546 546 if (m_peer) { 547 m_loaderProxy.postTaskToLoader([peer = m_peer] (ScriptExecutionContext& context) {547 m_loaderProxy.postTaskToLoader([peer = std::unique_ptr<Peer>(m_peer)] (ScriptExecutionContext& context) { 548 548 ASSERT(isMainThread()); 549 549 ASSERT_UNUSED(context, context.isDocument()); 550 delete peer;551 550 }); 552 551 m_peer = nullptr; -
trunk/Source/WebCore/bindings/js/JSCallbackData.h
r190113 r201602 117 117 template <typename CallbackDataType> 118 118 explicit DeleteCallbackDataTask(CallbackDataType* data) 119 : ScriptExecutionContext::Task(ScriptExecutionContext::Task::CleanupTask, [data] (ScriptExecutionContext&) { 120 delete data; 119 : ScriptExecutionContext::Task(ScriptExecutionContext::Task::CleanupTask, [data = std::unique_ptr<CallbackDataType>(data)] (ScriptExecutionContext&) { 121 120 }) 122 121 { -
trunk/Source/WebCore/loader/WorkerThreadableLoader.cpp
r201594 r201602 118 118 119 119 // "delete this" and m_mainThreadLoader::deref() on the worker object's thread. 120 m_loaderProxy.postTaskToLoader([ this] (ScriptExecutionContext& context) {120 m_loaderProxy.postTaskToLoader([self = std::unique_ptr<WorkerThreadableLoader::MainThreadBridge>(this)] (ScriptExecutionContext& context) { 121 121 ASSERT(isMainThread()); 122 122 ASSERT_UNUSED(context, context.isDocument()); 123 delete this;124 123 }); 125 124 } … … 155 154 void WorkerThreadableLoader::MainThreadBridge::didSendData(unsigned long long bytesSent, unsigned long long totalBytesToBeSent) 156 155 { 157 Ref Ptr<ThreadableLoaderClientWrapper> workerClientWrapper =m_workerClientWrapper;158 m_loaderProxy.postTaskForModeToWorkerGlobalScope([ workerClientWrapper, bytesSent, totalBytesToBeSent] (ScriptExecutionContext& context){159 ASSERT_UNUSED(context, context.isWorkerGlobalScope()); 160 workerClientWrapper->didSendData(bytesSent, totalBytesToBeSent);156 Ref<ThreadableLoaderClientWrapper> protectedWorkerClientWrapper = *m_workerClientWrapper; 157 m_loaderProxy.postTaskForModeToWorkerGlobalScope([protectedWorkerClientWrapper = WTFMove(protectedWorkerClientWrapper), bytesSent, totalBytesToBeSent] (ScriptExecutionContext& context) mutable { 158 ASSERT_UNUSED(context, context.isWorkerGlobalScope()); 159 protectedWorkerClientWrapper->didSendData(bytesSent, totalBytesToBeSent); 161 160 }, m_taskMode); 162 161 } … … 164 163 void WorkerThreadableLoader::MainThreadBridge::didReceiveResponse(unsigned long identifier, const ResourceResponse& response) 165 164 { 166 RefPtr<ThreadableLoaderClientWrapper> workerClientWrapper = m_workerClientWrapper; 167 auto* responseData = response.copyData().release(); 168 if (!m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper, identifier, responseData] (ScriptExecutionContext& context) { 169 ASSERT_UNUSED(context, context.isWorkerGlobalScope()); 170 auto response(ResourceResponse::adopt(std::unique_ptr<CrossThreadResourceResponseData>(responseData))); 171 workerClientWrapper->didReceiveResponse(identifier, *response); 172 }, m_taskMode)) 173 delete responseData; 165 Ref<ThreadableLoaderClientWrapper> protectedWorkerClientWrapper = *m_workerClientWrapper; 166 m_loaderProxy.postTaskForModeToWorkerGlobalScope([protectedWorkerClientWrapper = WTFMove(protectedWorkerClientWrapper), identifier, responseData = response.copyData()] (ScriptExecutionContext& context) mutable { 167 ASSERT_UNUSED(context, context.isWorkerGlobalScope()); 168 auto response(ResourceResponse::adopt(WTFMove(responseData))); 169 protectedWorkerClientWrapper->didReceiveResponse(identifier, *response); 170 }, m_taskMode); 174 171 } 175 172 176 173 void WorkerThreadableLoader::MainThreadBridge::didReceiveData(const char* data, int dataLength) 177 174 { 178 RefPtr<ThreadableLoaderClientWrapper> workerClientWrapper = m_workerClientWrapper; 179 Vector<char>* vectorPtr = new Vector<char>(dataLength); 180 memcpy(vectorPtr->data(), data, dataLength); 181 if (!m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper, vectorPtr] (ScriptExecutionContext& context) { 182 ASSERT_UNUSED(context, context.isWorkerGlobalScope()); 183 workerClientWrapper->didReceiveData(vectorPtr->data(), vectorPtr->size()); 184 delete vectorPtr; 185 }, m_taskMode)) 186 delete vectorPtr; 175 Ref<ThreadableLoaderClientWrapper> protectedWorkerClientWrapper = *m_workerClientWrapper; 176 Vector<char> vector(dataLength); 177 memcpy(vector.data(), data, dataLength); 178 m_loaderProxy.postTaskForModeToWorkerGlobalScope([protectedWorkerClientWrapper = WTFMove(protectedWorkerClientWrapper), vector = WTFMove(vector)] (ScriptExecutionContext& context) mutable { 179 ASSERT_UNUSED(context, context.isWorkerGlobalScope()); 180 protectedWorkerClientWrapper->didReceiveData(vector.data(), vector.size()); 181 }, m_taskMode); 187 182 } 188 183 … … 190 185 { 191 186 m_loadingFinished = true; 192 Ref Ptr<ThreadableLoaderClientWrapper> workerClientWrapper =m_workerClientWrapper;193 m_loaderProxy.postTaskForModeToWorkerGlobalScope([ workerClientWrapper, identifier, finishTime] (ScriptExecutionContext& context){194 ASSERT_UNUSED(context, context.isWorkerGlobalScope()); 195 workerClientWrapper->didFinishLoading(identifier, finishTime);187 Ref<ThreadableLoaderClientWrapper> protectedWorkerClientWrapper = *m_workerClientWrapper; 188 m_loaderProxy.postTaskForModeToWorkerGlobalScope([protectedWorkerClientWrapper = WTFMove(protectedWorkerClientWrapper), identifier, finishTime] (ScriptExecutionContext& context) mutable { 189 ASSERT_UNUSED(context, context.isWorkerGlobalScope()); 190 protectedWorkerClientWrapper->didFinishLoading(identifier, finishTime); 196 191 }, m_taskMode); 197 192 } … … 200 195 { 201 196 m_loadingFinished = true; 202 RefPtr<ThreadableLoaderClientWrapper> workerClientWrapper = m_workerClientWrapper; 203 ResourceError* capturedError = new ResourceError(error.copy()); 204 if (!m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper, capturedError] (ScriptExecutionContext& context) { 205 ASSERT_UNUSED(context, context.isWorkerGlobalScope()); 206 workerClientWrapper->didFail(*capturedError); 207 delete capturedError; 208 }, m_taskMode)) 209 delete capturedError; 197 Ref<ThreadableLoaderClientWrapper> protectedWorkerClientWrapper = *m_workerClientWrapper; 198 m_loaderProxy.postTaskForModeToWorkerGlobalScope([protectedWorkerClientWrapper = WTFMove(protectedWorkerClientWrapper), error = error.copy()] (ScriptExecutionContext& context) mutable { 199 ASSERT_UNUSED(context, context.isWorkerGlobalScope()); 200 protectedWorkerClientWrapper->didFail(error); 201 }, m_taskMode); 210 202 } 211 203 … … 213 205 { 214 206 m_loadingFinished = true; 215 RefPtr<ThreadableLoaderClientWrapper> workerClientWrapper = m_workerClientWrapper; 216 ResourceError* capturedError = new ResourceError(error.copy()); 217 if (!m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper, capturedError] (ScriptExecutionContext& context) { 218 ASSERT_UNUSED(context, context.isWorkerGlobalScope()); 219 workerClientWrapper->didFailAccessControlCheck(*capturedError); 220 delete capturedError; 221 }, m_taskMode)) 222 delete capturedError; 207 Ref<ThreadableLoaderClientWrapper> protectedWorkerClientWrapper = *m_workerClientWrapper; 208 m_loaderProxy.postTaskForModeToWorkerGlobalScope([protectedWorkerClientWrapper = WTFMove(protectedWorkerClientWrapper), error = error.copy()] (ScriptExecutionContext& context) mutable { 209 ASSERT_UNUSED(context, context.isWorkerGlobalScope()); 210 protectedWorkerClientWrapper->didFailAccessControlCheck(error); 211 }, m_taskMode); 223 212 } 224 213 … … 226 215 { 227 216 m_loadingFinished = true; 228 Ref Ptr<ThreadableLoaderClientWrapper> workerClientWrapper =m_workerClientWrapper;229 m_loaderProxy.postTaskForModeToWorkerGlobalScope([ workerClientWrapper] (ScriptExecutionContext& context){230 ASSERT_UNUSED(context, context.isWorkerGlobalScope()); 231 workerClientWrapper->didFailRedirectCheck();217 Ref<ThreadableLoaderClientWrapper> protectedWorkerClientWrapper = *m_workerClientWrapper; 218 m_loaderProxy.postTaskForModeToWorkerGlobalScope([protectedWorkerClientWrapper = WTFMove(protectedWorkerClientWrapper)] (ScriptExecutionContext& context) mutable { 219 ASSERT_UNUSED(context, context.isWorkerGlobalScope()); 220 protectedWorkerClientWrapper->didFailRedirectCheck(); 232 221 }, m_taskMode); 233 222 } -
trunk/Source/WebKit2/ChangeLog
r201600 r201602 1 2016-06-02 Chris Dumez <cdumez@apple.com> 2 3 Modernize various lambda captures 4 https://bugs.webkit.org/show_bug.cgi?id=158292 5 6 Reviewed by Brady Eidson. 7 8 Modernize various lambda captures, especially the ones unnecessarily 9 allocating objects on the heap and destroying them in the lambda. 10 11 * NetworkProcess/NetworkProcess.cpp: 12 (WebKit::fetchDiskCacheEntries): 13 (WebKit::clearDiskCacheEntries): 14 (WebKit::NetworkProcess::fetchWebsiteData): Deleted. 15 * NetworkProcess/cache/NetworkCache.cpp: 16 (WebKit::NetworkCache::Cache::traverse): 17 * NetworkProcess/cache/NetworkCache.h: 18 * NetworkProcess/cache/NetworkCacheStorage.cpp: 19 (WebKit::NetworkCache::Storage::TraverseOperation::TraverseOperation): 20 * NetworkProcess/cache/NetworkCacheStorage.h: 21 1 22 2016-06-02 Chris Dumez <cdumez@apple.com> 2 23 -
trunk/Source/WebKit2/NetworkProcess/NetworkProcess.cpp
r201575 r201602 309 309 } 310 310 311 static void fetchDiskCacheEntries(SessionID sessionID, OptionSet<WebsiteDataFetchOption> fetchOptions, std::function<void (Vector<WebsiteData::Entry>)>completionHandler)311 static void fetchDiskCacheEntries(SessionID sessionID, OptionSet<WebsiteDataFetchOption> fetchOptions, NoncopyableFunction<void (Vector<WebsiteData::Entry>)>&& completionHandler) 312 312 { 313 313 #if ENABLE(NETWORK_CACHE) 314 314 if (NetworkCache::singleton().isEnabled()) { 315 auto* originsAndSizes = new HashMap<RefPtr<SecurityOrigin>, uint64_t>(); 316 317 NetworkCache::singleton().traverse([fetchOptions, completionHandler, originsAndSizes](auto* traversalEntry) { 315 HashMap<RefPtr<SecurityOrigin>, uint64_t> originsAndSizes; 316 NetworkCache::singleton().traverse([fetchOptions, completionHandler = WTFMove(completionHandler), originsAndSizes = WTFMove(originsAndSizes)](auto* traversalEntry) mutable { 318 317 if (!traversalEntry) { 319 318 Vector<WebsiteData::Entry> entries; 320 319 321 for (auto& originAndSize : *originsAndSizes) { 322 WebsiteData::Entry entry { originAndSize.key, WebsiteDataType::DiskCache, originAndSize.value }; 323 324 entries.append(WTFMove(entry)); 325 } 326 327 delete originsAndSizes; 328 329 RunLoop::main().dispatch([completionHandler, entries = WTFMove(entries)] { 320 for (auto& originAndSize : originsAndSizes) 321 entries.append(WebsiteData::Entry { originAndSize.key, WebsiteDataType::DiskCache, originAndSize.value }); 322 323 RunLoop::main().dispatch([completionHandler = WTFMove(completionHandler), entries = WTFMove(entries)] { 330 324 completionHandler(entries); 331 325 }); … … 334 328 } 335 329 336 auto result = originsAndSizes ->add(SecurityOrigin::create(traversalEntry->entry.response().url()), 0);330 auto result = originsAndSizes.add(SecurityOrigin::create(traversalEntry->entry.response().url()), 0); 337 331 338 332 if (fetchOptions.contains(WebsiteDataFetchOption::ComputeSizes)) … … 351 345 #endif 352 346 353 RunLoop::main().dispatch([completionHandler , entries = WTFMove(entries)] {347 RunLoop::main().dispatch([completionHandler = WTFMove(completionHandler), entries = WTFMove(entries)] { 354 348 completionHandler(entries); 355 349 }); … … 359 353 { 360 354 struct CallbackAggregator final : public RefCounted<CallbackAggregator> { 361 explicit CallbackAggregator( std::function<void (WebsiteData)>completionHandler)355 explicit CallbackAggregator(NoncopyableFunction<void (WebsiteData)>&& completionHandler) 362 356 : m_completionHandler(WTFMove(completionHandler)) 363 357 { … … 373 367 } 374 368 375 std::function<void (WebsiteData)> m_completionHandler;369 NoncopyableFunction<void (WebsiteData)> m_completionHandler; 376 370 WebsiteData m_websiteData; 377 371 }; 378 372 379 RefPtr<CallbackAggregator> callbackAggregator = adoptRef(new CallbackAggregator([this, callbackID] (WebsiteData websiteData) {373 auto callbackAggregator = adoptRef(*new CallbackAggregator([this, callbackID] (WebsiteData websiteData) { 380 374 parentProcessConnection()->send(Messages::NetworkProcessProxy::DidFetchWebsiteData(callbackID, websiteData), 0); 381 375 })); … … 387 381 388 382 if (websiteDataTypes.contains(WebsiteDataType::DiskCache)) { 389 fetchDiskCacheEntries(sessionID, fetchOptions, [callbackAggregator ](auto entries){383 fetchDiskCacheEntries(sessionID, fetchOptions, [callbackAggregator = WTFMove(callbackAggregator)](auto entries) mutable { 390 384 callbackAggregator->m_websiteData.entries.appendVector(entries); 391 385 }); … … 419 413 } 420 414 421 static void clearDiskCacheEntries(const Vector<SecurityOriginData>& origins, std::function<void ()>&& completionHandler)415 static void clearDiskCacheEntries(const Vector<SecurityOriginData>& origins, NoncopyableFunction<void ()>&& completionHandler) 422 416 { 423 417 #if ENABLE(NETWORK_CACHE) 424 418 if (NetworkCache::singleton().isEnabled()) { 425 auto* originsToDelete = new HashSet<RefPtr<SecurityOrigin>>(); 426 419 HashSet<RefPtr<SecurityOrigin>> originsToDelete; 427 420 for (auto& origin : origins) 428 originsToDelete->add(origin.securityOrigin()); 429 430 auto* cacheKeysToDelete = new Vector<NetworkCache::Key>; 431 432 NetworkCache::singleton().traverse([completionHandler = WTFMove(completionHandler), originsToDelete, cacheKeysToDelete](auto* traversalEntry) mutable { 421 originsToDelete.add(origin.securityOrigin()); 422 423 Vector<NetworkCache::Key> cacheKeysToDelete; 424 NetworkCache::singleton().traverse([completionHandler = WTFMove(completionHandler), originsToDelete = WTFMove(originsToDelete), cacheKeysToDelete = WTFMove(cacheKeysToDelete)](auto* traversalEntry) mutable { 433 425 if (traversalEntry) { 434 if (originsToDelete ->contains(SecurityOrigin::create(traversalEntry->entry.response().url())))435 cacheKeysToDelete ->append(traversalEntry->entry.key());426 if (originsToDelete.contains(SecurityOrigin::create(traversalEntry->entry.response().url()))) 427 cacheKeysToDelete.append(traversalEntry->entry.key()); 436 428 return; 437 429 } 438 430 439 delete originsToDelete; 440 441 for (auto& key : *cacheKeysToDelete) 431 for (auto& key : cacheKeysToDelete) 442 432 NetworkCache::singleton().remove(key); 443 444 delete cacheKeysToDelete;445 433 446 434 RunLoop::main().dispatch(WTFMove(completionHandler)); -
trunk/Source/WebKit2/NetworkProcess/NetworkProcess.h
r199230 r201602 37 37 #include <wtf/Forward.h> 38 38 #include <wtf/NeverDestroyed.h> 39 #include <wtf/NoncopyableFunction.h> 39 40 #include <wtf/RetainPtr.h> 40 41 -
trunk/Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp
r201600 r201602 522 522 } 523 523 524 void Cache::traverse( std::function<void (const TraversalEntry*)>&& traverseHandler)524 void Cache::traverse(NoncopyableFunction<void (const TraversalEntry*)>&& traverseHandler) 525 525 { 526 526 ASSERT(isEnabled()); -
trunk/Source/WebKit2/NetworkProcess/cache/NetworkCache.h
r201484 r201602 33 33 #include "ShareableResource.h" 34 34 #include <WebCore/ResourceResponse.h> 35 #include <wtf/NoncopyableFunction.h> 35 36 #include <wtf/text/WTFString.h> 36 37 … … 114 115 const Storage::RecordInfo& recordInfo; 115 116 }; 116 void traverse( std::function<void (const TraversalEntry*)>&&);117 void traverse(NoncopyableFunction<void (const TraversalEntry*)>&&); 117 118 void remove(const Key&); 118 119 void remove(const WebCore::ResourceRequest&); -
trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp
r201575 r201602 114 114 WTF_MAKE_FAST_ALLOCATED; 115 115 public: 116 TraverseOperation(const String& type, TraverseFlags flags, const TraverseHandler& handler)116 TraverseOperation(const String& type, TraverseFlags flags, TraverseHandler&& handler) 117 117 : type(type) 118 118 , flags(flags) 119 , handler( handler)119 , handler(WTFMove(handler)) 120 120 { } 121 121 -
trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.h
r200394 r201602 36 36 #include <wtf/Deque.h> 37 37 #include <wtf/HashSet.h> 38 #include <wtf/NoncopyableFunction.h> 38 39 #include <wtf/Optional.h> 39 40 #include <wtf/WorkQueue.h> … … 79 80 }; 80 81 typedef unsigned TraverseFlags; 81 typedef std::function<void (const Record*, const RecordInfo&)> TraverseHandler;82 typedef NoncopyableFunction<void (const Record*, const RecordInfo&)> TraverseHandler; 82 83 // Null record signals end. 83 84 void traverse(const String& type, TraverseFlags, TraverseHandler&&);
Note:
See TracChangeset
for help on using the changeset viewer.