|
@@ -3,7 +3,7 @@ import { AddressInfo } from 'net';
|
|
|
import * as path from 'path';
|
|
|
import * as fs from 'fs';
|
|
|
import * as http from 'http';
|
|
|
-import { BrowserWindow, ipcMain, webContents, session, WebContents, app } from 'electron/main';
|
|
|
+import { BrowserWindow, ipcMain, webContents, session, WebContents, app, BrowserView } from 'electron/main';
|
|
|
import { clipboard } from 'electron/common';
|
|
|
import { emittedOnce } from './events-helpers';
|
|
|
import { closeAllWindows } from './window-helpers';
|
|
@@ -49,7 +49,7 @@ describe('webContents module', () => {
|
|
|
|
|
|
describe('will-prevent-unload event', function () {
|
|
|
afterEach(closeAllWindows);
|
|
|
- it('does not emit if beforeunload returns undefined', async () => {
|
|
|
+ it('does not emit if beforeunload returns undefined in a BrowserWindow', async () => {
|
|
|
const w = new BrowserWindow({ show: false });
|
|
|
w.webContents.once('will-prevent-unload', () => {
|
|
|
expect.fail('should not have fired');
|
|
@@ -60,14 +60,41 @@ describe('webContents module', () => {
|
|
|
await wait;
|
|
|
});
|
|
|
|
|
|
- it('emits if beforeunload returns false', async () => {
|
|
|
+ it('does not emit if beforeunload returns undefined in a BrowserView', async () => {
|
|
|
+ const w = new BrowserWindow({ show: false });
|
|
|
+ const view = new BrowserView();
|
|
|
+ w.setBrowserView(view);
|
|
|
+ view.setBounds(w.getBounds());
|
|
|
+
|
|
|
+ view.webContents.once('will-prevent-unload', () => {
|
|
|
+ expect.fail('should not have fired');
|
|
|
+ });
|
|
|
+
|
|
|
+ await view.webContents.loadFile(path.join(__dirname, 'fixtures', 'api', 'beforeunload-undefined.html'));
|
|
|
+ const wait = emittedOnce(w, 'closed');
|
|
|
+ w.close();
|
|
|
+ await wait;
|
|
|
+ });
|
|
|
+
|
|
|
+ it('emits if beforeunload returns false in a BrowserWindow', async () => {
|
|
|
const w = new BrowserWindow({ show: false });
|
|
|
await w.loadFile(path.join(__dirname, 'fixtures', 'api', 'beforeunload-false.html'));
|
|
|
w.close();
|
|
|
await emittedOnce(w.webContents, 'will-prevent-unload');
|
|
|
});
|
|
|
|
|
|
- it('supports calling preventDefault on will-prevent-unload events', async () => {
|
|
|
+ it('emits if beforeunload returns false in a BrowserView', async () => {
|
|
|
+ const w = new BrowserWindow({ show: false });
|
|
|
+ const view = new BrowserView();
|
|
|
+ w.setBrowserView(view);
|
|
|
+ view.setBounds(w.getBounds());
|
|
|
+
|
|
|
+ await view.webContents.loadFile(path.join(__dirname, 'fixtures', 'api', 'beforeunload-false.html'));
|
|
|
+ w.close();
|
|
|
+ await emittedOnce(view.webContents, 'will-prevent-unload');
|
|
|
+ });
|
|
|
+
|
|
|
+ it('supports calling preventDefault on will-prevent-unload events in a BrowserWindow', async () => {
|
|
|
const w = new BrowserWindow({ show: false });
|
|
|
w.webContents.once('will-prevent-unload', event => event.preventDefault());
|
|
|
await w.loadFile(path.join(__dirname, 'fixtures', 'api', 'beforeunload-false.html'));
|