// static already_AddRefed<LockedFile> LockedFile::Create(FileHandle* aFileHandle, FileMode aMode, RequestMode aRequestMode) { NS_ASSERTION(NS_IsMainThread(), "Wrong thread!"); nsRefPtr<LockedFile> lockedFile = new LockedFile(); lockedFile->BindToOwner(aFileHandle); lockedFile->mFileHandle = aFileHandle; lockedFile->mMode = aMode; lockedFile->mRequestMode = aRequestMode; nsCOMPtr<nsIAppShell> appShell = do_GetService(kAppShellCID); NS_ENSURE_TRUE(appShell, nullptr); nsresult rv = appShell->RunBeforeNextEvent(lockedFile); NS_ENSURE_SUCCESS(rv, nullptr); lockedFile->mCreating = true; FileService* service = FileService::GetOrCreate(); NS_ENSURE_TRUE(service, nullptr); rv = service->Enqueue(lockedFile, nullptr); NS_ENSURE_SUCCESS(rv, nullptr); return lockedFile.forget(); }
nsresult FileHelper::Enqueue() { NS_ASSERTION(NS_IsMainThread(), "Wrong thread!"); FileService* service = FileService::GetOrCreate(); NS_ENSURE_TRUE(service, NS_ERROR_FAILURE); nsresult rv = service->Enqueue(mLockedFile, this); NS_ENSURE_SUCCESS(rv, rv); if (mLockedFile) { mLockedFile->OnNewRequest(); } return NS_OK; }