tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

FileSystemBaseHandle-remove.js (4138B)


      1 'use strict';
      2 
      3 directory_test(async (t, root) => {
      4  const handle = await createFileWithContents('file-to-remove', '12345', root);
      5  await createFileWithContents('file-to-keep', 'abc', root);
      6  await handle.remove();
      7 
      8  assert_array_equals(await getSortedDirectoryEntries(root), ['file-to-keep']);
      9  await promise_rejects_dom(t, 'NotFoundError', getFileContents(handle));
     10 }, 'remove() to remove a file');
     11 
     12 directory_test(async (t, root) => {
     13  const handle = await createFileWithContents('file-to-remove', '12345', root);
     14  await handle.remove();
     15 
     16  await promise_rejects_dom(t, 'NotFoundError', handle.remove());
     17 }, 'remove() on an already removed file should fail');
     18 
     19 directory_test(async (t, root) => {
     20  const dir = await root.getDirectoryHandle('dir-to-remove', {create: true});
     21  await createFileWithContents('file-to-keep', 'abc', root);
     22  await dir.remove();
     23 
     24  assert_array_equals(await getSortedDirectoryEntries(root), ['file-to-keep']);
     25  await promise_rejects_dom(t, 'NotFoundError', getSortedDirectoryEntries(dir));
     26 }, 'remove() to remove an empty directory');
     27 
     28 directory_test(async (t, root) => {
     29  const dir = await root.getDirectoryHandle('dir-to-remove', {create: true});
     30  await dir.remove();
     31 
     32  await promise_rejects_dom(t, 'NotFoundError', dir.remove());
     33 }, 'remove() on an already removed directory should fail');
     34 
     35 directory_test(async (t, root) => {
     36  const dir = await root.getDirectoryHandle('dir-to-remove', {create: true});
     37  await createEmptyFile('file-in-dir', dir);
     38 
     39  await promise_rejects_dom(t, 'InvalidModificationError', dir.remove());
     40  assert_array_equals(
     41      await getSortedDirectoryEntries(root), ['dir-to-remove/']);
     42  assert_array_equals(await getSortedDirectoryEntries(dir), ['file-in-dir']);
     43 }, 'remove() on a non-empty directory should fail');
     44 
     45 directory_test(async (t, root) => {
     46  // root
     47  // ├──file-to-keep
     48  // ├──dir-to-remove
     49  //    ├── file0
     50  //    ├── dir1-in-dir
     51  //    │   └── file1
     52  //    └── dir2
     53  const dir = await root.getDirectoryHandle('dir-to-remove', {create: true});
     54  await createFileWithContents('file-to-keep', 'abc', root);
     55  await createEmptyFile('file0', dir);
     56  const dir1_in_dir = await createDirectory('dir1-in-dir', dir);
     57  await createEmptyFile('file1', dir1_in_dir);
     58  await createDirectory('dir2-in-dir', dir);
     59 
     60  await dir.remove({recursive: true});
     61  assert_array_equals(await getSortedDirectoryEntries(root), ['file-to-keep']);
     62 }, 'remove() on a directory recursively should delete all sub-items');
     63 
     64 directory_test(async (t, root) => {
     65  const handle = await createFileWithContents('file-to-remove', '12345', root);
     66  await createFileWithContents('file-to-keep', 'abc', root);
     67  await handle.remove({recursive: true});
     68 
     69  assert_array_equals(await getSortedDirectoryEntries(root), ['file-to-keep']);
     70  await promise_rejects_dom(t, 'NotFoundError', getFileContents(handle));
     71 }, 'remove() on a file should ignore the recursive option');
     72 
     73 directory_test(async (t, root) => {
     74  const handle = await createFileWithContents('file-to-remove', '12345', root);
     75  await createFileWithContents('file-to-keep', 'abc', root);
     76 
     77  const writable = await cleanup_writable(t, await handle.createWritable());
     78  await promise_rejects_dom(t, 'NoModificationAllowedError', handle.remove());
     79 
     80  await writable.close();
     81  assert_array_equals(
     82      await getSortedDirectoryEntries(root),
     83      ['file-to-keep', 'file-to-remove']);
     84 
     85  await handle.remove();
     86  assert_array_equals(await getSortedDirectoryEntries(root), ['file-to-keep']);
     87  await promise_rejects_dom(t, 'NotFoundError', getFileContents(handle));
     88 }, 'remove() while the file has an open writable fails');
     89 
     90 promise_test(async (t) => {
     91  const root = await navigator.storage.getDirectory();
     92  await root.getFileHandle('file.txt', {create: true});
     93  assert_array_equals(await getSortedDirectoryEntries(root), ['file.txt']);
     94 
     95  await root.remove();
     96 
     97  // Creates a fresh sandboxed file system.
     98  const newRoot = await navigator.storage.getDirectory();
     99  assert_array_equals(await getSortedDirectoryEntries(newRoot), []);
    100 }, 'can remove the root of a sandbox file system');