Skip to content

Commit

Permalink
feat: add nativeTheme.inForcedColorsMode
Browse files Browse the repository at this point in the history
  • Loading branch information
miniak committed Mar 19, 2022
1 parent 08d54d2 commit 3068647
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 1 deletion.
5 changes: 5 additions & 0 deletions docs/api/native-theme.md
Expand Up @@ -67,3 +67,8 @@ or is being instructed to show a high-contrast UI.

A `boolean` for if the OS / Chromium currently has an inverted color scheme
or is being instructed to use an inverted color scheme.

### `nativeTheme.inForcedColorsMode` _Windows_ _Readonly_

A `boolean` indicating whether Chromium is in forced colors mode, controlled by system accessibility settings.
Currently, Windows high contrast is the only system setting that triggers forced colors mode.
7 changes: 6 additions & 1 deletion shell/browser/api/electron_api_native_theme.cc
Expand Up @@ -67,6 +67,10 @@ bool NativeTheme::ShouldUseHighContrastColors() {
return ui_theme_->UserHasContrastPreference();
}

bool NativeTheme::InForcedColorsMode() {
return ui_theme_->InForcedColorsMode();
}

#if BUILDFLAG(IS_MAC)
const CFStringRef WhiteOnBlack = CFSTR("whiteOnBlack");
const CFStringRef UniversalAccessDomain = CFSTR("com.apple.universalaccess");
Expand Down Expand Up @@ -106,7 +110,8 @@ gin::ObjectTemplateBuilder NativeTheme::GetObjectTemplateBuilder(
.SetProperty("shouldUseHighContrastColors",
&NativeTheme::ShouldUseHighContrastColors)
.SetProperty("shouldUseInvertedColorScheme",
&NativeTheme::ShouldUseInvertedColorScheme);
&NativeTheme::ShouldUseInvertedColorScheme)
.SetProperty("inForcedColorsMode", &NativeTheme::InForcedColorsMode);
}

const char* NativeTheme::GetTypeName() {
Expand Down
1 change: 1 addition & 0 deletions shell/browser/api/electron_api_native_theme.h
Expand Up @@ -46,6 +46,7 @@ class NativeTheme : public gin::Wrappable<NativeTheme>,
bool ShouldUseDarkColors();
bool ShouldUseHighContrastColors();
bool ShouldUseInvertedColorScheme();
bool InForcedColorsMode();

// ui::NativeThemeObserver:
void OnNativeThemeUpdated(ui::NativeTheme* theme) override;
Expand Down
6 changes: 6 additions & 0 deletions spec-main/api-native-theme-spec.ts
Expand Up @@ -109,4 +109,10 @@ describe('nativeTheme module', () => {
expect(nativeTheme.shouldUseHighContrastColors).to.be.a('boolean');
});
});

describe('nativeTheme.inForcedColorsMode', () => {
it('returns a boolean', () => {
expect(nativeTheme.inForcedColorsMode).to.be.a('boolean');
});
});
});

0 comments on commit 3068647

Please sign in to comment.