Skip to content
  • beidson@apple.com's avatar
    DatabaseProcess: Add "UniqueIDBDatabase" that multiple WebProcesses can connect to · 36867044
    beidson@apple.com authored
    https://bugs.webkit.org/show_bug.cgi?id=124819
    
    Reviewed by Dan Bernstein.
    
    Source/WebCore:
    
    * Modules/indexeddb/IDBDatabaseBackend.cpp:
    (WebCore::IDBDatabaseBackend::~IDBDatabaseBackend): Unregister from the IDBFactory.
    
    Source/WebKit2:
    
    UniqueIDBDatabase instances are per-DatabaseProcess, so it manages the set of them.
    * DatabaseProcess/DatabaseProcess.cpp:
    (WebKit::DatabaseProcess::getOrCreateUniqueIDBDatabase):
    (WebKit::DatabaseProcess::removeUniqueIDBDatabase):
    * DatabaseProcess/DatabaseProcess.h:
    
    * DatabaseProcess/DatabaseToWebProcessConnection.h:
    
    Start forwarding things along to the appropriate UniqueIDBDatabase.
    * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp:
    (WebKit::DatabaseProcessIDBConnection::~DatabaseProcessIDBConnection):
    (WebKit::DatabaseProcessIDBConnection::disconnectedFromWebProcess):
    (WebKit::DatabaseProcessIDBConnection::establishConnection):
    (WebKit::DatabaseProcessIDBConnection::getOrEstablishIDBDatabaseMetadata):
    * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h:
    
    A class that represents a single concrete IDB database that multiple WebProcesses can connect to.
    * DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:
    (WebKit::UniqueIDBDatabase::UniqueIDBDatabase):
    (WebKit::UniqueIDBDatabase::~UniqueIDBDatabase):
    (WebKit::UniqueIDBDatabase::registerConnection):
    (WebKit::UniqueIDBDatabase::unregisterConnection):
    (WebKit::UniqueIDBDatabase::getIDBDatabaseMetadata):
    * DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:
    (WebKit::UniqueIDBDatabase::create):
    (WebKit::UniqueIDBDatabase::identifier):
    
    A class to help uniquely identify an IDBDatabase that can be expanded as needed.
    Importantly, it knows how to be used as a key in a HashMap.
    * DatabaseProcess/IndexedDB/UniqueIDBDatabaseIdentifier.cpp: Added.
    (WebKit::UniqueIDBDatabaseIdentifier::UniqueIDBDatabaseIdentifier):
    (WebKit::UniqueIDBDatabaseIdentifier::isHashTableDeletedValue):
    (WebKit::UniqueIDBDatabaseIdentifier::hash):
    (WebKit::UniqueIDBDatabaseIdentifier::isNull):
    (WebKit::operator==):
    * DatabaseProcess/IndexedDB/UniqueIDBDatabaseIdentifier.h: Added.
    (WebKit::UniqueIDBDatabaseIdentifier::databaseName):
    (WebKit::UniqueIDBDatabaseIdentifier::openingOrigin):
    (WebKit::UniqueIDBDatabaseIdentifier::mainFrameOrigin):
    (WebKit::UniqueIDBDatabaseIdentifierHash::hash):
    (WebKit::UniqueIDBDatabaseIdentifierHash::equal):
    (WebKit::UniqueIDBDatabaseIdentifierHashTraits::isEmptyValue):
    
    * Shared/SecurityOriginData.cpp:
    (WebKit::operator==):
    * Shared/SecurityOriginData.h:
    
    * UIProcess/WebContext.cpp:
    
    * WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.cpp:
    (WebKit::WebIDBFactoryBackend::open):
    (WebKit::WebIDBFactoryBackend::removeIDBDatabaseBackend):
    
    * WebKit2.xcodeproj/project.pbxproj:
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@159737 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    36867044