From 97ca81b1b5b810707507bb836591eab005aff61f Mon Sep 17 00:00:00 2001 From: "trop[bot]" <37223003+trop[bot]@users.noreply.github.com> Date: Mon, 11 Jul 2022 13:46:35 +0200 Subject: [PATCH] fix: safer check for WCO button updates (#34874) Co-authored-by: Shelley Vohr --- shell/browser/native_window_views.cc | 6 ++--- spec-main/api-browser-window-spec.ts | 35 ++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/shell/browser/native_window_views.cc b/shell/browser/native_window_views.cc index 50ff87885c583..268d48187f2f7 100644 --- a/shell/browser/native_window_views.cc +++ b/shell/browser/native_window_views.cc @@ -876,7 +876,7 @@ bool NativeWindowViews::IsMovable() { void NativeWindowViews::SetMinimizable(bool minimizable) { #if BUILDFLAG(IS_WIN) FlipWindowStyle(GetAcceleratedWidget(), minimizable, WS_MINIMIZEBOX); - if (titlebar_overlay_enabled()) { + if (IsWindowControlsOverlayEnabled()) { auto* frame_view = static_cast(widget()->non_client_view()->frame_view()); frame_view->caption_button_container()->UpdateButtons(); @@ -896,7 +896,7 @@ bool NativeWindowViews::IsMinimizable() { void NativeWindowViews::SetMaximizable(bool maximizable) { #if BUILDFLAG(IS_WIN) FlipWindowStyle(GetAcceleratedWidget(), maximizable, WS_MAXIMIZEBOX); - if (titlebar_overlay_enabled()) { + if (IsWindowControlsOverlayEnabled()) { auto* frame_view = static_cast(widget()->non_client_view()->frame_view()); frame_view->caption_button_container()->UpdateButtons(); @@ -936,7 +936,7 @@ void NativeWindowViews::SetClosable(bool closable) { } else { EnableMenuItem(menu, SC_CLOSE, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED); } - if (titlebar_overlay_enabled()) { + if (IsWindowControlsOverlayEnabled()) { auto* frame_view = static_cast(widget()->non_client_view()->frame_view()); frame_view->caption_button_container()->UpdateButtons(); diff --git a/spec-main/api-browser-window-spec.ts b/spec-main/api-browser-window-spec.ts index 972a09e674d6a..9d48cb77e6cb6 100644 --- a/spec-main/api-browser-window-spec.ts +++ b/spec-main/api-browser-window-spec.ts @@ -2424,6 +2424,41 @@ describe('BrowserWindow module', () => { ifit(process.platform === 'darwin')('sets Window Control Overlay with hidden inset title bar', async () => { await testWindowsOverlay('hiddenInset'); }); + + ifdescribe(process.platform === 'win32')('when an invalid titleBarStyle is initially set', () => { + let w: BrowserWindow; + + beforeEach(() => { + w = new BrowserWindow({ + show: false, + webPreferences: { + nodeIntegration: true, + contextIsolation: false + }, + titleBarOverlay: { + color: '#0000f0', + symbolColor: '#ffffff' + }, + titleBarStyle: 'hiddenInset' + }); + }); + + afterEach(async () => { + await closeAllWindows(); + }); + + it('does not crash changing minimizability ', () => { + expect(() => { + w.setMinimizable(false); + }).to.not.throw(); + }); + + it('does not crash changing maximizability', () => { + expect(() => { + w.setMaximizable(false); + }).to.not.throw(); + }); + }); }); ifdescribe(['win32', 'darwin'].includes(process.platform))('"titleBarOverlay" option', () => {