Skip to content

Commit

Permalink
Update idlharness.js tests for new File System standard (web-platform…
Browse files Browse the repository at this point in the history
…-tests#33447)

This includes interfaces/ changes from @webref/idl:
web-platform-tests#33446
  • Loading branch information
foolip authored Apr 1, 2022
1 parent f6a696e commit 7d7911e
Show file tree
Hide file tree
Showing 5 changed files with 106 additions and 77 deletions.
12 changes: 7 additions & 5 deletions file-system-access/idlharness.https.any.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,13 @@

idl_test(
['file-system-access'],
['storage', 'permissions', 'streams', 'html', 'dom'],
['fs', 'permissions', 'html', 'dom'],
idl_array => {
idl_array.add_objects({
// TODO: Add instances of FileSystemHandle, FileSystemFileHandle,
// FileSystemDirectoryHandle and FileSystemWriter.
});
if (self.GLOBAL.isWindow()) {
idl_array.add_objects({
Window: ['window'],
// TODO: DataTransferItem
});
}
}
);
3 changes: 3 additions & 0 deletions fs/META.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
spec: https://fs.spec.whatwg.org/
suggested_reviewers:
- mkruisselbrink
17 changes: 17 additions & 0 deletions fs/idlharness.https.any.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
// META: script=/resources/WebIDLParser.js
// META: script=/resources/idlharness.js
// META: timeout=long

'use strict';

idl_test(
['fs'],
['storage', 'streams'],
idl_array => {
idl_array.add_objects({
// TODO: Add instances of FileSystemHandle, FileSystemFileHandle,
// FileSystemDirectoryHandle, FileSystemWritableFileStream, and
// StorageManager.
});
}
);
73 changes: 1 addition & 72 deletions interfaces/file-system-access.idl
Original file line number Diff line number Diff line change
Expand Up @@ -17,78 +17,12 @@ dictionary FileSystemHandlePermissionDescriptor {
FileSystemPermissionMode mode = "read";
};

enum FileSystemHandleKind {
"file",
"directory",
};

[Exposed=(Window,Worker), SecureContext, Serializable]
interface FileSystemHandle {
readonly attribute FileSystemHandleKind kind;
readonly attribute USVString name;

Promise<boolean> isSameEntry(FileSystemHandle other);

partial interface FileSystemHandle {
Promise<PermissionState> queryPermission(optional FileSystemHandlePermissionDescriptor descriptor = {});
Promise<PermissionState> requestPermission(optional FileSystemHandlePermissionDescriptor descriptor = {});
};

dictionary FileSystemCreateWritableOptions {
boolean keepExistingData = false;
};

[Exposed=(Window,Worker), SecureContext, Serializable]
interface FileSystemFileHandle : FileSystemHandle {
Promise<File> getFile();
Promise<FileSystemWritableFileStream> createWritable(optional FileSystemCreateWritableOptions options = {});
};

dictionary FileSystemGetFileOptions {
boolean create = false;
};

dictionary FileSystemGetDirectoryOptions {
boolean create = false;
};

dictionary FileSystemRemoveOptions {
boolean recursive = false;
};

[Exposed=(Window,Worker), SecureContext, Serializable]
interface FileSystemDirectoryHandle : FileSystemHandle {
async iterable<USVString, FileSystemHandle>;

Promise<FileSystemFileHandle> getFileHandle(USVString name, optional FileSystemGetFileOptions options = {});
Promise<FileSystemDirectoryHandle> getDirectoryHandle(USVString name, optional FileSystemGetDirectoryOptions options = {});

Promise<undefined> removeEntry(USVString name, optional FileSystemRemoveOptions options = {});

Promise<sequence<USVString>?> resolve(FileSystemHandle possibleDescendant);
};

enum WriteCommandType {
"write",
"seek",
"truncate",
};

dictionary WriteParams {
required WriteCommandType type;
unsigned long long? size;
unsigned long long? position;
(BufferSource or Blob or USVString)? data;
};

typedef (BufferSource or Blob or USVString or WriteParams) FileSystemWriteChunkType;

[Exposed=(Window,Worker), SecureContext]
interface FileSystemWritableFileStream : WritableStream {
Promise<undefined> write(FileSystemWriteChunkType data);
Promise<undefined> seek(unsigned long long position);
Promise<undefined> truncate(unsigned long long size);
};

enum WellKnownDirectory {
"desktop",
"documents",
Expand Down Expand Up @@ -135,8 +69,3 @@ partial interface Window {
partial interface DataTransferItem {
Promise<FileSystemHandle?> getAsFileSystemHandle();
};

[SecureContext]
partial interface StorageManager {
Promise<FileSystemDirectoryHandle> getDirectory();
};
78 changes: 78 additions & 0 deletions interfaces/fs.idl
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
// GENERATED CONTENT - DO NOT EDIT
// Content was automatically extracted by Reffy into webref
// (https://github.com/w3c/webref)
// Source: File System Standard (https://fs.spec.whatwg.org/)

enum FileSystemHandleKind {
"file",
"directory",
};

[Exposed=(Window,Worker), SecureContext, Serializable]
interface FileSystemHandle {
readonly attribute FileSystemHandleKind kind;
readonly attribute USVString name;

Promise<boolean> isSameEntry(FileSystemHandle other);
};

dictionary FileSystemCreateWritableOptions {
boolean keepExistingData = false;
};

[Exposed=(Window,Worker), SecureContext, Serializable]
interface FileSystemFileHandle : FileSystemHandle {
Promise<File> getFile();
Promise<FileSystemWritableFileStream> createWritable(optional FileSystemCreateWritableOptions options = {});
};

dictionary FileSystemGetFileOptions {
boolean create = false;
};

dictionary FileSystemGetDirectoryOptions {
boolean create = false;
};

dictionary FileSystemRemoveOptions {
boolean recursive = false;
};

[Exposed=(Window,Worker), SecureContext, Serializable]
interface FileSystemDirectoryHandle : FileSystemHandle {
async iterable<USVString, FileSystemHandle>;

Promise<FileSystemFileHandle> getFileHandle(USVString name, optional FileSystemGetFileOptions options = {});
Promise<FileSystemDirectoryHandle> getDirectoryHandle(USVString name, optional FileSystemGetDirectoryOptions options = {});

Promise<undefined> removeEntry(USVString name, optional FileSystemRemoveOptions options = {});

Promise<sequence<USVString>?> resolve(FileSystemHandle possibleDescendant);
};

enum WriteCommandType {
"write",
"seek",
"truncate",
};

dictionary WriteParams {
required WriteCommandType type;
unsigned long long? size;
unsigned long long? position;
(BufferSource or Blob or USVString)? data;
};

typedef (BufferSource or Blob or USVString or WriteParams) FileSystemWriteChunkType;

[Exposed=(Window,Worker), SecureContext]
interface FileSystemWritableFileStream : WritableStream {
Promise<undefined> write(FileSystemWriteChunkType data);
Promise<undefined> seek(unsigned long long position);
Promise<undefined> truncate(unsigned long long size);
};

[SecureContext]
partial interface StorageManager {
Promise<FileSystemDirectoryHandle> getDirectory();
};

0 comments on commit 7d7911e

Please sign in to comment.