diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/modules/filesystem')
40 files changed, 289 insertions, 247 deletions
diff --git a/chromium/third_party/blink/renderer/modules/filesystem/directory_entry.cc b/chromium/third_party/blink/renderer/modules/filesystem/directory_entry.cc index 67f5133bf60..c110604a034 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/directory_entry.cc +++ b/chromium/third_party/blink/renderer/modules/filesystem/directory_entry.cc @@ -46,7 +46,7 @@ DirectoryReader* DirectoryEntry::createReader() { } void DirectoryEntry::getFile(const String& path, - const FileSystemFlags& options, + const FileSystemFlags* options, V8EntryCallback* success_callback, V8ErrorCallback* error_callback) { file_system_->GetFile( @@ -56,7 +56,7 @@ void DirectoryEntry::getFile(const String& path, } void DirectoryEntry::getDirectory(const String& path, - const FileSystemFlags& options, + const FileSystemFlags* options, V8EntryCallback* success_callback, V8ErrorCallback* error_callback) { file_system_->GetDirectory( diff --git a/chromium/third_party/blink/renderer/modules/filesystem/directory_entry.h b/chromium/third_party/blink/renderer/modules/filesystem/directory_entry.h index 431a92e772f..147f9dc50e7 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/directory_entry.h +++ b/chromium/third_party/blink/renderer/modules/filesystem/directory_entry.h @@ -51,26 +51,26 @@ class MODULES_EXPORT DirectoryEntry final : public Entry { public: static DirectoryEntry* Create(DOMFileSystemBase* file_system, const String& full_path) { - return new DirectoryEntry(file_system, full_path); + return MakeGarbageCollected<DirectoryEntry>(file_system, full_path); } + + DirectoryEntry(DOMFileSystemBase*, const String& full_path); + bool isDirectory() const override { return true; } DirectoryReader* createReader(); void getFile(const String& path, - const FileSystemFlags&, + const FileSystemFlags*, V8EntryCallback* = nullptr, V8ErrorCallback* = nullptr); void getDirectory(const String& path, - const FileSystemFlags&, + const FileSystemFlags*, V8EntryCallback* = nullptr, V8ErrorCallback* = nullptr); void removeRecursively(V8VoidCallback* success_callback = nullptr, V8ErrorCallback* = nullptr) const; void Trace(blink::Visitor*) override; - - private: - DirectoryEntry(DOMFileSystemBase*, const String& full_path); }; DEFINE_TYPE_CASTS(DirectoryEntry, diff --git a/chromium/third_party/blink/renderer/modules/filesystem/directory_entry_sync.cc b/chromium/third_party/blink/renderer/modules/filesystem/directory_entry_sync.cc index 1c59373eca3..ccafe8a06a6 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/directory_entry_sync.cc +++ b/chromium/third_party/blink/renderer/modules/filesystem/directory_entry_sync.cc @@ -48,7 +48,7 @@ DirectoryReaderSync* DirectoryEntrySync::createReader() { } FileEntrySync* DirectoryEntrySync::getFile(const String& path, - const FileSystemFlags& options, + const FileSystemFlags* options, ExceptionState& exception_state) { EntryCallbacksSyncHelper* sync_helper = EntryCallbacksSyncHelper::Create(); file_system_->GetFile(this, path, options, sync_helper->GetSuccessCallback(), @@ -60,7 +60,7 @@ FileEntrySync* DirectoryEntrySync::getFile(const String& path, DirectoryEntrySync* DirectoryEntrySync::getDirectory( const String& path, - const FileSystemFlags& options, + const FileSystemFlags* options, ExceptionState& exception_state) { EntryCallbacksSyncHelper* sync_helper = EntryCallbacksSyncHelper::Create(); file_system_->GetDirectory( diff --git a/chromium/third_party/blink/renderer/modules/filesystem/directory_entry_sync.h b/chromium/third_party/blink/renderer/modules/filesystem/directory_entry_sync.h index 279ac7a9668..2be21443358 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/directory_entry_sync.h +++ b/chromium/third_party/blink/renderer/modules/filesystem/directory_entry_sync.h @@ -47,23 +47,23 @@ class DirectoryEntrySync final : public EntrySync { public: static DirectoryEntrySync* Create(DOMFileSystemBase* file_system, const String& full_path) { - return new DirectoryEntrySync(file_system, full_path); + return MakeGarbageCollected<DirectoryEntrySync>(file_system, full_path); } + + DirectoryEntrySync(DOMFileSystemBase*, const String& full_path); + bool isDirectory() const override { return true; } DirectoryReaderSync* createReader(); FileEntrySync* getFile(const String& path, - const FileSystemFlags&, + const FileSystemFlags*, ExceptionState&); DirectoryEntrySync* getDirectory(const String& path, - const FileSystemFlags&, + const FileSystemFlags*, ExceptionState&); void removeRecursively(ExceptionState&); void Trace(blink::Visitor*) override; - - private: - DirectoryEntrySync(DOMFileSystemBase*, const String& full_path); }; DEFINE_TYPE_CASTS(DirectoryEntrySync, diff --git a/chromium/third_party/blink/renderer/modules/filesystem/directory_reader.cc b/chromium/third_party/blink/renderer/modules/filesystem/directory_reader.cc index e234149591b..9c02bf90eda 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/directory_reader.cc +++ b/chromium/third_party/blink/renderer/modules/filesystem/directory_reader.cc @@ -51,9 +51,11 @@ class DirectoryReader::EntriesCallbackHelper final : public EntriesCallbacks::OnDidGetEntriesCallback { public: static EntriesCallbackHelper* Create(DirectoryReader* reader) { - return new EntriesCallbackHelper(reader); + return MakeGarbageCollected<EntriesCallbackHelper>(reader); } + explicit EntriesCallbackHelper(DirectoryReader* reader) : reader_(reader) {} + void Trace(blink::Visitor* visitor) override { visitor->Trace(reader_); EntriesCallbacks::OnDidGetEntriesCallback::Trace(visitor); @@ -64,8 +66,6 @@ class DirectoryReader::EntriesCallbackHelper final } private: - explicit EntriesCallbackHelper(DirectoryReader* reader) : reader_(reader) {} - // FIXME: This Member keeps the reader alive until all of the readDirectory // results are received. crbug.com/350285 Member<DirectoryReader> reader_; @@ -74,9 +74,11 @@ class DirectoryReader::EntriesCallbackHelper final class DirectoryReader::ErrorCallbackHelper final : public ErrorCallbackBase { public: static ErrorCallbackHelper* Create(DirectoryReader* reader) { - return new ErrorCallbackHelper(reader); + return MakeGarbageCollected<ErrorCallbackHelper>(reader); } + explicit ErrorCallbackHelper(DirectoryReader* reader) : reader_(reader) {} + void Invoke(base::File::Error error) override { reader_->OnError(error); } void Trace(blink::Visitor* visitor) override { @@ -85,8 +87,6 @@ class DirectoryReader::ErrorCallbackHelper final : public ErrorCallbackBase { } private: - explicit ErrorCallbackHelper(DirectoryReader* reader) : reader_(reader) {} - Member<DirectoryReader> reader_; }; @@ -118,7 +118,8 @@ void DirectoryReader::readEntries(V8EntriesCallback* entries_callback, } if (!has_more_entries_ || !entries_.IsEmpty()) { - EntryHeapVector* entries = new EntryHeapVector(std::move(entries_)); + EntryHeapVector* entries = + MakeGarbageCollected<EntryHeapVector>(std::move(entries_)); DOMFileSystem::ScheduleCallback( Filesystem()->GetExecutionContext(), WTF::Bind( @@ -147,7 +148,7 @@ void DirectoryReader::OnError(base::File::Error error) { entries_callback_ = nullptr; if (auto* error_callback = error_callback_.Release()) { error_callback->InvokeAndReportException( - nullptr, FileError::CreateDOMException(error_)); + nullptr, file_error::CreateDOMException(error_)); } } diff --git a/chromium/third_party/blink/renderer/modules/filesystem/directory_reader.h b/chromium/third_party/blink/renderer/modules/filesystem/directory_reader.h index aa741253d1d..6668cd08c52 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/directory_reader.h +++ b/chromium/third_party/blink/renderer/modules/filesystem/directory_reader.h @@ -46,9 +46,10 @@ class DirectoryReader : public DirectoryReaderBase { public: static DirectoryReader* Create(DOMFileSystemBase* file_system, const String& full_path) { - return new DirectoryReader(file_system, full_path); + return MakeGarbageCollected<DirectoryReader>(file_system, full_path); } + DirectoryReader(DOMFileSystemBase*, const String& full_path); ~DirectoryReader() override = default; void readEntries(V8EntriesCallback*, V8ErrorCallback* = nullptr); @@ -63,8 +64,6 @@ class DirectoryReader : public DirectoryReaderBase { class EntriesCallbackHelper; class ErrorCallbackHelper; - DirectoryReader(DOMFileSystemBase*, const String& full_path); - void AddEntries(const EntryHeapVector& entries); void OnError(base::File::Error error); diff --git a/chromium/third_party/blink/renderer/modules/filesystem/directory_reader_sync.cc b/chromium/third_party/blink/renderer/modules/filesystem/directory_reader_sync.cc index 1e7d48d50cb..e6b6c9e8099 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/directory_reader_sync.cc +++ b/chromium/third_party/blink/renderer/modules/filesystem/directory_reader_sync.cc @@ -43,9 +43,12 @@ class DirectoryReaderSync::EntriesCallbackHelper final : public EntriesCallbacks::OnDidGetEntriesCallback { public: static EntriesCallbackHelper* Create(DirectoryReaderSync* reader) { - return new EntriesCallbackHelper(reader); + return MakeGarbageCollected<EntriesCallbackHelper>(reader); } + explicit EntriesCallbackHelper(DirectoryReaderSync* reader) + : reader_(reader) {} + void Trace(blink::Visitor* visitor) override { visitor->Trace(reader_); EntriesCallbacks::OnDidGetEntriesCallback::Trace(visitor); @@ -60,9 +63,6 @@ class DirectoryReaderSync::EntriesCallbackHelper final } private: - explicit EntriesCallbackHelper(DirectoryReaderSync* reader) - : reader_(reader) {} - Member<DirectoryReaderSync> reader_; }; @@ -70,9 +70,11 @@ class DirectoryReaderSync::ErrorCallbackHelper final : public ErrorCallbackBase { public: static ErrorCallbackHelper* Create(DirectoryReaderSync* reader) { - return new ErrorCallbackHelper(reader); + return MakeGarbageCollected<ErrorCallbackHelper>(reader); } + explicit ErrorCallbackHelper(DirectoryReaderSync* reader) : reader_(reader) {} + void Trace(blink::Visitor* visitor) override { visitor->Trace(reader_); ErrorCallbackBase::Trace(visitor); @@ -83,8 +85,6 @@ class DirectoryReaderSync::ErrorCallbackHelper final } private: - explicit ErrorCallbackHelper(DirectoryReaderSync* reader) : reader_(reader) {} - Member<DirectoryReaderSync> reader_; }; @@ -104,7 +104,7 @@ EntrySyncHeapVector DirectoryReaderSync::readEntries( DCHECK(!has_more_entries_); if (error_code_ != base::File::FILE_OK) { - FileError::ThrowDOMException(exception_state, error_code_); + file_error::ThrowDOMException(exception_state, error_code_); return EntrySyncHeapVector(); } diff --git a/chromium/third_party/blink/renderer/modules/filesystem/directory_reader_sync.h b/chromium/third_party/blink/renderer/modules/filesystem/directory_reader_sync.h index 92b1bedab3f..fa23b1f4f0a 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/directory_reader_sync.h +++ b/chromium/third_party/blink/renderer/modules/filesystem/directory_reader_sync.h @@ -49,9 +49,10 @@ class DirectoryReaderSync : public DirectoryReaderBase { public: static DirectoryReaderSync* Create(DOMFileSystemBase* file_system, const String& full_path) { - return new DirectoryReaderSync(file_system, full_path); + return MakeGarbageCollected<DirectoryReaderSync>(file_system, full_path); } + DirectoryReaderSync(DOMFileSystemBase*, const String& full_path); ~DirectoryReaderSync() override = default; EntrySyncHeapVector readEntries(ExceptionState&); @@ -62,8 +63,6 @@ class DirectoryReaderSync : public DirectoryReaderBase { class EntriesCallbackHelper; class ErrorCallbackHelper; - DirectoryReaderSync(DOMFileSystemBase*, const String& full_path); - bool has_called_read_directory_ = false; EntrySyncHeapVector entries_; base::File::Error error_code_ = base::File::FILE_OK; diff --git a/chromium/third_party/blink/renderer/modules/filesystem/dom_file_system.cc b/chromium/third_party/blink/renderer/modules/filesystem/dom_file_system.cc index 9d079872924..edc4917e7a5 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/dom_file_system.cc +++ b/chromium/third_party/blink/renderer/modules/filesystem/dom_file_system.cc @@ -66,7 +66,7 @@ DOMFileSystem* DOMFileSystem::Create(ExecutionContext* context, const String& name, mojom::blink::FileSystemType type, const KURL& root_url) { - return new DOMFileSystem(context, name, type, root_url); + return MakeGarbageCollected<DOMFileSystem>(context, name, type, root_url); } DOMFileSystem* DOMFileSystem::CreateIsolatedFileSystem( diff --git a/chromium/third_party/blink/renderer/modules/filesystem/dom_file_system.h b/chromium/third_party/blink/renderer/modules/filesystem/dom_file_system.h index 465c3f5776e..e41488c1c12 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/dom_file_system.h +++ b/chromium/third_party/blink/renderer/modules/filesystem/dom_file_system.h @@ -62,6 +62,11 @@ class MODULES_EXPORT DOMFileSystem final static DOMFileSystem* CreateIsolatedFileSystem(ExecutionContext*, const String& filesystem_id); + DOMFileSystem(ExecutionContext*, + const String& name, + mojom::blink::FileSystemType, + const KURL& root_url); + DirectoryEntry* root() const; // DOMFileSystemBase overrides. @@ -91,11 +96,6 @@ class MODULES_EXPORT DOMFileSystem final void Trace(blink::Visitor*) override; private: - DOMFileSystem(ExecutionContext*, - const String& name, - mojom::blink::FileSystemType, - const KURL& root_url); - static String TaskNameForInstrumentation() { return "FileSystem"; } int number_of_pending_callbacks_; diff --git a/chromium/third_party/blink/renderer/modules/filesystem/dom_file_system_base.cc b/chromium/third_party/blink/renderer/modules/filesystem/dom_file_system_base.cc index 98e1a6566c8..351e387d486 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/dom_file_system_base.cc +++ b/chromium/third_party/blink/renderer/modules/filesystem/dom_file_system_base.cc @@ -375,7 +375,7 @@ void DOMFileSystemBase::GetParent( void DOMFileSystemBase::GetFile( const EntryBase* entry, const String& path, - const FileSystemFlags& flags, + const FileSystemFlags* flags, EntryCallbacks::OnDidGetEntryCallback* success_callback, ErrorCallbackBase* error_callback, SynchronousType synchronous_type) { @@ -390,11 +390,11 @@ void DOMFileSystemBase::GetFile( const KURL& url = CreateFileSystemURL(absolute_path); FileSystemDispatcher& dispatcher = FileSystemDispatcher::From(context_); - if (flags.createFlag()) { + if (flags->createFlag()) { if (synchronous_type == kSynchronous) - dispatcher.CreateFileSync(url, flags.exclusive(), std::move(callbacks)); + dispatcher.CreateFileSync(url, flags->exclusive(), std::move(callbacks)); else - dispatcher.CreateFile(url, flags.exclusive(), std::move(callbacks)); + dispatcher.CreateFile(url, flags->exclusive(), std::move(callbacks)); } else { if (synchronous_type == kSynchronous) { dispatcher.ExistsSync(url, /*is_directory=*/false, std::move(callbacks)); @@ -407,7 +407,7 @@ void DOMFileSystemBase::GetFile( void DOMFileSystemBase::GetDirectory( const EntryBase* entry, const String& path, - const FileSystemFlags& flags, + const FileSystemFlags* flags, EntryCallbacks::OnDidGetEntryCallback* success_callback, ErrorCallbackBase* error_callback, SynchronousType synchronous_type) { @@ -422,12 +422,12 @@ void DOMFileSystemBase::GetDirectory( const KURL& url = CreateFileSystemURL(absolute_path); FileSystemDispatcher& dispatcher = FileSystemDispatcher::From(context_); - if (flags.createFlag()) { + if (flags->createFlag()) { if (synchronous_type == kSynchronous) { - dispatcher.CreateDirectorySync(url, flags.exclusive(), + dispatcher.CreateDirectorySync(url, flags->exclusive(), /*recursive=*/false, std::move(callbacks)); } else { - dispatcher.CreateDirectory(url, flags.exclusive(), /*recursive=*/false, + dispatcher.CreateDirectory(url, flags->exclusive(), /*recursive=*/false, std::move(callbacks)); } } else { diff --git a/chromium/third_party/blink/renderer/modules/filesystem/dom_file_system_base.h b/chromium/third_party/blink/renderer/modules/filesystem/dom_file_system_base.h index 83452e2aa1b..4e19500fd7b 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/dom_file_system_base.h +++ b/chromium/third_party/blink/renderer/modules/filesystem/dom_file_system_base.h @@ -135,13 +135,13 @@ class MODULES_EXPORT DOMFileSystemBase : public ScriptWrappable { ErrorCallbackBase*); void GetFile(const EntryBase*, const String& path, - const FileSystemFlags&, + const FileSystemFlags*, EntryCallbacks::OnDidGetEntryCallback*, ErrorCallbackBase*, SynchronousType = kAsynchronous); void GetDirectory(const EntryBase*, const String& path, - const FileSystemFlags&, + const FileSystemFlags*, EntryCallbacks::OnDidGetEntryCallback*, ErrorCallbackBase*, SynchronousType = kAsynchronous); diff --git a/chromium/third_party/blink/renderer/modules/filesystem/dom_file_system_sync.cc b/chromium/third_party/blink/renderer/modules/filesystem/dom_file_system_sync.cc index 1d1b6e1008c..ef664f7d585 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/dom_file_system_sync.cc +++ b/chromium/third_party/blink/renderer/modules/filesystem/dom_file_system_sync.cc @@ -50,8 +50,9 @@ namespace blink { class FileWriterBase; DOMFileSystemSync* DOMFileSystemSync::Create(DOMFileSystemBase* file_system) { - return new DOMFileSystemSync(file_system->context_, file_system->name(), - file_system->GetType(), file_system->RootURL()); + return MakeGarbageCollected<DOMFileSystemSync>( + file_system->context_, file_system->name(), file_system->GetType(), + file_system->RootURL()); } DOMFileSystemSync::DOMFileSystemSync(ExecutionContext* context, @@ -143,7 +144,7 @@ File* DOMFileSystemSync::CreateFile(const FileEntrySync* file_entry, file_system_url, CreateFileHelper::Create(result, file_entry->name(), file_system_url, GetType())); if (result->failed_) { - FileError::ThrowDOMException( + file_error::ThrowDOMException( exception_state, result->error_, "Could not create '" + file_entry->name() + "'."); return nullptr; diff --git a/chromium/third_party/blink/renderer/modules/filesystem/dom_file_system_sync.h b/chromium/third_party/blink/renderer/modules/filesystem/dom_file_system_sync.h index 228b3e0b211..c6d715a23d1 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/dom_file_system_sync.h +++ b/chromium/third_party/blink/renderer/modules/filesystem/dom_file_system_sync.h @@ -50,11 +50,16 @@ class DOMFileSystemSync final : public DOMFileSystemBase { const String& name, mojom::blink::FileSystemType type, const KURL& root_url) { - return new DOMFileSystemSync(context, name, type, root_url); + return MakeGarbageCollected<DOMFileSystemSync>(context, name, type, + root_url); } static DOMFileSystemSync* Create(DOMFileSystemBase*); + DOMFileSystemSync(ExecutionContext*, + const String& name, + mojom::blink::FileSystemType, + const KURL& root_url); ~DOMFileSystemSync() override; void ReportError(ErrorCallbackBase*, base::File::Error error) override; @@ -67,10 +72,6 @@ class DOMFileSystemSync final : public DOMFileSystemBase { void Trace(blink::Visitor*) override; private: - DOMFileSystemSync(ExecutionContext*, - const String& name, - mojom::blink::FileSystemType, - const KURL& root_url); Member<DirectoryEntrySync> root_entry_; }; diff --git a/chromium/third_party/blink/renderer/modules/filesystem/dom_window_file_system.cc b/chromium/third_party/blink/renderer/modules/filesystem/dom_window_file_system.cc index 52b1e87c04d..1d57b05b460 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/dom_window_file_system.cc +++ b/chromium/third_party/blink/renderer/modules/filesystem/dom_window_file_system.cc @@ -156,15 +156,15 @@ mojom::blink::ChooseFileSystemEntryType ConvertChooserType(const String& input, } Vector<mojom::blink::ChooseFileSystemEntryAcceptsOptionPtr> ConvertAccepts( - const HeapVector<ChooseFileSystemEntriesOptionsAccepts>& accepts) { + const HeapVector<Member<ChooseFileSystemEntriesOptionsAccepts>>& accepts) { Vector<mojom::blink::ChooseFileSystemEntryAcceptsOptionPtr> result; result.ReserveInitialCapacity(accepts.size()); for (const auto& a : accepts) { result.emplace_back( blink::mojom::blink::ChooseFileSystemEntryAcceptsOption::New( - a.hasDescription() ? a.description() : g_empty_string, - a.hasMimeTypes() ? a.mimeTypes() : Vector<String>(), - a.hasExtensions() ? a.extensions() : Vector<String>())); + a->hasDescription() ? a->description() : g_empty_string, + a->hasMimeTypes() ? a->mimeTypes() : Vector<String>(), + a->hasExtensions() ? a->extensions() : Vector<String>())); } return result; } @@ -179,13 +179,16 @@ ScriptPromise CreateFileHandle(ScriptState* script_state, // TODO(mek): Try to create handle directly rather than having to do more // IPCs to get the actual entries. if (is_directory) { - fs->GetDirectory(fs->root(), entry->base_name, FileSystemFlags(), - new EntryCallbacks::OnDidGetEntryPromiseImpl(new_resolver), - new PromiseErrorCallback(new_resolver)); + fs->GetDirectory( + fs->root(), entry->base_name, FileSystemFlags::Create(), + MakeGarbageCollected<EntryCallbacks::OnDidGetEntryPromiseImpl>( + new_resolver), + MakeGarbageCollected<PromiseErrorCallback>(new_resolver)); } else { - fs->GetFile(fs->root(), entry->base_name, FileSystemFlags(), - new EntryCallbacks::OnDidGetEntryPromiseImpl(new_resolver), - new PromiseErrorCallback(new_resolver)); + fs->GetFile(fs->root(), entry->base_name, FileSystemFlags::Create(), + MakeGarbageCollected<EntryCallbacks::OnDidGetEntryPromiseImpl>( + new_resolver), + MakeGarbageCollected<PromiseErrorCallback>(new_resolver)); } return result; } @@ -195,7 +198,7 @@ ScriptPromise CreateFileHandle(ScriptState* script_state, ScriptPromise DOMWindowFileSystem::chooseFileSystemEntries( ScriptState* script_state, LocalDOMWindow& window, - const ChooseFileSystemEntriesOptions& options) { + const ChooseFileSystemEntriesOptions* options) { if (!base::FeatureList::IsEnabled(blink::features::kWritableFilesAPI)) { return ScriptPromise::RejectWithDOMException( script_state, DOMException::Create(DOMExceptionCode::kAbortError)); @@ -221,27 +224,27 @@ ScriptPromise DOMWindowFileSystem::chooseFileSystemEntries( } Vector<mojom::blink::ChooseFileSystemEntryAcceptsOptionPtr> accepts; - if (options.hasAccepts()) - accepts = ConvertAccepts(options.accepts()); + if (options->hasAccepts()) + accepts = ConvertAccepts(options->accepts()); auto* resolver = ScriptPromiseResolver::Create(script_state); ScriptPromise result = resolver->Promise(); FileSystemDispatcher::From(document).GetFileSystemManager().ChooseEntry( - ConvertChooserType(options.type(), options.multiple()), - std::move(accepts), !options.excludeAcceptAllOption(), + ConvertChooserType(options->type(), options->multiple()), + std::move(accepts), !options->excludeAcceptAllOption(), WTF::Bind( [](ScriptPromiseResolver* resolver, - const ChooseFileSystemEntriesOptions& options, + const ChooseFileSystemEntriesOptions* options, base::File::Error result, Vector<mojom::blink::FileSystemEntryPtr> entries) { if (result != base::File::FILE_OK) { - resolver->Reject(FileError::CreateDOMException(result)); + resolver->Reject(file_error::CreateDOMException(result)); return; } - bool is_directory = options.type() == "openDirectory"; + bool is_directory = options->type() == "openDirectory"; ScriptState* script_state = resolver->GetScriptState(); ScriptState::Scope scope(script_state); - if (options.multiple()) { + if (options->multiple()) { Vector<ScriptPromise> result; result.ReserveInitialCapacity(entries.size()); for (const auto& entry : entries) { @@ -257,7 +260,7 @@ ScriptPromise DOMWindowFileSystem::chooseFileSystemEntries( .GetScriptValue()); } }, - WrapPersistent(resolver), options)); + WrapPersistent(resolver), WrapPersistent(options))); return result; } diff --git a/chromium/third_party/blink/renderer/modules/filesystem/dom_window_file_system.h b/chromium/third_party/blink/renderer/modules/filesystem/dom_window_file_system.h index 8d4264d1f39..20449641f8e 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/dom_window_file_system.h +++ b/chromium/third_party/blink/renderer/modules/filesystem/dom_window_file_system.h @@ -64,7 +64,7 @@ class DOMWindowFileSystem { static ScriptPromise chooseFileSystemEntries( ScriptState*, LocalDOMWindow&, - const ChooseFileSystemEntriesOptions&); + const ChooseFileSystemEntriesOptions*); }; } // namespace blink diff --git a/chromium/third_party/blink/renderer/modules/filesystem/dragged_isolated_file_system_impl.cc b/chromium/third_party/blink/renderer/modules/filesystem/dragged_isolated_file_system_impl.cc index 5e4df3b4843..5add202946d 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/dragged_isolated_file_system_impl.cc +++ b/chromium/third_party/blink/renderer/modules/filesystem/dragged_isolated_file_system_impl.cc @@ -76,7 +76,7 @@ void DraggedIsolatedFileSystemImpl::PrepareForDataObject( DataObject* data_object) { DCHECK(IsMainThread()); DraggedIsolatedFileSystemImpl* file_system = - new DraggedIsolatedFileSystemImpl(); + MakeGarbageCollected<DraggedIsolatedFileSystemImpl>(); ProvideTo(*data_object, file_system); } diff --git a/chromium/third_party/blink/renderer/modules/filesystem/dragged_isolated_file_system_impl.h b/chromium/third_party/blink/renderer/modules/filesystem/dragged_isolated_file_system_impl.h index 5cd991da882..e524f907a06 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/dragged_isolated_file_system_impl.h +++ b/chromium/third_party/blink/renderer/modules/filesystem/dragged_isolated_file_system_impl.h @@ -57,13 +57,13 @@ class DraggedIsolatedFileSystemImpl final static DraggedIsolatedFileSystemImpl* From(DataObject*); + DraggedIsolatedFileSystemImpl() = default; + void Trace(blink::Visitor*) override; static void PrepareForDataObject(DataObject*); private: - DraggedIsolatedFileSystemImpl() = default; - HeapHashMap<String, Member<DOMFileSystem>> filesystems_; }; diff --git a/chromium/third_party/blink/renderer/modules/filesystem/entry.h b/chromium/third_party/blink/renderer/modules/filesystem/entry.h index 03744f9d32a..4f2dc22f711 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/entry.h +++ b/chromium/third_party/blink/renderer/modules/filesystem/entry.h @@ -48,6 +48,8 @@ class MODULES_EXPORT Entry : public EntryBase { DEFINE_WRAPPERTYPEINFO(); public: + Entry(DOMFileSystemBase*, const String& full_path); + DOMFileSystem* filesystem() const { return static_cast<DOMFileSystem*>(file_system_.Get()); } @@ -75,9 +77,6 @@ class MODULES_EXPORT Entry : public EntryBase { String toURL(ScriptState*) const; void Trace(blink::Visitor*) override; - - protected: - Entry(DOMFileSystemBase*, const String& full_path); }; } // namespace blink diff --git a/chromium/third_party/blink/renderer/modules/filesystem/entry_base.cc b/chromium/third_party/blink/renderer/modules/filesystem/entry_base.cc index b2e0c94926e..19609d9468e 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/entry_base.cc +++ b/chromium/third_party/blink/renderer/modules/filesystem/entry_base.cc @@ -59,9 +59,10 @@ String EntryBase::toURL() const { FileSystemBaseHandle* EntryBase::asFileSystemHandle() const { if (isFile()) - return new FileSystemFileHandle(filesystem(), fullPath()); + return MakeGarbageCollected<FileSystemFileHandle>(filesystem(), fullPath()); DCHECK(isDirectory()); - return new FileSystemDirectoryHandle(filesystem(), fullPath()); + return MakeGarbageCollected<FileSystemDirectoryHandle>(filesystem(), + fullPath()); } void EntryBase::Trace(blink::Visitor* visitor) { diff --git a/chromium/third_party/blink/renderer/modules/filesystem/file_entry.h b/chromium/third_party/blink/renderer/modules/filesystem/file_entry.h index 17ca61ed9c4..46263735dee 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/file_entry.h +++ b/chromium/third_party/blink/renderer/modules/filesystem/file_entry.h @@ -47,18 +47,17 @@ class MODULES_EXPORT FileEntry final : public Entry { public: static FileEntry* Create(DOMFileSystemBase* file_system, const String& full_path) { - return new FileEntry(file_system, full_path); + return MakeGarbageCollected<FileEntry>(file_system, full_path); } + FileEntry(DOMFileSystemBase*, const String& full_path); + void createWriter(V8FileWriterCallback*, V8ErrorCallback* = nullptr); void file(V8FileCallback*, V8ErrorCallback* = nullptr); bool isFile() const override { return true; } void Trace(blink::Visitor*) override; - - private: - FileEntry(DOMFileSystemBase*, const String& full_path); }; DEFINE_TYPE_CASTS(FileEntry, Entry, entry, entry->isFile(), entry.isFile()); diff --git a/chromium/third_party/blink/renderer/modules/filesystem/file_entry_sync.h b/chromium/third_party/blink/renderer/modules/filesystem/file_entry_sync.h index 08be0b6c399..90fe339de26 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/file_entry_sync.h +++ b/chromium/third_party/blink/renderer/modules/filesystem/file_entry_sync.h @@ -47,18 +47,17 @@ class FileEntrySync final : public EntrySync { public: static FileEntrySync* Create(DOMFileSystemBase* file_system, const String& full_path) { - return new FileEntrySync(file_system, full_path); + return MakeGarbageCollected<FileEntrySync>(file_system, full_path); } + FileEntrySync(DOMFileSystemBase*, const String& full_path); + bool isFile() const override { return true; } File* file(ExceptionState&); FileWriterSync* createWriter(ExceptionState&); void Trace(blink::Visitor*) override; - - private: - FileEntrySync(DOMFileSystemBase*, const String& full_path); }; DEFINE_TYPE_CASTS(FileEntrySync, diff --git a/chromium/third_party/blink/renderer/modules/filesystem/file_system_base_handle.cc b/chromium/third_party/blink/renderer/modules/filesystem/file_system_base_handle.cc index 1fcaa2f115c..c6c2d0525e3 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/file_system_base_handle.cc +++ b/chromium/third_party/blink/renderer/modules/filesystem/file_system_base_handle.cc @@ -19,8 +19,9 @@ ScriptPromise FileSystemBaseHandle::getParent(ScriptState* script_state) { auto* resolver = ScriptPromiseResolver::Create(script_state); ScriptPromise result = resolver->Promise(); filesystem()->GetParent( - this, new EntryCallbacks::OnDidGetEntryPromiseImpl(resolver), - new PromiseErrorCallback(resolver)); + this, + MakeGarbageCollected<EntryCallbacks::OnDidGetEntryPromiseImpl>(resolver), + MakeGarbageCollected<PromiseErrorCallback>(resolver)); return result; } @@ -29,9 +30,10 @@ ScriptPromise FileSystemBaseHandle::moveTo(ScriptState* script_state, const String& name) { auto* resolver = ScriptPromiseResolver::Create(script_state); ScriptPromise result = resolver->Promise(); - filesystem()->Move(this, parent, name, - new EntryCallbacks::OnDidGetEntryPromiseImpl(resolver), - new PromiseErrorCallback(resolver)); + filesystem()->Move( + this, parent, name, + MakeGarbageCollected<EntryCallbacks::OnDidGetEntryPromiseImpl>(resolver), + MakeGarbageCollected<PromiseErrorCallback>(resolver)); return result; } @@ -40,9 +42,10 @@ ScriptPromise FileSystemBaseHandle::copyTo(ScriptState* script_state, const String& name) { auto* resolver = ScriptPromiseResolver::Create(script_state); ScriptPromise result = resolver->Promise(); - filesystem()->Copy(this, parent, name, - new EntryCallbacks::OnDidGetEntryPromiseImpl(resolver), - new PromiseErrorCallback(resolver)); + filesystem()->Copy( + this, parent, name, + MakeGarbageCollected<EntryCallbacks::OnDidGetEntryPromiseImpl>(resolver), + MakeGarbageCollected<PromiseErrorCallback>(resolver)); return result; } @@ -51,7 +54,7 @@ ScriptPromise FileSystemBaseHandle::remove(ScriptState* script_state) { ScriptPromise result = resolver->Promise(); filesystem()->Remove(this, new VoidCallbacks::OnDidSucceedPromiseImpl(resolver), - new PromiseErrorCallback(resolver)); + MakeGarbageCollected<PromiseErrorCallback>(resolver)); return result; } diff --git a/chromium/third_party/blink/renderer/modules/filesystem/file_system_callbacks.cc b/chromium/third_party/blink/renderer/modules/filesystem/file_system_callbacks.cc index 06bde35238c..3095d62e35a 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/file_system_callbacks.cc +++ b/chromium/third_party/blink/renderer/modules/filesystem/file_system_callbacks.cc @@ -111,7 +111,7 @@ ScriptErrorCallback* ScriptErrorCallback::Wrap(V8ErrorCallback* callback) { // and checking during invoke(). if (!callback) return nullptr; - return new ScriptErrorCallback(callback); + return MakeGarbageCollected<ScriptErrorCallback>(callback); } void ScriptErrorCallback::Trace(blink::Visitor* visitor) { @@ -121,7 +121,7 @@ void ScriptErrorCallback::Trace(blink::Visitor* visitor) { void ScriptErrorCallback::Invoke(base::File::Error error) { callback_->InvokeAndReportException(nullptr, - FileError::CreateDOMException(error)); + file_error::CreateDOMException(error)); }; ScriptErrorCallback::ScriptErrorCallback(V8ErrorCallback* callback) @@ -138,7 +138,7 @@ void PromiseErrorCallback::Trace(Visitor* visitor) { } void PromiseErrorCallback::Invoke(base::File::Error error) { - resolver_->Reject(FileError::CreateDOMException(error)); + resolver_->Reject(file_error::CreateDOMException(error)); } // EntryCallbacks ------------------------------------------------------------- @@ -223,7 +223,7 @@ EntriesCallbacks::EntriesCallbacks(OnDidGetEntriesCallback* success_callback, success_callback_(success_callback), directory_reader_(directory_reader), base_path_(base_path), - entries_(new HeapVector<Member<Entry>>()) { + entries_(MakeGarbageCollected<HeapVector<Member<Entry>>>()) { DCHECK(directory_reader_); } @@ -240,7 +240,8 @@ void EntriesCallbacks::DidReadDirectoryEntry(const String& name, void EntriesCallbacks::DidReadDirectoryEntries(bool has_more) { directory_reader_->SetHasMoreEntries(has_more); - EntryHeapVector* entries = new EntryHeapVector(std::move(*entries_)); + EntryHeapVector* entries = + MakeGarbageCollected<EntryHeapVector>(std::move(*entries_)); if (!success_callback_) return; diff --git a/chromium/third_party/blink/renderer/modules/filesystem/file_system_callbacks.h b/chromium/third_party/blink/renderer/modules/filesystem/file_system_callbacks.h index 04ab209a9d8..5654f88342a 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/file_system_callbacks.h +++ b/chromium/third_party/blink/renderer/modules/filesystem/file_system_callbacks.h @@ -108,13 +108,14 @@ class FileSystemCallbacksBase : public AsyncFileSystemCallbacks { class ScriptErrorCallback final : public ErrorCallbackBase { public: static ScriptErrorCallback* Wrap(V8ErrorCallback*); + + explicit ScriptErrorCallback(V8ErrorCallback*); ~ScriptErrorCallback() override {} void Trace(blink::Visitor*) override; void Invoke(base::File::Error error) override; private: - explicit ScriptErrorCallback(V8ErrorCallback*); Member<V8PersistentCallbackInterface<V8ErrorCallback>> callback_; }; @@ -144,15 +145,17 @@ class EntryCallbacks final : public FileSystemCallbacksBase { class OnDidGetEntryV8Impl : public OnDidGetEntryCallback { public: static OnDidGetEntryV8Impl* Create(V8EntryCallback* callback) { - return callback ? new OnDidGetEntryV8Impl(callback) : nullptr; + return callback ? MakeGarbageCollected<OnDidGetEntryV8Impl>(callback) + : nullptr; } - void Trace(blink::Visitor*) override; - void OnSuccess(Entry*) override; - private: OnDidGetEntryV8Impl(V8EntryCallback* callback) : callback_(ToV8PersistentCallbackInterface(callback)) {} + void Trace(blink::Visitor*) override; + void OnSuccess(Entry*) override; + + private: Member<V8PersistentCallbackInterface<V8EntryCallback>> callback_; }; @@ -237,15 +240,18 @@ class FileSystemCallbacks final : public FileSystemCallbacksBase { class OnDidOpenFileSystemV8Impl : public OnDidOpenFileSystemCallback { public: static OnDidOpenFileSystemV8Impl* Create(V8FileSystemCallback* callback) { - return callback ? new OnDidOpenFileSystemV8Impl(callback) : nullptr; + return callback + ? MakeGarbageCollected<OnDidOpenFileSystemV8Impl>(callback) + : nullptr; } - void Trace(blink::Visitor*) override; - void OnSuccess(DOMFileSystem*) override; - private: OnDidOpenFileSystemV8Impl(V8FileSystemCallback* callback) : callback_(ToV8PersistentCallbackInterface(callback)) {} + void Trace(blink::Visitor*) override; + void OnSuccess(DOMFileSystem*) override; + + private: Member<V8PersistentCallbackInterface<V8FileSystemCallback>> callback_; }; @@ -311,15 +317,17 @@ class MetadataCallbacks final : public FileSystemCallbacksBase { class OnDidReadMetadataV8Impl : public OnDidReadMetadataCallback { public: static OnDidReadMetadataV8Impl* Create(V8MetadataCallback* callback) { - return callback ? new OnDidReadMetadataV8Impl(callback) : nullptr; + return callback ? MakeGarbageCollected<OnDidReadMetadataV8Impl>(callback) + : nullptr; } - void Trace(blink::Visitor*) override; - void OnSuccess(Metadata*) override; - private: OnDidReadMetadataV8Impl(V8MetadataCallback* callback) : callback_(ToV8PersistentCallbackInterface(callback)) {} + void Trace(blink::Visitor*) override; + void OnSuccess(Metadata*) override; + + private: Member<V8PersistentCallbackInterface<V8MetadataCallback>> callback_; }; @@ -354,15 +362,18 @@ class FileWriterCallbacks final : public FileSystemCallbacksBase { class OnDidCreateFileWriterV8Impl : public OnDidCreateFileWriterCallback { public: static OnDidCreateFileWriterV8Impl* Create(V8FileWriterCallback* callback) { - return callback ? new OnDidCreateFileWriterV8Impl(callback) : nullptr; + return callback + ? MakeGarbageCollected<OnDidCreateFileWriterV8Impl>(callback) + : nullptr; } - void Trace(blink::Visitor*) override; - void OnSuccess(FileWriterBase*) override; - private: OnDidCreateFileWriterV8Impl(V8FileWriterCallback* callback) : callback_(ToV8PersistentCallbackInterface(callback)) {} + void Trace(blink::Visitor*) override; + void OnSuccess(FileWriterBase*) override; + + private: Member<V8PersistentCallbackInterface<V8FileWriterCallback>> callback_; }; @@ -398,15 +409,18 @@ class SnapshotFileCallback final : public FileSystemCallbacksBase { class OnDidCreateSnapshotFileV8Impl : public OnDidCreateSnapshotFileCallback { public: static OnDidCreateSnapshotFileV8Impl* Create(V8FileCallback* callback) { - return callback ? new OnDidCreateSnapshotFileV8Impl(callback) : nullptr; + return callback + ? MakeGarbageCollected<OnDidCreateSnapshotFileV8Impl>(callback) + : nullptr; } - void Trace(blink::Visitor*) override; - void OnSuccess(File*) override; - private: OnDidCreateSnapshotFileV8Impl(V8FileCallback* callback) : callback_(ToV8PersistentCallbackInterface(callback)) {} + void Trace(blink::Visitor*) override; + void OnSuccess(File*) override; + + private: Member<V8PersistentCallbackInterface<V8FileCallback>> callback_; }; @@ -448,15 +462,17 @@ class VoidCallbacks final : public FileSystemCallbacksBase { class OnDidSucceedV8Impl : public OnDidSucceedCallback { public: static OnDidSucceedV8Impl* Create(V8VoidCallback* callback) { - return callback ? new OnDidSucceedV8Impl(callback) : nullptr; + return callback ? MakeGarbageCollected<OnDidSucceedV8Impl>(callback) + : nullptr; } - void Trace(blink::Visitor*) override; - void OnSuccess(ExecutionContext* dummy_arg_for_sync_helper) override; - private: OnDidSucceedV8Impl(V8VoidCallback* callback) : callback_(ToV8PersistentCallbackInterface(callback)) {} + void Trace(blink::Visitor*) override; + void OnSuccess(ExecutionContext* dummy_arg_for_sync_helper) override; + + private: Member<V8PersistentCallbackInterface<V8VoidCallback>> callback_; }; diff --git a/chromium/third_party/blink/renderer/modules/filesystem/file_system_directory_handle.cc b/chromium/third_party/blink/renderer/modules/filesystem/file_system_directory_handle.cc index 4bc2d834eda..2afc8215e5f 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/file_system_directory_handle.cc +++ b/chromium/third_party/blink/renderer/modules/filesystem/file_system_directory_handle.cc @@ -20,35 +20,37 @@ FileSystemDirectoryHandle::FileSystemDirectoryHandle( ScriptPromise FileSystemDirectoryHandle::getFile( ScriptState* script_state, const String& name, - const FileSystemGetFileOptions& options) { - FileSystemFlags flags; - flags.setCreateFlag(options.create()); + const FileSystemGetFileOptions* options) { + FileSystemFlags* flags = FileSystemFlags::Create(); + flags->setCreateFlag(options->create()); auto* resolver = ScriptPromiseResolver::Create(script_state); ScriptPromise result = resolver->Promise(); - filesystem()->GetFile(this, name, flags, - new EntryCallbacks::OnDidGetEntryPromiseImpl(resolver), - new PromiseErrorCallback(resolver)); + filesystem()->GetFile( + this, name, flags, + MakeGarbageCollected<EntryCallbacks::OnDidGetEntryPromiseImpl>(resolver), + MakeGarbageCollected<PromiseErrorCallback>(resolver)); return result; } ScriptPromise FileSystemDirectoryHandle::getDirectory( ScriptState* script_state, const String& name, - const FileSystemGetDirectoryOptions& options) { - FileSystemFlags flags; - flags.setCreateFlag(options.create()); + const FileSystemGetDirectoryOptions* options) { + FileSystemFlags* flags = FileSystemFlags::Create(); + flags->setCreateFlag(options->create()); auto* resolver = ScriptPromiseResolver::Create(script_state); ScriptPromise result = resolver->Promise(); filesystem()->GetDirectory( - this, name, flags, new EntryCallbacks::OnDidGetEntryPromiseImpl(resolver), - new PromiseErrorCallback(resolver)); + this, name, flags, + MakeGarbageCollected<EntryCallbacks::OnDidGetEntryPromiseImpl>(resolver), + MakeGarbageCollected<PromiseErrorCallback>(resolver)); return result; } // static ScriptPromise FileSystemDirectoryHandle::getSystemDirectory( ScriptState* script_state, - const GetSystemDirectoryOptions& options) { + const GetSystemDirectoryOptions* options) { auto* context = ExecutionContext::From(script_state); auto* resolver = ScriptPromiseResolver::Create(script_state); @@ -58,7 +60,7 @@ ScriptPromise FileSystemDirectoryHandle::getSystemDirectory( context, mojom::blink::FileSystemType::kTemporary, /*size=*/0, FileSystemCallbacks::Create( new FileSystemCallbacks::OnDidOpenFileSystemPromiseImpl(resolver), - new PromiseErrorCallback(resolver), context, + MakeGarbageCollected<PromiseErrorCallback>(resolver), context, mojom::blink::FileSystemType::kTemporary), LocalFileSystem::kAsynchronous); return result; @@ -94,7 +96,7 @@ ScriptPromise FileSystemDirectoryHandle::removeRecursively( ScriptPromise result = resolver->Promise(); filesystem()->RemoveRecursively( this, new VoidCallbacks::OnDidSucceedPromiseImpl(resolver), - new PromiseErrorCallback(resolver)); + MakeGarbageCollected<PromiseErrorCallback>(resolver)); return result; } diff --git a/chromium/third_party/blink/renderer/modules/filesystem/file_system_directory_handle.h b/chromium/third_party/blink/renderer/modules/filesystem/file_system_directory_handle.h index 3dfc770d4b0..92290a45fcf 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/file_system_directory_handle.h +++ b/chromium/third_party/blink/renderer/modules/filesystem/file_system_directory_handle.h @@ -22,16 +22,16 @@ class FileSystemDirectoryHandle : public FileSystemBaseHandle { bool isDirectory() const override { return true; } ScriptPromise getFile(ScriptState*, const String& name, - const FileSystemGetFileOptions&); + const FileSystemGetFileOptions*); ScriptPromise getDirectory(ScriptState*, const String& name, - const FileSystemGetDirectoryOptions&); + const FileSystemGetDirectoryOptions*); ScriptValue getEntries(ScriptState*); ScriptPromise removeRecursively(ScriptState*); static ScriptPromise getSystemDirectory( ScriptState*, - const GetSystemDirectoryOptions& options); + const GetSystemDirectoryOptions* options); }; } // namespace blink diff --git a/chromium/third_party/blink/renderer/modules/filesystem/file_system_directory_iterator.cc b/chromium/third_party/blink/renderer/modules/filesystem/file_system_directory_iterator.cc index d7fa8b6cebe..4633c667983 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/file_system_directory_iterator.cc +++ b/chromium/third_party/blink/renderer/modules/filesystem/file_system_directory_iterator.cc @@ -55,19 +55,21 @@ FileSystemDirectoryIterator::FileSystemDirectoryIterator( DOMFileSystemBase* file_system, const String& full_path) : DirectoryReaderBase(file_system, full_path) { - Filesystem()->ReadDirectory(this, full_path_, new EntriesCallbackHelper(this), - new ErrorCallbackHelper(this)); + Filesystem()->ReadDirectory(this, full_path_, + MakeGarbageCollected<EntriesCallbackHelper>(this), + MakeGarbageCollected<ErrorCallbackHelper>(this)); } ScriptPromise FileSystemDirectoryIterator::next(ScriptState* script_state) { if (error_ != base::File::FILE_OK) { return ScriptPromise::RejectWithDOMException( - script_state, FileError::CreateDOMException(error_)); + script_state, file_error::CreateDOMException(error_)); } if (!entries_.IsEmpty()) { - FileSystemDirectoryIteratorEntry result; - result.setValue(entries_.TakeFirst()->asFileSystemHandle()); + FileSystemDirectoryIteratorEntry* result = + FileSystemDirectoryIteratorEntry::Create(); + result->setValue(entries_.TakeFirst()->asFileSystemHandle()); return ScriptPromise::Cast(script_state, ToV8(result, script_state)); } @@ -77,8 +79,9 @@ ScriptPromise FileSystemDirectoryIterator::next(ScriptState* script_state) { return pending_next_->Promise(); } - FileSystemDirectoryIteratorEntry result; - result.setDone(true); + FileSystemDirectoryIteratorEntry* result = + FileSystemDirectoryIteratorEntry::Create(); + result->setDone(true); return ScriptPromise::Cast(script_state, ToV8(result, script_state)); } @@ -102,7 +105,7 @@ void FileSystemDirectoryIterator::AddEntries(const EntryHeapVector& entries) { void FileSystemDirectoryIterator::OnError(base::File::Error error) { error_ = error; if (pending_next_) { - pending_next_->Reject(FileError::CreateDOMException(error)); + pending_next_->Reject(file_error::CreateDOMException(error)); pending_next_ = nullptr; } } diff --git a/chromium/third_party/blink/renderer/modules/filesystem/file_system_file_handle.cc b/chromium/third_party/blink/renderer/modules/filesystem/file_system_file_handle.cc index 9bf62daa4fc..95e9823fce2 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/file_system_file_handle.cc +++ b/chromium/third_party/blink/renderer/modules/filesystem/file_system_file_handle.cc @@ -13,6 +13,7 @@ #include "third_party/blink/renderer/modules/filesystem/file_system_callbacks.h" #include "third_party/blink/renderer/modules/filesystem/file_system_dispatcher.h" #include "third_party/blink/renderer/modules/filesystem/file_system_writer.h" +#include "third_party/blink/renderer/platform/wtf/functional.h" namespace blink { @@ -50,9 +51,10 @@ ScriptPromise FileSystemFileHandle::createWriter(ScriptState* script_state) { [](ScriptPromiseResolver* resolver, base::File::Error result, mojom::blink::FileWriterPtr writer) { if (result == base::File::FILE_OK) { - resolver->Resolve(new FileSystemWriter(std::move(writer))); + resolver->Resolve(MakeGarbageCollected<FileSystemWriter>( + std::move(writer))); } else { - resolver->Reject(FileError::CreateDOMException(result)); + resolver->Reject(file_error::CreateDOMException(result)); } }, WrapPersistent(resolver))); @@ -64,12 +66,13 @@ ScriptPromise FileSystemFileHandle::getFile(ScriptState* script_state) { ScriptPromise result = resolver->Promise(); KURL file_system_url = filesystem()->CreateFileSystemURL(this); FileSystemDispatcher::From(ExecutionContext::From(script_state)) - .CreateSnapshotFile(file_system_url, - SnapshotFileCallback::Create( - filesystem(), name(), file_system_url, - new OnDidCreateSnapshotFilePromise(resolver), - new PromiseErrorCallback(resolver), - ExecutionContext::From(script_state))); + .CreateSnapshotFile( + file_system_url, + SnapshotFileCallback::Create( + filesystem(), name(), file_system_url, + new OnDidCreateSnapshotFilePromise(resolver), + MakeGarbageCollected<PromiseErrorCallback>(resolver), + ExecutionContext::From(script_state))); return result; } diff --git a/chromium/third_party/blink/renderer/modules/filesystem/file_system_writer.cc b/chromium/third_party/blink/renderer/modules/filesystem/file_system_writer.cc index 89ec9b3f123..9a0dcd3f2bc 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/file_system_writer.cc +++ b/chromium/third_party/blink/renderer/modules/filesystem/file_system_writer.cc @@ -6,12 +6,13 @@ #include "third_party/blink/renderer/bindings/core/v8/script_promise.h" #include "third_party/blink/renderer/bindings/core/v8/v8_blob.h" +#include "third_party/blink/renderer/bindings/core/v8/v8_readable_stream.h" #include "third_party/blink/renderer/core/dom/dom_exception.h" #include "third_party/blink/renderer/core/fetch/fetch_data_loader.h" #include "third_party/blink/renderer/core/fetch/readable_stream_bytes_consumer.h" #include "third_party/blink/renderer/core/fileapi/blob.h" #include "third_party/blink/renderer/core/fileapi/file_error.h" -#include "third_party/blink/renderer/core/streams/readable_stream_operations.h" +#include "third_party/blink/renderer/core/streams/readable_stream.h" #include "third_party/blink/renderer/platform/wtf/functional.h" namespace blink { @@ -26,18 +27,18 @@ ScriptPromise FileSystemWriter::write(ScriptState* script_state, ScriptValue data, ExceptionState& exception_state) { v8::Isolate* isolate = script_state->GetIsolate(); - if (V8Blob::hasInstance(data.V8Value(), isolate)) { + if (V8Blob::HasInstance(data.V8Value(), isolate)) { Blob* blob = V8Blob::ToImpl(data.V8Value().As<v8::Object>()); return WriteBlob(script_state, position, blob); } - if (!ReadableStreamOperations::IsReadableStream(script_state, data, - exception_state) - .value_or(false)) { + if (!V8ReadableStream::HasInstance(data.V8Value(), isolate)) { if (!exception_state.HadException()) exception_state.ThrowTypeError("data should be a Blob or ReadableStream"); return ScriptPromise(); } - return WriteStream(script_state, position, data, exception_state); + return WriteStream(script_state, position, + V8ReadableStream::ToImpl(data.V8Value().As<v8::Object>()), + exception_state); } ScriptPromise FileSystemWriter::WriteBlob(ScriptState* script_state, @@ -92,7 +93,7 @@ class FileSystemWriter::StreamWriterClient DCHECK(writer_->pending_operation_); did_complete_ = true; writer_->pending_operation_->Reject( - FileError::CreateDOMException(base::File::FILE_ERROR_FAILED)); + file_error::CreateDOMException(base::File::FILE_ERROR_FAILED)); Reset(); } @@ -104,7 +105,7 @@ class FileSystemWriter::StreamWriterClient DCHECK(writer_->pending_operation_); did_complete_ = true; writer_->pending_operation_->Reject( - FileError::CreateDOMException(base::File::FILE_ERROR_ABORT)); + file_error::CreateDOMException(base::File::FILE_ERROR_ABORT)); Reset(); } @@ -116,7 +117,7 @@ class FileSystemWriter::StreamWriterClient did_complete_ = true; if (result != base::File::FILE_OK) { writer_->pending_operation_->Reject( - FileError::CreateDOMException(result)); + file_error::CreateDOMException(result)); } else { DCHECK(did_finish_writing_to_pipe_); writer_->pending_operation_->Resolve(); @@ -143,7 +144,7 @@ class FileSystemWriter::StreamWriterClient ScriptPromise FileSystemWriter::WriteStream(ScriptState* script_state, uint64_t position, - ScriptValue stream, + ReadableStream* stream, ExceptionState& exception_state) { if (!writer_ || pending_operation_) { return ScriptPromise::RejectWithDOMException( @@ -152,11 +153,11 @@ ScriptPromise FileSystemWriter::WriteStream(ScriptState* script_state, } DCHECK(!stream_loader_); - auto reader = ReadableStreamOperations::GetReader(script_state, stream, - exception_state); + auto reader = stream->getReader(script_state, exception_state); if (exception_state.HadException()) return ScriptPromise(); - auto* consumer = new ReadableStreamBytesConsumer(script_state, reader); + auto* consumer = + MakeGarbageCollected<ReadableStreamBytesConsumer>(script_state, reader); stream_loader_ = FetchDataLoader::CreateLoaderAsDataPipe( ExecutionContext::From(script_state) @@ -207,7 +208,7 @@ void FileSystemWriter::WriteComplete(base::File::Error result, if (result == base::File::FILE_OK) { pending_operation_->Resolve(); } else { - pending_operation_->Reject(FileError::CreateDOMException(result)); + pending_operation_->Reject(file_error::CreateDOMException(result)); } pending_operation_ = nullptr; } @@ -217,7 +218,7 @@ void FileSystemWriter::TruncateComplete(base::File::Error result) { if (result == base::File::FILE_OK) { pending_operation_->Resolve(); } else { - pending_operation_->Reject(FileError::CreateDOMException(result)); + pending_operation_->Reject(file_error::CreateDOMException(result)); } pending_operation_ = nullptr; } diff --git a/chromium/third_party/blink/renderer/modules/filesystem/file_system_writer.h b/chromium/third_party/blink/renderer/modules/filesystem/file_system_writer.h index 6fa00725759..a0e417fb724 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/file_system_writer.h +++ b/chromium/third_party/blink/renderer/modules/filesystem/file_system_writer.h @@ -14,6 +14,7 @@ namespace blink { class Blob; class ExceptionState; class FetchDataLoader; +class ReadableStream; class ScriptPromise; class ScriptPromiseResolver; class ScriptState; @@ -40,7 +41,7 @@ class FileSystemWriter final : public ScriptWrappable { ScriptPromise WriteBlob(ScriptState*, uint64_t position, Blob*); ScriptPromise WriteStream(ScriptState*, uint64_t position, - ScriptValue stream, + ReadableStream* stream, ExceptionState&); void WriteComplete(base::File::Error result, uint64_t bytes_written); diff --git a/chromium/third_party/blink/renderer/modules/filesystem/file_writer.cc b/chromium/third_party/blink/renderer/modules/filesystem/file_writer.cc index 5ad31e6b662..94dbe810812 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/file_writer.cc +++ b/chromium/third_party/blink/renderer/modules/filesystem/file_writer.cc @@ -33,6 +33,7 @@ #include "third_party/blink/public/platform/web_url.h" #include "third_party/blink/renderer/core/events/progress_event.h" #include "third_party/blink/renderer/core/fileapi/blob.h" +#include "third_party/blink/renderer/core/fileapi/file_error.h" #include "third_party/blink/renderer/core/probe/core_probes.h" #include "third_party/blink/renderer/modules/filesystem/file_system_dispatcher.h" #include "third_party/blink/renderer/platform/bindings/exception_state.h" @@ -44,7 +45,7 @@ static const int kMaxRecursionDepth = 3; static const double kProgressNotificationIntervalMS = 50; FileWriter* FileWriter::Create(ExecutionContext* context) { - return new FileWriter(context); + return MakeGarbageCollected<FileWriter>(context); } FileWriter::FileWriter(ExecutionContext* context) @@ -65,7 +66,7 @@ FileWriter::~FileWriter() { } const AtomicString& FileWriter::InterfaceName() const { - return EventTargetNames::FileWriter; + return event_target_names::kFileWriter; } void FileWriter::ContextDestroyed(ExecutionContext*) { @@ -83,11 +84,11 @@ void FileWriter::write(Blob* data, ExceptionState& exception_state) { DCHECK(data); DCHECK_EQ(truncate_length_, -1); if (ready_state_ == kWriting) { - SetError(FileError::kInvalidStateErr, exception_state); + SetError(FileErrorCode::kInvalidStateErr, exception_state); return; } if (recursion_depth_ > kMaxRecursionDepth) { - SetError(FileError::kSecurityErr, exception_state); + SetError(FileErrorCode::kSecurityErr, exception_state); return; } @@ -104,14 +105,14 @@ void FileWriter::write(Blob* data, ExceptionState& exception_state) { } else DoOperation(kOperationWrite); - FireEvent(EventTypeNames::writestart); + FireEvent(event_type_names::kWritestart); } void FileWriter::seek(long long position, ExceptionState& exception_state) { if (!GetExecutionContext()) return; if (ready_state_ == kWriting) { - SetError(FileError::kInvalidStateErr, exception_state); + SetError(FileErrorCode::kInvalidStateErr, exception_state); return; } @@ -125,11 +126,11 @@ void FileWriter::truncate(long long position, ExceptionState& exception_state) { return; DCHECK_EQ(truncate_length_, -1); if (ready_state_ == kWriting || position < 0) { - SetError(FileError::kInvalidStateErr, exception_state); + SetError(FileErrorCode::kInvalidStateErr, exception_state); return; } if (recursion_depth_ > kMaxRecursionDepth) { - SetError(FileError::kSecurityErr, exception_state); + SetError(FileErrorCode::kSecurityErr, exception_state); return; } @@ -145,7 +146,7 @@ void FileWriter::truncate(long long position, ExceptionState& exception_state) { queued_operation_ = kOperationTruncate; } else DoOperation(kOperationTruncate); - FireEvent(EventTypeNames::writestart); + FireEvent(event_type_names::kWritestart); } void FileWriter::abort(ExceptionState& exception_state) { @@ -187,7 +188,7 @@ void FileWriter::DidWriteImpl(int64_t bytes, bool complete) { (now - last_progress_notification_time_ms_ > kProgressNotificationIntervalMS)) { last_progress_notification_time_ms_ = now; - FireEvent(EventTypeNames::progress); + FireEvent(event_type_names::kProgress); } if (complete) { @@ -295,14 +296,15 @@ void FileWriter::SignalCompletion(base::File::Error error) { ready_state_ = kDone; truncate_length_ = -1; if (error != base::File::FILE_OK) { - error_ = FileError::CreateDOMException(error); + error_ = file_error::CreateDOMException(error); if (base::File::FILE_ERROR_ABORT == error) - FireEvent(EventTypeNames::abort); + FireEvent(event_type_names::kAbort); else - FireEvent(EventTypeNames::error); - } else - FireEvent(EventTypeNames::write); - FireEvent(EventTypeNames::writeend); + FireEvent(event_type_names::kError); + } else { + FireEvent(event_type_names::kWrite); + } + FireEvent(event_type_names::kWriteend); probe::AsyncTaskCanceled(GetExecutionContext(), this); } @@ -316,11 +318,11 @@ void FileWriter::FireEvent(const AtomicString& type) { DCHECK_GE(recursion_depth_, 0); } -void FileWriter::SetError(FileError::ErrorCode error_code, +void FileWriter::SetError(FileErrorCode error_code, ExceptionState& exception_state) { - DCHECK(error_code); - FileError::ThrowDOMException(exception_state, error_code); - error_ = FileError::CreateDOMException(error_code); + DCHECK_NE(error_code, FileErrorCode::kOK); + file_error::ThrowDOMException(exception_state, error_code); + error_ = file_error::CreateDOMException(error_code); } void FileWriter::Dispose() { diff --git a/chromium/third_party/blink/renderer/modules/filesystem/file_writer.h b/chromium/third_party/blink/renderer/modules/filesystem/file_writer.h index 69c38d342df..64842401600 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/file_writer.h +++ b/chromium/third_party/blink/renderer/modules/filesystem/file_writer.h @@ -34,7 +34,6 @@ #include "third_party/blink/renderer/bindings/core/v8/active_script_wrappable.h" #include "third_party/blink/renderer/core/dom/context_lifecycle_observer.h" #include "third_party/blink/renderer/core/execution_context/execution_context.h" -#include "third_party/blink/renderer/core/fileapi/file_error.h" #include "third_party/blink/renderer/modules/event_target_modules.h" #include "third_party/blink/renderer/modules/filesystem/file_writer_base.h" #include "third_party/blink/renderer/platform/heap/handle.h" @@ -42,8 +41,10 @@ namespace blink { class Blob; +class DOMException; class ExceptionState; class ExecutionContext; +enum class FileErrorCode; class FileWriter final : public EventTargetWithInlineData, public FileWriterBase, @@ -55,6 +56,8 @@ class FileWriter final : public EventTargetWithInlineData, public: static FileWriter* Create(ExecutionContext*); + + explicit FileWriter(ExecutionContext*); ~FileWriter() override; enum ReadyState { kInit = 0, kWriting = 1, kDone = 2 }; @@ -88,12 +91,12 @@ class FileWriter final : public EventTargetWithInlineData, return ContextLifecycleObserver::GetExecutionContext(); } - DEFINE_ATTRIBUTE_EVENT_LISTENER(writestart); - DEFINE_ATTRIBUTE_EVENT_LISTENER(progress); - DEFINE_ATTRIBUTE_EVENT_LISTENER(write); - DEFINE_ATTRIBUTE_EVENT_LISTENER(abort); - DEFINE_ATTRIBUTE_EVENT_LISTENER(error); - DEFINE_ATTRIBUTE_EVENT_LISTENER(writeend); + DEFINE_ATTRIBUTE_EVENT_LISTENER(writestart, kWritestart); + DEFINE_ATTRIBUTE_EVENT_LISTENER(progress, kProgress); + DEFINE_ATTRIBUTE_EVENT_LISTENER(write, kWrite); + DEFINE_ATTRIBUTE_EVENT_LISTENER(abort, kAbort); + DEFINE_ATTRIBUTE_EVENT_LISTENER(error, kError); + DEFINE_ATTRIBUTE_EVENT_LISTENER(writeend, kWriteend); void Trace(blink::Visitor*) override; @@ -105,8 +108,6 @@ class FileWriter final : public EventTargetWithInlineData, kOperationAbort }; - explicit FileWriter(ExecutionContext*); - void CompleteAbort(); void DoOperation(Operation); @@ -115,7 +116,7 @@ class FileWriter final : public EventTargetWithInlineData, void FireEvent(const AtomicString& type); - void SetError(FileError::ErrorCode, ExceptionState&); + void SetError(FileErrorCode, ExceptionState&); void Dispose(); diff --git a/chromium/third_party/blink/renderer/modules/filesystem/file_writer_sync.cc b/chromium/third_party/blink/renderer/modules/filesystem/file_writer_sync.cc index e9c20b16cc1..702cd3cf6f2 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/file_writer_sync.cc +++ b/chromium/third_party/blink/renderer/modules/filesystem/file_writer_sync.cc @@ -34,6 +34,7 @@ #include "third_party/blink/renderer/core/fileapi/blob.h" #include "third_party/blink/renderer/modules/filesystem/file_system_dispatcher.h" #include "third_party/blink/renderer/platform/bindings/exception_state.h" +#include "third_party/blink/renderer/platform/wtf/functional.h" namespace blink { @@ -45,7 +46,7 @@ void FileWriterSync::write(Blob* data, ExceptionState& exception_state) { Write(position(), data->Uuid()); DCHECK(complete_); if (error_) { - FileError::ThrowDOMException(exception_state, error_); + file_error::ThrowDOMException(exception_state, error_); return; } SetPosition(position() + data->size()); @@ -63,14 +64,14 @@ void FileWriterSync::truncate(long long offset, DCHECK(complete_); if (offset < 0) { exception_state.ThrowDOMException(DOMExceptionCode::kInvalidStateError, - FileError::kInvalidStateErrorMessage); + file_error::kInvalidStateErrorMessage); return; } PrepareForWrite(); Truncate(offset); DCHECK(complete_); if (error_) { - FileError::ThrowDOMException(exception_state, error_); + file_error::ThrowDOMException(exception_state, error_); return; } if (offset < position()) diff --git a/chromium/third_party/blink/renderer/modules/filesystem/file_writer_sync.h b/chromium/third_party/blink/renderer/modules/filesystem/file_writer_sync.h index 656160699d8..fff8ede6c2a 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/file_writer_sync.h +++ b/chromium/third_party/blink/renderer/modules/filesystem/file_writer_sync.h @@ -50,8 +50,10 @@ class FileWriterSync final : public ScriptWrappable, public: static FileWriterSync* Create(ExecutionContext* context) { - return new FileWriterSync(context); + return MakeGarbageCollected<FileWriterSync>(context); } + + explicit FileWriterSync(ExecutionContext* context); ~FileWriterSync() override; void Trace(blink::Visitor*) override; @@ -70,7 +72,6 @@ class FileWriterSync final : public ScriptWrappable, void DoCancel() override; private: - explicit FileWriterSync(ExecutionContext* context); void PrepareForWrite(); base::File::Error error_; diff --git a/chromium/third_party/blink/renderer/modules/filesystem/local_file_system.cc b/chromium/third_party/blink/renderer/modules/filesystem/local_file_system.cc index c14ff58d913..b08ad890d0e 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/local_file_system.cc +++ b/chromium/third_party/blink/renderer/modules/filesystem/local_file_system.cc @@ -206,7 +206,7 @@ LocalFileSystem* LocalFileSystem::From(ExecutionContext& context) { return file_system; } - WorkerClients* clients = ToWorkerGlobalScope(context).Clients(); + WorkerClients* clients = To<WorkerGlobalScope>(context).Clients(); DCHECK(clients); LocalFileSystem* file_system = Supplement<WorkerClients>::From<LocalFileSystem>(clients); @@ -216,13 +216,15 @@ LocalFileSystem* LocalFileSystem::From(ExecutionContext& context) { void ProvideLocalFileSystemTo(LocalFrame& frame, std::unique_ptr<FileSystemClient> client) { - frame.ProvideSupplement(new LocalFileSystem(frame, std::move(client))); + frame.ProvideSupplement( + MakeGarbageCollected<LocalFileSystem>(frame, std::move(client))); } void ProvideLocalFileSystemToWorker(WorkerClients* worker_clients, std::unique_ptr<FileSystemClient> client) { - Supplement<WorkerClients>::ProvideTo( - *worker_clients, new LocalFileSystem(*worker_clients, std::move(client))); + Supplement<WorkerClients>::ProvideTo(*worker_clients, + MakeGarbageCollected<LocalFileSystem>( + *worker_clients, std::move(client))); } } // namespace blink diff --git a/chromium/third_party/blink/renderer/modules/filesystem/local_file_system_client.cc b/chromium/third_party/blink/renderer/modules/filesystem/local_file_system_client.cc index ab6d6ec45b5..98d9354e832 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/local_file_system_client.cc +++ b/chromium/third_party/blink/renderer/modules/filesystem/local_file_system_client.cc @@ -33,8 +33,8 @@ #include <memory> #include "base/memory/ptr_util.h" +#include "third_party/blink/public/platform/web_content_settings_client.h" #include "third_party/blink/renderer/core/dom/document.h" -#include "third_party/blink/renderer/core/frame/content_settings_client.h" #include "third_party/blink/renderer/core/frame/local_frame.h" #include "third_party/blink/renderer/core/workers/worker_content_settings_client.h" #include "third_party/blink/renderer/core/workers/worker_global_scope.h" @@ -60,8 +60,7 @@ bool LocalFileSystemClient::RequestFileSystemAccessSync( return false; } - DCHECK(context->IsWorkerGlobalScope()); - return WorkerContentSettingsClient::From(*ToWorkerGlobalScope(context)) + return WorkerContentSettingsClient::From(*To<WorkerGlobalScope>(context)) ->RequestFileSystemAccessSync(); } @@ -76,10 +75,11 @@ void LocalFileSystemClient::RequestFileSystemAccessAsync( return; } - DCHECK(document->GetFrame()); - document->GetFrame() - ->GetContentSettingsClient() - ->RequestFileSystemAccessAsync(std::move(callbacks)); + if (auto* client = document->GetFrame()->GetContentSettingsClient()) { + client->RequestFileSystemAccessAsync(std::move(callbacks)); + } else { + callbacks->OnAllowed(); + } } LocalFileSystemClient::LocalFileSystemClient() = default; diff --git a/chromium/third_party/blink/renderer/modules/filesystem/metadata.h b/chromium/third_party/blink/renderer/modules/filesystem/metadata.h index 93a6ee2ba0f..8bff4aee445 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/metadata.h +++ b/chromium/third_party/blink/renderer/modules/filesystem/metadata.h @@ -42,13 +42,16 @@ class Metadata final : public ScriptWrappable { public: static Metadata* Create(const FileMetadata& platform_metadata) { - return new Metadata(platform_metadata); + return MakeGarbageCollected<Metadata>(platform_metadata); } static Metadata* Create(Metadata* metadata) { - return new Metadata(metadata->platform_metadata_); + return MakeGarbageCollected<Metadata>(metadata->platform_metadata_); } + explicit Metadata(const FileMetadata& platform_metadata) + : platform_metadata_(platform_metadata) {} + // Return Epoch time in milliseconds for Date. double modificationTime() const { return platform_metadata_.modification_time; @@ -58,9 +61,6 @@ class Metadata final : public ScriptWrappable { } private: - explicit Metadata(const FileMetadata& platform_metadata) - : platform_metadata_(platform_metadata) {} - FileMetadata platform_metadata_; }; diff --git a/chromium/third_party/blink/renderer/modules/filesystem/sync_callback_helper.h b/chromium/third_party/blink/renderer/modules/filesystem/sync_callback_helper.h index c01ed1c6d63..805ce4c2114 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/sync_callback_helper.h +++ b/chromium/third_party/blink/renderer/modules/filesystem/sync_callback_helper.h @@ -45,19 +45,23 @@ class DOMFileSystemCallbacksSyncHelper final DOMFileSystemCallbacksSyncHelper<SuccessCallback, CallbackArg>> { public: static DOMFileSystemCallbacksSyncHelper* Create() { - return new DOMFileSystemCallbacksSyncHelper(); + return MakeGarbageCollected<DOMFileSystemCallbacksSyncHelper>(); } + DOMFileSystemCallbacksSyncHelper() = default; + void Trace(blink::Visitor* visitor) { visitor->Trace(result_); } SuccessCallback* GetSuccessCallback() { return new SuccessCallbackImpl(this); } - ErrorCallbackBase* GetErrorCallback() { return new ErrorCallbackImpl(this); } + ErrorCallbackBase* GetErrorCallback() { + return MakeGarbageCollected<ErrorCallbackImpl>(this); + } CallbackArg* GetResultOrThrow(ExceptionState& exception_state) { if (error_code_ != base::File::FILE_OK) { - FileError::ThrowDOMException(exception_state, error_code_); + file_error::ThrowDOMException(exception_state, error_code_); return nullptr; } @@ -86,6 +90,9 @@ class DOMFileSystemCallbacksSyncHelper final class ErrorCallbackImpl final : public ErrorCallbackBase { public: + explicit ErrorCallbackImpl(DOMFileSystemCallbacksSyncHelper* helper) + : helper_(helper) {} + void Trace(blink::Visitor* visitor) override { visitor->Trace(helper_); ErrorCallbackBase::Trace(visitor); @@ -96,15 +103,11 @@ class DOMFileSystemCallbacksSyncHelper final } private: - explicit ErrorCallbackImpl(DOMFileSystemCallbacksSyncHelper* helper) - : helper_(helper) {} Member<DOMFileSystemCallbacksSyncHelper> helper_; friend class DOMFileSystemCallbacksSyncHelper; }; - DOMFileSystemCallbacksSyncHelper() = default; - Member<CallbackArg> result_; base::File::Error error_code_ = base::File::FILE_OK; diff --git a/chromium/third_party/blink/renderer/modules/filesystem/worker_global_scope_file_system.cc b/chromium/third_party/blink/renderer/modules/filesystem/worker_global_scope_file_system.cc index 713954c0e53..deb97585efa 100644 --- a/chromium/third_party/blink/renderer/modules/filesystem/worker_global_scope_file_system.cc +++ b/chromium/third_party/blink/renderer/modules/filesystem/worker_global_scope_file_system.cc @@ -86,7 +86,7 @@ DOMFileSystemSync* WorkerGlobalScopeFileSystem::webkitRequestFileSystemSync( ExceptionState& exception_state) { ExecutionContext* secure_context = worker.GetExecutionContext(); if (!secure_context->GetSecurityOrigin()->CanAccessFileSystem()) { - exception_state.ThrowSecurityError(FileError::kSecurityErrorMessage); + exception_state.ThrowSecurityError(file_error::kSecurityErrorMessage); return nullptr; } else if (secure_context->GetSecurityOrigin()->IsLocal()) { UseCounter::Count(secure_context, WebFeature::kFileAccessedFileSystem); @@ -155,7 +155,7 @@ EntrySync* WorkerGlobalScopeFileSystem::webkitResolveLocalFileSystemSyncURL( ExecutionContext* secure_context = worker.GetExecutionContext(); if (!secure_context->GetSecurityOrigin()->CanAccessFileSystem() || !secure_context->GetSecurityOrigin()->CanRequest(completed_url)) { - exception_state.ThrowSecurityError(FileError::kSecurityErrorMessage); + exception_state.ThrowSecurityError(file_error::kSecurityErrorMessage); return nullptr; } else if (secure_context->GetSecurityOrigin()->IsLocal()) { UseCounter::Count(secure_context, WebFeature::kFileAccessedFileSystem); |