summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2021-05-18 17:04:37 +0200
committerFlorian Bruhin <me@the-compiler.org>2021-05-18 18:19:21 +0200
commit17c53063a091b754df0cc66c60f72c9dae262b7d (patch)
treea28910281f98b2526d7c03e3e6fadffb86407ff7
parentd79f6296ee88f8adcc548bf6ab0d0d8ebf0260d9 (diff)
downloadqutebrowser-17c53063a091b754df0cc66c60f72c9dae262b7d.tar.gz
qutebrowser-17c53063a091b754df0cc66c60f72c9dae262b7d.zip
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)
-rw-r--r--doc/help/settings.asciidoc1
-rw-r--r--qutebrowser/browser/webengine/webenginetab.py13
-rw-r--r--qutebrowser/config/configdata.yml1
-rw-r--r--qutebrowser/javascript/quirks/googledocs.user.js14
4 files changed, 27 insertions, 2 deletions
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):
@@ -1154,6 +1159,11 @@ class _WebEngineScripts(QObject):
),
_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";
+ },
+});