diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/modules/file_system_access/file_system_directory_handle.h')
-rw-r--r-- | chromium/third_party/blink/renderer/modules/file_system_access/file_system_directory_handle.h | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/chromium/third_party/blink/renderer/modules/file_system_access/file_system_directory_handle.h b/chromium/third_party/blink/renderer/modules/file_system_access/file_system_directory_handle.h new file mode 100644 index 00000000000..0ade0d772fe --- /dev/null +++ b/chromium/third_party/blink/renderer/modules/file_system_access/file_system_directory_handle.h @@ -0,0 +1,77 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_FILE_SYSTEM_ACCESS_FILE_SYSTEM_DIRECTORY_HANDLE_H_ +#define THIRD_PARTY_BLINK_RENDERER_MODULES_FILE_SYSTEM_ACCESS_FILE_SYSTEM_DIRECTORY_HANDLE_H_ + +#include "mojo/public/cpp/bindings/pending_remote.h" +#include "third_party/blink/public/mojom/file_system_access/file_system_access_directory_handle.mojom-blink.h" +#include "third_party/blink/renderer/modules/file_system_access/file_system_handle.h" +#include "third_party/blink/renderer/platform/mojo/heap_mojo_remote.h" + +namespace blink { +class FileSystemGetDirectoryOptions; +class FileSystemGetFileOptions; +class FileSystemRemoveOptions; +class FileSystemDirectoryIterator; + +class FileSystemDirectoryHandle final : public FileSystemHandle { + DEFINE_WRAPPERTYPEINFO(); + + public: + FileSystemDirectoryHandle( + ExecutionContext* context, + const String& name, + mojo::PendingRemote<mojom::blink::FileSystemAccessDirectoryHandle>); + + // FileSystemDirectoryHandle IDL interface: + FileSystemDirectoryIterator* entries(); + FileSystemDirectoryIterator* keys(); + FileSystemDirectoryIterator* values(); + + bool isDirectory() const override { return true; } + + ScriptPromise getFileHandle(ScriptState*, + const String& name, + const FileSystemGetFileOptions*); + ScriptPromise getDirectoryHandle(ScriptState*, + const String& name, + const FileSystemGetDirectoryOptions*); + ScriptValue getEntries(ScriptState*); + ScriptPromise removeEntry(ScriptState*, + const String& name, + const FileSystemRemoveOptions*); + + ScriptPromise resolve(ScriptState*, FileSystemHandle* possible_child); + + mojo::PendingRemote<mojom::blink::FileSystemAccessTransferToken> Transfer() + override; + + mojom::blink::FileSystemAccessDirectoryHandle* MojoHandle() { + return mojo_ptr_.get(); + } + + void Trace(Visitor*) const override; + + private: + void QueryPermissionImpl( + bool writable, + base::OnceCallback<void(mojom::blink::PermissionStatus)>) override; + void RequestPermissionImpl( + bool writable, + base::OnceCallback<void(mojom::blink::FileSystemAccessErrorPtr, + mojom::blink::PermissionStatus)>) override; + // IsSameEntry for directories is implemented in terms of resolve, as resolve + // also can be used to figure out if two directories are the same entry. + void IsSameEntryImpl( + mojo::PendingRemote<mojom::blink::FileSystemAccessTransferToken> other, + base::OnceCallback<void(mojom::blink::FileSystemAccessErrorPtr, bool)>) + override; + + HeapMojoRemote<mojom::blink::FileSystemAccessDirectoryHandle> mojo_ptr_; +}; + +} // namespace blink + +#endif // THIRD_PARTY_BLINK_RENDERER_MODULES_FILE_SYSTEM_ACCESS_FILE_SYSTEM_DIRECTORY_HANDLE_H_ |