⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 259837 in webkit


Ignore:
Timestamp:
Apr 9, 2020, 4:19:24 PM (6 years ago)
Author:
Russell Epstein
Message:

Revert r259689. rdar://problem/61269751

Location:
branches/safari-609-branch/Source
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • branches/safari-609-branch/Source/WTF/ChangeLog

    r259689 r259837  
     12020-04-09  Alan Coon  <alancoon@apple.com>
     2
     3        Revert r259689. rdar://problem/61269751
     4
    152020-04-07  Russell Epstein  <repstein@apple.com>
    26
  • branches/safari-609-branch/Source/WTF/wtf/CrossThreadTaskHandler.cpp

    r259689 r259837  
    3838    Thread::create(threadName, [this] {
    3939        taskRunLoop();
    40 
    41         if (m_completionCallback)
    42             m_completionCallback();
    4340    })->detach();
    4441}
     
    136133}
    137134
    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 
    149135} // namespace WTF
  • branches/safari-609-branch/Source/WTF/wtf/CrossThreadTaskHandler.h

    r259689 r259837  
    4949    WTF_EXPORT_PRIVATE void resume();
    5050
    51     WTF_EXPORT_PRIVATE void kill();
    52     WTF_EXPORT_PRIVATE void setCompletionCallback(Function<void ()>&&);
    53 
    5451private:
    5552    void handleTaskRepliesOnMainThread();
     
    7269    CrossThreadQueue<CrossThreadTask> m_taskQueue;
    7370    CrossThreadQueue<CrossThreadTask> m_taskReplyQueue;
    74 
    75     Function<void ()> m_completionCallback;
    7671};
    7772
  • branches/safari-609-branch/Source/WebCore/ChangeLog

    r259692 r259837  
     12020-04-09  Alan Coon  <alancoon@apple.com>
     2
     3        Revert r259689. rdar://problem/61269751
     4
    152020-04-07  Russell Epstein  <repstein@apple.com>
    26
  • branches/safari-609-branch/Source/WebCore/Modules/indexeddb/server/IDBServer.cpp

    r259689 r259837  
    6161{
    6262    ASSERT(!isMainThread());
    63 
    64     for (auto& database : m_uniqueIDBDatabaseMap.values())
    65         database->immediateClose();
    6663}
    6764
     
    538535    HashSet<UniqueIDBDatabase*> openDatabases;
    539536    for (auto& database : m_uniqueIDBDatabaseMap.values())
    540         database->immediateClose();
     537        database->immediateCloseForUserDelete();
    541538
    542539    m_uniqueIDBDatabaseMap.clear();
     
    565562
    566563    for (auto& database : openDatabases) {
    567         database->immediateClose();
     564        database->immediateCloseForUserDelete();
    568565        m_uniqueIDBDatabaseMap.remove(database->identifier());
    569566    }
  • branches/safari-609-branch/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp

    r259689 r259837  
    11481148}
    11491149
    1150 void UniqueIDBDatabase::immediateClose()
    1151 {
    1152     LOG(IndexedDB, "UniqueIDBDatabase::immediateClose");
     1150void UniqueIDBDatabase::immediateCloseForUserDelete()
     1151{
     1152    LOG(IndexedDB, "UniqueIDBDatabase::immediateCloseForUserDelete");
    11531153
    11541154    // Error out all transactions.
  • branches/safari-609-branch/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.h

    r259689 r259837  
    108108
    109109    void handleDelete(IDBConnectionToClient&, const IDBRequestData&);
    110     void immediateClose();
     110    void immediateCloseForUserDelete();
    111111
    112112    void abortActiveTransactions();
  • branches/safari-609-branch/Source/WebKit/ChangeLog

    r259690 r259837  
     12020-04-09  Alan Coon  <alancoon@apple.com>
     2
     3        Revert r259689. rdar://problem/61269751
     4
    152020-04-07  Russell Epstein  <repstein@apple.com>
    26
  • branches/safari-609-branch/Source/WebKit/NetworkProcess/IndexedDB/WebIDBServer.cpp

    r259689 r259837  
    5454    semaphore.wait();
    5555}
    56 
    57 WebIDBServer::~WebIDBServer()
    58 {
    59     ASSERT(RunLoop::isMain());
    60 }
    61 
     56   
    6257void WebIDBServer::closeAndDeleteDatabasesModifiedSince(WallTime modificationTime, CompletionHandler<void()>&& callback)
    6358{
     
    341336        m_server->registerConnection(iter->value->connectionToClient());
    342337    });
    343     m_connections.add(&connection);
    344338    connection.addThreadMessageReceiver(Messages::WebIDBServer::messageReceiverName(), this);
    345339}
     
    349343    ASSERT(RunLoop::isMain());
    350344
    351     m_connections.remove(&connection);
    352345    connection.removeThreadMessageReceiver(Messages::WebIDBServer::messageReceiverName());
    353346    postTask([this, protectedThis = makeRef(*this), connectionID = connection.uniqueID()] {
     
    373366}
    374367
    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 
    396368} // namespace WebKit
    397369#endif
  • branches/safari-609-branch/Source/WebKit/NetworkProcess/IndexedDB/WebIDBServer.h

    r259689 r259837  
    8888    void didReceiveMessage(IPC::Connection&, IPC::Decoder&);
    8989    void dispatchToThread(WTF::Function<void()>&&);
    90     void close();
    9190
    9291private:
    9392    WebIDBServer(PAL::SessionID, const String& directory, WebCore::IDBServer::IDBServer::StorageQuotaManagerSpaceRequester&&);
    94     ~WebIDBServer();
    9593
    9694    void postTask(WTF::Function<void()>&&);
     
    10098
    10199    HashMap<IPC::Connection::UniqueID, std::unique_ptr<WebIDBConnectionToClient>> m_connectionMap;
    102     HashSet<IPC::Connection*> m_connections;
    103100};
    104101
  • branches/safari-609-branch/Source/WebKit/NetworkProcess/NetworkProcess.cpp

    r259689 r259837  
    579579
    580580    m_storageManagerSet->remove(sessionID);
    581     if (auto webIDBServer = m_webIDBServers.take(sessionID))
    582         webIDBServer->close();
    583581}
    584582
     
    25472545{
    25482546    m_storageManagerSet->removeConnection(connection);
    2549     if (auto* webIDBServer = m_webIDBServers.get(sessionID))
    2550         webIDBServer->removeConnection(connection);
     2547    webIDBServer(sessionID).removeConnection(connection);
    25512548}
    25522549
Note: See TracChangeset for help on using the changeset viewer.