From 7b211e0b65b4be30347239fb0345a5df792b7f12 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Thu, 4 Aug 2016 18:14:29 +0200 Subject: [PATCH] QtWebEngine: Run javascript in ApplicationWorld This means the JS context will be isolated from the webpage itself, and the webpage won't be able to access things we define. --- qutebrowser/browser/webengine/webenginetab.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/qutebrowser/browser/webengine/webenginetab.py b/qutebrowser/browser/webengine/webenginetab.py index 800d5b3bc..457473e32 100644 --- a/qutebrowser/browser/webengine/webenginetab.py +++ b/qutebrowser/browser/webengine/webenginetab.py @@ -26,7 +26,7 @@ from PyQt5.QtCore import pyqtSlot, Qt, QEvent, QPoint from PyQt5.QtGui import QKeyEvent, QIcon from PyQt5.QtWidgets import QApplication # pylint: disable=no-name-in-module,import-error,useless-suppression -from PyQt5.QtWebEngineWidgets import QWebEnginePage +from PyQt5.QtWebEngineWidgets import QWebEnginePage, QWebEngineScript # pylint: enable=no-name-in-module,import-error,useless-suppression from qutebrowser.browser import browsertab @@ -347,10 +347,11 @@ class WebEngineTab(browsertab.AbstractTab): self._widget.page().toHtml(callback) def run_js_async(self, code, callback=None): + world = QWebEngineScript.ApplicationWorld if callback is None: - self._widget.page().runJavaScript(code) + self._widget.page().runJavaScript(code, world) else: - self._widget.page().runJavaScript(code, callback) + self._widget.page().runJavaScript(code, world, callback) def run_js_blocking(self, code): unset = object()