summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/changelog.asciidoc6
-rw-r--r--qutebrowser/browser/webengine/webengineinspector.py15
-rw-r--r--qutebrowser/browser/webengine/webenginesettings.py12
-rw-r--r--qutebrowser/mainwindow/tabwidget.py12
-rw-r--r--scripts/dev/check_coverage.py2
5 files changed, 36 insertions, 11 deletions
diff --git a/doc/changelog.asciidoc b/doc/changelog.asciidoc
index feb22cb5e..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
@@ -90,6 +93,9 @@ Fixed
javascript being enabled for `qute://` and `chrome://` pages) anymore.
- 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..009b0df1b 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,16 +47,21 @@ class WebEngineInspector(inspector.AbstractWebInspector):
raise inspector.WebInspectorError(
"QtWebEngine inspector is not enabled. See "
"'qutebrowser --help' for details.")
- url = QUrl('http://localhost:{}/'.format(port))
+
+ # 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'))
if page is None:
self._widget.load(QUrl('about:blank'))
else:
- self._widget.load(url)
+ self._widget.load(QUrl('http://localhost:{}/'.format(port)))
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 fcdbd7d7e..174564c39 100644
--- a/qutebrowser/browser/webengine/webenginesettings.py
+++ b/qutebrowser/browser/webengine/webenginesettings.py
@@ -351,7 +351,7 @@ def _init_site_specific_quirks():
user_agents = {
'https://web.whatsapp.com/': no_qtwe_ua,
- 'https://accounts.google.com/ServiceLogin': firefox_ua,
+ 'https://accounts.google.com/*': firefox_ua,
'https://*.slack.com/*': new_chrome_ua,
'https://docs.google.com/*': firefox_ua,
}
@@ -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():
diff --git a/qutebrowser/mainwindow/tabwidget.py b/qutebrowser/mainwindow/tabwidget.py
index 6e3c00aad..25ecc69b8 100644
--- a/qutebrowser/mainwindow/tabwidget.py
+++ b/qutebrowser/mainwindow/tabwidget.py
@@ -116,7 +116,13 @@ class TabWidget(QTabWidget):
def set_page_title(self, idx, title):
"""Set the tab title user data."""
- self.tabBar().set_tab_data(idx, 'page-title', title)
+ tabbar = self.tabBar()
+
+ if config.cache['tabs.tooltips']:
+ # always show only plain title in tooltips
+ tabbar.setTabToolTip(idx, title)
+
+ tabbar.set_tab_data(idx, 'page-title', title)
self.update_tab_title(idx)
def page_title(self, idx):
@@ -153,10 +159,6 @@ class TabWidget(QTabWidget):
if tabbar.tabText(idx) != title:
tabbar.setTabText(idx, title)
- if config.cache['tabs.tooltips']:
- # always show only plain title in tooltips
- tabbar.setTabToolTip(idx, fields['current_title'])
-
def get_tab_fields(self, idx):
"""Get the tab field data."""
tab = self.widget(idx)
diff --git a/scripts/dev/check_coverage.py b/scripts/dev/check_coverage.py
index fbf6cb954..7798415a5 100644
--- a/scripts/dev/check_coverage.py
+++ b/scripts/dev/check_coverage.py
@@ -147,6 +147,8 @@ PERFECT_FILES = [
('tests/unit/config/test_config.py',
'config/config.py'),
+ ('tests/unit/config/test_stylesheet.py',
+ 'config/stylesheet.py'),
('tests/unit/config/test_configdata.py',
'config/configdata.py'),
('tests/unit/config/test_configexc.py',