// This is a content-script that is injected only when the devtools are // activated. Because it is not injected using eval, it has full privilege // to the chrome runtime API. It serves as a proxy between the injected // backend and the Vue devtools panel. const port = chrome.runtime.connect({ name: 'content-script', }) port.onMessage.addListener(sendMessageToBackend) window.addEventListener('message', sendMessageToDevtools) port.onDisconnect.addListener(handleDisconnect) sendMessageToBackend('init') function sendMessageToBackend(payload) { window.postMessage({ source: 'vue-devtools-proxy', payload, }, '*') } function sendMessageToDevtools(e) { if (e.data && e.data.source === 'vue-devtools-backend') { port.postMessage(e.data.payload) } else if (e.data && e.data.source === 'vue-devtools-backend-injection') { if (e.data.payload === 'listening') { sendMessageToBackend('init') } } } function handleDisconnect() { window.removeEventListener('message', sendMessageToDevtools) sendMessageToBackend('shutdown') }