Okay then. Turns out background script might not be necessary. (Even though not yet removed from the projects, popup now communicates directly with the tab as opposed to background page which forwards everything to the tab. I think. But this means even Chrome — as shit as it is — might be able to do the popup stuff without me having to maintain another

version of code that does the same thing.)
This commit is contained in:
Tamius Han 2018-01-10 23:16:07 +01:00
parent 45c986d66d
commit 33acbe5015
6 changed files with 89 additions and 308 deletions

View File

@ -1,6 +1,6 @@
// Set prod to true when releasing
// _prod = true;
// _prod = false;
_prod = false;
Debug = {
debug: true,

View File

@ -113,6 +113,7 @@ var _kbd_load = async function() {
}
this.keybinds = keybinds;
_kbd_keybinds = keybinds;
}
@ -134,8 +135,13 @@ var _kbd_fetch = async function(){
return _kbd_keybinds;
}
var _kbd_getKeybinds = function(){
return _kbd_keybinds;
}
var Keybinds = {
init: _kbd_setup,
fetch: _kbd_fetch,
mods: _kbd_ModKeys
mods: _kbd_ModKeys,
getKeybinds: _kbd_getKeybinds
}

View File

@ -8,299 +8,34 @@
//
// welcome to callback hell
var _cancer_popup_port;
var _cancer_uwbg_popup_port;
var _cancer_hasVideos_lastValue = undefined;
var _cancer_arActive_lastValue = undefined;
async function _cancer_recvmsg(message, sender, sendResponse){
if(Debug.debug){
console.log("[ChromeCancer::_cancer_recvmsg] received message", message);
}
var tabs = await Comms.queryTabs({currentWindow: true, active: true});
message.sender = "uwbg";
message.receiver = "uw";
if(message.cmd == "has-videos"){
if(tabs.length == 0)
return false;
chrome.tabs.sendMessage(tabs[0].id, message, /*options,*/ function(response){
if(Debug.debug)
console.log("[ChromeCancer::_cancer_recvmsg] received response for -- has-videos -- ", response);
var resp = {response: response};
if(Debug.debug)
console.log("[ChromeCancer::_cancer_recvmsg] sending response for -- has-videos -- ", response);
_cancer_hasVideos_lastValue = response.response;
sendResponse(resp);
});
}
if(message.cmd == "has-videos-cancer"){
var resp = {response: _cancer_hasVideos_lastValue};
sendResponse(resp);
}
if(message.cmd == "get-config-cancer"){
var resp = _cancer_arActive_lastValue;
sendResponse(resp);
}
if(message.cmd == "get-config"){
if (tabs.length == 0)
return false;
message.cmd = "get-ardetect-active";
var config = {};
config.videoAlignment = Settings.miscFullscreenSettings.videoFloat;
config.arConf = {};
config.arConf.enabled_global = Settings.arDetect.enabled == "global";
var keybinds = await Keybinds.fetch();
if(Debug.debug)
console.log("[ChromeCancer::_cancer_recvmsg] Keybinds.fetch returned this:", keybinds);
config.keyboardShortcuts = keybinds;
// predvidevajmo, da je enako. Če je drugače, bomo popravili ko dobimo odgovor
// assume current is same as global & change that when you get response from content script
config.arConf.enabled_current = Settings.arDetect.enabled == "global";
chrome.tabs.sendMessage(tabs[0].id, message, /*options,*/ function(response){
if(Debug.debug){
console.log("[ChromeCancer::_cancer_recvmsg] (callback) config so far:", config);
}
if(response !== undefined){
config.arConf.enabled_current = response.response.arDetect_active;
}
else if(Debug.debug){
console.log("[ChromeCancer::_cancer_recvmsg] (callback) response undefined:", response);
}
var resp = {response: config};
if(Debug.debug)
console.log("[ChromeCancer::_cancer_recvmsg] sending response for -- get-config --", resp);
_cancer_aractive_lastValue = resp;
sendResponse(resp);
});
}
else if(message.cmd == "force-ar"){
if (tabs.length == 0)
return false;
chrome.tabs.sendMessage(tabs[0].id, message); // args: {cmd: string, newAr: number/"auto"}
}
else if(message.cmd == "stop-autoar"){
if (tabs.length == 0)
return false;
chrome.tabs.sendMessage(tabs[0].id, message);
}
else if(message.cmd == "force-video-float"){
if (tabs.length == 0)
return false;
if(message.global){
Settings.miscFullscreenSettings.videoFloat = message.newFloat;
}
chrome.tabs.sendMessage(tabs[0].id, message);
}
else if(message.cmd == "disable-autoar"){
Settings.arDetect.enabled = "no";
Settings.save();
if (tabs.length == 0)
return false;
chrome.tabs.sendMessage(tabs[0].id, "reload-settings");
}
else if(message.cmd == "disable-autoar-whitelist-only"){
Settings.arDetect.enabled = "whitelist";
Settings.save();
if (tabs.length == 0)
return false;
chrome.tabs.sendMessage(tabs[0].id, "reload-settings");
}
else if(message.cmd == "enable-autoar"){
Settings.arDetect.enabled = "global";
Settings.save();
if (tabs.length == 0)
return false;
chrome.tabs.sendMessage(tabs[0].id, "reload-settings");
}
}
function _cancer_content_receiveMessage(message, sender, sendResponse){
if(Debug.debug)
console.log("[ChromeCancer::receiveMessage_cs] ] we received a message.", message);
if(message.cmd == "has-videos"){
var anyVideos = PageInfo.hasVideos();
var resp = {response: {"hasVideos": anyVideos }};
if(Debug.debug)
console.log("[ChromeCancer::receiveMessage_cs] ] sending response for has-videos:",resp);
sendResponse(resp);
}
else if(message.cmd == "get-ardetect-active"){
var arDetect_active = ArDetect.isRunning();
var resp = {response: {"arDetect_active": arDetect_active }}
if(Debug.debug)
console.log("[ChromeCancer::receiveMessage_cs] ] sending response for get-ardetect-active:",resp);
sendResponse(resp);
}
else if(message.cmd == "force-ar"){
if(Debug.debug)
console.log("[ChromeCancer::receiveMessage_cs] ] we're being commanded to change aspect ratio to", message.newAr);
if(message.newAr == "auto"){
ArDetect.stop(); // just in case
ArDetect.arSetup();
}
else{
ArDetect.stop();
// we aren't in full screen, but we will want aspect ratio to be fixed when we go to
Resizer.setFsAr(message.newAr);
}
}
else if(message.cmd == "force-video-float"){
if(Debug.debug)
console.log("[ChromeCancer::receiveMessage_cs] ] we're aligning video to", message.newFloat);
Settings.miscFullscreenSettings.videoFloat = message.newFloat;
Settings.save();
}
else if(message.cmd == "stop-autoar"){
ArDetect.stop();
}
else if(message.cmd == "reload-settings"){
Settings.reload();
}
}
function _cancer_check4conf(){
var command = {};
command.cmd = "get-config";
command.sender = "popup";
command.receiver = "uwbg";
browser.runtime.sendMessage(command, function(response){
if(response){
if(Debug.debug)
console.log("[ChromeCancer::check4conf] received response:",response);
loadConfig(response.response);
}
else{
if(Debug.debug)
console.log("%c[ChromeCancer::check4conf] sending message failed. retrying in 1s ... -- response for get-config:", "color: #f00", response);
setTimeout(_cancer_check4conf, 1000);
}
});
}
function _cancer_check4videos(){
var command = {};
command.cmd = "has-videos";
command.sender = "popup";
command.receiver = "uwbg";
browser.runtime.sendMessage(command, function(response){
if(response){
if(Debug.debug)
console.log("[ChromeCancer::check4videos] received response:",response);
if(response.response.hasVideos){
var _cancer_popup_handleCallbacks = function (message){
if(message.cmd == "has-video-response"){
if(message.response){
if(message.response.hasVideos){
hasVideos = true;
openMenu(selectedMenu);
openMenu();
}
}
else{
if(Debug.debug)
console.log("%c[ChromeCancer::check4conf] sending message failed. retrying in 1s ... -- response for has-videos:", "color: #f00", response);
setTimeout(_cancer_check4videos, 1000);
}
if(message.cmd == "get-config-response"){
if(message.response){
loadConfig(message.response);
}
});
}
}
function _cancer_check4conf2(){
var command = {};
command.cmd = "get-config-cancer";
command.sender = "popup";
command.receiver = "uwbg";
var _cancer_init_popup = function() {
var _cancer_popup_port = browser.runtime.connect({name: "_uw_bg_popup"});
browser.runtime.sendMessage(command, function(response){
if(response){
if(Debug.debug)
console.log("[ChromeCancer::check4conf2 (cancer edit)] received response:",response);
loadConfig(response.response);
}
else{
if(Debug.debug)
console.log("%c[ChromeCancer::check4conf (cancer edit)] sending message failed. retrying in 1s ... -- response for get-config:", "color: #f00", response, chrome.extension.lastError);
setTimeout(_cancer_check4conf2, 1000);
}
});
}
function _cancer_check4videos2(){
var command = {};
command.cmd = "has-videos-cancer";
command.sender = "popup";
command.receiver = "uwbg";
browser.runtime.sendMessage(command, function(response){
if(response){
if(Debug.debug)
console.log("[ChromeCancer::check4videos2 (cancer edit)] received response:",response);
if(response.response.hasVideos){
hasVideos = true;
openMenu(selectedMenu);
}
}
else{
if(Debug.debug)
console.log("%c[ChromeCancer::check4conf2 (cancer edit)] sending message failed. retrying in 1s ... -- response for has-videos-cancer:", "color: #f00", response);
setTimeout(_cancer_check4videos2, 1000);
}
});
_cancer_popup_port.onMessage.addListener(_cancer_handleCallbacks);
}
/*
var ChromeCancer = {
recvmsg: _cancer_recvmsg,
receiveMessage_cs: _cancer_content_receiveMessage,
@ -308,4 +43,4 @@ var ChromeCancer = {
check4videos: _cancer_check4videos,
check4videos2: _cancer_check4videos2,
check4conf2: _cancer_check4conf2
}
}*/

View File

@ -27,6 +27,7 @@ async function sendMessage(message){
}
async function _uwbg_rcvmsg(message){
return;
if(Debug.debug){
console.log("[uw-bg::_uwbg_rcvmsg] received message", message);
}
@ -34,16 +35,16 @@ async function _uwbg_rcvmsg(message){
message.sender = "uwbg";
message.receiver = "uw";
if(message.cmd == "has-videos"){
var response = await sendMessage(message);
if(Debug.debug){
console.log("[uw-bg::_uwbg_rcvmsg] received response for message", message, "response is this -->", response);
}
return Promise.resolve(response);
if(message.cmd == "has-videos"){
var response = await sendMessage(message);
if(Debug.debug){
console.log("[uw-bg::_uwbg_rcvmsg] received response for message", message, "response is this -->", response);
}
return Promise.resolve(response);
}
if(message.cmd == "get-config"){
var config = {};
config.videoAlignment = Settings.miscFullscreenSettings.videoFloat;

View File

@ -152,10 +152,24 @@ function receiveMessage(message) {
}
else if(message.cmd == "get-ardetect-active"){
var arDetect_active = ArDetect.isRunning();
return Promise.resolve({response: {"arDetect_active": arDetect_active }});
else if(message.cmd == "get-config"){
var config = {};
config.videoAlignment = Settings.miscFullscreenSettings.videoFloat;
config.arConf = {};
config.arConf.enabled_global = Settings.arDetect.enabled == "global";
var keybinds = Keybinds.getKeybinds();
if(Debug.debug)
console.log("[uw-bg::_uwbg_rcvmsg] Keybinds.fetch returned this:", keybinds);
config.keyboardShortcuts = keybinds;
// predvidevajmo, da je enako. Če je drugače, bomo popravili ko dobimo odgovor
// assume current is same as global & change that when you get response from content script
config.arConf.enabled_current = ArDetect.isRunning();
return Promise.resolve({response: config});
}
else if(message.cmd == "force-ar"){
@ -186,6 +200,10 @@ function receiveMessage(message) {
else if(message.cmd == "reload-settings"){
Settings.reload();
}
if(message.cmd == "testing"){
return Promise.resolve({response: "test response hier"});
}
}

View File

@ -34,14 +34,39 @@ var hasVideos = false;
var _config;
var _changeAr_button_shortcuts = { "autoar":"none", "reset":"none", "219":"none", "189":"none", "169":"none" }
async function test(){
var message = {cmd: "testing"};
try{
var tabs = await Comms.queryTabs({currentWindow: true, active: true});
if(Debug.debug)
console.log("[popup.js::test] trying to send message", message, " to tab ", tabs[0], ". (all tabs:", tabs,")");
var response = await browser.tabs.sendMessage(tabs[0].id, message);
console.log("[popup.js::test] response is this:",response);
}
catch(e){
console.log("[popup.js::test] sending message failed. prolly cos browser.tabs no worky?", e);
}
}
test();
async function sendMessage(message){
console.log("SENDING MESSAGE TO CONTENT SCRIPT");
var tabs = await Comms.queryTabs({currentWindow: true, active: true});
if(Debug.debug)
console.log("[uw-bg::sendMessage] trying to send message", message, " to tab ", tabs[0], ". (all tabs:", tabs,")");
var response = await browser.tabs.sendMessage(tabs[0].id, message);
console.log("[uw-bg::sendMessage] response is this:",response);
return response;
}
function check4videos(){
var command = {};
command.cmd = "has-videos";
command.sender = "popup";
command.receiver = "uwbg";
Comms.sendMessageRuntime(command)
sendMessage({cmd: "has-videos"})
.then(response => {
if(Debug.debug)
console.log("[popup.js::check4videos] received response:",response);
@ -60,12 +85,8 @@ function check4videos(){
}
function check4conf(){
var command = {};
command.cmd = "get-config";
command.sender = "popup";
command.receiver = "uwbg";
Comms.sendMessageRuntime(command)
sendMessage({cmd: "get-config"})
.then(response => {
if(Debug.debug)
console.log("[popup.js::check4conf] received response:",response);
@ -345,7 +366,7 @@ document.addEventListener("click", (e) => {
var command = getcmd(e);
if(command)
Comms.sendMessageRuntime(command);
sendMessage(command);
});