| // Copyright 2020 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.startBlank( |
| `Tests beforeunload dialog.`); |
| |
| await dp.Page.enable(); |
| dp.Page.navigate({url: testRunner.url('/resources/beforeunload.html')}); |
| await dp.Page.onceLoadEventFired(); |
| |
| // Click to activate beforeunload handling. |
| await dp.Input.dispatchMouseEvent({ |
| type: 'mousePressed', |
| button: 'left', |
| buttons: 0, |
| clickCount: 1, |
| x: 1, |
| y: 1, |
| }); |
| await dp.Input.dispatchMouseEvent({ |
| type: 'mouseReleased', |
| button: 'left', |
| buttons: 0, |
| clickCount: 1, |
| x: 1, |
| y: 1, |
| }); |
| |
| // Try closing first time. |
| dp.Page.close(); |
| const dialog = await dp.Page.onceJavascriptDialogOpening(); |
| |
| testRunner.log(dialog.params.type); |
| |
| dp.Page.handleJavaScriptDialog({ accept: false, }); |
| await dp.Page.javascriptDialogClosed(); |
| |
| // Try closing second time. This will make sure that |
| // the page didn't close after the first beforeunload dialog |
| // was canceled. |
| dp.Page.close(); |
| const dialog2 = await dp.Page.onceJavascriptDialogOpening(); |
| testRunner.log(dialog2.params.type); |
| await dp.Page.handleJavaScriptDialog({ accept: true, }), |
| |
| testRunner.completeTest(); |
| }) |