CreateFileTask::CreateFileTask(FileSystemBase* aFileSystem, const nsAString& aPath, Blob* aBlobData, InfallibleTArray<uint8_t>& aArrayData, bool replace, ErrorResult& aRv) : FileSystemTaskBase(aFileSystem) , mTargetRealPath(aPath) , mReplace(replace) { MOZ_ASSERT(NS_IsMainThread(), "Only call on main thread!"); MOZ_ASSERT(aFileSystem); GetOutputBufferSize(); if (aBlobData) { if (XRE_IsParentProcess()) { aBlobData->GetInternalStream(getter_AddRefs(mBlobStream), aRv); NS_WARN_IF(aRv.Failed()); } else { mBlobData = aBlobData; } } mArrayData.SwapElements(aArrayData); nsCOMPtr<nsIGlobalObject> globalObject = do_QueryInterface(aFileSystem->GetWindow()); if (!globalObject) { return; } mPromise = Promise::Create(globalObject, aRv); }
CreateFileTask::CreateFileTask(FileSystemBase* aFileSystem, const FileSystemCreateFileParams& aParam, FileSystemRequestParent* aParent) : FileSystemTaskBase(aFileSystem, aParam, aParent) , mReplace(false) { MOZ_ASSERT(XRE_IsParentProcess(), "Only call from parent process!"); MOZ_ASSERT(NS_IsMainThread(), "Only call on main thread!"); MOZ_ASSERT(aFileSystem); GetOutputBufferSize(); mTargetRealPath = aParam.realPath(); mReplace = aParam.replace(); auto& data = aParam.data(); if (data.type() == FileSystemFileDataValue::TArrayOfuint8_t) { mArrayData = data; return; } BlobParent* bp = static_cast<BlobParent*>(static_cast<PBlobParent*>(data)); RefPtr<BlobImpl> blobImpl = bp->GetBlobImpl(); MOZ_ASSERT(blobImpl, "blobData should not be null."); ErrorResult rv; blobImpl->GetInternalStream(getter_AddRefs(mBlobStream), rv); if (NS_WARN_IF(rv.Failed())) { rv.SuppressException(); } }
CreateFileTask::CreateFileTask(FileSystemBase* aFileSystem, const FileSystemCreateFileParams& aParam, FileSystemRequestParent* aParent) : FileSystemTaskBase(aFileSystem, aParam, aParent) , mReplace(false) { MOZ_ASSERT(FileSystemUtils::IsParentProcess(), "Only call from parent process!"); MOZ_ASSERT(NS_IsMainThread(), "Only call on main thread!"); MOZ_ASSERT(aFileSystem); GetOutputBufferSize(); mTargetRealPath = aParam.realPath(); mReplace = aParam.replace(); auto& data = aParam.data(); if (data.type() == FileSystemFileDataValue::TArrayOfuint8_t) { mArrayData = data; return; } BlobParent* bp = static_cast<BlobParent*>(static_cast<PBlobParent*>(data)); nsCOMPtr<nsIDOMBlob> blobData = bp->GetBlob(); MOZ_ASSERT(blobData, "blobData should not be null."); nsresult rv = blobData->GetInternalStream(getter_AddRefs(mBlobStream)); NS_WARN_IF(NS_FAILED(rv)); }