From b4ca651929f667db9269880382c264e08e716047 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Fri, 8 Jan 2021 09:25:25 +0100 Subject: Move JS quirks into subfolder --- qutebrowser/browser/webengine/webenginesettings.py | 2 +- qutebrowser/browser/webengine/webenginetab.py | 8 ++-- qutebrowser/javascript/globalthis_quirk.user.js | 9 ----- .../javascript/object_fromentries_quirk.user.js | 46 ---------------------- qutebrowser/javascript/quirks/globalthis.user.js | 9 +++++ .../javascript/quirks/object_fromentries.user.js | 46 ++++++++++++++++++++++ qutebrowser/javascript/quirks/whatsapp_web.user.js | 17 ++++++++ qutebrowser/javascript/whatsapp_web_quirk.user.js | 17 -------- 8 files changed, 77 insertions(+), 77 deletions(-) delete mode 100644 qutebrowser/javascript/globalthis_quirk.user.js delete mode 100644 qutebrowser/javascript/object_fromentries_quirk.user.js create mode 100644 qutebrowser/javascript/quirks/globalthis.user.js create mode 100644 qutebrowser/javascript/quirks/object_fromentries.user.js create mode 100644 qutebrowser/javascript/quirks/whatsapp_web.user.js delete mode 100644 qutebrowser/javascript/whatsapp_web_quirk.user.js diff --git a/qutebrowser/browser/webengine/webenginesettings.py b/qutebrowser/browser/webengine/webenginesettings.py index 05e7b4b68..4664f1040 100644 --- a/qutebrowser/browser/webengine/webenginesettings.py +++ b/qutebrowser/browser/webengine/webenginesettings.py @@ -422,7 +422,7 @@ def _init_site_specific_quirks(): user_agents = { # Needed to avoid a ""WhatsApp works with Google Chrome 36+" error # page which doesn't allow to use WhatsApp Web at all. Also see the - # additional JS quirk: qutebrowser/javascript/whatsapp_web_quirk.user.js + # additional JS quirk: qutebrowser/javascript/quirks/whatsapp_web.user.js # https://github.com/qutebrowser/qutebrowser/issues/4445 'https://web.whatsapp.com/': no_qtwe_ua, diff --git a/qutebrowser/browser/webengine/webenginetab.py b/qutebrowser/browser/webengine/webenginetab.py index 955be8c22..c0b269665 100644 --- a/qutebrowser/browser/webengine/webenginetab.py +++ b/qutebrowser/browser/webengine/webenginetab.py @@ -1140,16 +1140,16 @@ class _WebEngineScripts(QObject): page_scripts = self._widget.page().scripts() quirks = [ ( - 'whatsapp_web_quirk', + 'whatsapp_web', QWebEngineScript.DocumentReady, QWebEngineScript.ApplicationWorld, ), ] if not qtutils.version_check('5.13'): - quirks.append(('globalthis_quirk', + quirks.append(('globalthis', QWebEngineScript.DocumentCreation, QWebEngineScript.MainWorld)) - quirks.append(('object_fromentries_quirk', + quirks.append(('object_fromentries', QWebEngineScript.DocumentCreation, QWebEngineScript.MainWorld)) @@ -1158,7 +1158,7 @@ class _WebEngineScripts(QObject): script.setName(filename) script.setWorldId(world) script.setInjectionPoint(injection_point) - src = utils.read_file("javascript/{}.user.js".format(filename)) + src = utils.read_file("javascript/quirks/{}.user.js".format(filename)) script.setSourceCode(src) page_scripts.insert(script) diff --git a/qutebrowser/javascript/globalthis_quirk.user.js b/qutebrowser/javascript/globalthis_quirk.user.js deleted file mode 100644 index 03e74de3c..000000000 --- a/qutebrowser/javascript/globalthis_quirk.user.js +++ /dev/null @@ -1,9 +0,0 @@ -// ==UserScript== -// @include https://www.reddit.com/* -// @include https://open.spotify.com/* -// ==/UserScript== - -// Polyfill for a failing globalThis with older Qt versions. - -"use strict"; -window.globalThis = window; diff --git a/qutebrowser/javascript/object_fromentries_quirk.user.js b/qutebrowser/javascript/object_fromentries_quirk.user.js deleted file mode 100644 index 6f6ad8b31..000000000 --- a/qutebrowser/javascript/object_fromentries_quirk.user.js +++ /dev/null @@ -1,46 +0,0 @@ -// Based on: https://gitlab.com/moongoal/js-polyfill-object.fromentries/-/tree/master - -/* - Copyright 2018 Alfredo Mungo - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to - deal in the Software without restriction, including without limitation the - rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - IN THE SOFTWARE. -*/ - -"use strict"; - -if (!Object.fromEntries) { - Object.defineProperty(Object, "fromEntries", { - value(entries) { - if (!entries || !entries[Symbol.iterator]) { - throw new Error( - "Object.fromEntries() requires a single iterable argument"); - } - - const obj = {}; - - Object.keys(entries).forEach((key) => { - const [k, v] = entries[key]; - obj[k] = v; - }); - - return obj; - }, - }); -} - diff --git a/qutebrowser/javascript/quirks/globalthis.user.js b/qutebrowser/javascript/quirks/globalthis.user.js new file mode 100644 index 000000000..03e74de3c --- /dev/null +++ b/qutebrowser/javascript/quirks/globalthis.user.js @@ -0,0 +1,9 @@ +// ==UserScript== +// @include https://www.reddit.com/* +// @include https://open.spotify.com/* +// ==/UserScript== + +// Polyfill for a failing globalThis with older Qt versions. + +"use strict"; +window.globalThis = window; diff --git a/qutebrowser/javascript/quirks/object_fromentries.user.js b/qutebrowser/javascript/quirks/object_fromentries.user.js new file mode 100644 index 000000000..6f6ad8b31 --- /dev/null +++ b/qutebrowser/javascript/quirks/object_fromentries.user.js @@ -0,0 +1,46 @@ +// Based on: https://gitlab.com/moongoal/js-polyfill-object.fromentries/-/tree/master + +/* + Copyright 2018 Alfredo Mungo + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to + deal in the Software without restriction, including without limitation the + rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + IN THE SOFTWARE. +*/ + +"use strict"; + +if (!Object.fromEntries) { + Object.defineProperty(Object, "fromEntries", { + value(entries) { + if (!entries || !entries[Symbol.iterator]) { + throw new Error( + "Object.fromEntries() requires a single iterable argument"); + } + + const obj = {}; + + Object.keys(entries).forEach((key) => { + const [k, v] = entries[key]; + obj[k] = v; + }); + + return obj; + }, + }); +} + diff --git a/qutebrowser/javascript/quirks/whatsapp_web.user.js b/qutebrowser/javascript/quirks/whatsapp_web.user.js new file mode 100644 index 000000000..801d300e1 --- /dev/null +++ b/qutebrowser/javascript/quirks/whatsapp_web.user.js @@ -0,0 +1,17 @@ +// ==UserScript== +// @include https://web.whatsapp.com/ +// ==/UserScript== + +// Quirk for WhatsApp Web, based on: +// https://github.com/jiahaog/nativefier/issues/719#issuecomment-443809630 + +"use strict"; + +if (document.querySelector("a[href='https://support.google.com/chrome/answer/95414']")) { + navigator.serviceWorker.getRegistration().then((registration) => { + if (registration) { + registration.unregister(); + } + document.location.reload(); + }); +} diff --git a/qutebrowser/javascript/whatsapp_web_quirk.user.js b/qutebrowser/javascript/whatsapp_web_quirk.user.js deleted file mode 100644 index 801d300e1..000000000 --- a/qutebrowser/javascript/whatsapp_web_quirk.user.js +++ /dev/null @@ -1,17 +0,0 @@ -// ==UserScript== -// @include https://web.whatsapp.com/ -// ==/UserScript== - -// Quirk for WhatsApp Web, based on: -// https://github.com/jiahaog/nativefier/issues/719#issuecomment-443809630 - -"use strict"; - -if (document.querySelector("a[href='https://support.google.com/chrome/answer/95414']")) { - navigator.serviceWorker.getRegistration().then((registration) => { - if (registration) { - registration.unregister(); - } - document.location.reload(); - }); -} -- cgit v1.2.3-54-g00ecf