diff --git a/lib/browser/chrome-extension.js b/lib/browser/chrome-extension.js index 57c40ddcda93..ad78e18d998b 100644 --- a/lib/browser/chrome-extension.js +++ b/lib/browser/chrome-extension.js @@ -83,7 +83,7 @@ ipcMain.on('CHROME_RUNTIME_CONNECT', function (event, extensionId, connectInfo) if (page.webContents.isDestroyed()) return page.webContents.sendToAll(`CHROME_PORT_DISCONNECT_${portId}`) }) - page.webContents.sendToAll('CHROME_RUNTIME_ONCONNECT', event.sender.id, portId, extensionId, connectInfo) + page.webContents.sendToAll(`CHROME_RUNTIME_ONCONNECT_${extensionId}`, event.sender.id, portId, connectInfo) }) ipcMain.on('CHROME_RUNTIME_SENDMESSAGE', function (event, extensionId, message) { @@ -93,7 +93,7 @@ ipcMain.on('CHROME_RUNTIME_SENDMESSAGE', function (event, extensionId, message) return } - page.webContents.sendToAll('CHROME_RUNTIME_ONMESSAGE', message) + page.webContents.sendToAll(`CHROME_RUNTIME_ONMESSAGE_${extensionId}`, message) }) ipcMain.on('CHROME_TABS_EXECUTESCRIPT', function (event, requestId, webContentsId, extensionId, details) { diff --git a/lib/renderer/chrome-api.js b/lib/renderer/chrome-api.js index 1e9f5495c455..fc3ea3072f8d 100644 --- a/lib/renderer/chrome-api.js +++ b/lib/renderer/chrome-api.js @@ -78,30 +78,18 @@ class Port { } } -class OnConnect extends Event { - constructor () { - super() - - ipcRenderer.on('CHROME_RUNTIME_ONCONNECT', (event, webContentsId, portId, extensionId, connectInfo) => { - this.emit(new Port(webContentsId, portId, extensionId, connectInfo.name)) - }) - } -} - -class OnMessage extends Event { - constructor () { - super() - - ipcRenderer.on('CHROME_RUNTIME_ONMESSAGE', (event, message) => { - this.emit(message) - }) - } -} - // Inject chrome API to the |context| exports.injectTo = function (extensionId, context) { const chrome = context.chrome = context.chrome || {} + ipcRenderer.on(`CHROME_RUNTIME_ONCONNECT_${extensionId}`, (event, webContentsId, portId, connectInfo) => { + chrome.runtime.onConnect.emit(new Port(webContentsId, portId, extensionId, connectInfo.name)) + }) + + ipcRenderer.on(`CHROME_RUNTIME_ONMESSAGE_${extensionId}`, (event, message) => { + chrome.runtime.onMessage.emit(message) + }) + chrome.runtime = { getURL: function (path) { return url.format({ @@ -112,7 +100,7 @@ exports.injectTo = function (extensionId, context) { }) }, - onConnect: new OnConnect(), + onConnect: new Event(), connect (...args) { // Parse the optional args. @@ -144,7 +132,7 @@ exports.injectTo = function (extensionId, context) { ipcRenderer.send('CHROME_RUNTIME_SENDMESSAGE', targetExtensionId, message) }, - onMessage: new OnMessage() + onMessage: new Event() } chrome.tabs = { @@ -154,6 +142,13 @@ exports.injectTo = function (extensionId, context) { callback([event.result]) }) ipcRenderer.send('CHROME_TABS_EXECUTESCRIPT', requestId, tabId, extensionId, details) + }, + + sendMessage (tabId, message, options, responseCallback) { + if (responseCallback) { + console.error('responseCallback is not supported') + } + ipcRenderer.sendToAll(tabId, `CHROME_RUNTIME_ONMESSAGE_${extensionId}`, message) } }