FileSystemResponseValue FileSystemTaskParentBase::GetRequestResult() const { AssertIsOnBackgroundThread(); mFileSystem->AssertIsOnOwningThread(); if (HasError()) { return FileSystemErrorResponse(mErrorValue); } ErrorResult rv; FileSystemResponseValue value = GetSuccessRequestResult(rv); if (NS_WARN_IF(rv.Failed())) { return FileSystemErrorResponse(rv.StealNSResult()); } return value; }
FileSystemResponseValue CreateFileTask::GetSuccessRequestResult() const { MOZ_ASSERT(NS_IsMainThread(), "Only call on main thread!"); BlobParent* actor = GetBlobParent(mTargetBlobImpl); if (!actor) { return FileSystemErrorResponse(NS_ERROR_DOM_FILESYSTEM_UNKNOWN_ERR); } FileSystemFileResponse response; response.blobParent() = actor; return response; }
FileSystemResponseValue FileSystemTaskBase::GetRequestResult() const { MOZ_ASSERT(FileSystemUtils::IsParentProcess(), "Only call from parent process!"); MOZ_ASSERT(NS_IsMainThread(), "Only call on main thread!"); if (HasError()) { return FileSystemErrorResponse(mErrorValue); } else { return GetSuccessRequestResult(); } }
FileSystemResponseValue GetDirectoryListingTaskParent::GetSuccessRequestResult(ErrorResult& aRv) const { AssertIsOnBackgroundThread(); InfallibleTArray<PBlobParent*> blobs; nsTArray<FileSystemDirectoryListingResponseData> inputs; for (unsigned i = 0; i < mTargetData.Length(); i++) { if (mTargetData[i].mType == FileOrDirectoryPath::eFilePath) { nsCOMPtr<nsIFile> path; nsresult rv = NS_NewLocalFile(mTargetData[i].mPath, true, getter_AddRefs(path)); if (NS_WARN_IF(NS_FAILED(rv))) { return FileSystemErrorResponse(rv); } FileSystemDirectoryListingResponseFile fileData; RefPtr<BlobImpl> blobImpl = new FileBlobImpl(path); nsAutoString filePath; filePath.Assign(mDOMPath); // This is specific for unix root filesystem. if (!mDOMPath.EqualsLiteral(FILESYSTEM_DOM_PATH_SEPARATOR_LITERAL)) { filePath.AppendLiteral(FILESYSTEM_DOM_PATH_SEPARATOR_LITERAL); } nsAutoString name; blobImpl->GetName(name); filePath.Append(name); blobImpl->SetDOMPath(filePath); fileData.blobParent() = BlobParent::GetOrCreate(mRequestParent->Manager(), blobImpl); inputs.AppendElement(fileData); } else { MOZ_ASSERT(mTargetData[i].mType == FileOrDirectoryPath::eDirectoryPath); FileSystemDirectoryListingResponseDirectory directoryData; directoryData.directoryRealPath() = mTargetData[i].mPath; inputs.AppendElement(directoryData); } } FileSystemDirectoryListingResponse response; response.data().SwapElements(inputs); return response; }
FileSystemResponseValue GetFileOrDirectoryTask::GetSuccessRequestResult() const { MOZ_ASSERT(NS_IsMainThread(), "Only call on main thread!"); if (mIsDirectory) { return FileSystemDirectoryResponse(mTargetRealPath); } BlobParent* actor = GetBlobParent(mTargetFile); if (!actor) { return FileSystemErrorResponse(NS_ERROR_DOM_FILESYSTEM_UNKNOWN_ERR); } FileSystemFileResponse response; response.blobParent() = actor; return response; }
FileSystemResponseValue GetFileOrDirectoryTask::GetSuccessRequestResult() const { MOZ_ASSERT(NS_IsMainThread(), "Only call on main thread!"); if (mIsDirectory) { return FileSystemDirectoryResponse(mTargetRealPath); } ContentParent* cp = static_cast<ContentParent*>(mRequestParent->Manager()); BlobParent* actor = cp->GetOrCreateActorForBlob(mTargetFile); if (!actor) { return FileSystemErrorResponse(NS_ERROR_DOM_FILESYSTEM_UNKNOWN_ERR); } FileSystemFileResponse response; response.blobParent() = actor; return response; }