From 9febeb35965e37c6ff58659546f6b9f54780da1b Mon Sep 17 00:00:00 2001 From: Samuel Attard Date: Wed, 10 Mar 2021 20:09:20 -0800 Subject: [PATCH 1/4] fix: handle a nil backgroundColor in win.getBackgroundColor() --- shell/browser/native_window_mac.mm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/shell/browser/native_window_mac.mm b/shell/browser/native_window_mac.mm index 96c75b7269211..56449534dc0b6 100644 --- a/shell/browser/native_window_mac.mm +++ b/shell/browser/native_window_mac.mm @@ -1202,8 +1202,10 @@ void ViewDidMoveToSuperview(NSView* self, SEL _cmd) { } 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) { From cd2daeabc3d70452e44e18709ccba03dfec80f91 Mon Sep 17 00:00:00 2001 From: Samuel Attard Date: Thu, 11 Mar 2021 13:23:13 -0800 Subject: [PATCH 2/4] spec: add crash case --- .../index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 spec-main/fixtures/crash-cases/transparent-window-get-background-color/index.js 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 0000000000000..5742ffa171e0c --- /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()); +}); From bf49669aa304bdcd72b50b6af94a6b778fa6351d Mon Sep 17 00:00:00 2001 From: Samuel Attard Date: Fri, 12 Mar 2021 23:36:14 -0800 Subject: [PATCH 3/4] fix: update to fix native_views transparent color --- shell/browser/native_window_views.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/shell/browser/native_window_views.cc b/shell/browser/native_window_views.cc index 87611df2c9886..e434d9d733005 100644 --- a/shell/browser/native_window_views.cc +++ b/shell/browser/native_window_views.cc @@ -915,7 +915,9 @@ bool NativeWindowViews::IsKiosk() { } 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) { From e452bc77b9a03ac9976f7abf8efd52952b3cc3d6 Mon Sep 17 00:00:00 2001 From: Samuel Attard Date: Sat, 13 Mar 2021 14:50:59 -0800 Subject: [PATCH 4/4] chore: fix lint --- shell/browser/native_window_views.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/shell/browser/native_window_views.cc b/shell/browser/native_window_views.cc index e434d9d733005..bf27c24a5c023 100644 --- a/shell/browser/native_window_views.cc +++ b/shell/browser/native_window_views.cc @@ -916,7 +916,8 @@ bool NativeWindowViews::IsKiosk() { SkColor NativeWindowViews::GetBackgroundColor() { auto* background = root_view_->background(); - if (!background) return SK_ColorTRANSPARENT; + if (!background) + return SK_ColorTRANSPARENT; return background->get_color(); }