void DOMFileSystem::listDirectory(ScriptExecutionContext& context, FileSystemDirectoryEntry& directory, DirectoryListingCallback&& completionHandler) { ASSERT(&directory.filesystem() == this); auto directoryVirtualPath = directory.virtualPath(); auto fullPath = evaluatePath(directoryVirtualPath); if (fullPath == m_rootPath) { Vector<Ref<FileSystemEntry>> children; children.append(fileAsEntry(context)); completionHandler(WTFMove(children)); return; } m_workQueue->dispatch([this, context = makeRef(context), completionHandler = WTFMove(completionHandler), fullPath = crossThreadCopy(fullPath), directoryVirtualPath = crossThreadCopy(directoryVirtualPath)]() mutable { auto listedChildren = listDirectoryWithMetadata(fullPath); callOnMainThread([this, context = WTFMove(context), completionHandler = WTFMove(completionHandler), listedChildren = crossThreadCopy(listedChildren), directoryVirtualPath = directoryVirtualPath.isolatedCopy()]() mutable { completionHandler(toFileSystemEntries(context, *this, WTFMove(listedChildren), directoryVirtualPath)); }); }); }
IDBTransactionInfo::IDBTransactionInfo(const IDBTransactionInfo& that, IsolatedCopyTag) { isolatedCopy(that, *this); }
IDBResultData::IDBResultData(const IDBResultData& that, IsolatedCopyTag) { isolatedCopy(that, *this); }