diff --git a/src/preload.js b/src/preload.js index 334006e..4290b19 100644 --- a/src/preload.js +++ b/src/preload.js @@ -9,7 +9,7 @@ * - All IPC channels are explicitly whitelisted * - Prevents XSS from escalating to full system access * - * @version 2.2.0 + * @version 4.0.0 */ const { contextBridge, ipcRenderer } = require('electron'); @@ -117,7 +117,17 @@ const ALLOWED_SEND_CHANNELS = [ 'execute-code', // File open by path - 'open-file-path' + 'open-file-path', + + // PDF editor from toolbar + 'show-pdf-editor-from-toolbar', + + // Menu triggers + 'menu-open', + 'export', + + // Git diff + 'git-diff' ]; const ALLOWED_RECEIVE_CHANNELS = [ diff --git a/tests/preload.test.js b/tests/preload.test.js index 60d75d9..9e4618f 100644 --- a/tests/preload.test.js +++ b/tests/preload.test.js @@ -14,12 +14,29 @@ describe('Preload Security', () => { 'renderer-ready', 'get-theme', 'do-print', + 'do-print-with-options', 'export-with-options', 'export-spreadsheet', 'batch-convert', 'select-folder', 'universal-convert', 'universal-convert-batch', + 'image-convert', + 'image-batch-convert', + 'image-resize', + 'image-compress', + 'image-rotate', + 'audio-convert', + 'audio-batch-convert', + 'audio-extract', + 'audio-trim', + 'audio-merge', + 'video-convert', + 'video-batch-convert', + 'video-compress', + 'video-trim', + 'video-frames', + 'video-gif', 'get-header-footer-settings', 'save-header-footer-settings', 'browse-header-footer-logo', @@ -30,7 +47,26 @@ describe('Preload Security', () => { 'set-custom-start-page', 'process-pdf-operation', 'get-pdf-page-count', - 'select-pdf-folder' + 'select-pdf-folder', + 'open-ascii-generator', + 'open-table-generator', + 'insert-generated-content', + 'save-pasted-image', + 'load-template', + 'list-directory', + 'open-file-path', + 'git-status', + 'git-stage', + 'git-commit', + 'git-log', + 'git-diff', + 'get-snippets', + 'save-snippet', + 'delete-snippet', + 'execute-code', + 'show-pdf-editor-from-toolbar', + 'menu-open', + 'export' ]; const EXPECTED_RECEIVE_CHANNELS = [ @@ -54,18 +90,32 @@ describe('Preload Security', () => { 'show-universal-converter-dialog', 'show-table-generator', 'show-pdf-editor-dialog', + 'show-image-converter', + 'show-audio-converter', + 'show-video-converter', + 'open-pdf-viewer', 'conversion-status', 'conversion-complete', 'batch-progress', + 'image-conversion-complete', + 'audio-conversion-complete', + 'video-conversion-complete', 'folder-selected', 'pdf-folder-selected', 'header-footer-settings-data', 'header-footer-logo-selected', 'header-footer-logo-saved', + 'header-footer-logo-cleared', 'page-settings-data', 'pdf-page-count', 'pdf-operation-complete', - 'pdf-operation-error' + 'pdf-operation-error', + 'pdf-operation-progress', + 'show-ascii-generator-window', + 'show-ascii-generator', + 'show-table-generator-window', + 'open-header-footer-dialog', + 'insert-content' ]; test('should define all expected send channels', () => {