|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function getFrontPlayer() { |
|
return window.threadPlayer; |
|
} |
|
|
|
function getBackgroundPlayer() { |
|
return chrome.extension.getBackgroundPage().threadPlayer; |
|
} |
|
|
|
function getBackgroundPlayerAsync(callback) { |
|
(chrome || browser).runtime.getBackgroundPage((w) => { |
|
callback(w.threadPlayer); |
|
}); |
|
} |
|
|
|
function getPlayer(mode) { |
|
if (mode === 'front') { |
|
return getFrontPlayer(); |
|
} |
|
if (mode === 'background') { |
|
return getBackgroundPlayer(); |
|
} |
|
return undefined; |
|
} |
|
|
|
function getPlayerAsync(mode, callback) { |
|
if (mode === 'front') { |
|
const player = getFrontPlayer(); |
|
return callback(player); |
|
} |
|
if (mode === 'background') { |
|
return getBackgroundPlayerAsync(callback); |
|
} |
|
return undefined; |
|
} |
|
const frontPlayerListener = []; |
|
function addFrontPlayerListener(listener) { |
|
frontPlayerListener.push(listener); |
|
} |
|
|
|
function addBackgroundPlayerListener(listener) { |
|
return (chrome || browser).runtime.onMessage.addListener( |
|
(msg, sender, res) => { |
|
if (!msg.type.startsWith('BG_PLAYER:')) { |
|
return null; |
|
} |
|
return listener(msg, sender, res); |
|
}, |
|
); |
|
} |
|
|
|
function addPlayerListener(mode, listener) { |
|
if (mode === 'front') { |
|
return addFrontPlayerListener(listener); |
|
} |
|
if (mode === 'background') { |
|
return addBackgroundPlayerListener(listener); |
|
} |
|
return null; |
|
} |
|
|
|
function frontPlayerSendMessage(message) { |
|
if (frontPlayerListener !== []) { |
|
frontPlayerListener.forEach((listener) => { |
|
listener(message); |
|
}); |
|
} |
|
} |
|
|
|
function backgroundPlayerSendMessage(message) { |
|
(chrome || browser).runtime.sendMessage(message); |
|
} |
|
|
|
function playerSendMessage(mode, message) { |
|
if (mode === 'front') { |
|
frontPlayerSendMessage(message); |
|
} |
|
if (mode === 'background') { |
|
backgroundPlayerSendMessage(message); |
|
} |
|
} |
|
|