void IDBDatabase::RefreshSpec(bool aMayDelete) { AssertIsOnOwningThread(); for (auto iter = mTransactions.Iter(); !iter.Done(); iter.Next()) { RefPtr<IDBTransaction> transaction = iter.Get()->GetKey(); MOZ_ASSERT(transaction); transaction->AssertIsOnOwningThread(); transaction->RefreshSpec(aMayDelete); } }
/* static */ void FetchStream::WriteIntoReadRequestCallback(JSContext* aCx, JS::HandleObject aStream, void* aUnderlyingSource, uint8_t aFlags, void* aBuffer, size_t aLength, size_t* aByteWritten) { MOZ_DIAGNOSTIC_ASSERT(aUnderlyingSource); MOZ_DIAGNOSTIC_ASSERT(aFlags == FETCH_STREAM_FLAG); MOZ_DIAGNOSTIC_ASSERT(aBuffer); MOZ_DIAGNOSTIC_ASSERT(aByteWritten); RefPtr<FetchStream> stream = static_cast<FetchStream*>(aUnderlyingSource); stream->AssertIsOnOwningThread(); MutexAutoLock lock(stream->mMutex); MOZ_DIAGNOSTIC_ASSERT(stream->mInputStream); MOZ_DIAGNOSTIC_ASSERT(stream->mState == eWriting); stream->mState = eChecking; uint32_t written; nsresult rv = stream->mInputStream->Read(static_cast<char*>(aBuffer), aLength, &written); if (NS_WARN_IF(NS_FAILED(rv))) { stream->ErrorPropagation(aCx, lock, aStream, rv); return; } *aByteWritten = written; if (written == 0) { stream->CloseAndReleaseObjects(aCx, lock, aStream); return; } rv = stream->mInputStream->AsyncWait(stream, 0, 0, stream->mOwningEventTarget); if (NS_WARN_IF(NS_FAILED(rv))) { stream->ErrorPropagation(aCx, lock, aStream, rv); return; } // All good. }
/* static */ nsresult FetchStream::RetrieveInputStream(void* aUnderlyingReadableStreamSource, nsIInputStream** aInputStream) { MOZ_ASSERT(aUnderlyingReadableStreamSource); MOZ_ASSERT(aInputStream); RefPtr<FetchStream> stream = static_cast<FetchStream*>(aUnderlyingReadableStreamSource); stream->AssertIsOnOwningThread(); // if mOriginalInputStream is null, the reading already started. We don't want // to expose the internal inputStream. if (NS_WARN_IF(!stream->mOriginalInputStream)) { return NS_ERROR_DOM_INVALID_STATE_ERR; } nsCOMPtr<nsIInputStream> inputStream = stream->mOriginalInputStream; inputStream.forget(aInputStream); return NS_OK; }