IDBTransaction::IDBTransaction(IDBDatabase& database, const IDBTransactionInfo& info, IDBOpenDBRequest* request) : WebCore::IDBTransaction(database.scriptExecutionContext()) , m_database(database) , m_info(info) , m_operationTimer(*this, &IDBTransaction::operationTimerFired) , m_openDBRequest(request) { LOG(IndexedDB, "IDBTransaction::IDBTransaction - %s", m_info.loggingString().utf8().data()); relaxAdoptionRequirement(); if (m_info.mode() == IndexedDB::TransactionMode::VersionChange) { ASSERT(m_openDBRequest); m_openDBRequest->setVersionChangeTransaction(*this); m_startedOnServer = true; } else { activate(); RefPtr<IDBTransaction> self; JSC::VM& vm = JSDOMWindowBase::commonVM(); vm.whenIdle([self, this]() { deactivate(); }); establishOnServer(); } suspendIfNeeded(); }
IDBTransaction::IDBTransaction(ScriptExecutionContext* context, int64_t id, PassRefPtr<IDBTransactionBackendInterface> backend, const Vector<String>& objectStoreNames, IDBTransaction::Mode mode, IDBDatabase* db, IDBOpenDBRequest* openDBRequest, const IDBDatabaseMetadata& previousMetadata) : ActiveDOMObject(context, this) , m_backend(backend) , m_id(id) , m_database(db) , m_objectStoreNames(objectStoreNames) , m_openDBRequest(openDBRequest) , m_mode(mode) , m_state(Active) , m_hasPendingActivity(true) , m_contextStopped(false) , m_previousMetadata(previousMetadata) { ASSERT(m_backend); if (mode == VERSION_CHANGE) { // Not active until the callback. m_state = Inactive; } // We pass a reference of this object before it can be adopted. relaxAdoptionRequirement(); if (m_state == Active) IDBPendingTransactionMonitor::addNewTransaction(this); m_database->transactionCreated(this); }
IDBTransaction::IDBTransaction(IDBDatabase& database, const IDBTransactionInfo& info) : WebCore::IDBTransaction(database.scriptExecutionContext()) , m_database(database) , m_info(info) , m_operationTimer(*this, &IDBTransaction::operationTimerFired) { relaxAdoptionRequirement(); if (m_info.mode() == IndexedDB::TransactionMode::VersionChange) { m_originalDatabaseInfo = std::make_unique<IDBDatabaseInfo>(m_database->info()); m_startedOnServer = true; } else { activate(); RefPtr<IDBTransaction> self; JSC::VM& vm = JSDOMWindowBase::commonVM(); vm.whenIdle([self, this]() { deactivate(); }); establishOnServer(); } suspendIfNeeded(); }
IDBDatabase::IDBDatabase(PassRefPtr<IDBDatabaseBackendInterface> backend) : m_backend(backend) , m_noNewTransactions(false) { // We pass a reference of this object before it can be adopted. relaxAdoptionRequirement(); }
WebIDBConnectionToServer::WebIDBConnectionToServer() { relaxAdoptionRequirement(); m_isOpenInServer = sendSync(Messages::DatabaseToWebProcessConnection::EstablishIDBConnectionToServer(), m_identifier); m_connectionToServer = IDBClient::IDBConnectionToServer::create(*this); }
InProcessIDBServer::InProcessIDBServer() : m_server(IDBServer::IDBServer::create()) { relaxAdoptionRequirement(); m_connectionToServer = IDBClient::IDBConnectionToServer::create(*this); m_connectionToClient = IDBServer::IDBConnectionToClient::create(*this); }
AudioContext::AudioContext(Document* document) : ActiveDOMObject(document, this) , m_isInitialized(false) , m_isAudioThreadFinished(false) , m_document(document) , m_destinationNode(0) , m_connectionCount(0) , m_audioThread(0) , m_graphOwnerThread(UndefinedThreadIdentifier) { // Note: because adoptRef() won't be called until we leave this constructor, but code in this constructor needs to reference this context, // relax the check. relaxAdoptionRequirement(); m_destinationNode = AudioDestinationNode::create(this); m_listener = AudioListener::create(); m_temporaryMonoBus = adoptPtr(new AudioBus(1, AudioNode::ProcessingSizeInFrames)); m_temporaryStereoBus = adoptPtr(new AudioBus(2, AudioNode::ProcessingSizeInFrames)); // This sets in motion an asynchronous loading mechanism on another thread. // We can check m_hrtfDatabaseLoader->isLoaded() to find out whether or not it has been fully loaded. // It's not that useful to have a callback function for this since the audio thread automatically starts rendering on the graph // when this has finished (see AudioDestinationNode). m_hrtfDatabaseLoader = HRTFDatabaseLoader::createAndLoadAsynchronouslyIfNecessary(sampleRate()); }
WebIDBConnectionToClient::WebIDBConnectionToClient(DatabaseToWebProcessConnection& connection, uint64_t serverConnectionIdentifier) : m_connection(connection) , m_identifier(serverConnectionIdentifier) { relaxAdoptionRequirement(); m_connectionToClient = IDBServer::IDBConnectionToClient::create(*this); DatabaseProcess::singleton().idbServer().registerConnection(*m_connectionToClient); }
IDBObjectStore::IDBObjectStore(const IDBObjectStoreMetadata& metadata, IDBTransaction* transaction) : m_metadata(metadata) , m_transaction(transaction) , m_deleted(false) { ASSERT(m_transaction); // We pass a reference to this object before it can be adopted. relaxAdoptionRequirement(); }
IDBDatabase::IDBDatabase(ScriptExecutionContext& context, IDBConnectionToServer& connection, const IDBResultData& resultData) : WebCore::IDBDatabase(&context) , m_connection(connection) , m_info(resultData.databaseInfo()) { suspendIfNeeded(); relaxAdoptionRequirement(); m_connection->registerDatabaseConnection(*this); }
IDBObjectStore::IDBObjectStore(PassRefPtr<IDBObjectStoreBackendInterface> idbObjectStore, IDBTransaction* transaction) : m_objectStore(idbObjectStore) , m_transaction(transaction) { ASSERT(m_objectStore); ASSERT(m_transaction); // We pass a reference to this object before it can be adopted. relaxAdoptionRequirement(); }
IDBDatabase::IDBDatabase(ScriptExecutionContext* context, PassRefPtr<IDBDatabaseBackendInterface> backend) : ActiveDOMObject(context, this) , m_backend(backend) , m_noNewTransactions(false) , m_stopped(false) { // We pass a reference of this object before it can be adopted. relaxAdoptionRequirement(); m_databaseCallbacks = IDBDatabaseCallbacksImpl::create(this); }
IDBDatabase::IDBDatabase(ScriptExecutionContext* context, PassRefPtr<IDBDatabaseBackendInterface> backend, PassRefPtr<IDBDatabaseCallbacks> callbacks) : ActiveDOMObject(context) , m_backend(backend) , m_closePending(false) , m_contextStopped(false) , m_databaseCallbacks(callbacks) { // We pass a reference of this object before it can be adopted. relaxAdoptionRequirement(); }
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); }
IDBDatabase::IDBDatabase(ExecutionContext* context, PassOwnPtr<WebIDBDatabase> backend, PassRefPtr<IDBDatabaseCallbacks> callbacks) : ActiveDOMObject(context) , m_backend(backend) , m_closePending(false) , m_contextStopped(false) , m_databaseCallbacks(callbacks) { // We pass a reference of this object before it can be adopted. relaxAdoptionRequirement(); ScriptWrappable::init(this); m_databaseCallbacks->connect(this); }
void AudioContext::constructCommon() { // Note: because adoptRef() won't be called until we leave this constructor, but code in this constructor needs to reference this context, // relax the check. relaxAdoptionRequirement(); FFTFrame::initialize(); m_listener = AudioListener::create(); m_temporaryMonoBus = adoptPtr(new AudioBus(1, AudioNode::ProcessingSizeInFrames)); m_temporaryStereoBus = adoptPtr(new AudioBus(2, AudioNode::ProcessingSizeInFrames)); }
IDBTransaction::IDBTransaction(ScriptExecutionContext* context, PassRefPtr<IDBTransactionBackendInterface> backend, IDBDatabase* db) : ActiveDOMObject(context, this) , m_backend(backend) , m_database(db) , m_mode(m_backend->mode()) , m_transactionFinished(false) , m_contextStopped(false) { ASSERT(m_backend); IDBPendingTransactionMonitor::addPendingTransaction(m_backend.get()); // We pass a reference of this object before it can be adopted. relaxAdoptionRequirement(); m_database->transactionCreated(this); }
IDBTransactionBackendImpl::IDBTransactionBackendImpl(int64_t id, PassRefPtr<IDBDatabaseCallbacks> callbacks, const HashSet<int64_t>& objectStoreIds, IDBTransaction::Mode mode, IDBDatabaseBackendImpl* database) : m_id(id) , m_objectStoreIds(objectStoreIds) , m_mode(mode) , m_state(Unused) , m_commitPending(false) , m_callbacks(callbacks) , m_database(database) , m_transaction(database->backingStore().get()) , m_taskTimer(this, &IDBTransactionBackendImpl::taskTimerFired) , m_pendingPreemptiveEvents(0) { // We pass a reference of this object before it can be adopted. relaxAdoptionRequirement(); m_database->transactionCoordinator()->didCreateTransaction(this); }
LegacyTransaction::LegacyTransaction(ScriptExecutionContext* context, int64_t id, const Vector<String>& objectStoreNames, IndexedDB::TransactionMode mode, LegacyDatabase* db, LegacyOpenDBRequest* openDBRequest, const IDBDatabaseMetadata& previousMetadata) : IDBTransaction(context) , m_id(id) , m_database(db) , m_objectStoreNames(objectStoreNames) , m_openDBRequest(openDBRequest) , m_mode(mode) , m_state(Active) , m_hasPendingActivity(true) , m_contextStopped(false) , m_previousMetadata(previousMetadata) { if (mode == IndexedDB::TransactionMode::VersionChange) { // Not active until the callback. m_state = Inactive; } // We pass a reference of this object before it can be adopted. relaxAdoptionRequirement(); if (m_state == Active) IDBPendingTransactionMonitor::addNewTransaction(this); m_database->transactionCreated(this); }
IDBDatabase::IDBDatabase(PassRefPtr<IDBDatabaseBackendInterface> backend) : m_backend(backend) { // We pass a reference to this object before it can be adopted. relaxAdoptionRequirement(); }
IDBObjectStore::IDBObjectStore(PassRefPtr<IDBObjectStoreBackendInterface> idbObjectStore) : m_objectStore(idbObjectStore) { // We pass a reference to this object before it can be adopted. relaxAdoptionRequirement(); }
IDBFactory::IDBFactory(IDBFactoryBackendInterface* factory) : m_factoryBackend(factory) { // We pass a reference to this object before it can be adopted. relaxAdoptionRequirement(); }