diff --git a/shell/browser/native_window_mac.mm b/shell/browser/native_window_mac.mm index ea13ec7978a..21fff3e7247 100644 --- a/shell/browser/native_window_mac.mm +++ b/shell/browser/native_window_mac.mm @@ -996,8 +996,10 @@ void NativeWindowMac::SetBackgroundColor(SkColor color) { } SkColor NativeWindowMac::GetBackgroundColor() { - return skia::CGColorRefToSkColor( - [[[window_ contentView] layer] backgroundColor]); + CGColorRef color = [[[window_ contentView] layer] backgroundColor]; + if (!color) + return SK_ColorTRANSPARENT; + return skia::CGColorRefToSkColor(color); } void NativeWindowMac::SetHasShadow(bool has_shadow) { diff --git a/shell/browser/native_window_views.cc b/shell/browser/native_window_views.cc index 646a0368ed5..480445142b3 100644 --- a/shell/browser/native_window_views.cc +++ b/shell/browser/native_window_views.cc @@ -956,7 +956,10 @@ bool NativeWindowViews::IsTabletMode() const { } SkColor NativeWindowViews::GetBackgroundColor() { - return root_view_->background()->get_color(); + auto* background = root_view_->background(); + if (!background) + return SK_ColorTRANSPARENT; + return background->get_color(); } void NativeWindowViews::SetBackgroundColor(SkColor background_color) { diff --git a/spec-main/fixtures/crash-cases/transparent-window-get-background-color/index.js b/spec-main/fixtures/crash-cases/transparent-window-get-background-color/index.js new file mode 100644 index 00000000000..5742ffa171e --- /dev/null +++ b/spec-main/fixtures/crash-cases/transparent-window-get-background-color/index.js @@ -0,0 +1,14 @@ +const { app, BrowserWindow } = require('electron'); + +function createWindow () { + // Create the browser window. + const mainWindow = new BrowserWindow({ + transparent: true + }); + mainWindow.getBackgroundColor(); +} + +app.on('ready', () => { + createWindow(); + setTimeout(() => app.quit()); +});