/** * background logics for RemotePageController * - redirect messages from RemotePageController(Agent, extension pages) to ContentScript */ export function handlePageControlMessage( message: { type: 'PAGE_CONTROL'; action: string; payload: any; targetTabId: number }, sender: chrome.runtime.MessageSender, sendResponse: (response: unknown) => void ): true | undefined { const PREFIX = '[RemotePageController.background]' const debug = console.debug.bind(console, `\x1b[90m${PREFIX}\x1b[0m`) const { action, payload, targetTabId } = message if (action === 'get_my_tab_id') { debug('get_my_tab_id', sender.tab?.id) sendResponse({ tabId: sender.tab?.id || null }) return } // proxy to content script chrome.tabs .sendMessage(targetTabId, { type: 'PAGE_CONTROL', action, payload, }) .then((result) => { sendResponse(result) }) .catch((error) => { console.error(PREFIX, error) sendResponse({ success: false, error: error instanceof Error ? error.message : String(error), }) }) return true // async response }