bool IDBDatabaseBackendImpl::openInternal() { bool success = m_backingStore->getIDBDatabaseMetaData(m_metadata.name, &m_metadata); ASSERT_WITH_MESSAGE(success == (m_metadata.id != InvalidId), "success = %s, m_id = %lld", success ? "true" : "false", static_cast<long long>(m_metadata.id)); if (success) { loadObjectStores(); return true; } return m_backingStore->createIDBDatabaseMetaData(m_metadata.name, m_metadata.version, m_metadata.intVersion, m_metadata.id); }
IDBDatabaseBackendImpl::IDBDatabaseBackendImpl(const String& name, IDBSQLiteDatabase* sqliteDatabase, IDBTransactionCoordinator* coordinator, IDBFactoryBackendImpl* factory, const String& uniqueIdentifier) : m_sqliteDatabase(sqliteDatabase) , m_id(InvalidId) , m_name(name) , m_version("") , m_identifier(uniqueIdentifier) , m_factory(factory) , m_transactionCoordinator(coordinator) { ASSERT(!m_name.isNull()); bool success = extractMetaData(m_sqliteDatabase->db(), m_name, m_version, m_id); ASSERT_UNUSED(success, success == (m_id != InvalidId)); if (!setMetaData(m_sqliteDatabase->db(), m_name, m_version, m_id)) ASSERT_NOT_REACHED(); // FIXME: Need better error handling. loadObjectStores(); }