Diff
Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-IndexedDB.https.any.worker-expected.txt (284374 => 284375)
--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-IndexedDB.https.any.worker-expected.txt 2021-10-18 15:49:34 UTC (rev 284374)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-IndexedDB.https.any.worker-expected.txt 2021-10-18 16:07:47 UTC (rev 284375)
@@ -1,7 +1,7 @@
-FAIL Store handle in IndexedDB and read from pending transaction. promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL Store handle in IndexedDB and read from new transaction. promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL Store handles and blobs in IndexedDB. promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL Store handle in IndexedDB and read using a cursor. promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL Store handle in IndexedDB using inline keys. promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
+FAIL Store handle in IndexedDB and read from pending transaction. promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL Store handle in IndexedDB and read from new transaction. promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL Store handles and blobs in IndexedDB. promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL Store handle in IndexedDB and read using a cursor. promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL Store handle in IndexedDB using inline keys. promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-isSameEntry.https.any.worker-expected.txt (284374 => 284375)
--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-isSameEntry.https.any.worker-expected.txt 2021-10-18 15:49:34 UTC (rev 284374)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-isSameEntry.https.any.worker-expected.txt 2021-10-18 16:07:47 UTC (rev 284375)
@@ -1,10 +1,10 @@
-FAIL isSameEntry for identical directory handles returns true promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL isSameEntry for different directories returns false promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL isSameEntry for different handles for the same directory promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL isSameEntry for identical file handles returns true promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL isSameEntry for different files returns false promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL isSameEntry for different handles for the same file promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL isSameEntry comparing a file to a file in a different directory returns false promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL isSameEntry comparing a file to a directory returns false promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
+FAIL isSameEntry for identical directory handles returns true promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL isSameEntry for different directories returns false promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL isSameEntry for different handles for the same directory promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL isSameEntry for identical file handles returns true promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL isSameEntry for different files returns false promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL isSameEntry for different handles for the same file promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL isSameEntry comparing a file to a file in a different directory returns false promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL isSameEntry comparing a file to a directory returns false promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-remove.https.any.worker-expected.txt (284374 => 284375)
--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-remove.https.any.worker-expected.txt 2021-10-18 15:49:34 UTC (rev 284374)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemBaseHandle-remove.https.any.worker-expected.txt 2021-10-18 16:07:47 UTC (rev 284375)
@@ -1,9 +1,9 @@
-FAIL remove() to remove a file promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL remove() on an already removed file should fail promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL remove() to remove an empty directory promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL remove() on an already removed directory should fail promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL remove() on a non-empty directory should fail promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL remove() on a directory recursively should delete all sub-items promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL remove() on a file should ignore the recursive option promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
+FAIL remove() to remove a file promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL remove() on an already removed file should fail promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL remove() to remove an empty directory promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL remove() on an already removed directory should fail promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL remove() on a non-empty directory should fail promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL remove() on a directory recursively should delete all sub-items promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL remove() on a file should ignore the recursive option promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-getDirectoryHandle.https.any.worker-expected.txt (284374 => 284375)
--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-getDirectoryHandle.https.any.worker-expected.txt 2021-10-18 15:49:34 UTC (rev 284374)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-getDirectoryHandle.https.any.worker-expected.txt 2021-10-18 16:07:47 UTC (rev 284375)
@@ -1,12 +1,12 @@
-FAIL getDirectoryHandle(create=false) rejects for non-existing directories promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL getDirectoryHandle(create=true) creates an empty directory promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL getDirectoryHandle(create=false) returns existing directories promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL getDirectoryHandle(create=true) returns existing directories without erasing promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL getDirectoryHandle() when a file already exists with the same name promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL getDirectoryHandle() with empty name promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL getDirectoryHandle() with "." name promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL getDirectoryHandle() with ".." name promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL getDirectoryHandle(create=false) with a path separator when the directory exists promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL getDirectoryHandle(create=true) with a path separator promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
+FAIL getDirectoryHandle(create=false) rejects for non-existing directories promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL getDirectoryHandle(create=true) creates an empty directory promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL getDirectoryHandle(create=false) returns existing directories promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL getDirectoryHandle(create=true) returns existing directories without erasing promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL getDirectoryHandle() when a file already exists with the same name promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL getDirectoryHandle() with empty name promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL getDirectoryHandle() with "." name promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL getDirectoryHandle() with ".." name promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL getDirectoryHandle(create=false) with a path separator when the directory exists promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL getDirectoryHandle(create=true) with a path separator promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-getFileHandle.https.any.worker-expected.txt (284374 => 284375)
--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-getFileHandle.https.any.worker-expected.txt 2021-10-18 15:49:34 UTC (rev 284374)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-getFileHandle.https.any.worker-expected.txt 2021-10-18 16:07:47 UTC (rev 284375)
@@ -1,13 +1,13 @@
-FAIL getFileHandle(create=false) rejects for non-existing files promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL getFileHandle(create=true) creates an empty file for non-existing files promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL getFileHandle(create=false) returns existing files promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL getFileHandle(create=true) returns existing files without erasing promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL getFileHandle(create=false) when a directory already exists with the same name promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL getFileHandle(create=true) when a directory already exists with the same name promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL getFileHandle() with empty name promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL getFileHandle() with "." name promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL getFileHandle() with ".." name promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL getFileHandle(create=false) with a path separator when the file exists. promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL getFileHandle(create=true) with a path separator promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
+FAIL getFileHandle(create=false) rejects for non-existing files promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL getFileHandle(create=true) creates an empty file for non-existing files promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL getFileHandle(create=false) returns existing files promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL getFileHandle(create=true) returns existing files without erasing promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL getFileHandle(create=false) when a directory already exists with the same name promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL getFileHandle(create=true) when a directory already exists with the same name promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL getFileHandle() with empty name promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL getFileHandle() with "." name promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL getFileHandle() with ".." name promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL getFileHandle(create=false) with a path separator when the file exists. promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL getFileHandle(create=true) with a path separator promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-iteration.https.any.worker-expected.txt (284374 => 284375)
--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-iteration.https.any.worker-expected.txt 2021-10-18 15:49:34 UTC (rev 284374)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-iteration.https.any.worker-expected.txt 2021-10-18 16:07:47 UTC (rev 284375)
@@ -1,8 +1,8 @@
-FAIL returning early from an iteration doesn't crash promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL @@asyncIterator: full iteration works promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL entries: full iteration works promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL values: full iteration works promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL keys: full iteration works promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL iteration while iterator gets garbage collected promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
+FAIL returning early from an iteration doesn't crash promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL @@asyncIterator: full iteration works promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL entries: full iteration works promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL values: full iteration works promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL keys: full iteration works promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL iteration while iterator gets garbage collected promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-removeEntry.https.any.worker-expected.txt (284374 => 284375)
--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-removeEntry.https.any.worker-expected.txt 2021-10-18 15:49:34 UTC (rev 284374)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-removeEntry.https.any.worker-expected.txt 2021-10-18 16:07:47 UTC (rev 284375)
@@ -1,11 +1,11 @@
-FAIL removeEntry() to remove a file promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL removeEntry() on an already removed file should fail promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL removeEntry() to remove an empty directory promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL removeEntry() on a non-empty directory should fail promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL removeEntry() on a directory recursively should delete all sub-items promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL removeEntry() with empty name should fail promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL removeEntry() with "." name should fail promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL removeEntry() with ".." name should fail promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL removeEntry() with a path separator should fail. promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
+FAIL removeEntry() to remove a file promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL removeEntry() on an already removed file should fail promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL removeEntry() to remove an empty directory promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL removeEntry() on a non-empty directory should fail promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL removeEntry() on a directory recursively should delete all sub-items promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL removeEntry() with empty name should fail promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL removeEntry() with "." name should fail promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL removeEntry() with ".." name should fail promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL removeEntry() with a path separator should fail. promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-resolve.https.any.worker-expected.txt (284374 => 284375)
--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-resolve.https.any.worker-expected.txt 2021-10-18 15:49:34 UTC (rev 284374)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemDirectoryHandle-resolve.https.any.worker-expected.txt 2021-10-18 16:07:47 UTC (rev 284375)
@@ -1,6 +1,6 @@
-FAIL Resolve returns empty array for same directory promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL Resolve returns correct path promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL Resolve returns correct path with non-ascii characters promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL Resolve returns null when entry is not a child promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
+FAIL Resolve returns empty array for same directory promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL Resolve returns correct path promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL Resolve returns correct path with non-ascii characters promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL Resolve returns null when entry is not a child promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemFileHandle-getFile.https.any.worker-expected.txt (284374 => 284375)
--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemFileHandle-getFile.https.any.worker-expected.txt 2021-10-18 15:49:34 UTC (rev 284374)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemFileHandle-getFile.https.any.worker-expected.txt 2021-10-18 16:07:47 UTC (rev 284375)
@@ -1,4 +1,4 @@
-FAIL getFile() provides a file that can be sliced promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL getFile() returns last modified time promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
+FAIL getFile() provides a file that can be sliced promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL getFile() returns last modified time promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemFileHandle-sync-access-handle-lock.https.tentative.worker-expected.txt (284374 => 284375)
--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemFileHandle-sync-access-handle-lock.https.tentative.worker-expected.txt 2021-10-18 15:49:34 UTC (rev 284374)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemFileHandle-sync-access-handle-lock.https.tentative.worker-expected.txt 2021-10-18 16:07:47 UTC (rev 284375)
@@ -1,4 +1,4 @@
-FAIL There can only be one open access handle at any given time promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL An access handle from one file does not interfere with the creation of an access handle on another file promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
+FAIL There can only be one open access handle at any given time promise_test: Unhandled rejection with value: object "TypeError: fileHandle.createSyncAccessHandle is not a function. (In 'fileHandle.createSyncAccessHandle()', 'fileHandle.createSyncAccessHandle' is undefined)"
+FAIL An access handle from one file does not interfere with the creation of an access handle on another file promise_test: Unhandled rejection with value: object "TypeError: fooFileHandle.createSyncAccessHandle is not a function. (In 'fooFileHandle.createSyncAccessHandle()', 'fooFileHandle.createSyncAccessHandle' is undefined)"
Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemSyncAccessHandle-close.https.tentative.worker-expected.txt (284374 => 284375)
--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemSyncAccessHandle-close.https.tentative.worker-expected.txt 2021-10-18 15:49:34 UTC (rev 284374)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemSyncAccessHandle-close.https.tentative.worker-expected.txt 2021-10-18 16:07:47 UTC (rev 284375)
@@ -1,14 +1,14 @@
-FAIL SyncAccessHandle.close is idempotent promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL SyncAccessHandle.close is idempotent when called immediately promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL SyncAccessHandle.read fails after SyncAccessHandle.close settles promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL SyncAccessHandle.read fails immediately after calling SyncAccessHandle.close promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL SyncAccessHandle.write fails after SyncAccessHandle.close settles promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL SyncAccessHandle.write fails immediately after calling SyncAccessHandle.close promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL SyncAccessHandle.flush fails after SyncAccessHandle.close settles promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL SyncAccessHandle.flush fails immediately after calling SyncAccessHandle.close promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL SyncAccessHandle.getSize fails after SyncAccessHandle.close settles promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL SyncAccessHandle.getSize fails immediately after calling SyncAccessHandle.close promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL SyncAccessHandle.truncate fails after SyncAccessHandle.close settles promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL SyncAccessHandle.truncate fails immediately after calling SyncAccessHandle.close promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
+FAIL SyncAccessHandle.close is idempotent promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL SyncAccessHandle.close is idempotent when called immediately promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL SyncAccessHandle.read fails after SyncAccessHandle.close settles promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL SyncAccessHandle.read fails immediately after calling SyncAccessHandle.close promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL SyncAccessHandle.write fails after SyncAccessHandle.close settles promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL SyncAccessHandle.write fails immediately after calling SyncAccessHandle.close promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL SyncAccessHandle.flush fails after SyncAccessHandle.close settles promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL SyncAccessHandle.flush fails immediately after calling SyncAccessHandle.close promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL SyncAccessHandle.getSize fails after SyncAccessHandle.close settles promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL SyncAccessHandle.getSize fails immediately after calling SyncAccessHandle.close promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL SyncAccessHandle.truncate fails after SyncAccessHandle.close settles promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL SyncAccessHandle.truncate fails immediately after calling SyncAccessHandle.close promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemSyncAccessHandle-flush.https.tentative.worker-expected.txt (284374 => 284375)
--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemSyncAccessHandle-flush.https.tentative.worker-expected.txt 2021-10-18 15:49:34 UTC (rev 284374)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemSyncAccessHandle-flush.https.tentative.worker-expected.txt 2021-10-18 16:07:47 UTC (rev 284375)
@@ -1,6 +1,6 @@
-FAIL Test flush on an empty file. promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL SyncAccessHandle.read returns bytes written by SyncAccessHandle.write after SyncAccessHandle.flush promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL SyncAccessHandle.read fails when there is a pending SyncAccessHandle.flush promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL SyncAccessHandle.write fails when there is a pending SyncAccessHandle.flush promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
+FAIL Test flush on an empty file. promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL SyncAccessHandle.read returns bytes written by SyncAccessHandle.write after SyncAccessHandle.flush promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL SyncAccessHandle.read fails when there is a pending SyncAccessHandle.flush promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL SyncAccessHandle.write fails when there is a pending SyncAccessHandle.flush promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemSyncAccessHandle-getSize.https.tentative.worker-expected.txt (284374 => 284375)
--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemSyncAccessHandle-getSize.https.tentative.worker-expected.txt 2021-10-18 15:49:34 UTC (rev 284374)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemSyncAccessHandle-getSize.https.tentative.worker-expected.txt 2021-10-18 16:07:47 UTC (rev 284375)
@@ -1,4 +1,4 @@
-FAIL test SyncAccessHandle.getSize after SyncAccessHandle.write promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL test createSyncAccessHandle.getSize with pending operation promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
+FAIL test SyncAccessHandle.getSize after SyncAccessHandle.write promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL test createSyncAccessHandle.getSize with pending operation promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemSyncAccessHandle-read-write.https.tentative.worker-expected.txt (284374 => 284375)
--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemSyncAccessHandle-read-write.https.tentative.worker-expected.txt 2021-10-18 15:49:34 UTC (rev 284374)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemSyncAccessHandle-read-write.https.tentative.worker-expected.txt 2021-10-18 16:07:47 UTC (rev 284375)
@@ -1,10 +1,10 @@
-FAIL Test reading an empty file through a sync access handle. promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL Test writing and reading through a sync access handle. promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL Test second write that is bigger than the first write promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL Test second write that is smaller than the first write promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL Test initial write with an offset promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL Test overwriting the file at an offset promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL Test read at an offset promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL Test reading at a negative offset fails. promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
+FAIL Test reading an empty file through a sync access handle. promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL Test writing and reading through a sync access handle. promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL Test second write that is bigger than the first write promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL Test second write that is smaller than the first write promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL Test initial write with an offset promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL Test overwriting the file at an offset promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL Test read at an offset promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL Test reading at a negative offset fails. promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemSyncAccessHandle-truncate.https.tentative.worker-expected.txt (284374 => 284375)
--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemSyncAccessHandle-truncate.https.tentative.worker-expected.txt 2021-10-18 15:49:34 UTC (rev 284374)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemSyncAccessHandle-truncate.https.tentative.worker-expected.txt 2021-10-18 16:07:47 UTC (rev 284375)
@@ -1,5 +1,5 @@
-FAIL test createSyncAccessHandle.truncate with pending operation promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL test SyncAccessHandle.truncate with different sizes promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL test SyncAccessHandle.truncate after SyncAccessHandle.write promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
+FAIL test createSyncAccessHandle.truncate with pending operation promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL test SyncAccessHandle.truncate with different sizes promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL test SyncAccessHandle.truncate after SyncAccessHandle.write promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemWritableFileStream-piped.https.any.worker-expected.txt (284374 => 284375)
--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemWritableFileStream-piped.https.any.worker-expected.txt 2021-10-18 15:49:34 UTC (rev 284374)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemWritableFileStream-piped.https.any.worker-expected.txt 2021-10-18 16:07:47 UTC (rev 284375)
@@ -1,10 +1,10 @@
-FAIL can be piped to with a string promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL can be piped to with an ArrayBuffer promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL can be piped to with a Blob promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL can be piped to with a param object with write command promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL can be piped to with a param object with multiple commands promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL multiple operations can be queued promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL plays well with fetch promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL abort() aborts write promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
+FAIL can be piped to with a string promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL can be piped to with an ArrayBuffer promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL can be piped to with a Blob promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL can be piped to with a param object with write command promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL can be piped to with a param object with multiple commands promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL multiple operations can be queued promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL plays well with fetch promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL abort() aborts write promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemWritableFileStream-write.https.any.worker-expected.txt (284374 => 284375)
--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemWritableFileStream-write.https.any.worker-expected.txt 2021-10-18 15:49:34 UTC (rev 284374)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemWritableFileStream-write.https.any.worker-expected.txt 2021-10-18 16:07:47 UTC (rev 284375)
@@ -1,31 +1,31 @@
-FAIL write() with an empty blob to an empty file promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL write() a blob to an empty file promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL write() with WriteParams without position to an empty file promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL write() a string to an empty file with zero offset promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL write() a blob to an empty file with zero offset promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL write() called consecutively appends promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL write() WriteParams without position and string appends promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL write() WriteParams without position and blob appends promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL write() called with a string and a valid offset promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL write() called with a blob and a valid offset promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL write() called with an offset beyond the end of the file promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL write() with an empty string to an empty file promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL write() with a valid utf-8 string promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL write() with a string with unix line ending preserved promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL write() with a string with windows line ending preserved promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL write() with an empty array buffer to an empty file promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL write() with a valid typed array buffer promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL atomic writes: close() fails when parent directory is removed promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL atomic writes: writable file streams make atomic changes on close promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL atomic writes: write() after close() fails promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL atomic writes: truncate() after close() fails promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL atomic writes: close() after close() fails promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL atomic writes: only one close() operation may succeed promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL atomic writes: writable file stream persists file on close, even if file is removed promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL getWriter() can be used promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL WriteParams: truncate missing size param promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL WriteParams: write missing data param promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL WriteParams: seek missing position param promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL write() with an invalid blob to an empty file should reject promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
+FAIL write() with an empty blob to an empty file promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL write() a blob to an empty file promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL write() with WriteParams without position to an empty file promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL write() a string to an empty file with zero offset promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL write() a blob to an empty file with zero offset promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL write() called consecutively appends promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL write() WriteParams without position and string appends promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL write() WriteParams without position and blob appends promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL write() called with a string and a valid offset promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL write() called with a blob and a valid offset promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL write() called with an offset beyond the end of the file promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL write() with an empty string to an empty file promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL write() with a valid utf-8 string promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL write() with a string with unix line ending preserved promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL write() with a string with windows line ending preserved promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL write() with an empty array buffer to an empty file promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL write() with a valid typed array buffer promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL atomic writes: close() fails when parent directory is removed promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL atomic writes: writable file streams make atomic changes on close promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL atomic writes: write() after close() fails promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL atomic writes: truncate() after close() fails promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL atomic writes: close() after close() fails promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL atomic writes: only one close() operation may succeed promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL atomic writes: writable file stream persists file on close, even if file is removed promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL getWriter() can be used promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL WriteParams: truncate missing size param promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL WriteParams: write missing data param promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL WriteParams: seek missing position param promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL write() with an invalid blob to an empty file should reject promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
Modified: branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemWritableFileStream.https.any.worker-expected.txt (284374 => 284375)
--- branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemWritableFileStream.https.any.worker-expected.txt 2021-10-18 15:49:34 UTC (rev 284374)
+++ branches/safari-612-branch/LayoutTests/imported/w3c/web-platform-tests/file-system-access/sandboxed_FileSystemWritableFileStream.https.any.worker-expected.txt 2021-10-18 16:07:47 UTC (rev 284375)
@@ -1,12 +1,12 @@
-FAIL truncate() to shrink a file promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL truncate() to grow a file promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL createWritable() fails when parent directory is removed promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL write() fails when parent directory is removed promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL truncate() fails when parent directory is removed promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL createWritable({keepExistingData: true}): atomic writable file stream initialized with source contents promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL createWritable({keepExistingData: false}): atomic writable file stream initialized with empty file promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL cursor position: truncate size > offset promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL cursor position: truncate size < offset promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
-FAIL commands are queued, stream is unlocked after each operation promise_test: Unhandled rejection with value: object "NotSupportedError: The operation is not supported."
+FAIL truncate() to shrink a file promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL truncate() to grow a file promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL createWritable() fails when parent directory is removed promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL write() fails when parent directory is removed promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL truncate() fails when parent directory is removed promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL createWritable({keepExistingData: true}): atomic writable file stream initialized with source contents promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL createWritable({keepExistingData: false}): atomic writable file stream initialized with empty file promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL cursor position: truncate size > offset promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL cursor position: truncate size < offset promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
+FAIL commands are queued, stream is unlocked after each operation promise_test: Unhandled rejection with value: object "TypeError: dir.values is not a function. (In 'dir.values()', 'dir.values' is undefined)"
Added: branches/safari-612-branch/LayoutTests/storage/filesystemaccess/directory-handle-basics-worker-expected.txt (0 => 284375)
--- branches/safari-612-branch/LayoutTests/storage/filesystemaccess/directory-handle-basics-worker-expected.txt (rev 0)
+++ branches/safari-612-branch/LayoutTests/storage/filesystemaccess/directory-handle-basics-worker-expected.txt 2021-10-18 16:07:47 UTC (rev 284375)
@@ -0,0 +1,21 @@
+[Worker] This test checks basic funtionalities of FileSystemDirectoryHandle.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Starting worker: resources/directory-handle-basics.js
+PASS [Worker] rootHandle.name is ""
+PASS [Worker] rootHandle.kind is "directory"
+PASS [Worker] dirHandle.name is "dir"
+PASS [Worker] dirHandle.kind is "directory"
+PASS [Worker] isSameEntry is false
+PASS [Worker] fileHandle.name is "file"
+PASS [Worker] fileHandle.kind is "file"
+PASS [Worker] handleNames.length is 2
+PASS [Worker] handleNames[0] is "dir"
+PASS [Worker] handleNames[1] is "file"
+PASS [Worker] createError.toString() is "NotFoundError: The object can not be found here."
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Added: branches/safari-612-branch/LayoutTests/storage/filesystemaccess/directory-handle-basics-worker.html (0 => 284375)
--- branches/safari-612-branch/LayoutTests/storage/filesystemaccess/directory-handle-basics-worker.html (rev 0)
+++ branches/safari-612-branch/LayoutTests/storage/filesystemaccess/directory-handle-basics-worker.html 2021-10-18 16:07:47 UTC (rev 284375)
@@ -0,0 +1,9 @@
+<html>
+<head>
+<script src=""
+</head>
+<body>
+<script>
+worker = startWorker('resources/directory-handle-basics.js');</script>
+</body>
+</html>
\ No newline at end of file
Modified: branches/safari-612-branch/LayoutTests/storage/filesystemaccess/directory-handle-basics.html (284374 => 284375)
--- branches/safari-612-branch/LayoutTests/storage/filesystemaccess/directory-handle-basics.html 2021-10-18 15:49:34 UTC (rev 284374)
+++ branches/safari-612-branch/LayoutTests/storage/filesystemaccess/directory-handle-basics.html 2021-10-18 16:07:47 UTC (rev 284375)
@@ -5,96 +5,12 @@
</head>
<body>
<script>
-description("This test checks basic funtionalities of FileSystemDirectoryHandle.");
+var jsTestIsAsync = true;
-var rootHandle, dirHandle, fileHandle, isSameEntry, handleNames, createError;
-
-function finishTest(error)
-{
- if (error) {
- testFailed(error);
- }
- finishJSTest();
-}
-
-function getDirectory() {
- navigator.storage.getDirectory().then((handle) => {
- rootHandle = handle;
- shouldBeEqualToString("rootHandle.name", "");
- shouldBeEqualToString("rootHandle.kind", "directory");
- createDirectoryHandle(rootHandle);
- }).catch((error) => {
- finishTest(error);
- });
-}
-
-function createDirectoryHandle(fromHandle) {
- fromHandle.getDirectoryHandle("dir", { "create" : true }).then((handle) => {
- dirHandle = handle;
- shouldBeEqualToString("dirHandle.name", "dir");
- shouldBeEqualToString("dirHandle.kind", "directory");
- checkIfSameEntry(rootHandle, dirHandle);
- }).catch((error) => {
- finishTest(error);
- });
-}
-
-function checkIfSameEntry(handle1, handle2)
-{
- handle1.isSameEntry(handle2).then((result) => {
- isSameEntry = result;
- shouldBeFalse("isSameEntry");
- createFileHandle(dirHandle, true);
- }).catch((error) => {
- finishTest(error);
- });
-}
-
-function createFileHandle(fromHandle, create) {
- let options = { "create" : create };
- fromHandle.getFileHandle("file", options).then((handle) => {
- fileHandle = handle;
- shouldBeEqualToString("fileHandle.name", "file");
- shouldBeEqualToString("fileHandle.kind", "file");
- resolvePath();
- }).catch((error) => {
- if (create) {
- finishTest(error);
- return;
- }
- createError = error;
- shouldBeEqualToString("createError.toString()", "NotFoundError: The object can not be found here.");
- finishTest();
- });
-}
-
-function resolvePath() {
- rootHandle.resolve(fileHandle).then((result) => {
- handleNames = result;
- shouldBe("handleNames.length", "2");
- shouldBeEqualToString("handleNames[0]", "dir");
- shouldBeEqualToString("handleNames[1]", "file");
- removeEntry(dirHandle, "file");
- }).catch((error) => {
- finishTest(error);
- });
-}
-
-function removeEntry(fromHandle, name) {
- fromHandle.removeEntry(name).then((result) => {
- // No error means it is removed.
- createFileHandle(dirHandle, false);
- }).catch((error) => {
- finishTest(error);
- });
-}
-
-if (window.testRunner) {
- jsTestIsAsync = true;
- getDirectory();
-} else {
+if (!window.testRunner) {
finishTest("window.testRunner is not available");
}
</script>
+<script src=""
</body>
</html>
Copied: branches/safari-612-branch/LayoutTests/storage/filesystemaccess/resources/directory-handle-basics.js (from rev 284357, branches/safari-612-branch/LayoutTests/storage/filesystemaccess/directory-handle-basics.html) (0 => 284375)
--- branches/safari-612-branch/LayoutTests/storage/filesystemaccess/resources/directory-handle-basics.js (rev 0)
+++ branches/safari-612-branch/LayoutTests/storage/filesystemaccess/resources/directory-handle-basics.js 2021-10-18 16:07:47 UTC (rev 284375)
@@ -0,0 +1,89 @@
+if (this.importScripts) {
+ importScripts('../../../resources/js-test.js');
+}
+
+description("This test checks basic funtionalities of FileSystemDirectoryHandle.");
+
+var rootHandle, dirHandle, fileHandle, isSameEntry, handleNames, createError;
+
+function finishTest(error)
+{
+ if (error) {
+ testFailed(error);
+ }
+ finishJSTest();
+}
+
+function getDirectory() {
+ navigator.storage.getDirectory().then((handle) => {
+ rootHandle = handle;
+ shouldBeEqualToString("rootHandle.name", "");
+ shouldBeEqualToString("rootHandle.kind", "directory");
+ createDirectoryHandle(rootHandle);
+ }).catch((error) => {
+ finishTest(error);
+ });
+}
+
+function createDirectoryHandle(fromHandle) {
+ fromHandle.getDirectoryHandle("dir", { "create" : true }).then((handle) => {
+ dirHandle = handle;
+ shouldBeEqualToString("dirHandle.name", "dir");
+ shouldBeEqualToString("dirHandle.kind", "directory");
+ checkIfSameEntry(rootHandle, dirHandle);
+ }).catch((error) => {
+ finishTest(error);
+ });
+}
+
+function checkIfSameEntry(handle1, handle2)
+{
+ handle1.isSameEntry(handle2).then((result) => {
+ isSameEntry = result;
+ shouldBeFalse("isSameEntry");
+ createFileHandle(dirHandle, true);
+ }).catch((error) => {
+ finishTest(error);
+ });
+}
+
+function createFileHandle(fromHandle, create) {
+ let options = { "create" : create };
+ fromHandle.getFileHandle("file", options).then((handle) => {
+ fileHandle = handle;
+ shouldBeEqualToString("fileHandle.name", "file");
+ shouldBeEqualToString("fileHandle.kind", "file");
+ resolvePath();
+ }).catch((error) => {
+ if (create) {
+ finishTest(error);
+ return;
+ }
+ createError = error;
+ shouldBeEqualToString("createError.toString()", "NotFoundError: The object can not be found here.");
+ finishTest();
+ });
+}
+
+function resolvePath() {
+ rootHandle.resolve(fileHandle).then((result) => {
+ handleNames = result;
+ shouldBe("handleNames.length", "2");
+ shouldBeEqualToString("handleNames[0]", "dir");
+ shouldBeEqualToString("handleNames[1]", "file");
+ removeEntry(dirHandle, "file");
+ }).catch((error) => {
+ finishTest(error);
+ });
+}
+
+function removeEntry(fromHandle, name) {
+ fromHandle.removeEntry(name).then((result) => {
+ // No error means it is removed.
+ createFileHandle(dirHandle, false);
+ }).catch((error) => {
+ finishTest(error);
+ });
+}
+
+getDirectory();
Modified: branches/safari-612-branch/Source/WTF/wtf/CrossThreadCopier.h (284374 => 284375)
--- branches/safari-612-branch/Source/WTF/wtf/CrossThreadCopier.h 2021-10-18 15:49:34 UTC (rev 284374)
+++ branches/safari-612-branch/Source/WTF/wtf/CrossThreadCopier.h 2021-10-18 16:07:47 UTC (rev 284375)
@@ -35,6 +35,7 @@
#include <wtf/Assertions.h>
#include <wtf/Forward.h>
#include <wtf/HashSet.h>
+#include <wtf/ObjectIdentifier.h>
#include <wtf/RefPtr.h>
#include <wtf/ThreadSafeRefCounted.h>
#include <wtf/text/WTFString.h>
@@ -104,6 +105,14 @@
}
};
+template<typename T> struct CrossThreadCopierBase<false, false, ObjectIdentifier<T>> {
+ typedef ObjectIdentifier<T> Type;
+ static Type copy(const Type& source)
+ {
+ return source;
+ }
+};
+
template<typename T>
struct CrossThreadCopier : public CrossThreadCopierBase<CrossThreadCopierBaseHelper::IsEnumOrConvertibleToInteger<T>::value, CrossThreadCopierBaseHelper::IsThreadSafeRefCountedPointer<T>::value, T> {
};
Modified: branches/safari-612-branch/Source/WebCore/Headers.cmake (284374 => 284375)
--- branches/safari-612-branch/Source/WebCore/Headers.cmake 2021-10-18 15:49:34 UTC (rev 284374)
+++ branches/safari-612-branch/Source/WebCore/Headers.cmake 2021-10-18 16:07:47 UTC (rev 284375)
@@ -42,6 +42,8 @@
Modules/filesystemaccess/FileSystemHandleIdentifier.h
Modules/filesystemaccess/FileSystemStorageConnection.h
Modules/filesystemaccess/StorageManagerFileSystemAccess.h
+ Modules/filesystemaccess/WorkerFileSystemStorageConnection.h
+ Modules/filesystemaccess/WorkerFileSystemStorageConnectionCallbackIdentifier.h
Modules/geolocation/Geolocation.h
Modules/geolocation/GeolocationClient.h
@@ -154,6 +156,7 @@
Modules/storage/StorageConnection.h
Modules/storage/StorageManager.h
Modules/storage/StorageProvider.h
+ Modules/storage/WorkerStorageConnection.h
Modules/streams/ReadableStreamSink.h
Modules/streams/ReadableStreamSource.h
Added: branches/safari-612-branch/Source/WebCore/Modules/filesystemaccess/WorkerFileSystemStorageConnection.cpp (0 => 284375)
--- branches/safari-612-branch/Source/WebCore/Modules/filesystemaccess/WorkerFileSystemStorageConnection.cpp (rev 0)
+++ branches/safari-612-branch/Source/WebCore/Modules/filesystemaccess/WorkerFileSystemStorageConnection.cpp 2021-10-18 16:07:47 UTC (rev 284375)
@@ -0,0 +1,202 @@
+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "WorkerFileSystemStorageConnection.h"
+
+#include "WorkerGlobalScope.h"
+#include "WorkerLoaderProxy.h"
+#include "WorkerThread.h"
+
+namespace WebCore {
+
+Ref<WorkerFileSystemStorageConnection> WorkerFileSystemStorageConnection::create(WorkerGlobalScope& scope, Ref<FileSystemStorageConnection>&& mainThreadConnection)
+{
+ return adoptRef(*new WorkerFileSystemStorageConnection(scope, WTFMove(mainThreadConnection)));
+}
+
+WorkerFileSystemStorageConnection::WorkerFileSystemStorageConnection(WorkerGlobalScope& scope, Ref<FileSystemStorageConnection>&& connection)
+ : m_scope(makeWeakPtr(scope))
+ , m_mainThreadConnection(WTFMove(connection))
+{
+}
+
+WorkerFileSystemStorageConnection::~WorkerFileSystemStorageConnection()
+{
+ if (m_mainThreadConnection)
+ callOnMainThread([mainThreadConenction = WTFMove(m_mainThreadConnection)]() { });
+}
+
+void WorkerFileSystemStorageConnection::connectionClosed()
+{
+ scopeClosed();
+}
+
+void WorkerFileSystemStorageConnection::scopeClosed()
+{
+ auto sameEntryCallbacks = std::exchange(m_sameEntryCallbacks, { });
+ for (auto& callback : sameEntryCallbacks.values())
+ callback(Exception { InvalidStateError });
+
+ auto getHandleCallbacks = std::exchange(m_getHandleCallbacks, { });
+ for (auto& callback : getHandleCallbacks.values())
+ callback(Exception { InvalidStateError });
+
+ auto removeEntryCallbacks = std::exchange(m_removeEntryCallbacks, { });
+ for (auto& callback : removeEntryCallbacks.values())
+ callback(Exception { InvalidStateError });
+
+ auto resolveCallbacks = std::exchange(m_resolveCallbacks, { });
+ for (auto& callback : resolveCallbacks.values())
+ callback(Exception { InvalidStateError });
+
+ m_scope = nullptr;
+}
+
+void WorkerFileSystemStorageConnection::isSameEntry(FileSystemHandleIdentifier identifier, FileSystemHandleIdentifier otherIdentifier, FileSystemStorageConnection::SameEntryCallback&& callback)
+{
+ if (!m_scope)
+ return callback(Exception { InvalidStateError });
+
+ auto callbackIdentifier = CallbackIdentifier::generateThreadSafe();
+ m_sameEntryCallbacks.add(callbackIdentifier, WTFMove(callback));
+
+ callOnMainThread([callbackIdentifier, workerThread = Ref { m_scope->thread() }, mainThreadConnection = m_mainThreadConnection, identifier, otherIdentifier]() mutable {
+ auto mainThreadCallback = [callbackIdentifier, workerThread = WTFMove(workerThread)](auto result) mutable {
+ workerThread->runLoop().postTaskForMode([callbackIdentifier, result = crossThreadCopy(result)] (auto& scope) mutable {
+ if (auto connection = downcast<WorkerGlobalScope>(scope).fileSystemStorageConnection())
+ connection->didIsSameEntry(callbackIdentifier, WTFMove(result));
+ }, WorkerRunLoop::defaultMode());
+ };
+
+ mainThreadConnection->isSameEntry(identifier, otherIdentifier, WTFMove(mainThreadCallback));
+ });
+}
+
+void WorkerFileSystemStorageConnection::didIsSameEntry(CallbackIdentifier callbackIdentifier, ExceptionOr<bool>&& result)
+{
+ if (auto callback = m_sameEntryCallbacks.take(callbackIdentifier))
+ callback(WTFMove(result));
+}
+
+void WorkerFileSystemStorageConnection::getFileHandle(FileSystemHandleIdentifier identifier, const String& name, bool createIfNecessary, FileSystemStorageConnection::GetHandleCallback&& callback)
+{
+ if (!m_scope)
+ return callback(Exception { InvalidStateError });
+
+ auto callbackIdentifier = CallbackIdentifier::generateThreadSafe();
+ m_getHandleCallbacks.add(callbackIdentifier, WTFMove(callback));
+
+ callOnMainThread([callbackIdentifier, workerThread = Ref { m_scope->thread() }, mainThreadConnection = m_mainThreadConnection, identifier, name = name.isolatedCopy(), createIfNecessary]() mutable {
+ auto mainThreadCallback = [callbackIdentifier, workerThread = WTFMove(workerThread)](auto result) mutable {
+ workerThread->runLoop().postTaskForMode([callbackIdentifier, result = crossThreadCopy(result)] (auto& scope) mutable {
+ if (auto connection = downcast<WorkerGlobalScope>(scope).fileSystemStorageConnection())
+ connection->didGetHandle(callbackIdentifier, WTFMove(result));
+ }, WorkerRunLoop::defaultMode());
+ };
+
+ mainThreadConnection->getFileHandle(identifier, name, createIfNecessary, WTFMove(mainThreadCallback));
+ });
+}
+
+void WorkerFileSystemStorageConnection::getDirectoryHandle(FileSystemHandleIdentifier identifier, const String& name, bool createIfNecessary, FileSystemStorageConnection::GetHandleCallback&& callback)
+{
+ if (!m_scope)
+ return callback(Exception { InvalidStateError });
+
+ auto callbackIdentifier = CallbackIdentifier::generateThreadSafe();
+ m_getHandleCallbacks.add(callbackIdentifier, WTFMove(callback));
+
+ callOnMainThread([callbackIdentifier, workerThread = Ref { m_scope->thread() }, mainThreadConnection = m_mainThreadConnection, identifier, name = name.isolatedCopy(), createIfNecessary]() mutable {
+ auto mainThreadCallback = [callbackIdentifier, workerThread = WTFMove(workerThread)](auto result) mutable {
+ workerThread->runLoop().postTaskForMode([callbackIdentifier, result = crossThreadCopy(result)] (auto& scope) mutable {
+ if (auto connection = downcast<WorkerGlobalScope>(scope).fileSystemStorageConnection())
+ connection->didGetHandle(callbackIdentifier, WTFMove(result));
+ }, WorkerRunLoop::defaultMode());
+ };
+
+ mainThreadConnection->getDirectoryHandle(identifier, name, createIfNecessary, WTFMove(mainThreadCallback));
+ });
+}
+
+void WorkerFileSystemStorageConnection::didGetHandle(CallbackIdentifier callbackIdentifier, ExceptionOr<FileSystemHandleIdentifier>&& result)
+{
+ if (auto callback = m_getHandleCallbacks.take(callbackIdentifier))
+ callback(WTFMove(result));
+}
+
+void WorkerFileSystemStorageConnection::removeEntry(FileSystemHandleIdentifier identifier, const String& name, bool deleteRecursively, FileSystemStorageConnection::RemoveEntryCallback&& callback)
+{
+ if (!m_scope)
+ return callback(Exception { InvalidStateError });
+
+ auto callbackIdentifier = CallbackIdentifier::generateThreadSafe();
+ m_removeEntryCallbacks.add(callbackIdentifier, WTFMove(callback));
+
+ callOnMainThread([callbackIdentifier, workerThread = Ref { m_scope->thread() }, mainThreadConnection = m_mainThreadConnection, identifier, name = name.isolatedCopy(), deleteRecursively]() mutable {
+ auto mainThreadCallback = [callbackIdentifier, workerThread = WTFMove(workerThread)](auto result) mutable {
+ workerThread->runLoop().postTaskForMode([callbackIdentifier, result = crossThreadCopy(result)] (auto& scope) mutable {
+ if (auto connection = downcast<WorkerGlobalScope>(scope).fileSystemStorageConnection())
+ connection->didRemoveEntry(callbackIdentifier, WTFMove(result));
+ }, WorkerRunLoop::defaultMode());
+ };
+
+ mainThreadConnection->removeEntry(identifier, name, deleteRecursively, WTFMove(mainThreadCallback));
+ });
+}
+
+void WorkerFileSystemStorageConnection::didRemoveEntry(CallbackIdentifier callbackIdentifier, ExceptionOr<void>&& result)
+{
+ if (auto callback = m_removeEntryCallbacks.take(callbackIdentifier))
+ callback(WTFMove(result));
+}
+
+void WorkerFileSystemStorageConnection::resolve(FileSystemHandleIdentifier identifier, FileSystemHandleIdentifier otherIdentifier, FileSystemStorageConnection::ResolveCallback&& callback)
+{
+ if (!m_scope)
+ return callback(Exception { InvalidStateError });
+
+ auto callbackIdentifier = CallbackIdentifier::generateThreadSafe();
+ m_resolveCallbacks.add(callbackIdentifier, WTFMove(callback));
+
+ callOnMainThread([callbackIdentifier, workerThread = Ref { m_scope->thread() }, mainThreadConnection = m_mainThreadConnection, identifier, otherIdentifier]() mutable {
+ auto mainThreadCallback = [callbackIdentifier, workerThread = WTFMove(workerThread)](auto result) mutable {
+ workerThread->runLoop().postTaskForMode([callbackIdentifier, result = crossThreadCopy(result)] (auto& scope) mutable {
+ if (auto connection = downcast<WorkerGlobalScope>(scope).fileSystemStorageConnection())
+ connection->didResolve(callbackIdentifier, WTFMove(result));
+ }, WorkerRunLoop::defaultMode());
+ };
+
+ mainThreadConnection->resolve(identifier, otherIdentifier, WTFMove(mainThreadCallback));
+ });
+}
+
+void WorkerFileSystemStorageConnection::didResolve(CallbackIdentifier callbackIdentifier, ExceptionOr<Vector<String>>&& result)
+{
+ if (auto callback = m_resolveCallbacks.take(callbackIdentifier))
+ callback(WTFMove(result));
+}
+
+} // namespace WebCore
Added: branches/safari-612-branch/Source/WebCore/Modules/filesystemaccess/WorkerFileSystemStorageConnection.h (0 => 284375)
--- branches/safari-612-branch/Source/WebCore/Modules/filesystemaccess/WorkerFileSystemStorageConnection.h (rev 0)
+++ branches/safari-612-branch/Source/WebCore/Modules/filesystemaccess/WorkerFileSystemStorageConnection.h 2021-10-18 16:07:47 UTC (rev 284375)
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include "FileSystemHandleIdentifier.h"
+#include "FileSystemStorageConnection.h"
+#include "WorkerFileSystemStorageConnectionCallbackIdentifier.h"
+#include <wtf/WeakPtr.h>
+
+namespace WebCore {
+
+class WorkerGlobalScope;
+class WorkerThread;
+
+class WorkerFileSystemStorageConnection final : public FileSystemStorageConnection, public CanMakeWeakPtr<WorkerFileSystemStorageConnection, WeakPtrFactoryInitialization::Eager> {
+public:
+ static Ref<WorkerFileSystemStorageConnection> create(WorkerGlobalScope&, Ref<FileSystemStorageConnection>&&);
+ ~WorkerFileSystemStorageConnection();
+
+ FileSystemStorageConnection* mainThreadConnection() const { return m_mainThreadConnection.get(); }
+ void connectionClosed();
+ void scopeClosed();
+ using CallbackIdentifier = WorkerFileSystemStorageConnectionCallbackIdentifier;
+ void didIsSameEntry(CallbackIdentifier, ExceptionOr<bool>&&);
+ void didGetHandle(CallbackIdentifier, ExceptionOr<FileSystemHandleIdentifier>&&);
+ void didRemoveEntry(CallbackIdentifier, ExceptionOr<void>&&);
+ void didResolve(CallbackIdentifier, ExceptionOr<Vector<String>>&&);
+
+private:
+ WorkerFileSystemStorageConnection(WorkerGlobalScope&, Ref<FileSystemStorageConnection>&&);
+
+ // FileSystemStorageConnection
+ void isSameEntry(FileSystemHandleIdentifier, FileSystemHandleIdentifier, FileSystemStorageConnection::SameEntryCallback&&) final;
+ void getFileHandle(FileSystemHandleIdentifier, const String& name, bool createIfNecessary, FileSystemStorageConnection::GetHandleCallback&&) final;
+ void getDirectoryHandle(FileSystemHandleIdentifier, const String& name, bool createIfNecessary, FileSystemStorageConnection::GetHandleCallback&&) final;
+ void removeEntry(FileSystemHandleIdentifier, const String& name, bool deleteRecursively, FileSystemStorageConnection::RemoveEntryCallback&&) final;
+ void resolve(FileSystemHandleIdentifier, FileSystemHandleIdentifier, FileSystemStorageConnection::ResolveCallback&&) final;
+
+ WeakPtr<WorkerGlobalScope> m_scope;
+ RefPtr<FileSystemStorageConnection> m_mainThreadConnection;
+ HashMap<CallbackIdentifier, FileSystemStorageConnection::SameEntryCallback> m_sameEntryCallbacks;
+ HashMap<CallbackIdentifier, FileSystemStorageConnection::GetHandleCallback> m_getHandleCallbacks;
+ HashMap<CallbackIdentifier, FileSystemStorageConnection::RemoveEntryCallback> m_removeEntryCallbacks;
+ HashMap<CallbackIdentifier, FileSystemStorageConnection::ResolveCallback> m_resolveCallbacks;
+};
+
+} // namespace WebCore
Copied: branches/safari-612-branch/Source/WebCore/Modules/filesystemaccess/WorkerFileSystemStorageConnectionCallbackIdentifier.h (from rev 284357, branches/safari-612-branch/Source/WebCore/Modules/storage/WorkerStorageConnection.h) (0 => 284375)
--- branches/safari-612-branch/Source/WebCore/Modules/filesystemaccess/WorkerFileSystemStorageConnectionCallbackIdentifier.h (rev 0)
+++ branches/safari-612-branch/Source/WebCore/Modules/filesystemaccess/WorkerFileSystemStorageConnectionCallbackIdentifier.h 2021-10-18 16:07:47 UTC (rev 284375)
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include <wtf/ObjectIdentifier.h>
+
+namespace WebCore {
+
+enum WorkerFileSystemStorageConnectionCallbackIdentifierType { };
+using WorkerFileSystemStorageConnectionCallbackIdentifier = ObjectIdentifier<WorkerFileSystemStorageConnectionCallbackIdentifierType>;
+
+} // namespace WebCore
+
Modified: branches/safari-612-branch/Source/WebCore/Modules/remoteplayback/RemotePlayback.h (284374 => 284375)
--- branches/safari-612-branch/Source/WebCore/Modules/remoteplayback/RemotePlayback.h 2021-10-18 15:49:34 UTC (rev 284374)
+++ branches/safari-612-branch/Source/WebCore/Modules/remoteplayback/RemotePlayback.h 2021-10-18 16:07:47 UTC (rev 284375)
@@ -38,6 +38,7 @@
class DeferredPromise;
class HTMLMediaElement;
class MediaPlaybackTarget;
+class Node;
class RemotePlaybackAvailabilityCallback;
class RemotePlayback final : public RefCounted<RemotePlayback>, public ActiveDOMObject, public EventTargetWithInlineData {
Modified: branches/safari-612-branch/Source/WebCore/Modules/storage/StorageConnection.h (284374 => 284375)
--- branches/safari-612-branch/Source/WebCore/Modules/storage/StorageConnection.h 2021-10-18 15:49:34 UTC (rev 284374)
+++ branches/safari-612-branch/Source/WebCore/Modules/storage/StorageConnection.h 2021-10-18 16:07:47 UTC (rev 284375)
@@ -41,7 +41,8 @@
using PersistCallback = CompletionHandler<void(bool)>;
virtual void getPersisted(const ClientOrigin&, PersistCallback&&) = 0;
virtual void persist(const ClientOrigin&, PersistCallback&& completionHandler) { completionHandler(false); }
- using GetDirectoryCallback = CompletionHandler<void(ExceptionOr<std::pair<FileSystemHandleIdentifier, RefPtr<FileSystemStorageConnection>>>)>;
+ using DirectoryInfo = std::pair<FileSystemHandleIdentifier, RefPtr<FileSystemStorageConnection>>;
+ using GetDirectoryCallback = CompletionHandler<void(ExceptionOr<DirectoryInfo>&&)>;
virtual void fileSystemGetDirectory(const ClientOrigin&, GetDirectoryCallback&&) = 0;
};
Modified: branches/safari-612-branch/Source/WebCore/Modules/storage/WorkerStorageConnection.cpp (284374 => 284375)
--- branches/safari-612-branch/Source/WebCore/Modules/storage/WorkerStorageConnection.cpp 2021-10-18 15:49:34 UTC (rev 284374)
+++ branches/safari-612-branch/Source/WebCore/Modules/storage/WorkerStorageConnection.cpp 2021-10-18 16:07:47 UTC (rev 284375)
@@ -27,9 +27,11 @@
#include "WorkerStorageConnection.h"
#include "ClientOrigin.h"
+#include "WorkerFileSystemStorageConnection.h"
#include "WorkerGlobalScope.h"
#include "WorkerLoaderProxy.h"
#include "WorkerThread.h"
+#include <wtf/Scope.h>
namespace WebCore {
@@ -49,6 +51,10 @@
for (auto& callback : getPersistedCallbacks.values())
callback(false);
+ auto getDirectoryCallbacks = std::exchange(m_getDirectoryCallbacks, { });
+ for (auto& callback : getDirectoryCallbacks.values())
+ callback(Exception { InvalidStateError });
+
m_scope = nullptr;
}
@@ -79,12 +85,45 @@
callback(persisted);
}
-void WorkerStorageConnection::fileSystemGetDirectory(const ClientOrigin&, StorageConnection::GetDirectoryCallback&& completionHandler)
+void WorkerStorageConnection::fileSystemGetDirectory(const ClientOrigin& origin, StorageConnection::GetDirectoryCallback&& completionHandler)
{
ASSERT(m_scope);
+
+ auto callbackIdentifier = ++m_lastCallbackIdentifier;
+ m_getDirectoryCallbacks.add(callbackIdentifier, WTFMove(completionHandler));
- // FIXME: implement this when FileSystemHandle is supported in Worker.
- return completionHandler(Exception { NotSupportedError });
+ callOnMainThread([callbackIdentifier, workerThread = Ref { m_scope->thread() }, origin = origin.isolatedCopy()]() mutable {
+ auto mainThreadConnection = workerThread->workerLoaderProxy().storageConnection();
+ auto mainThreadCallback = [callbackIdentifier, workerThread = WTFMove(workerThread)](auto result) mutable {
+ workerThread->runLoop().postTaskForMode([callbackIdentifier, result = crossThreadCopy(result)] (auto& scope) mutable {
+ downcast<WorkerGlobalScope>(scope).storageConnection().didGetDirectory(callbackIdentifier, WTFMove(result));
+ }, WorkerRunLoop::defaultMode());
+ };
+ mainThreadConnection->fileSystemGetDirectory(origin, WTFMove(mainThreadCallback));
+ });
}
+void WorkerStorageConnection::didGetDirectory(uint64_t callbackIdentifier, ExceptionOr<StorageConnection::DirectoryInfo>&& result)
+{
+ RefPtr<FileSystemStorageConnection> mainThreadFileSystemStorageConnection = result.hasException() ? nullptr : result.returnValue().second;
+ auto releaseConnectionScope = makeScopeExit([connection = mainThreadFileSystemStorageConnection]() mutable {
+ if (connection)
+ callOnMainThread([connection = WTFMove(connection)]() { });
+ });
+
+ auto callback = m_getDirectoryCallbacks.take(callbackIdentifier);
+ if (!callback)
+ return;
+
+ if (result.hasException())
+ return callback(WTFMove(result));
+
+ if (!m_scope)
+ return callback(Exception { InvalidStateError });
+ releaseConnectionScope.release();
+
+ auto& workerFileSystemStorageConnection = m_scope->getFileSystemStorageConnection(Ref { *mainThreadFileSystemStorageConnection });
+ callback(StorageConnection::DirectoryInfo { result.returnValue().first, Ref { workerFileSystemStorageConnection } });
+}
+
} // namespace WebCore
Modified: branches/safari-612-branch/Source/WebCore/Modules/storage/WorkerStorageConnection.h (284374 => 284375)
--- branches/safari-612-branch/Source/WebCore/Modules/storage/WorkerStorageConnection.h 2021-10-18 15:49:34 UTC (rev 284374)
+++ branches/safari-612-branch/Source/WebCore/Modules/storage/WorkerStorageConnection.h 2021-10-18 16:07:47 UTC (rev 284375)
@@ -40,6 +40,7 @@
private:
explicit WorkerStorageConnection(WorkerGlobalScope&);
void didGetPersisted(uint64_t callbackIdentifier, bool result);
+ void didGetDirectory(uint64_t callbackIdentifier, ExceptionOr<StorageConnection::DirectoryInfo>&&);
// StorageConnection
void getPersisted(const ClientOrigin&, StorageConnection::PersistCallback&&) final;
@@ -48,6 +49,7 @@
WeakPtr<WorkerGlobalScope> m_scope;
uint64_t m_lastCallbackIdentifier { 0 };
HashMap<uint64_t, StorageConnection::PersistCallback> m_getPersistedCallbacks;
+ HashMap<uint64_t, StorageConnection::GetDirectoryCallback> m_getDirectoryCallbacks;
};
} // namespace WebCore
Modified: branches/safari-612-branch/Source/WebCore/Sources.txt (284374 => 284375)
--- branches/safari-612-branch/Source/WebCore/Sources.txt 2021-10-18 15:49:34 UTC (rev 284374)
+++ branches/safari-612-branch/Source/WebCore/Sources.txt 2021-10-18 16:07:47 UTC (rev 284375)
@@ -61,6 +61,7 @@
Modules/filesystemaccess/FileSystemDirectoryHandle.cpp
Modules/filesystemaccess/FileSystemFileHandle.cpp
Modules/filesystemaccess/FileSystemHandle.cpp
+Modules/filesystemaccess/WorkerFileSystemStorageConnection.cpp
Modules/geolocation/GeoNotifier.cpp
Modules/geolocation/Geolocation.cpp
Modules/geolocation/GeolocationController.cpp
Modified: branches/safari-612-branch/Source/WebCore/WebCore.xcodeproj/project.pbxproj (284374 => 284375)
--- branches/safari-612-branch/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2021-10-18 15:49:34 UTC (rev 284374)
+++ branches/safari-612-branch/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2021-10-18 16:07:47 UTC (rev 284375)
@@ -2783,7 +2783,9 @@
931CBD0F161A44E900E4C874 /* ScrollingStateScrollingNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 931CBD09161A44E900E4C874 /* ScrollingStateScrollingNode.h */; settings = {ATTRIBUTES = (Private, ); }; };
931CBD11161A44E900E4C874 /* ScrollingStateTree.h in Headers */ = {isa = PBXBuildFile; fileRef = 931CBD0B161A44E900E4C874 /* ScrollingStateTree.h */; settings = {ATTRIBUTES = (Private, ); }; };
931D72F615FE695300C4C07E /* LayoutMilestone.h in Headers */ = {isa = PBXBuildFile; fileRef = 931D72F515FE695300C4C07E /* LayoutMilestone.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 93217ABC270632D2002E60F0 /* WorkerFileSystemStorageConnectionCallbackIdentifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 93217ABB270632D2002E60F0 /* WorkerFileSystemStorageConnectionCallbackIdentifier.h */; settings = {ATTRIBUTES = (Private, ); }; };
932199FA2702162500B1FAF9 /* WorkerStorageConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 932199F82702162500B1FAF9 /* WorkerStorageConnection.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 93233C8627054C7900BBF41E /* WorkerFileSystemStorageConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 93233C8327054C7800BBF41E /* WorkerFileSystemStorageConnection.h */; settings = {ATTRIBUTES = (Private, ); }; };
9323B07023061F9700901C8B /* IDBSerializationContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 9323B06F23061E9C00901C8B /* IDBSerializationContext.h */; };
932CC0B71DFFD158004C0F9F /* MediaTrackConstraints.h in Headers */ = {isa = PBXBuildFile; fileRef = 932CC0B61DFFD158004C0F9F /* MediaTrackConstraints.h */; settings = {ATTRIBUTES = (Private, ); }; };
932CC0D51DFFD667004C0F9F /* JSMediaTrackConstraints.h in Headers */ = {isa = PBXBuildFile; fileRef = 932CC0D11DFFD667004C0F9F /* JSMediaTrackConstraints.h */; };
@@ -11512,8 +11514,11 @@
931CBD0A161A44E900E4C874 /* ScrollingStateTree.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScrollingStateTree.cpp; sourceTree = "<group>"; };
931CBD0B161A44E900E4C874 /* ScrollingStateTree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollingStateTree.h; sourceTree = "<group>"; };
931D72F515FE695300C4C07E /* LayoutMilestone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LayoutMilestone.h; sourceTree = "<group>"; };
+ 93217ABB270632D2002E60F0 /* WorkerFileSystemStorageConnectionCallbackIdentifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WorkerFileSystemStorageConnectionCallbackIdentifier.h; sourceTree = "<group>"; };
932199F62702162400B1FAF9 /* WorkerStorageConnection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WorkerStorageConnection.cpp; sourceTree = "<group>"; };
932199F82702162500B1FAF9 /* WorkerStorageConnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WorkerStorageConnection.h; sourceTree = "<group>"; };
+ 93233C8327054C7800BBF41E /* WorkerFileSystemStorageConnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WorkerFileSystemStorageConnection.h; sourceTree = "<group>"; };
+ 93233C8527054C7800BBF41E /* WorkerFileSystemStorageConnection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WorkerFileSystemStorageConnection.cpp; sourceTree = "<group>"; };
9323B06D23061E9B00901C8B /* IDBSerializationContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBSerializationContext.cpp; sourceTree = "<group>"; };
9323B06F23061E9C00901C8B /* IDBSerializationContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBSerializationContext.h; sourceTree = "<group>"; };
9327A94109968D1A0068A546 /* HTMLOptionsCollection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLOptionsCollection.cpp; sourceTree = "<group>"; };
@@ -23030,6 +23035,9 @@
935424292703BCAD005CA72C /* FileSystemStorageConnection.h */,
93443E7B26E8A6BC0058538F /* StorageManager+FileSystemAccess.idl */,
93443E7D26E8A6BC0058538F /* StorageManagerFileSystemAccess.h */,
+ 93233C8527054C7800BBF41E /* WorkerFileSystemStorageConnection.cpp */,
+ 93233C8327054C7800BBF41E /* WorkerFileSystemStorageConnection.h */,
+ 93217ABB270632D2002E60F0 /* WorkerFileSystemStorageConnectionCallbackIdentifier.h */,
);
path = filesystemaccess;
sourceTree = "<group>";
@@ -35459,6 +35467,8 @@
A5B81CCE1FAA44DE0037D1E6 /* WorkerDebuggerAgent.h in Headers */,
A52B349E1FA41703008B6246 /* WorkerDebuggerProxy.h in Headers */,
91E0DDC4230B41F10019E1E3 /* WorkerDOMDebuggerAgent.h in Headers */,
+ 93233C8627054C7900BBF41E /* WorkerFileSystemStorageConnection.h in Headers */,
+ 93217ABC270632D2002E60F0 /* WorkerFileSystemStorageConnectionCallbackIdentifier.h in Headers */,
A7D6B3490F61104500FF9FD1 /* WorkerFontLoadRequest.h in Headers */,
2E4346490F546A8200B0F1BA /* WorkerGlobalScope.h in Headers */,
2E43464B0F546A8200B0F1BA /* WorkerGlobalScopeProxy.h in Headers */,
Modified: branches/safari-612-branch/Source/WebCore/dom/ExceptionOr.h (284374 => 284375)
--- branches/safari-612-branch/Source/WebCore/dom/ExceptionOr.h 2021-10-18 15:49:34 UTC (rev 284374)
+++ branches/safari-612-branch/Source/WebCore/dom/ExceptionOr.h 2021-10-18 16:07:47 UTC (rev 284375)
@@ -219,4 +219,15 @@
return crossThreadCopy(source.returnValue());
}
};
+
+template<> struct CrossThreadCopierBase<false, false, WebCore::ExceptionOr<void> > {
+ typedef WebCore::ExceptionOr<void> Type;
+ static Type copy(const Type& source)
+ {
+ if (source.hasException())
+ return crossThreadCopy(source.exception());
+ return { };
+ }
+};
+
}
Modified: branches/safari-612-branch/Source/WebCore/workers/WorkerGlobalScope.cpp (284374 => 284375)
--- branches/safari-612-branch/Source/WebCore/workers/WorkerGlobalScope.cpp 2021-10-18 15:49:34 UTC (rev 284374)
+++ branches/safari-612-branch/Source/WebCore/workers/WorkerGlobalScope.cpp 2021-10-18 16:07:47 UTC (rev 284375)
@@ -47,6 +47,7 @@
#include "SecurityOriginPolicy.h"
#include "ServiceWorkerGlobalScope.h"
#include "SocketProvider.h"
+#include "WorkerFileSystemStorageConnection.h"
#include "WorkerFontLoadRequest.h"
#include "WorkerLoaderProxy.h"
#include "WorkerLocation.h"
@@ -141,6 +142,9 @@
if (m_storageConnection)
m_storageConnection->scopeClosed();
+
+ if (m_fileSystemStorageConnection)
+ m_fileSystemStorageConnection->scopeClosed();
}
void WorkerGlobalScope::removeAllEventListeners()
@@ -225,6 +229,23 @@
return *m_storageConnection;
}
+WorkerFileSystemStorageConnection& WorkerGlobalScope::getFileSystemStorageConnection(Ref<FileSystemStorageConnection>&& mainThreadConnection)
+{
+ if (!m_fileSystemStorageConnection)
+ m_fileSystemStorageConnection = WorkerFileSystemStorageConnection::create(*this, WTFMove(mainThreadConnection));
+ else if (m_fileSystemStorageConnection->mainThreadConnection() != mainThreadConnection.ptr()) {
+ m_fileSystemStorageConnection->connectionClosed();
+ m_fileSystemStorageConnection = WorkerFileSystemStorageConnection::create(*this, WTFMove(mainThreadConnection));
+ }
+
+ return *m_fileSystemStorageConnection;
+}
+
+WorkerFileSystemStorageConnection* WorkerGlobalScope::fileSystemStorageConnection()
+{
+ return m_fileSystemStorageConnection.get();
+}
+
WorkerLocation& WorkerGlobalScope::location() const
{
if (!m_location)
Modified: branches/safari-612-branch/Source/WebCore/workers/WorkerGlobalScope.h (284374 => 284375)
--- branches/safari-612-branch/Source/WebCore/workers/WorkerGlobalScope.h 2021-10-18 15:49:34 UTC (rev 284374)
+++ branches/safari-612-branch/Source/WebCore/workers/WorkerGlobalScope.h 2021-10-18 16:07:47 UTC (rev 284375)
@@ -54,10 +54,12 @@
class FontFaceSet;
class Performance;
class ScheduledAction;
+class WorkerFileSystemStorageConnection;
class WorkerLocation;
class WorkerNavigator;
class WorkerSWClientConnection;
class WorkerStorageConnection;
+class WorkerStorageConnection;
struct WorkerParameters;
namespace IDBClient {
@@ -83,6 +85,8 @@
using WeakValueType = EventTarget::WeakValueType;
using EventTarget::weakPtrFactory;
WorkerStorageConnection& storageConnection();
+ WorkerFileSystemStorageConnection& getFileSystemStorageConnection(Ref<FileSystemStorageConnection>&&);
+ WorkerFileSystemStorageConnection* fileSystemStorageConnection();
WorkerCacheStorageConnection& cacheStorageConnection();
MessagePortChannelProvider& messagePortChannelProvider();
#if ENABLE(SERVICE_WORKER)
@@ -217,6 +221,7 @@
WorkerType m_workerType;
FetchOptions::Credentials m_credentials;
RefPtr<WorkerStorageConnection> m_storageConnection;
+ RefPtr<WorkerFileSystemStorageConnection> m_fileSystemStorageConnection;
};
} // namespace WebCore