mirror of
https://github.com/electron/electron.git
synced 2026-04-10 03:01:51 -04:00
test: add setTitlebarOverlay spec (#34252)
spec: add setTitlebarOverlay spec Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
This commit is contained in:
@@ -2185,8 +2185,10 @@ describe('BrowserWindow module', () => {
|
||||
const [, newOverlayRect] = await geometryChange;
|
||||
expect(newOverlayRect.width).to.equal(overlayRect.width + 400);
|
||||
};
|
||||
afterEach(closeAllWindows);
|
||||
afterEach(() => { ipcMain.removeAllListeners('geometrychange'); });
|
||||
afterEach(async () => {
|
||||
await closeAllWindows();
|
||||
ipcMain.removeAllListeners('geometrychange');
|
||||
});
|
||||
it('creates browser window with hidden title bar', () => {
|
||||
const w = new BrowserWindow({
|
||||
show: false,
|
||||
@@ -2241,9 +2243,15 @@ describe('BrowserWindow module', () => {
|
||||
const overlayEnabled = await w.webContents.executeJavaScript('navigator.windowControlsOverlay.visible');
|
||||
expect(overlayEnabled).to.be.true('overlayEnabled');
|
||||
const overlayRectPreMax = await w.webContents.executeJavaScript('getJSOverlayProperties()');
|
||||
await w.maximize();
|
||||
const max = await w.isMaximized();
|
||||
expect(max).to.equal(true);
|
||||
|
||||
if (!w.isMaximized()) {
|
||||
const maximize = emittedOnce(w, 'maximize');
|
||||
w.show();
|
||||
w.maximize();
|
||||
await maximize;
|
||||
}
|
||||
|
||||
expect(w.isMaximized()).to.be.true('not maximized');
|
||||
const overlayRectPostMax = await w.webContents.executeJavaScript('getJSOverlayProperties()');
|
||||
|
||||
expect(overlayRectPreMax.y).to.equal(0);
|
||||
@@ -2258,16 +2266,20 @@ describe('BrowserWindow module', () => {
|
||||
// Confirm that maximization only affected the height of the buttons and not the title bar
|
||||
expect(overlayRectPostMax.height).to.equal(size);
|
||||
};
|
||||
afterEach(closeAllWindows);
|
||||
afterEach(() => { ipcMain.removeAllListeners('geometrychange'); });
|
||||
afterEach(async () => {
|
||||
await closeAllWindows();
|
||||
ipcMain.removeAllListeners('geometrychange');
|
||||
});
|
||||
it('sets Window Control Overlay with title bar height of 40', async () => {
|
||||
await testWindowsOverlayHeight(40);
|
||||
});
|
||||
});
|
||||
|
||||
ifdescribe(process.platform === 'win32')('BrowserWindow.setTitlebarOverlay', () => {
|
||||
afterEach(closeAllWindows);
|
||||
afterEach(() => { ipcMain.removeAllListeners('geometrychange'); });
|
||||
afterEach(async () => {
|
||||
await closeAllWindows();
|
||||
ipcMain.removeAllListeners('geometrychange');
|
||||
});
|
||||
|
||||
it('does not crash when an invalid titleBarStyle was initially set', () => {
|
||||
const win = new BrowserWindow({
|
||||
@@ -2289,6 +2301,59 @@ describe('BrowserWindow module', () => {
|
||||
});
|
||||
}).to.not.throw();
|
||||
});
|
||||
|
||||
it('correctly updates the height of the overlay', async () => {
|
||||
const testOverlay = async (w: BrowserWindow, size: Number, firstRun: boolean) => {
|
||||
const overlayHTML = path.join(__dirname, 'fixtures', 'pages', 'overlay.html');
|
||||
const overlayReady = emittedOnce(ipcMain, 'geometrychange');
|
||||
await w.loadFile(overlayHTML);
|
||||
if (firstRun) {
|
||||
await overlayReady;
|
||||
}
|
||||
|
||||
const overlayEnabled = await w.webContents.executeJavaScript('navigator.windowControlsOverlay.visible');
|
||||
expect(overlayEnabled).to.be.true('overlayEnabled');
|
||||
const { height: preMaxHeight } = await w.webContents.executeJavaScript('getJSOverlayProperties()');
|
||||
|
||||
if (!w.isMaximized()) {
|
||||
const maximize = emittedOnce(w, 'maximize');
|
||||
w.show();
|
||||
w.maximize();
|
||||
await maximize;
|
||||
}
|
||||
|
||||
expect(w.isMaximized()).to.be.true('not maximized');
|
||||
const { x, y, width, height } = await w.webContents.executeJavaScript('getJSOverlayProperties()');
|
||||
expect(x).to.equal(0);
|
||||
expect(y).to.equal(0);
|
||||
expect(width).to.be.greaterThan(0);
|
||||
expect(height).to.equal(size);
|
||||
expect(preMaxHeight).to.equal(size);
|
||||
};
|
||||
|
||||
const INITIAL_SIZE = 40;
|
||||
const w = new BrowserWindow({
|
||||
show: false,
|
||||
width: 400,
|
||||
height: 400,
|
||||
titleBarStyle: 'hidden',
|
||||
webPreferences: {
|
||||
nodeIntegration: true,
|
||||
contextIsolation: false
|
||||
},
|
||||
titleBarOverlay: {
|
||||
height: INITIAL_SIZE
|
||||
}
|
||||
});
|
||||
|
||||
await testOverlay(w, INITIAL_SIZE, true);
|
||||
|
||||
w.setTitleBarOverlay({
|
||||
height: INITIAL_SIZE + 10
|
||||
});
|
||||
|
||||
await testOverlay(w, INITIAL_SIZE + 10, false);
|
||||
});
|
||||
});
|
||||
|
||||
ifdescribe(process.platform === 'darwin')('"enableLargerThanScreen" option', () => {
|
||||
|
||||
Reference in New Issue
Block a user