summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/modules/file_system_access/file_system_directory_handle.h
diff options
context:
space:
mode:
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.h77
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_