| // Copyright 2022 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| (async function(testRunner) { |
| const {page, session, dp} = await testRunner.startURL( |
| 'resources/body.html', |
| 'Tests that file picker interception works as expected'); |
| |
| await dp.Page.enable(); |
| |
| dp.Page.setInterceptFileChooserDialog({ enabled: true }); |
| |
| // Test file picker APIs. |
| const result = await session.evaluateAsyncWithUserGesture(` |
| window.showOpenFilePicker(); |
| `); |
| testRunner.log(result); |
| |
| const result2 = await session.evaluateAsyncWithUserGesture(` |
| window.showSaveFilePicker(); |
| `); |
| testRunner.log(result2); |
| |
| const result3 = await session.evaluateAsyncWithUserGesture(` |
| window.showDirectoryPicker(); |
| `); |
| testRunner.log(result3); |
| |
| // Test <input type="file"> element. |
| const [event] = await Promise.all([ |
| dp.Page.onceFileChooserOpened(), |
| session.evaluateAsyncWithUserGesture(async () => { |
| const picker = document.createElement('input'); |
| picker.type = 'file'; |
| picker.click(); |
| }) |
| ]); |
| testRunner.log('Intercepted file chooser mode: ' + event.params.mode); |
| |
| testRunner.completeTest(); |
| }) |