electron/spec-main/fixtures/extensions/chrome-api/main.js
John Kleinschmidt 0201b3e571
feat(extensions): add chrome.tabs.connect API (#22457)
* feat(extensions): add chrome.tabs.connect API

* test(extensions): verify that chrome.tabs.connect port communication works
2020-03-05 09:59:32 -05:00

47 lines
1.3 KiB
JavaScript

/* global chrome */
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
sendResponse(message)
})
const testMap = {
connect () {
let success = false
try {
chrome.runtime.connect(chrome.runtime.id)
chrome.runtime.connect(chrome.runtime.id, { name: 'content-script' })
chrome.runtime.connect({ name: 'content-script' })
success = true
} finally {
console.log(JSON.stringify(success))
}
},
getManifest () {
const manifest = chrome.runtime.getManifest()
console.log(JSON.stringify(manifest))
},
sendMessage (message) {
chrome.runtime.sendMessage({ method: 'sendMessage', args: [message] }, response => {
console.log(JSON.stringify(response))
})
},
executeScript (code) {
chrome.runtime.sendMessage({ method: 'executeScript', args: [code] }, response => {
console.log(JSON.stringify(response))
})
},
connectTab (name) {
chrome.runtime.onConnect.addListener(port => {
port.onMessage.addListener(message => {
console.log([port.name, message].join())
})
})
chrome.runtime.sendMessage({ method: 'connectTab', args: [name] })
}
}
const dispatchTest = (event) => {
const { method, args = [] } = JSON.parse(event.data)
testMap[method](...args)
}
window.addEventListener('message', dispatchTest, false)