Add quirk for missing globalThis

globalThis was introduced in Chrome 71:
https://caniuse.com/#feat=mdn-javascript_builtins_globalthis

Since those websites are quite common and we probably want to continue
supporting Qt 5.12 for a bit, let's bite the bullet and add a small polyfill,
because it's trivial.

Fixes #5486
This commit is contained in:
Florian Bruhin 2020-06-08 21:01:39 +02:00
parent cfdebbbe23
commit fa85e85552
2 changed files with 26 additions and 5 deletions

View File

@ -1237,19 +1237,31 @@ class _WebEngineScripts(QObject):
"""Add site-specific quirk scripts.
NOTE: This isn't implemented for Qt 5.7 because of different UserScript
semantics there. We only have a quirk for WhatsApp Web right now. It
looks like that quirk isn't needed for Qt < 5.13.
semantics there. The WhatsApp Web quirk isn't needed for Qt < 5.13.
The globalthis_quirk would be, but let's not keep such old QtWebEngine
versions on life support.
"""
if not config.val.content.site_specific_quirks:
return
page_scripts = self._widget.page().scripts()
quirks = [
(
'whatsapp_web_quirk',
QWebEngineScript.DocumentReady,
QWebEngineScript.ApplicationWorld,
),
]
if not qtutils.version_check('5.13'):
quirks.append(('globalthis_quirk',
QWebEngineScript.DocumentCreation,
QWebEngineScript.MainWorld))
for filename in ['whatsapp_web_quirk']:
for filename, injection_point, world in quirks:
script = QWebEngineScript()
script.setName(filename)
script.setWorldId(QWebEngineScript.ApplicationWorld)
script.setInjectionPoint(QWebEngineScript.DocumentReady)
script.setWorldId(world)
script.setInjectionPoint(injection_point)
src = utils.read_file("javascript/{}.user.js".format(filename))
script.setSourceCode(src)
page_scripts.insert(script)

View File

@ -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;