mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-08-03 19:21:32 -07:00
fix(overlay): restore mpv focus and pointer state on macOS (#104)
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
import assert from 'node:assert/strict';
|
||||
import test from 'node:test';
|
||||
import { restoreMacOSMpvFocusAfterModalClose } from './macos-modal-focus-handoff';
|
||||
|
||||
test('restoreMacOSMpvFocusAfterModalClose focuses mpv, refreshes tracker, then updates visibility on macOS', async () => {
|
||||
const calls: string[] = [];
|
||||
|
||||
await restoreMacOSMpvFocusAfterModalClose({
|
||||
platform: 'darwin',
|
||||
focusMpv: async () => {
|
||||
calls.push('focus');
|
||||
},
|
||||
getWindowTracker: () => ({
|
||||
refreshNow: async () => {
|
||||
calls.push('refresh');
|
||||
},
|
||||
}),
|
||||
updateVisibleOverlayVisibility: () => {
|
||||
calls.push('visibility');
|
||||
},
|
||||
warn: () => {},
|
||||
});
|
||||
|
||||
assert.deepEqual(calls, ['focus', 'refresh', 'visibility']);
|
||||
});
|
||||
|
||||
test('restoreMacOSMpvFocusAfterModalClose skips non-macOS platforms', async () => {
|
||||
const calls: string[] = [];
|
||||
|
||||
await restoreMacOSMpvFocusAfterModalClose({
|
||||
platform: 'linux',
|
||||
focusMpv: async () => {
|
||||
calls.push('focus');
|
||||
},
|
||||
getWindowTracker: () => null,
|
||||
updateVisibleOverlayVisibility: () => {
|
||||
calls.push('visibility');
|
||||
},
|
||||
warn: () => {},
|
||||
});
|
||||
|
||||
assert.deepEqual(calls, []);
|
||||
});
|
||||
|
||||
test('restoreMacOSMpvFocusAfterModalClose still updates visibility when tracker refresh fails', async () => {
|
||||
const calls: string[] = [];
|
||||
|
||||
await restoreMacOSMpvFocusAfterModalClose({
|
||||
platform: 'darwin',
|
||||
focusMpv: async () => {
|
||||
calls.push('focus');
|
||||
},
|
||||
getWindowTracker: () => ({
|
||||
refreshNow: async () => {
|
||||
calls.push('refresh');
|
||||
throw new Error('refresh failed');
|
||||
},
|
||||
}),
|
||||
updateVisibleOverlayVisibility: () => {
|
||||
calls.push('visibility');
|
||||
},
|
||||
warn: (message) => {
|
||||
calls.push(`warn:${message}`);
|
||||
},
|
||||
});
|
||||
|
||||
assert.deepEqual(calls, [
|
||||
'focus',
|
||||
'refresh',
|
||||
'warn:Failed to refresh macOS mpv focus after modal close',
|
||||
'visibility',
|
||||
]);
|
||||
});
|
||||
Reference in New Issue
Block a user