void MemoryBackingStoreTransaction::addNewObjectStore(MemoryObjectStore& objectStore) { LOG(IndexedDB, "MemoryBackingStoreTransaction::addNewObjectStore()"); ASSERT(isVersionChange()); m_versionChangeAddedObjectStores.add(&objectStore); addExistingObjectStore(objectStore); }
IDBError MemoryIDBBackingStore::beginTransaction(const IDBTransactionInfo& info) { LOG(IndexedDB, "MemoryIDBBackingStore::beginTransaction"); if (m_transactions.contains(info.identifier())) return { IDBDatabaseException::InvalidStateError, "Backing store asked to create transaction it already has a record of" }; auto transaction = MemoryBackingStoreTransaction::create(*this, info); // VersionChange transactions are scoped to "every object store". if (transaction->isVersionChange()) { for (auto& objectStore : m_objectStoresByIdentifier.values()) transaction->addExistingObjectStore(*objectStore); } else if (transaction->isWriting()) { for (auto& iterator : m_objectStoresByName) { if (info.objectStores().contains(iterator.key)) transaction->addExistingObjectStore(*iterator.value); } } m_transactions.set(info.identifier(), WTFMove(transaction)); return { }; }