diff options
author | Florian Bruhin <me@the-compiler.org> | 2019-12-28 10:58:24 +0100 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2019-12-28 11:02:43 +0100 |
commit | 07e532e5965e925e8f54ac26854b6414dc8363e1 (patch) | |
tree | f486b5e14de59ff673d7ea0571923d2b9f1d4bd4 | |
parent | 81212af32c004ebd7c577290d25a54733c18d2e5 (diff) | |
download | qutebrowser-07e532e5965e925e8f54ac26854b6414dc8363e1.tar.gz qutebrowser-07e532e5965e925e8f54ac26854b6414dc8363e1.zip |
Make sure images are always enabled for the inspector
Fixes #4517
-rw-r--r-- | doc/changelog.asciidoc | 5 | ||||
-rw-r--r-- | qutebrowser/browser/webengine/webengineinspector.py | 13 | ||||
-rw-r--r-- | qutebrowser/browser/webengine/webenginesettings.py | 10 |
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(): |