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 == Directory::FileOrDirectoryPath::eFilePath) { FileSystemDirectoryListingResponseFile fileData; fileData.fileRealPath() = mTargetData[i].mPath; inputs.AppendElement(fileData); } else { MOZ_ASSERT(mTargetData[i].mType == Directory::FileOrDirectoryPath::eDirectoryPath); FileSystemDirectoryListingResponseDirectory directoryData; directoryData.directoryRealPath() = mTargetData[i].mPath; inputs.AppendElement(directoryData); } } FileSystemDirectoryListingResponse response; response.data().SwapElements(inputs); return response; }
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; }