IDBDatabase::IDBDatabase(ScriptExecutionContext& context, IDBClient::IDBConnectionProxy& connectionProxy, const IDBResultData& resultData) : IDBActiveDOMObject(&context) , m_connectionProxy(connectionProxy) , m_info(resultData.databaseInfo()) , m_databaseConnectionIdentifier(resultData.databaseConnectionIdentifier()) { LOG(IndexedDB, "IDBDatabase::IDBDatabase - Creating database %s with version %" PRIu64 " connection %" PRIu64 " (%p)", m_info.name().utf8().data(), m_info.version(), m_databaseConnectionIdentifier, this); suspendIfNeeded(); m_connectionProxy->registerDatabaseConnection(*this); }
IDBDatabase::IDBDatabase(ScriptExecutionContext& context, IDBConnectionToServer& connection, const IDBResultData& resultData) : WebCore::IDBDatabase(&context) , m_serverConnection(connection) , m_info(resultData.databaseInfo()) , m_databaseConnectionIdentifier(resultData.databaseConnectionIdentifier()) { suspendIfNeeded(); relaxAdoptionRequirement(); m_serverConnection->registerDatabaseConnection(*this); }
IDBDatabase::IDBDatabase(ScriptExecutionContext& context, IDBConnectionToServer& connection, const IDBResultData& resultData) : WebCore::IDBDatabase(&context) , m_serverConnection(connection) , m_info(resultData.databaseInfo()) , m_databaseConnectionIdentifier(resultData.databaseConnectionIdentifier()) { LOG(IndexedDB, "IDBDatabase::IDBDatabase - Creating database %s with version %" PRIu64, m_info.name().utf8().data(), m_info.version()); suspendIfNeeded(); relaxAdoptionRequirement(); m_serverConnection->registerDatabaseConnection(*this); }
void IDBOpenDBRequest::requestCompleted(const IDBResultData& data) { LOG(IndexedDB, "IDBOpenDBRequest::requestCompleted"); ASSERT(currentThread() == originThreadID()); // If an Open request was completed after the page has navigated, leaving this request // with a stopped script execution context, we need to message back to the server so it // doesn't hang waiting on a database connection or transaction that will never exist. if (m_contextStopped) { switch (data.type()) { case IDBResultType::OpenDatabaseSuccess: connectionProxy().abortOpenAndUpgradeNeeded(data.databaseConnectionIdentifier(), IDBResourceIdentifier::emptyValue()); break; case IDBResultType::OpenDatabaseUpgradeNeeded: connectionProxy().abortOpenAndUpgradeNeeded(data.databaseConnectionIdentifier(), data.transactionInfo().identifier()); break; default: break; } return; } switch (data.type()) { case IDBResultType::Error: onError(data); break; case IDBResultType::OpenDatabaseSuccess: onSuccess(data); break; case IDBResultType::OpenDatabaseUpgradeNeeded: onUpgradeNeeded(data); break; case IDBResultType::DeleteDatabaseSuccess: onDeleteDatabaseSuccess(data); break; default: RELEASE_ASSERT_NOT_REACHED(); } }