Popup now works on Chrome as well.

This commit is contained in:
Tamius Han 2018-01-11 22:43:25 +01:00
parent 33acbe5015
commit d4a6901d7d
6 changed files with 39 additions and 214 deletions

View File

@ -1,46 +0,0 @@
// Chrome's tabs.sendMessage() and runtime.sendMessage() APIs are pure cancer
// attempts to make those two work like their Firefox counterparts have failed
//
// because Chrome's implementation of tabs.sendMessage() and runtime.sendMessage()
// make code less nice and more prone to turn into spaghetti _all_ chrome functions
// dealing with these have been moved to this file. Don't forget to include in manifest.
//
//
// welcome to callback hell
var _cancer_popup_port;
var _cancer_uwbg_popup_port;
var _cancer_popup_handleCallbacks = function (message){
if(message.cmd == "has-video-response"){
if(message.response){
if(message.response.hasVideos){
hasVideos = true;
openMenu();
}
}
}
if(message.cmd == "get-config-response"){
if(message.response){
loadConfig(message.response);
}
}
}
var _cancer_init_popup = function() {
var _cancer_popup_port = browser.runtime.connect({name: "_uw_bg_popup"});
_cancer_popup_port.onMessage.addListener(_cancer_handleCallbacks);
}
/*
var ChromeCancer = {
recvmsg: _cancer_recvmsg,
receiveMessage_cs: _cancer_content_receiveMessage,
check4conf: _cancer_check4conf,
check4videos: _cancer_check4videos,
check4videos2: _cancer_check4videos2,
check4conf2: _cancer_check4conf2
}*/

View File

