From 17c53063a091b754df0cc66c60f72c9dae262b7d Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Tue, 18 May 2021 17:04:37 +0200 Subject: Add a new site-specific quirk for Google Docs See #6464, #5472, #4805, #4810 e010afd3a20a86639396a9c844abfea7b23cc67a https://bugreports.qt.io/browse/QTBUG-69652 (cherry picked from commit 8e617d010a5cd305ff42191ea6458a2d003b6d46) --- doc/help/settings.asciidoc | 1 + qutebrowser/browser/webengine/webenginetab.py | 13 +++++++++++-- qutebrowser/config/configdata.yml | 1 + qutebrowser/javascript/quirks/googledocs.user.js | 14 ++++++++++++++ 4 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 qutebrowser/javascript/quirks/googledocs.user.js diff --git a/doc/help/settings.asciidoc b/doc/help/settings.asciidoc index 42eacd175..7a3d0c032 100644 --- a/doc/help/settings.asciidoc +++ b/doc/help/settings.asciidoc @@ -2692,6 +2692,7 @@ Valid values: * +ua-whatsapp+ * +ua-google+ * +ua-slack+ + * +ua-googledocs+ * +js-whatsapp-web+ * +js-discord+ * +js-string-replaceall+ diff --git a/qutebrowser/browser/webengine/webenginetab.py b/qutebrowser/browser/webengine/webenginetab.py index 15784d6bf..c793a1929 100644 --- a/qutebrowser/browser/webengine/webenginetab.py +++ b/qutebrowser/browser/webengine/webenginetab.py @@ -983,6 +983,11 @@ class _Quirk: QWebEngineScript.DocumentCreation) world: QWebEngineScript.ScriptWorldId = QWebEngineScript.MainWorld predicate: bool = True + name: Optional[str] = None + + def __post_init__(self): + if self.name is None: + self.name = f"js-{self.filename.replace('_', '-')}" class _WebEngineScripts(QObject): @@ -1153,6 +1158,11 @@ class _WebEngineScripts(QObject): world=QWebEngineScript.ApplicationWorld, ), _Quirk('discord'), + _Quirk( + 'googledocs', + # will be an UA quirk once we set the JS UA as well + name='ua-googledocs', + ), _Quirk( 'string_replaceall', predicate=versions.webengine < utils.VersionNumber(5, 15, 3), @@ -1171,8 +1181,7 @@ class _WebEngineScripts(QObject): if not quirk.predicate: continue src = resources.read_file(f'javascript/quirks/{quirk.filename}.user.js') - name = f"js-{quirk.filename.replace('_', '-')}" - if name not in config.val.content.site_specific_quirks.skip: + if quirk.name not in config.val.content.site_specific_quirks.skip: self._inject_js( f'quirk_{quirk.filename}', src, diff --git a/qutebrowser/config/configdata.yml b/qutebrowser/config/configdata.yml index 6cb277e5c..b8c2990c9 100644 --- a/qutebrowser/config/configdata.yml +++ b/qutebrowser/config/configdata.yml @@ -545,6 +545,7 @@ content.site_specific_quirks.skip: - ua-whatsapp - ua-google - ua-slack + - ua-googledocs - js-whatsapp-web - js-discord - js-string-replaceall diff --git a/qutebrowser/javascript/quirks/googledocs.user.js b/qutebrowser/javascript/quirks/googledocs.user.js new file mode 100644 index 000000000..7ec47f70d --- /dev/null +++ b/qutebrowser/javascript/quirks/googledocs.user.js @@ -0,0 +1,14 @@ +// ==UserScript== +// @include https://docs.google.com/* +// ==/UserScript== + +// Workaround for typing dead keys on Google Docs +// See https://bugreports.qt.io/browse/QTBUG-69652 + +"use strict"; + +Object.defineProperty(navigator, "userAgent", { + get() { + return "Mozilla/5.0 (X11; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0"; + }, +}); -- cgit v1.2.3-54-g00ecf