Officially support the system tray on Windows

This commit is contained in:
Evan Hahn
2021-06-29 12:18:03 -05:00
committed by GitHub
parent 23acbf284e
commit af1f2ea449
24 changed files with 968 additions and 194 deletions

View File

@@ -1,4 +1,4 @@
// Copyright 2018-2020 Signal Messenger, LLC
// Copyright 2018-2021 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import os from 'os';
@@ -167,4 +167,22 @@ describe('Settings', () => {
assert.isTrue(Settings.isDrawAttentionSupported());
});
});
describe('isSystemTraySupported', () => {
it('returns false on macOS', () => {
sandbox.stub(process, 'platform').value('darwin');
assert.isFalse(Settings.isSystemTraySupported());
});
it('returns true on Windows 8', () => {
sandbox.stub(process, 'platform').value('win32');
sandbox.stub(os, 'release').returns('8.0.0');
assert.isTrue(Settings.isSystemTraySupported());
});
it('returns false on Linux', () => {
sandbox.stub(process, 'platform').value('linux');
assert.isFalse(Settings.isSystemTraySupported());
});
});
});

View File

@@ -0,0 +1,55 @@
// Copyright 2021 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import { assert } from 'chai';
import {
SystemTraySetting,
parseSystemTraySetting,
shouldMinimizeToSystemTray,
} from '../../types/SystemTraySetting';
describe('system tray setting utilities', () => {
describe('shouldMinimizeToSystemTray', () => {
it('returns false if the system tray is disabled', () => {
assert.isFalse(
shouldMinimizeToSystemTray(SystemTraySetting.DoNotUseSystemTray)
);
});
it('returns true if the system tray is enabled', () => {
assert.isTrue(
shouldMinimizeToSystemTray(SystemTraySetting.MinimizeToSystemTray)
);
assert.isTrue(
shouldMinimizeToSystemTray(
SystemTraySetting.MinimizeToAndStartInSystemTray
)
);
});
});
describe('parseSystemTraySetting', () => {
it('parses valid strings into their enum values', () => {
assert.strictEqual(
parseSystemTraySetting('DoNotUseSystemTray'),
SystemTraySetting.DoNotUseSystemTray
);
assert.strictEqual(
parseSystemTraySetting('MinimizeToSystemTray'),
SystemTraySetting.MinimizeToSystemTray
);
assert.strictEqual(
parseSystemTraySetting('MinimizeToAndStartInSystemTray'),
SystemTraySetting.MinimizeToAndStartInSystemTray
);
});
it('parses invalid strings to DoNotUseSystemTray', () => {
assert.strictEqual(
parseSystemTraySetting('garbage'),
SystemTraySetting.DoNotUseSystemTray
);
});
});
});