| importScripts('/resources/testharness.js'); |
| importScripts('resources/sandboxed-fs-test-helpers.js'); |
| importScripts('resources/test-helpers.js'); |
| importScripts('resources/collecting-file-system-observer.js'); |
| |
| 'use strict'; |
| |
| directory_test(async (t, root_dir) => { |
| const file = await root_dir.getFileHandle(getUniqueName(), {create: true}); |
| |
| const observer = new CollectingFileSystemObserver(t, root_dir); |
| await observer.observe([file]); |
| |
| // Write to `file` through a `FileSystemSyncAccessHandle`. |
| const syncHandle = await createSAHWithCleanup(t, file); |
| const writeBuffer = new TextEncoder().encode('contents'); |
| syncHandle.write(writeBuffer); |
| syncHandle.close(); |
| |
| // Expect one "modified" event to happen on `file`. |
| const records = await observer.getRecords(); |
| await assert_records_equal(file, records, [modifiedEvent(file, [])]); |
| }, 'FileSystemSyncAccessHandle.write produces a "modified" event'); |
| |
| directory_test(async (t, root_dir) => { |
| const file = await root_dir.getFileHandle(getUniqueName(), {create: true}); |
| |
| const observer = new CollectingFileSystemObserver(t, root_dir); |
| await observer.observe([file]); |
| |
| // Write to `file` through a `FileSystemSyncAccessHandle` multiple times. |
| const syncHandle = await createSAHWithCleanup(t, file); |
| const writeBuffer = new TextEncoder().encode('contents'); |
| |
| const numberOfWrites = 3; |
| const expectedEvents = []; |
| for (let i = 0; i < numberOfWrites; i++) { |
| expectedEvents.push(modifiedEvent(file, [])); |
| syncHandle.write(writeBuffer); |
| } |
| syncHandle.close(); |
| |
| // Expect the same number of "modified" event to happen on `file` as there |
| // were writes to it. |
| const records = await observer.getRecords(); |
| await assert_records_equal(file, records, expectedEvents); |
| }, 'Multiple FileSystemSyncAccessHandle.writes produces the same amount of "modified" event'); |
| |
| directory_test(async (t, root_dir) => { |
| const file = await root_dir.getFileHandle(getUniqueName(), {create: true}); |
| |
| const observer = new CollectingFileSystemObserver(t, root_dir); |
| await observer.observe([file]); |
| |
| // Truncate to `file` through a `FileSystemSyncAccessHandle`. |
| const syncHandle = await createSAHWithCleanup(t, file); |
| syncHandle.truncate(1); |
| syncHandle.close(); |
| |
| // Expect one "modified" event to happen on `file`. |
| const records = await observer.getRecords(); |
| await assert_records_equal(file, records, [modifiedEvent(file, [])]); |
| }, 'FileSystemSyncAccessHandle.truncate produces a "modified" event'); |
| |
| directory_test(async (t, root_dir) => { |
| const file = await root_dir.getFileHandle(getUniqueName(), {create: true}); |
| |
| const observer = new CollectingFileSystemObserver(t, root_dir); |
| await observer.observe([file]); |
| |
| // Write to `file`. |
| const syncHandle = await createSAHWithCleanup(t, file); |
| const readBuffer = new Uint8Array(24); |
| syncHandle.read(readBuffer); |
| syncHandle.flush(); |
| syncHandle.getSize(); |
| syncHandle.close(); |
| |
| // Expect no events to happen. |
| const records = await observer.getRecords(); |
| await assert_records_equal(file, records, []); |
| }, 'FileSystemSyncAccessHandle methods that don\'t modify the file don\'t produce events'); |
| |
| done(); |