Makelore 2.0 initial clean snapshot

This commit is contained in:
inman
2026-07-29 17:22:35 +08:00
commit b8ca3f8eea
694 changed files with 139782 additions and 0 deletions

View File

@@ -0,0 +1,90 @@
import { describe, expect, it, vi } from 'vitest';
import {
installMediaPermissionHandler,
isAllowedMediaPermissionCheck,
isAllowedMediaPermissionRequest,
} from '@electron/main/media-permissions';
function createMainWindowStub() {
return {
isDestroyed: vi.fn(() => false),
webContents: {
id: 42,
session: {
setPermissionCheckHandler: vi.fn(),
setPermissionRequestHandler: vi.fn(),
},
},
};
}
describe('media permissions', () => {
it('allows audio media permission requests from the main window', () => {
const mainWindow = createMainWindowStub();
expect(
isAllowedMediaPermissionRequest(
mainWindow.webContents,
'media',
{ mediaTypes: ['audio'] },
mainWindow,
),
).toBe(true);
});
it('denies media permission requests from other web contents', () => {
const mainWindow = createMainWindowStub();
expect(
isAllowedMediaPermissionRequest(
{ id: 7 },
'media',
{ mediaTypes: ['audio'] },
mainWindow,
),
).toBe(false);
});
it('allows audio media permission checks from the main window', () => {
const mainWindow = createMainWindowStub();
expect(
isAllowedMediaPermissionCheck(
mainWindow.webContents,
'media',
mainWindow,
{ mediaType: 'audio', isMainFrame: true },
),
).toBe(true);
});
it('denies non-media permissions', () => {
const mainWindow = createMainWindowStub();
expect(
isAllowedMediaPermissionRequest(
mainWindow.webContents,
'notifications',
{ mediaTypes: ['audio'] },
mainWindow,
),
).toBe(false);
});
it('installs scoped media permission handlers on the main window session', () => {
const mainWindow = createMainWindowStub();
installMediaPermissionHandler(mainWindow);
expect(mainWindow.webContents.session.setPermissionCheckHandler).toHaveBeenCalledTimes(1);
expect(mainWindow.webContents.session.setPermissionRequestHandler).toHaveBeenCalledTimes(1);
const checkHandler = mainWindow.webContents.session.setPermissionCheckHandler.mock.calls[0]?.[0];
const handler = mainWindow.webContents.session.setPermissionRequestHandler.mock.calls[0]?.[0];
const callback = vi.fn();
expect(checkHandler?.(mainWindow.webContents, 'media', '', { mediaType: 'audio', isMainFrame: true })).toBe(true);
handler?.(mainWindow.webContents, 'media', callback, { mediaTypes: ['audio'] });
expect(callback).toHaveBeenCalledWith(true);
});
});