diff --git a/playground/src/index.html b/playground/src/index.html index f65b35dd..a8819b2a 100644 --- a/playground/src/index.html +++ b/playground/src/index.html @@ -178,6 +178,7 @@

Session ID:

SDK Actions
+ diff --git a/playground/src/main.ts b/playground/src/main.ts index fed8134f..d55d731c 100644 --- a/playground/src/main.ts +++ b/playground/src/main.ts @@ -54,6 +54,21 @@ function createWindow() { }); } +function createNewWindow() { + const win = new BrowserWindow({ + width: 1024, + height: 768, + show: !isTestMode, + webPreferences: { + preload: path.join(__dirname, 'preload.js'), + contextIsolation: true, + nodeIntegration: false, + }, + }); + + void win.loadFile(path.join(__dirname, 'index.html')); +} + // IPC handler to get internal context ipcMain.handle('get-internal-context', () => getInternalContext()); @@ -61,6 +76,10 @@ ipcMain.handle('stop-session', () => { stopSession(); }); +ipcMain.handle('open-new-window', () => { + createNewWindow(); +}); + ipcMain.handle('generateTelemetryError', () => { _generateTelemetryError(); }); diff --git a/playground/src/preload.ts b/playground/src/preload.ts index 1875b57c..373af41d 100644 --- a/playground/src/preload.ts +++ b/playground/src/preload.ts @@ -4,6 +4,7 @@ import { contextBridge, ipcRenderer } from 'electron'; contextBridge.exposeInMainWorld('electronAPI', { getInternalContext: () => ipcRenderer.invoke('get-internal-context'), stopSession: () => ipcRenderer.invoke('stop-session'), + openNewWindow: () => ipcRenderer.invoke('open-new-window'), generateTelemetryError: () => ipcRenderer.invoke('generateTelemetryError'), generateUncaughtException: () => ipcRenderer.invoke('generateUncaughtException'), generateUnhandledRejection: () => ipcRenderer.invoke('generateUnhandledRejection'), diff --git a/playground/src/renderer.ts b/playground/src/renderer.ts index 4bcbedbc..bb1d8335 100644 --- a/playground/src/renderer.ts +++ b/playground/src/renderer.ts @@ -20,6 +20,7 @@ datadogRum.init({ interface ElectronAPI { getInternalContext: () => Promise<{ session_id: string } | undefined>; stopSession: () => Promise; + openNewWindow: () => Promise; generateTelemetryError: () => Promise; generateUncaughtException: () => Promise; generateUnhandledRejection: () => Promise; @@ -120,6 +121,12 @@ crashBtn.addEventListener('click', () => { void window.electronAPI.crash(); }); +// Handle new window button click +const newWindowBtn = document.getElementById('new-window-btn') as HTMLButtonElement; +newWindowBtn.addEventListener('click', () => { + void window.electronAPI.openNewWindow(); +}); + // Handle open in RUM Explorer button click const openRumExplorerBtn = document.getElementById('open-rum-explorer') as HTMLButtonElement; openRumExplorerBtn.addEventListener('click', () => {