diff --git a/shell/browser/api/electron_api_system_preferences_win.cc b/shell/browser/api/electron_api_system_preferences_win.cc index 5eeda4c87e84..46cac9af3051 100644 --- a/shell/browser/api/electron_api_system_preferences_win.cc +++ b/shell/browser/api/electron_api_system_preferences_win.cc @@ -16,6 +16,7 @@ #include "base/win/wrapped_window_proc.h" #include "shell/common/color_util.h" #include "shell/common/process_util.h" +#include "skia/ext/skia_utils_win.h" #include "ui/gfx/win/hwnd_util.h" #include "ui/gfx/win/singleton_hwnd.h" @@ -88,7 +89,7 @@ std::string SystemPreferences::GetAccentColor() { if (!color.has_value()) return ""; - return hexColorDWORDToRGBA(color.value()); + return ToRGBAHex(skia::COLORREFToSkColor(color.value()), false); } std::string SystemPreferences::GetColor(gin_helper::ErrorThrower thrower, diff --git a/spec/api-browser-window-spec.ts b/spec/api-browser-window-spec.ts index 84784a7c322d..e790934c89db 100755 --- a/spec/api-browser-window-spec.ts +++ b/spec/api-browser-window-spec.ts @@ -1,4 +1,4 @@ -import { app, BrowserWindow, BrowserView, dialog, ipcMain, OnBeforeSendHeadersListenerDetails, net, protocol, screen, webContents, webFrameMain, session, WebContents, WebFrameMain } from 'electron/main'; +import { app, BrowserWindow, BrowserView, dialog, ipcMain, OnBeforeSendHeadersListenerDetails, net, protocol, screen, webContents, webFrameMain, session, systemPreferences, WebContents, WebFrameMain } from 'electron/main'; import { expect } from 'chai'; @@ -2590,6 +2590,14 @@ describe('BrowserWindow module', () => { expect(accentColor).to.match(/^#[0-9A-F]{6}$/i); }); + it('matches the systemPreferences system color when true', () => { + const w = new BrowserWindow({ show: false }); + w.setAccentColor(true); + const accentColor = w.getAccentColor() as string; + const systemColor = systemPreferences.getAccentColor().slice(0, 6); + expect(accentColor).to.equal(`#${systemColor}`); + }); + it('returns the correct accent color after multiple changes', () => { const w = new BrowserWindow({ show: false });