diff --git a/shell/browser/native_window_mac.mm b/shell/browser/native_window_mac.mm index d72ef1b8bc16d..7864ac48f48aa 100644 --- a/shell/browser/native_window_mac.mm +++ b/shell/browser/native_window_mac.mm @@ -1360,8 +1360,6 @@ void ViewDidMoveToSuperview(NSView* self, SEL _cmd) { return; } - vibrancy_type_ = type; - NSVisualEffectView* effect_view = (NSVisualEffectView*)vibrant_view; if (effect_view == nil) { effect_view = [[[NSVisualEffectView alloc] @@ -1390,7 +1388,7 @@ void ViewDidMoveToSuperview(NSView* self, SEL _cmd) { node::Environment* env = node::Environment::GetCurrent(JavascriptEnvironment::GetIsolate()); - NSVisualEffectMaterial vibrancyType; + NSVisualEffectMaterial vibrancyType{}; if (type == "appearance-based") { EmitWarning(env, "NSVisualEffectMaterialAppearanceBased" + dep_warn, "electron"); @@ -1447,8 +1445,10 @@ void ViewDidMoveToSuperview(NSView* self, SEL _cmd) { } } - if (vibrancyType) + if (vibrancyType) { + vibrancy_type_ = type; [effect_view setMaterial:vibrancyType]; + } } void NativeWindowMac::SetWindowButtonVisibility(bool visible) { diff --git a/spec-main/api-browser-window-spec.ts b/spec-main/api-browser-window-spec.ts index 4eb8ba6d42c63..87150184ac5cc 100644 --- a/spec-main/api-browser-window-spec.ts +++ b/spec-main/api-browser-window-spec.ts @@ -1610,6 +1610,13 @@ describe('BrowserWindow module', () => { w.setVibrancy('' as any); }).to.not.throw(); }); + + it('does not crash if vibrancy is set to an invalid value', () => { + const w = new BrowserWindow({ show: false }); + expect(() => { + w.setVibrancy('i-am-not-a-valid-vibrancy-type' as any); + }).to.not.throw(); + }); }); ifdescribe(process.platform === 'darwin')('trafficLightPosition', () => {