| <!DOCTYPE html> |
| <head> |
| <title>Test webkitRelativePath IDL attribute</title> |
| </head> |
| <body> |
| <script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> |
| <script src="file:///gen/third_party/blink/public/mojom/choosers/file_chooser.mojom.js"></script> |
| <script src="../resources/mock-file-chooser.js"></script> |
| <script src="../resources/common.js"></script> |
| <script src="../../../resources/testharness.js"></script> |
| <script src="../../../resources/testharnessreport.js"></script> |
| |
| <input type="file" webkitdirectory> |
| <script> |
| // This is an automated-version of external/wpt/entries-api/file-webkitRelativePath-manual.html |
| |
| const t = async_test('webkitRelativePath is relative from the parent of the chosen directory'); |
| t.step(() => { |
| assert_own_property(window, 'eventSender'); |
| |
| const file = document.querySelector('input'); |
| file.addEventListener('change', t.step_func_done(() => { |
| const files = Array.from(file.files).sort((a, b) => a.name < b.name ? -1 : b.name < a.name ? 1 : 0); |
| assert_equals(files.length, 3); |
| assert_equals(files[0].webkitRelativePath, 'a/b/c/d/1.txt'); |
| assert_equals(files[1].webkitRelativePath, 'a/b/c/d/2.txt'); |
| assert_equals(files[2].webkitRelativePath, 'a/b/c/3.txt'); |
| // mockFileChooserFactory doesn't support concurrent multiple sessions. |
| setTimeout(runTest2Later, 0); |
| })); |
| |
| const chosenDir = '/tmp/web_tests/external/wpt/entries-api/support/a'; |
| mockFileChooserFactory.setPathsToBeChosen([chosenDir + '/b/c/d/1.txt', |
| chosenDir + '/b/c/d/2.txt', |
| chosenDir + '/b/c/3.txt'], chosenDir) |
| clickElement(file); |
| }); |
| |
| const t2 = async_test('webkitRelativePath is relative from the selected root directory'); |
| function runTest2Later() { |
| t2.step(() => { |
| assert_own_property(window, 'eventSender'); |
| |
| const file = document.querySelector('input'); |
| file.addEventListener('change', t2.step_func_done(() => { |
| const files = Array.from(file.files).sort((a, b) => a.name < b.name ? -1 : b.name < a.name ? 1 : 0); |
| assert_equals(files.length, 2); |
| assert_equals(files[0].webkitRelativePath, '/Users/tkent/1.txt'); |
| assert_equals(files[1].webkitRelativePath, '/Users/tkent/tmp/2.txt'); |
| })); |
| |
| mockFileChooserFactory.setPathsToBeChosen(['/Users/tkent/1.txt', |
| '/Users/tkent/tmp/2.txt'], '/') |
| clickElement(file); |
| }); |
| } |
| </script> |
| </body> |