Changeset 259837 in webkit
- Timestamp:
- Apr 9, 2020, 4:19:24 PM (6 years ago)
- Location:
- branches/safari-609-branch/Source
- Files:
-
- 11 edited
-
WTF/ChangeLog (modified) (1 diff)
-
WTF/wtf/CrossThreadTaskHandler.cpp (modified) (2 diffs)
-
WTF/wtf/CrossThreadTaskHandler.h (modified) (2 diffs)
-
WebCore/ChangeLog (modified) (1 diff)
-
WebCore/Modules/indexeddb/server/IDBServer.cpp (modified) (3 diffs)
-
WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp (modified) (1 diff)
-
WebCore/Modules/indexeddb/server/UniqueIDBDatabase.h (modified) (1 diff)
-
WebKit/ChangeLog (modified) (1 diff)
-
WebKit/NetworkProcess/IndexedDB/WebIDBServer.cpp (modified) (4 diffs)
-
WebKit/NetworkProcess/IndexedDB/WebIDBServer.h (modified) (2 diffs)
-
WebKit/NetworkProcess/NetworkProcess.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/safari-609-branch/Source/WTF/ChangeLog
r259689 r259837 1 2020-04-09 Alan Coon <alancoon@apple.com> 2 3 Revert r259689. rdar://problem/61269751 4 1 5 2020-04-07 Russell Epstein <repstein@apple.com> 2 6 -
branches/safari-609-branch/Source/WTF/wtf/CrossThreadTaskHandler.cpp
r259689 r259837 38 38 Thread::create(threadName, [this] { 39 39 taskRunLoop(); 40 41 if (m_completionCallback)42 m_completionCallback();43 40 })->detach(); 44 41 } … … 136 133 } 137 134 138 void CrossThreadTaskHandler::setCompletionCallback(Function<void ()>&& completionCallback)139 {140 m_completionCallback = WTFMove(completionCallback);141 }142 143 void CrossThreadTaskHandler::kill()144 {145 m_taskQueue.kill();146 m_taskReplyQueue.kill();147 }148 149 135 } // namespace WTF -
branches/safari-609-branch/Source/WTF/wtf/CrossThreadTaskHandler.h
r259689 r259837 49 49 WTF_EXPORT_PRIVATE void resume(); 50 50 51 WTF_EXPORT_PRIVATE void kill();52 WTF_EXPORT_PRIVATE void setCompletionCallback(Function<void ()>&&);53 54 51 private: 55 52 void handleTaskRepliesOnMainThread(); … … 72 69 CrossThreadQueue<CrossThreadTask> m_taskQueue; 73 70 CrossThreadQueue<CrossThreadTask> m_taskReplyQueue; 74 75 Function<void ()> m_completionCallback;76 71 }; 77 72 -
branches/safari-609-branch/Source/WebCore/ChangeLog
r259692 r259837 1 2020-04-09 Alan Coon <alancoon@apple.com> 2 3 Revert r259689. rdar://problem/61269751 4 1 5 2020-04-07 Russell Epstein <repstein@apple.com> 2 6 -
branches/safari-609-branch/Source/WebCore/Modules/indexeddb/server/IDBServer.cpp
r259689 r259837 61 61 { 62 62 ASSERT(!isMainThread()); 63 64 for (auto& database : m_uniqueIDBDatabaseMap.values())65 database->immediateClose();66 63 } 67 64 … … 538 535 HashSet<UniqueIDBDatabase*> openDatabases; 539 536 for (auto& database : m_uniqueIDBDatabaseMap.values()) 540 database->immediateClose ();537 database->immediateCloseForUserDelete(); 541 538 542 539 m_uniqueIDBDatabaseMap.clear(); … … 565 562 566 563 for (auto& database : openDatabases) { 567 database->immediateClose ();564 database->immediateCloseForUserDelete(); 568 565 m_uniqueIDBDatabaseMap.remove(database->identifier()); 569 566 } -
branches/safari-609-branch/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp
r259689 r259837 1148 1148 } 1149 1149 1150 void UniqueIDBDatabase::immediateClose ()1151 { 1152 LOG(IndexedDB, "UniqueIDBDatabase::immediateClose ");1150 void UniqueIDBDatabase::immediateCloseForUserDelete() 1151 { 1152 LOG(IndexedDB, "UniqueIDBDatabase::immediateCloseForUserDelete"); 1153 1153 1154 1154 // Error out all transactions. -
branches/safari-609-branch/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.h
r259689 r259837 108 108 109 109 void handleDelete(IDBConnectionToClient&, const IDBRequestData&); 110 void immediateClose ();110 void immediateCloseForUserDelete(); 111 111 112 112 void abortActiveTransactions(); -
branches/safari-609-branch/Source/WebKit/ChangeLog
r259690 r259837 1 2020-04-09 Alan Coon <alancoon@apple.com> 2 3 Revert r259689. rdar://problem/61269751 4 1 5 2020-04-07 Russell Epstein <repstein@apple.com> 2 6 -
branches/safari-609-branch/Source/WebKit/NetworkProcess/IndexedDB/WebIDBServer.cpp
r259689 r259837 54 54 semaphore.wait(); 55 55 } 56 57 WebIDBServer::~WebIDBServer() 58 { 59 ASSERT(RunLoop::isMain()); 60 } 61 56 62 57 void WebIDBServer::closeAndDeleteDatabasesModifiedSince(WallTime modificationTime, CompletionHandler<void()>&& callback) 63 58 { … … 341 336 m_server->registerConnection(iter->value->connectionToClient()); 342 337 }); 343 m_connections.add(&connection);344 338 connection.addThreadMessageReceiver(Messages::WebIDBServer::messageReceiverName(), this); 345 339 } … … 349 343 ASSERT(RunLoop::isMain()); 350 344 351 m_connections.remove(&connection);352 345 connection.removeThreadMessageReceiver(Messages::WebIDBServer::messageReceiverName()); 353 346 postTask([this, protectedThis = makeRef(*this), connectionID = connection.uniqueID()] { … … 373 366 } 374 367 375 void WebIDBServer::close()376 {377 ASSERT(RunLoop::isMain());378 379 // Remove the references held by IPC::Connection.380 for (auto* connection : m_connections)381 connection->removeThreadMessageReceiver(Messages::WebIDBServer::messageReceiverName());382 383 CrossThreadTaskHandler::setCompletionCallback([protectedThis = makeRef(*this)]() mutable {384 ASSERT(!RunLoop::isMain());385 callOnMainRunLoop([protectedThis = WTFMove(protectedThis)]() mutable { });386 });387 388 postTask([this]() mutable {389 m_connectionMap.clear();390 m_server = nullptr;391 392 CrossThreadTaskHandler::kill();393 });394 }395 396 368 } // namespace WebKit 397 369 #endif -
branches/safari-609-branch/Source/WebKit/NetworkProcess/IndexedDB/WebIDBServer.h
r259689 r259837 88 88 void didReceiveMessage(IPC::Connection&, IPC::Decoder&); 89 89 void dispatchToThread(WTF::Function<void()>&&); 90 void close();91 90 92 91 private: 93 92 WebIDBServer(PAL::SessionID, const String& directory, WebCore::IDBServer::IDBServer::StorageQuotaManagerSpaceRequester&&); 94 ~WebIDBServer();95 93 96 94 void postTask(WTF::Function<void()>&&); … … 100 98 101 99 HashMap<IPC::Connection::UniqueID, std::unique_ptr<WebIDBConnectionToClient>> m_connectionMap; 102 HashSet<IPC::Connection*> m_connections;103 100 }; 104 101 -
branches/safari-609-branch/Source/WebKit/NetworkProcess/NetworkProcess.cpp
r259689 r259837 579 579 580 580 m_storageManagerSet->remove(sessionID); 581 if (auto webIDBServer = m_webIDBServers.take(sessionID))582 webIDBServer->close();583 581 } 584 582 … … 2547 2545 { 2548 2546 m_storageManagerSet->removeConnection(connection); 2549 if (auto* webIDBServer = m_webIDBServers.get(sessionID)) 2550 webIDBServer->removeConnection(connection); 2547 webIDBServer(sessionID).removeConnection(connection); 2551 2548 } 2552 2549
Note:
See TracChangeset
for help on using the changeset viewer.