If you're using chrome.scripting.executeScript, I've noticed that func can't return an object directly. I had to serialize the response with JSON.parse, otherwise the script would never return the value.
Broken:
chrome.scripting.executeScript({
target: { tabId: request.tabId },
world: 'MAIN',
func: () => {
const sessionService = window.namespace.__container__.lookup('service:session');
const user = sessionService.get('user');
const course = sessionService.get('course');
const activity = sessionService.get('activity');
return { user, course, activity };
}
}, (bundleInfo) => {
console.log(bundleInfo) // This never gets logged
});
Working:
chrome.scripting.executeScript({
target: { tabId: request.tabId },
world: 'MAIN',
func: () => {
const sessionService = window.namespace.__container__.lookup('service:session');
const user = sessionService.get('user');
const course = sessionService.get('course');
const activity = sessionService.get('activity');
return JSON.stringify({ user, course, activity }); // Serialize the object before returning
}
}, (bundleInfo) => {
console.log(bundleInfo);
});