summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2019-12-28 10:58:24 +0100
committerFlorian Bruhin <me@the-compiler.org>2019-12-28 11:02:43 +0100
commit07e532e5965e925e8f54ac26854b6414dc8363e1 (patch)
treef486b5e14de59ff673d7ea0571923d2b9f1d4bd4
parent81212af32c004ebd7c577290d25a54733c18d2e5 (diff)
downloadqutebrowser-07e532e5965e925e8f54ac26854b6414dc8363e1.tar.gz
qutebrowser-07e532e5965e925e8f54ac26854b6414dc8363e1.zip
Make sure images are always enabled for the inspector
Fixes #4517
-rw-r--r--doc/changelog.asciidoc5
-rw-r--r--qutebrowser/browser/webengine/webengineinspector.py13
-rw-r--r--qutebrowser/browser/webengine/webenginesettings.py10
3 files changed, 25 insertions, 3 deletions
diff --git a/doc/changelog.asciidoc b/doc/changelog.asciidoc
index e2bab9b49..cd6a0a7c3 100644
--- a/doc/changelog.asciidoc
+++ b/doc/changelog.asciidoc
@@ -69,6 +69,9 @@ Changed
- If JavaScript is disabled globally, `file://*` now doesn't automatically have
it enabled anymore. Run `:set -u file://* content.javascript.enabled true` to
restore the previous behavior.
+- Settings with URL patterns can now be used to affect the behavior of the
+ QtWebEngine inspector. Note that the underlying URL is `chrome-devtools://*`
+ from Qt 5.11 to Qt 5.13, but `devtools://*` with Qt 5.14.
- Performance improvements for the following areas:
* Adding settings with URL patterns
* Matching of settings using URL patterns
@@ -91,6 +94,8 @@ Fixed
- The `qute-lastpass` userscript now stops prompting for passwords when
cancelling the password input.
- The tab hover text now shows ampersands (&) correctly.
+- With QtWebEngine and Qt >= 5.11, the inspector now shows its icons correctly
+ even if loading of images is disabled via the `content.images` setting.
- Various improvements for URL/searchengine detection:
- Strings with a dot but with characters not allowed in a URL (e.g. an
underscore) are now not treated as URL anymore.
diff --git a/qutebrowser/browser/webengine/webengineinspector.py b/qutebrowser/browser/webengine/webengineinspector.py
index 4bf72502c..6641a6d50 100644
--- a/qutebrowser/browser/webengine/webengineinspector.py
+++ b/qutebrowser/browser/webengine/webengineinspector.py
@@ -25,6 +25,7 @@ from PyQt5.QtCore import QUrl
from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEngineSettings
from qutebrowser.browser import inspector
+from qutebrowser.browser.webengine import webenginesettings
class WebEngineInspector(inspector.AbstractWebInspector):
@@ -35,8 +36,7 @@ class WebEngineInspector(inspector.AbstractWebInspector):
super().__init__(parent)
self.port = None
view = QWebEngineView()
- settings = view.settings()
- settings.setAttribute(QWebEngineSettings.JavascriptEnabled, True)
+ self._settings = webenginesettings.WebEngineSettings(view.settings())
self._set_widget(view)
def _inspect_old(self, page):
@@ -47,6 +47,11 @@ class WebEngineInspector(inspector.AbstractWebInspector):
raise inspector.WebInspectorError(
"QtWebEngine inspector is not enabled. See "
"'qutebrowser --help' for details.")
+
+ # We're lying about the URL here a bit, but this way, URL patterns for
+ # Qt 5.11/5.12/5.13 also work in this case.
+ self._settings.update_for_url(QUrl('chrome-devtools://devtools'))
+
url = QUrl('http://localhost:{}/'.format(port))
if page is None:
@@ -56,7 +61,9 @@ class WebEngineInspector(inspector.AbstractWebInspector):
def _inspect_new(self, page):
"""Set up the inspector for Qt >= 5.11."""
- self._widget.page().setInspectedPage(page)
+ inspector_page = self._widget.page()
+ inspector_page.setInspectedPage(page)
+ self._settings.update_for_url(inspector_page.requestedUrl())
def inspect(self, page):
try:
diff --git a/qutebrowser/browser/webengine/webenginesettings.py b/qutebrowser/browser/webengine/webenginesettings.py
index 77ca3a8e1..174564c39 100644
--- a/qutebrowser/browser/webengine/webenginesettings.py
+++ b/qutebrowser/browser/webengine/webenginesettings.py
@@ -365,6 +365,15 @@ def _init_site_specific_quirks():
hide_userconfig=True)
+def _init_devtools_settings():
+ """Make sure the devtools always get images/JS permissions."""
+ for setting in ['content.javascript.enabled', 'content.images']:
+ for pattern in ['chrome-devtools://*', 'devtools://*']:
+ config.instance.set_obj(setting, True,
+ pattern=urlmatch.UrlPattern(pattern),
+ hide_userconfig=True)
+
+
def init(args):
"""Initialize the global QWebSettings."""
if (args.enable_webengine_inspector and
@@ -382,6 +391,7 @@ def init(args):
global_settings.init_settings()
_init_site_specific_quirks()
+ _init_devtools_settings()
def shutdown():