From 0698b5f1be7b9201f403577443fc1fdb1e904fdc Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 15 Nov 2016 10:49:51 -0800 Subject: [PATCH 1/4] Add reload menu item role --- default_app/main.js | 6 +----- lib/browser/api/menu-item-roles.js | 7 ++++++- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/default_app/main.js b/default_app/main.js index a3b8c9bc77..afd50eb44b 100644 --- a/default_app/main.js +++ b/default_app/main.js @@ -84,11 +84,7 @@ app.once('ready', () => { label: 'View', submenu: [ { - label: 'Reload', - accelerator: 'CmdOrCtrl+R', - click (item, focusedWindow) { - if (focusedWindow) focusedWindow.reload() - } + role: 'reload' }, { label: 'Toggle Developer Tools', diff --git a/lib/browser/api/menu-item-roles.js b/lib/browser/api/menu-item-roles.js index 888ff4f6b5..1597141fa5 100644 --- a/lib/browser/api/menu-item-roles.js +++ b/lib/browser/api/menu-item-roles.js @@ -72,6 +72,11 @@ const roles = { accelerator: process.platform === 'win32' ? 'Control+Y' : 'Shift+CommandOrControl+Z', webContentsMethod: 'redo' }, + reload: { + label: 'Reload', + accelerator: 'CmdOrCtrl+R', + windowMethod: 'reload' + }, resetzoom: { label: 'Actual Size', accelerator: 'CommandOrControl+0', @@ -138,7 +143,7 @@ const canExecuteRole = (role) => { if (!roles.hasOwnProperty(role)) return false if (process.platform !== 'darwin') return true // macOS handles all roles natively except the ones listed below - return ['zoomin', 'zoomout', 'resetzoom'].includes(role) + return ['reload', 'resetzoom', 'zoomin', 'zoomout'].includes(role) } exports.getDefaultLabel = (role) => { From 88959079bdd5da58c933e79970179647540764cb Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 15 Nov 2016 10:52:03 -0800 Subject: [PATCH 2/4] Add toggledevtools menu item role --- default_app/main.js | 6 +----- lib/browser/api/menu-item-roles.js | 7 ++++++- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/default_app/main.js b/default_app/main.js index afd50eb44b..332ff4bf25 100644 --- a/default_app/main.js +++ b/default_app/main.js @@ -87,11 +87,7 @@ app.once('ready', () => { role: 'reload' }, { - label: 'Toggle Developer Tools', - accelerator: process.platform === 'darwin' ? 'Alt+Command+I' : 'Ctrl+Shift+I', - click (item, focusedWindow) { - if (focusedWindow) focusedWindow.toggleDevTools() - } + role: 'toggledevtools' }, { type: 'separator' diff --git a/lib/browser/api/menu-item-roles.js b/lib/browser/api/menu-item-roles.js index 1597141fa5..7777926cd4 100644 --- a/lib/browser/api/menu-item-roles.js +++ b/lib/browser/api/menu-item-roles.js @@ -98,6 +98,11 @@ const roles = { stopspeaking: { label: 'Stop Speaking' }, + toggledevtools: { + label: 'Toggle Developer Tools', + accelerator: process.platform === 'darwin' ? 'Alt+Command+I' : 'Ctrl+Shift+I', + windowMethod: 'toggleDevTools' + }, togglefullscreen: { label: 'Toggle Full Screen', accelerator: process.platform === 'darwin' ? 'Control+Command+F' : 'F11', @@ -143,7 +148,7 @@ const canExecuteRole = (role) => { if (!roles.hasOwnProperty(role)) return false if (process.platform !== 'darwin') return true // macOS handles all roles natively except the ones listed below - return ['reload', 'resetzoom', 'zoomin', 'zoomout'].includes(role) + return ['reload', 'resetzoom', 'toggledevtools', 'zoomin', 'zoomout'].includes(role) } exports.getDefaultLabel = (role) => { From 88809b0e0ba69f879ba1332520affb440fb1383b Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 15 Nov 2016 10:53:36 -0800 Subject: [PATCH 3/4] Document reload and toggledevtools roles --- docs/api/menu-item.md | 2 ++ docs/api/menu.md | 12 ++---------- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/docs/api/menu-item.md b/docs/api/menu-item.md index 5b5324df03..2c8a9c895c 100644 --- a/docs/api/menu-item.md +++ b/docs/api/menu-item.md @@ -56,6 +56,8 @@ The `role` property can have following values: * `minimize` - Minimize current window * `close` - Close current window * `quit`- Quit the application +* `reload` - Reload the current window +* `toggledevtools` - Toggle developer tools in the current window * `togglefullscreen`- Toggle full screen mode on the current window * `resetzoom` - Reset the focused page's zoom level to the original size * `zoomin` - Zoom in the focused page by 10% diff --git a/docs/api/menu.md b/docs/api/menu.md index b4e80689ad..3150d8ad55 100644 --- a/docs/api/menu.md +++ b/docs/api/menu.md @@ -137,18 +137,10 @@ const template = [ label: 'View', submenu: [ { - label: 'Reload', - accelerator: 'CmdOrCtrl+R', - click (item, focusedWindow) { - if (focusedWindow) focusedWindow.reload() - } + role: 'reload' }, { - label: 'Toggle Developer Tools', - accelerator: process.platform === 'darwin' ? 'Alt+Command+I' : 'Ctrl+Shift+I', - click (item, focusedWindow) { - if (focusedWindow) focusedWindow.webContents.toggleDevTools() - } + role: 'toggledevtools' }, { type: 'separator' From 996ddba7159e0ea13ae48e5d2f6135ce55f0fd02 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Thu, 17 Nov 2016 12:23:00 -0800 Subject: [PATCH 4/4] Add rpc error for ELECTRON_BROWSER_MEMBER_GET --- lib/browser/rpc-server.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/browser/rpc-server.js b/lib/browser/rpc-server.js index 54868b21d7..e525464155 100644 --- a/lib/browser/rpc-server.js +++ b/lib/browser/rpc-server.js @@ -363,6 +363,11 @@ ipcMain.on('ELECTRON_BROWSER_MEMBER_SET', function (event, id, name, value) { ipcMain.on('ELECTRON_BROWSER_MEMBER_GET', function (event, id, name) { try { let obj = objectsRegistry.get(id) + + if (obj == null) { + throwRPCError(`Cannot get property '${name}' on missing remote object ${id}`) + } + event.returnValue = valueToMeta(event.sender, obj[name]) } catch (error) { event.returnValue = exceptionToMeta(error)