From 9d91c222364330aafb9e8be923a8b81f30dfb916 Mon Sep 17 00:00:00 2001 From: cauimsouza Date: Tue, 4 Sep 2018 04:25:37 +0200 Subject: [PATCH 1/6] Allow tabs be muted by default --- qutebrowser/browser/browsertab.py | 3 ++- qutebrowser/browser/webengine/webenginetab.py | 8 +++++++- qutebrowser/browser/webkit/webkittab.py | 2 +- qutebrowser/config/configdata.yml | 8 ++++++++ 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/qutebrowser/browser/browsertab.py b/qutebrowser/browser/browsertab.py index 087834e53..9c27e470e 100644 --- a/qutebrowser/browser/browsertab.py +++ b/qutebrowser/browser/browsertab.py @@ -666,9 +666,10 @@ class AbstractAudio(QObject): muted_changed = pyqtSignal(bool) recently_audible_changed = pyqtSignal(bool) - def __init__(self, parent=None): + def __init__(self, tab, parent=None): super().__init__(parent) self._widget = None + self._tab = tab def set_muted(self, muted: bool): """Set this tab as muted or not.""" diff --git a/qutebrowser/browser/webengine/webenginetab.py b/qutebrowser/browser/webengine/webenginetab.py index cfb809097..5a3042ba9 100644 --- a/qutebrowser/browser/webengine/webenginetab.py +++ b/qutebrowser/browser/webengine/webenginetab.py @@ -638,6 +638,7 @@ class WebEngineAudio(browsertab.AbstractAudio): page = self._widget.page() page.audioMutedChanged.connect(self.muted_changed) page.recentlyAudibleChanged.connect(self.recently_audible_changed) + self._tab.url_changed.connect(self._on_url_changed) def set_muted(self, muted: bool): page = self._widget.page() @@ -651,6 +652,11 @@ class WebEngineAudio(browsertab.AbstractAudio): page = self._widget.page() return page.recentlyAudible() + def _on_url_changed(self): + urlstr = self._tab.url().toString(QUrl.RemoveUserInfo) + muted_url = config.instance.get('content.mute', url=urlstr) + self.set_muted(muted_url is not None) + class _WebEnginePermissions(QObject): @@ -995,7 +1001,7 @@ class WebEngineTab(browsertab.AbstractTab): self.printing = WebEnginePrinting(tab=self) self.elements = WebEngineElements(tab=self) self.action = WebEngineAction(tab=self) - self.audio = WebEngineAudio(parent=self) + self.audio = WebEngineAudio(tab=self, parent=self) self._permissions = _WebEnginePermissions(tab=self, parent=self) self._scripts = _WebEngineScripts(tab=self, parent=self) # We're assigning settings in _set_widget diff --git a/qutebrowser/browser/webkit/webkittab.py b/qutebrowser/browser/webkit/webkittab.py index 7b7ad0c7d..28d27f919 100644 --- a/qutebrowser/browser/webkit/webkittab.py +++ b/qutebrowser/browser/webkit/webkittab.py @@ -661,7 +661,7 @@ class WebKitTab(browsertab.AbstractTab): self.printing = WebKitPrinting(tab=self) self.elements = WebKitElements(tab=self) self.action = WebKitAction(tab=self) - self.audio = WebKitAudio(parent=self) + self.audio = WebKitAudio(tab=self, parent=self) # We're assigning settings in _set_widget self.settings = webkitsettings.WebKitSettings(settings=None) self._set_widget(widget) diff --git a/qutebrowser/config/configdata.yml b/qutebrowser/config/configdata.yml index 7d39bded8..bde38cbb8 100644 --- a/qutebrowser/config/configdata.yml +++ b/qutebrowser/config/configdata.yml @@ -746,6 +746,14 @@ content.xss_auditing: Suspicious scripts will be blocked and reported in the inspector's JavaScript console. +content.mute: + default: null + type: + name: String + none_ok: true + supports_pattern: true + desc: List of URLs muted by default. + # emacs: ' ## completion From d32444803942022fddfdb07ac85648461f76e64d Mon Sep 17 00:00:00 2001 From: cauimsouza Date: Tue, 4 Sep 2018 16:40:05 +0200 Subject: [PATCH 2/6] Fix mute_per_domain feature Users can allow sounds to be played by default while specifying domains not allowed to play sounds, or the opposite. --- qutebrowser/browser/webengine/webenginetab.py | 6 +++--- qutebrowser/config/configdata.yml | 10 ++++------ 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/qutebrowser/browser/webengine/webenginetab.py b/qutebrowser/browser/webengine/webenginetab.py index 5a3042ba9..33f91850a 100644 --- a/qutebrowser/browser/webengine/webenginetab.py +++ b/qutebrowser/browser/webengine/webenginetab.py @@ -653,9 +653,9 @@ class WebEngineAudio(browsertab.AbstractAudio): return page.recentlyAudible() def _on_url_changed(self): - urlstr = self._tab.url().toString(QUrl.RemoveUserInfo) - muted_url = config.instance.get('content.mute', url=urlstr) - self.set_muted(muted_url is not None) + url = self._tab.url() + is_audible = config.instance.get('content.audible_default', url=url) + self.set_muted(not is_audible) class _WebEnginePermissions(QObject): diff --git a/qutebrowser/config/configdata.yml b/qutebrowser/config/configdata.yml index bde38cbb8..73af245c0 100644 --- a/qutebrowser/config/configdata.yml +++ b/qutebrowser/config/configdata.yml @@ -746,13 +746,11 @@ content.xss_auditing: Suspicious scripts will be blocked and reported in the inspector's JavaScript console. -content.mute: - default: null - type: - name: String - none_ok: true +content.audible_default: + default: true + type: Bool + desc: Play sounds automatically in web pages. supports_pattern: true - desc: List of URLs muted by default. # emacs: ' From fc1d1928803de89f1c8dc5ecdf6aa824d895a288 Mon Sep 17 00:00:00 2001 From: cauimsouza Date: Wed, 5 Sep 2018 02:24:15 +0200 Subject: [PATCH 3/6] Pass url as second argument to slot --- qutebrowser/browser/webengine/webenginetab.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/qutebrowser/browser/webengine/webenginetab.py b/qutebrowser/browser/webengine/webenginetab.py index 33f91850a..e3e8520c2 100644 --- a/qutebrowser/browser/webengine/webenginetab.py +++ b/qutebrowser/browser/webengine/webenginetab.py @@ -652,8 +652,8 @@ class WebEngineAudio(browsertab.AbstractAudio): page = self._widget.page() return page.recentlyAudible() - def _on_url_changed(self): - url = self._tab.url() + @pyqtSlot(QUrl) + def _on_url_changed(self, url): is_audible = config.instance.get('content.audible_default', url=url) self.set_muted(not is_audible) From a742f03bca4dfe1a24caec4f77f3f728be196814 Mon Sep 17 00:00:00 2001 From: cauimsouza Date: Wed, 5 Sep 2018 02:59:03 +0200 Subject: [PATCH 4/6] Change setting name --- qutebrowser/browser/webengine/webenginetab.py | 4 ++-- qutebrowser/config/configdata.yml | 11 ++++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/qutebrowser/browser/webengine/webenginetab.py b/qutebrowser/browser/webengine/webenginetab.py index e3e8520c2..e962f8f29 100644 --- a/qutebrowser/browser/webengine/webenginetab.py +++ b/qutebrowser/browser/webengine/webenginetab.py @@ -654,8 +654,8 @@ class WebEngineAudio(browsertab.AbstractAudio): @pyqtSlot(QUrl) def _on_url_changed(self, url): - is_audible = config.instance.get('content.audible_default', url=url) - self.set_muted(not is_audible) + mute = config.instance.get('content.mute', url=url) + self.set_muted(mute) class _WebEnginePermissions(QObject): diff --git a/qutebrowser/config/configdata.yml b/qutebrowser/config/configdata.yml index 73af245c0..51dae63f5 100644 --- a/qutebrowser/config/configdata.yml +++ b/qutebrowser/config/configdata.yml @@ -746,11 +746,16 @@ content.xss_auditing: Suspicious scripts will be blocked and reported in the inspector's JavaScript console. -content.audible_default: - default: true +content.mute: + default: false type: Bool - desc: Play sounds automatically in web pages. supports_pattern: true + desc: >- + Mute new web pages. + + It's off by default meaning that new web pages might play sounds. + It's possible to set this configuration differently for different + URLs. # emacs: ' From 71781b3f43e2ca9c402b599ec5730ab00a2c5c8b Mon Sep 17 00:00:00 2001 From: cauimsouza Date: Fri, 7 Sep 2018 21:44:17 +0200 Subject: [PATCH 5/6] Update fake object instantiation --- tests/helpers/stubs.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/helpers/stubs.py b/tests/helpers/stubs.py index 84e5b0125..b9a113b30 100644 --- a/tests/helpers/stubs.py +++ b/tests/helpers/stubs.py @@ -257,7 +257,7 @@ class FakeWebTab(browsertab.AbstractTab): self.history = FakeWebTabHistory(self, can_go_back=can_go_back, can_go_forward=can_go_forward) self.scroller = FakeWebTabScroller(self, scroll_pos_perc) - self.audio = FakeWebTabAudio() + self.audio = FakeWebTabAudio(self) wrapped = QWidget() self._layout.wrap(self, wrapped) From 4a8d8688cb19aecc0b18ae4888c187229e6c322a Mon Sep 17 00:00:00 2001 From: cauimsouza Date: Fri, 7 Sep 2018 21:46:03 +0200 Subject: [PATCH 6/6] Improve configuration description --- qutebrowser/config/configdata.yml | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/qutebrowser/config/configdata.yml b/qutebrowser/config/configdata.yml index 51dae63f5..cfdf3e5e7 100644 --- a/qutebrowser/config/configdata.yml +++ b/qutebrowser/config/configdata.yml @@ -750,12 +750,7 @@ content.mute: default: false type: Bool supports_pattern: true - desc: >- - Mute new web pages. - - It's off by default meaning that new web pages might play sounds. - It's possible to set this configuration differently for different - URLs. + desc: Automatically mute tabs. # emacs: '