From d4a6901d7de803814b009e9afc08b9ad61d80222 Mon Sep 17 00:00:00 2001 From: Tamius Han Date: Thu, 11 Jan 2018 22:43:25 +0100 Subject: [PATCH] Popup now works on Chrome as well. --- js/lib/ChromeCancer.js | 46 -------------------- js/modules/Resizer.js | 99 ------------------------------------------ js/uw.js | 39 +++++++++-------- manifest.json | 23 +--------- res/popup/js/popup.js | 39 ++++++++--------- res/popup/popup.html | 7 --- 6 files changed, 39 insertions(+), 214 deletions(-) delete mode 100644 js/lib/ChromeCancer.js diff --git a/js/lib/ChromeCancer.js b/js/lib/ChromeCancer.js deleted file mode 100644 index d994f1e..0000000 --- a/js/lib/ChromeCancer.js +++ /dev/null @@ -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 -}*/ diff --git a/js/modules/Resizer.js b/js/modules/Resizer.js index 4711adb..df732cf 100644 --- a/js/modules/Resizer.js +++ b/js/modules/Resizer.js @@ -146,26 +146,6 @@ var _res_char = function(newAr, 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. @@ -261,82 +241,6 @@ var setVideoAr = function(aspect_ratio, video, player){ 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){ dimensions = {top: "", left: "", width: "100%", height: "100%"}; @@ -586,9 +490,6 @@ function _res_applyCss(dimensions){ else if(styleArray[i].startsWith("position:")){ styleArray[i] = dimensions.position; } - else if(styleArray[i].startsWith("object-fit:")){ - styleArray[i] = dimensions.objectFit; - } } } else{ diff --git a/js/uw.js b/js/uw.js index c6122e6..b0c2b85 100644 --- a/js/uw.js +++ b/js/uw.js @@ -74,25 +74,17 @@ async function main(){ _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){ -// console.log("[uw::mozfullscreenchange] full screen state is changing. event:", event); - console.log("%c[uw::mozfullscreenchange] are we in full screen?","color: #aaf", FullScreenDetect.isFullScreen()); + console.log("%c[uw::onfullscreenchange] are we in full screen?","color: #aaf", FullScreenDetect.isFullScreen()); } 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; @@ -142,15 +134,18 @@ function fullScreenCheck(count) { } // comms -function receiveMessage(message) { +function receiveMessage(message, sender, sendResponse) { if(Debug.debug) console.log("[uw::receiveMessage] we received a message.", message); if(message.cmd == "has-videos"){ 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"){ @@ -169,7 +164,11 @@ function receiveMessage(message) { // 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}); + if(BrowserDetect.usebrowser == "firefox") + return Promise.resolve({response: config}); + + sendResponse({response: config}); + return true; } else if(message.cmd == "force-ar"){ @@ -202,7 +201,11 @@ function receiveMessage(message) { } 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; } } diff --git a/manifest.json b/manifest.json index 0c88a25..f9241fa 100644 --- a/manifest.json +++ b/manifest.json @@ -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.", - - "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": [{ "matches": ["*://*/*"], "js": [ @@ -53,8 +34,6 @@ "js/conf/Keybinds.js", - "js/lib/ChromeCancer.js", - "js/uw.js" ], "all_frames": true }], @@ -66,7 +45,7 @@ "browser_action": { "default_icon": "res/icons/uw-32.png", "default_popup": "res/popup/popup.html", - "default_title": "Uʟᴛʀᴀᴡɪᴅɪꜰʏ" + "default_title": "Ultrawidify" }, "web_accessible_resources": [ diff --git a/res/popup/js/popup.js b/res/popup/js/popup.js index a1f8aeb..73b32be 100644 --- a/res/popup/js/popup.js +++ b/res/popup/js/popup.js @@ -35,21 +35,21 @@ 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 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(); @@ -370,10 +370,5 @@ document.addEventListener("click", (e) => { }); -if(BrowserDetect.usebrowser == "firefox"){ - check4videos(); - check4conf(); -} -else{ - -} +check4videos(); +check4conf(); diff --git a/res/popup/popup.html b/res/popup/popup.html index 7de5fc1..16910c9 100644 --- a/res/popup/popup.html +++ b/res/popup/popup.html @@ -232,14 +232,7 @@ - - - -