summaryrefslogtreecommitdiff
path: root/qutebrowser/browser/webengine/webenginetab.py
diff options
context:
space:
mode:
Diffstat (limited to 'qutebrowser/browser/webengine/webenginetab.py')
-rw-r--r--qutebrowser/browser/webengine/webenginetab.py29
1 files changed, 20 insertions, 9 deletions
diff --git a/qutebrowser/browser/webengine/webenginetab.py b/qutebrowser/browser/webengine/webenginetab.py
index d79ad7a92..68ffa4196 100644
--- a/qutebrowser/browser/webengine/webenginetab.py
+++ b/qutebrowser/browser/webengine/webenginetab.py
@@ -820,25 +820,36 @@ class _WebEnginePermissions(QObject):
def _on_feature_permission_requested(self, url, feature):
"""Ask the user for approval for geolocation/media/etc.."""
page = self._widget.page()
+ grant_permission = functools.partial(
+ page.setFeaturePermission, url, feature,
+ QWebEnginePage.PermissionGrantedByUser)
+ deny_permission = functools.partial(
+ page.setFeaturePermission, url, feature,
+ QWebEnginePage.PermissionDeniedByUser)
if feature not in self._options:
log.webview.error("Unhandled feature permission {}".format(
debug.qenum_key(QWebEnginePage, feature)))
- page.setFeaturePermission(url, feature,
- QWebEnginePage.PermissionDeniedByUser)
+ deny_permission()
return
- yes_action = functools.partial(
- page.setFeaturePermission, url, feature,
- QWebEnginePage.PermissionGrantedByUser)
- no_action = functools.partial(
- page.setFeaturePermission, url, feature,
- QWebEnginePage.PermissionDeniedByUser)
+ if (
+ hasattr(QWebEnginePage, 'DesktopVideoCapture') and
+ feature in [QWebEnginePage.DesktopVideoCapture,
+ QWebEnginePage.DesktopAudioVideoCapture] and
+ qtutils.version_check('5.13', compiled=False) and
+ not qtutils.version_check('5.13.2', compiled=False)
+ ):
+ # WORKAROUND for https://bugreports.qt.io/browse/QTBUG-78016
+ log.webview.warning("Ignoring desktop sharing request due to "
+ "crashes in Qt < 5.13.2")
+ deny_permission()
+ return
question = shared.feature_permission(
url=url.adjusted(QUrl.RemovePath),
option=self._options[feature], msg=self._messages[feature],
- yes_action=yes_action, no_action=no_action,
+ yes_action=grant_permission, no_action=deny_permission,
abort_on=[self._tab.abort_questions])
if question is not None: