// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// https://fs.spec.whatwg.org/#enumdef-filesystemhandlekind
enum FileSystemHandleKind {
"file",
"directory",
};
// https://fs.spec.whatwg.org/#filesystemhandle
[
Exposed=(Window,Worker),
SecureContext,
Serializable,
RuntimeEnabled=FileSystemAccess
] interface FileSystemHandle {
// Brand checking APIs because javascript makes it otherwise really hard to
// figure out what type an object is when you don't know in which global
// (i.e. iframe) the object was created.
readonly attribute FileSystemHandleKind kind;
readonly attribute USVString name;
[CallWith=ScriptState] Promise<PermissionState> queryPermission(
optional FileSystemHandlePermissionDescriptor descriptor = {});
[
CallWith=ScriptState,
RaisesException
] Promise<PermissionState> requestPermission(
optional FileSystemHandlePermissionDescriptor descriptor = {});
// TODO(https://crbug.com/1250534): Measure these methods once directory
// moves are supported.
[
CallWith=ScriptState,
RaisesException,
RuntimeEnabled=FileSystemAccessAPIExperimental
] Promise<undefined> move(USVString new_entry_name);
[
CallWith=ScriptState,
RaisesException,
RuntimeEnabled=FileSystemAccessAPIExperimental
] Promise<undefined> move(FileSystemDirectoryHandle destination_directory);
[
CallWith=ScriptState,
RaisesException,
RuntimeEnabled=FileSystemAccessAPIExperimental
] Promise<undefined> move(FileSystemDirectoryHandle destination_directory,
USVString new_entry_name);
[
CallWith=ScriptState,
RaisesException,
Measure
] Promise<undefined> remove(optional FileSystemRemoveOptions options = {});
[
CallWith=ScriptState,
RaisesException,
Measure
] Promise<boolean> isSameEntry(FileSystemHandle other);
[
CallWith=ScriptState,
RaisesException,
Measure,
RuntimeEnabled=FileSystemAccessAPIExperimental
] Promise<USVString> getUniqueId();
[
CallWith=ScriptState,
RaisesException,
Measure,
RuntimeEnabled=FileSystemAccessGetCloudIdentifiers
]
Promise<sequence<FileSystemCloudIdentifier>> getCloudIdentifiers();
};