1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- 'use strict';
- const chai = require('chai');
- const ChildProcess = require('child_process');
- const dirtyChai = require('dirty-chai');
- const path = require('path');
- const { emittedOnce } = require('./events-helpers');
- const { closeWindow } = require('./window-helpers');
- const { remote } = require('electron');
- const { webContents, TopLevelWindow, WebContentsView } = remote;
- const { expect } = chai;
- chai.use(dirtyChai);
- describe('WebContentsView', () => {
- let w = null;
- afterEach(() => closeWindow(w).then(() => { w = null; }));
- it('can be used as content view', () => {
- const web = webContents.create({});
- w = new TopLevelWindow({ show: false });
- w.setContentView(new WebContentsView(web));
- });
- it('prevents adding same WebContents', () => {
- const web = webContents.create({});
- w = new TopLevelWindow({ show: false });
- w.setContentView(new WebContentsView(web));
- expect(() => {
- w.setContentView(new WebContentsView(web));
- }).to.throw('The WebContents has already been added to a View');
- });
- describe('new WebContentsView()', () => {
- it('does not crash on exit', async () => {
- const appPath = path.join(__dirname, 'fixtures', 'api', 'leak-exit-webcontentsview.js');
- const electronPath = remote.getGlobal('process').execPath;
- const appProcess = ChildProcess.spawn(electronPath, [appPath]);
- const [code] = await emittedOnce(appProcess, 'close');
- expect(code).to.equal(0);
- });
- });
- });
|