@ -146,26 +146,6 @@ var _res_char = function(newAr, video, player){
_res_setVideoAr(new_ar, video, player); _res_setVideoAr(new_ar, video, player);
} }
// autochar: function(){
//
// if(debugmsg || debugmsg_autoar)
// console.log("uw::autochar | starting. Did we get ar?",char_got_ar,"What about arx and ary?",char_arx,char_ary);
//
// if(!char_got_ar)
// return;
//
// if(!char_arx || !char_ary)
// return;
//
// var ar = char_arx / char_ary;
// if(ar){
// setBestFit(ar);
// last_whatdo = {type: "autoar", what_do: "autoar"};
// }
// }
/* Tukaj povemo, kakšno razmerje stranic ima video. /* Tukaj povemo, kakšno razmerje stranic ima video.
@ -261,82 +241,6 @@ var setVideoAr = function(aspect_ratio, video, player){
this._res_applyCss(nv); this._res_applyCss(nv);
} }
// // Ta funkcija ugotovi, kako se kvadrat s podanim razmerjem stranic najbolj prilega ekranu
// // Predpostavimo, da so ćrne obrobe vselej zgoraj in spodaj, nikoli levo in desno.
// //
// // This function determines how a rectangle with a given aspect ratio best fits the monitor
// // We assume letterbox is always letterbox, never pillarbox.
// var _res_setBestFit = function(ar){
// if(debugmsg || debugmsg_autoar)
// console.log("uw::setBestFit | got ar:",ar);
//
// var player = {width: PLAYER.clientWidth, height: PLAYER.clientHeight};
// var player_ar = player.width / player.height;
//
// var evideo = $("video")[0];
// var video = {width: evideo.videoWidth, height: evideo.videoHeight};
// var video_ar = video.width / video.height;
//
// // Ob predpostavki, da je argument 'ar' pravilen, naračunamo dimenzije videa glede na širino in višino predvajalnika
// // Kot rezultat laho dobimo dve možnosti:
// // A: naračunana širina je širša, kot naš zaslon —> za računanje uporabimo širino (letterbox zgoraj/spodaj,
// // levo/desno pa ne)
// // B: naračunana širina je ožja, kot naš zaslon —> za računanje uporabimo višino (letterbox levo/desno,
// // zgoraj/spodaj pa ne)
//
// if(debugmsg || debugmsg_autoar)
// console.log("uw::setBestFit | here's all we got. ar:",ar,"player:",player,"video:",video);
//
// var tru_width = player.height * ar;
// var tru_height = player.width / ar;
//
// var nv = {w: "", h: "", top: "", left: ""};
//
// if(ar >= video_ar){
// if(ar >= player_ar){
// if(debugmsg || debugmsg_autoar)
// console.log("uw::setBestFit | aspect ratio is wider than player ar.")
// nv.h = player.width / video_ar;
// nv.w = nv.h * ar;
// }
// else{
// if(debugmsg || debugmsg_autoar)
// console.log("uw::setBestFit | aspect ratio is narrower than player ar.", (player.height * ar), nv)
// nv.w = player.height * ar;
// nv.h = nv.w / video_ar;
// }
// }
// else{
// if(ar >= player_ar){
// if(debugmsg || debugmsg_autoar)
// console.log("uw::setBestFit | aspect ratio is wider than player ar.")
// nv.h = player.width / ar;
// nv.w = nv.h * video_ar;
// }
// else{
// if(debugmsg || debugmsg_autoar)
// console.log("uw::setBestFit | aspect ratio is narrower than player ar.", (player.height * ar), nv)
// nv.w = player.height * video_ar;
// nv.h = nv.w / ar;
// }
// }
// if(debugmsg || debugmsg_autoar)
// console.log("uw::setBestFit | new video width and height processed. nv so far:", nv)
//
// nv.top = (player.height - nv.h)/2;
// nv.left = (player.width - nv.w)/2;
//
// if(debugmsg || debugmsg_autoar)
// console.log("uw::setBestFit | tru width:",tru_width,"(player width:",player.width,"); new video size:",nv);
//
// _res_applyCss(nv);
// console.log("uw::setBestFit | css applied");
// }
var _res_reset = function(force){ var _res_reset = function(force){
dimensions = {top: "", left: "", width: "100%", height: "100%"}; dimensions = {top: "", left: "", width: "100%", height: "100%"};
@ -586,9 +490,6 @@ function _res_applyCss(dimensions){
else if(styleArray[i].startsWith("position:")){ else if(styleArray[i].startsWith("position:")){
styleArray[i] = dimensions.position; styleArray[i] = dimensions.position;
} }
else if(styleArray[i].startsWith("object-fit:")){
styleArray[i] = dimensions.objectFit;
}
} }
} }
else{ else{

View File

@ -74,25 +74,17 @@ async function main(){
_main_last_fullscreen = FullScreenDetect.isFullScreen(); _main_last_fullscreen = FullScreenDetect.isFullScreen();
document.addEventListener("mozfullscreenchange", function( event ) { // Poslušamo za lovljenje spremembe iz navadnega načina v celozaslonski način in obratno.
// Listen for and handle changes to and from full screen.
$(document).bind('webkitfullscreenchange mozfullscreenchange fullscreenchange MSFullscreenChange', function(){
if(Debug.debug){ if(Debug.debug){
// console.log("[uw::mozfullscreenchange] full screen state is changing. event:", event); console.log("%c[uw::onfullscreenchange] are we in full screen?","color: #aaf", FullScreenDetect.isFullScreen());
console.log("%c[uw::mozfullscreenchange] are we in full screen?","color: #aaf", FullScreenDetect.isFullScreen());
} }
fullScreenCheck(0); fullScreenCheck(0);
}); });
browser.runtime.onMessage.addListener(receiveMessage);
if(BrowserDetect.usebrowser == "firefox"){
if(Debug.debug)
console.log("[uw::main] detected firefox.");
browser.runtime.onMessage.addListener(receiveMessage);
}
else{
browser.runtime.onMessage.addListener(ChromeCancer.receiveMessage_cs)
}
} }
var _main_fscheck_tries = 3; var _main_fscheck_tries = 3;
@ -142,15 +134,18 @@ function fullScreenCheck(count) {
} }
// comms // comms
function receiveMessage(message) { function receiveMessage(message, sender, sendResponse) {
if(Debug.debug) if(Debug.debug)
console.log("[uw::receiveMessage] we received a message.", message); console.log("[uw::receiveMessage] we received a message.", message);
if(message.cmd == "has-videos"){ if(message.cmd == "has-videos"){
var anyVideos = PageInfo.hasVideos(); var anyVideos = PageInfo.hasVideos();
return Promise.resolve({response: {"hasVideos": anyVideos }});
if(BrowserDetect.usebrowser == "firefox")
return Promise.resolve({response: {"hasVideos": anyVideos }});
sendResponse({response: {"hasVideos":anyVideos}});
return true;
} }
else if(message.cmd == "get-config"){ else if(message.cmd == "get-config"){
@ -169,7 +164,11 @@ function receiveMessage(message) {
// assume current is same as global & change that when you get response from content script // assume current is same as global & change that when you get response from content script
config.arConf.enabled_current = ArDetect.isRunning(); config.arConf.enabled_current = ArDetect.isRunning();
return Promise.resolve({response: config}); if(BrowserDetect.usebrowser == "firefox")
return Promise.resolve({response: config});
sendResponse({response: config});
return true;
} }
else if(message.cmd == "force-ar"){ else if(message.cmd == "force-ar"){
@ -202,7 +201,11 @@ function receiveMessage(message) {
} }
if(message.cmd == "testing"){ if(message.cmd == "testing"){
return Promise.resolve({response: "test response hier"}); if(Browserdetect.usebrowser = "firefox")
return Promise.resolve({response: "test response hier"});
sendResponse({response: "test response hier"});
return true;
} }
} }

View File

@ -9,26 +9,7 @@
}, },
"description": "Aspect ratio fixer for youtube that works around some people's disability to properly encode 21:9 (and sometimes, 16:9) videos.", "description": "Aspect ratio fixer for youtube that works around some people's disability to properly encode 21:9 (and sometimes, 16:9) videos.",
"background": {
"scripts": [
"js/dep/jquery-3.1.1.js",
"js/dep/chrome/chrome-extension-async.js",
"js/lib/BrowserDetect.js",
"js/lib/StorageManager.js",
"js/lib/Comms.js",
"js/conf/Debug.js",
"js/conf/Settings.js",
"js/conf/Keybinds.js",
"js/lib/ChromeCancer.js",
"js/uw-bg.js"
]
},
"content_scripts": [{ "content_scripts": [{
"matches": ["*://*/*"], "matches": ["*://*/*"],
"js": [ "js": [
@ -53,8 +34,6 @@
"js/conf/Keybinds.js", "js/conf/Keybinds.js",
"js/lib/ChromeCancer.js",
"js/uw.js" ], "js/uw.js" ],
"all_frames": true "all_frames": true
}], }],
@ -66,7 +45,7 @@
"browser_action": { "browser_action": {
"default_icon": "res/icons/uw-32.png", "default_icon": "res/icons/uw-32.png",
"default_popup": "res/popup/popup.html", "default_popup": "res/popup/popup.html",
"default_title": "Uʟᴛʀᴀᴡɪᴅɪꜰʏ" "default_title": "Ultrawidify"
}, },
"web_accessible_resources": [ "web_accessible_resources": [

View File

@ -35,21 +35,21 @@ var _config;
var _changeAr_button_shortcuts = { "autoar":"none", "reset":"none", "219":"none", "189":"none", "169":"none" } var _changeAr_button_shortcuts = { "autoar":"none", "reset":"none", "219":"none", "189":"none", "169":"none" }
async function test(){ // async function test(){
var message = {cmd: "testing"}; // var message = {cmd: "testing"};
try{ // try{
var tabs = await Comms.queryTabs({currentWindow: true, active: true}); // var tabs = await Comms.queryTabs({currentWindow: true, active: true});
if(Debug.debug) // if(Debug.debug)
console.log("[popup.js::test] trying to send message", message, " to tab ", tabs[0], ". (all tabs:", tabs,")"); // 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); // var response = await browser.tabs.sendMessage(tabs[0].id, message);
console.log("[popup.js::test] response is this:",response); // console.log("[popup.js::test] response is this:",response);
} // }
catch(e){ // catch(e){
console.log("[popup.js::test] sending message failed. prolly cos browser.tabs no worky?", e); // console.log("[popup.js::test] sending message failed. prolly cos browser.tabs no worky?", e);
} // }
} // }
test(); // test();
@ -370,10 +370,5 @@ document.addEventListener("click", (e) => {
}); });
if(BrowserDetect.usebrowser == "firefox"){ check4videos();
check4videos(); check4conf();
check4conf();
}
else{
}

View File

@ -232,14 +232,7 @@
<script src="../../js/lib/StorageManager.js"></script> <script src="../../js/lib/StorageManager.js"></script>
<script src="../../js/lib/Comms.js"></script> <script src="../../js/lib/Comms.js"></script>
<!-- the following scripts aren't included yet. if they're needed, they need to be added in this order -->
<!-- "js/conf/Debug.js",
"js/conf/Settings.js",
"js/conf/SitesConf.js",
"js/conf/Status.js",-->
<script src="../../js/conf/Settings.js"></script> <script src="../../js/conf/Settings.js"></script>
<script src="../../js/lib/ChromeCancer.js"></script>
<script src="./js/popup.js"></script> <script src="./js/popup.js"></script>
</body> </body>