From d0b2360745c760efbbe085a3c4bc28fe193860bd Mon Sep 17 00:00:00 2001 From: Jay Kamat Date: Mon, 7 May 2018 13:35:41 -0700 Subject: [PATCH 1/3] Clear visited links db when running :history-clear on webengine --- qutebrowser/browser/history.py | 5 ++++- qutebrowser/browser/webengine/webenginetab.py | 7 +++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/qutebrowser/browser/history.py b/qutebrowser/browser/history.py index 85922f9e8..f860813db 100644 --- a/qutebrowser/browser/history.py +++ b/qutebrowser/browser/history.py @@ -23,7 +23,7 @@ import os import time import contextlib -from PyQt5.QtCore import pyqtSlot, QUrl, QTimer +from PyQt5.QtCore import pyqtSlot, QUrl, QTimer, pyqtSignal from qutebrowser.commands import cmdutils, cmdexc from qutebrowser.utils import (utils, objreg, log, usertypes, message, @@ -52,6 +52,8 @@ class WebHistory(sql.SqlTable): """The global history of visited pages.""" + history_cleared = pyqtSignal() + def __init__(self, parent=None): super().__init__("History", ['url', 'title', 'atime', 'redirect'], constraints={'url': 'NOT NULL', @@ -157,6 +159,7 @@ class WebHistory(sql.SqlTable): with self._handle_sql_errors(): self.delete_all() self.completion.delete_all() + self.history_cleared.emit() def delete_url(self, url): """Remove all history entries with the given url. diff --git a/qutebrowser/browser/webengine/webenginetab.py b/qutebrowser/browser/webengine/webenginetab.py index 145bc9c44..e1716027a 100644 --- a/qutebrowser/browser/webengine/webenginetab.py +++ b/qutebrowser/browser/webengine/webenginetab.py @@ -73,6 +73,13 @@ def init(): download_manager.install(webenginesettings.private_profile) objreg.register('webengine-download-manager', download_manager) + # Clear visited links on web history clear + hist = objreg.get('web-history') + hist.history_cleared.connect( + webenginesettings.default_profile.clearAllVisitedLinks) + hist.history_cleared.connect( + webenginesettings.private_profile.clearAllVisitedLinks) + # Mapping worlds from usertypes.JsWorld to QWebEngineScript world IDs. _JS_WORLD_MAP = { From ca48f9f1004076ad03ed974842f915820b90a13b Mon Sep 17 00:00:00 2001 From: Jay Kamat Date: Mon, 7 May 2018 13:48:06 -0700 Subject: [PATCH 2/3] Clear url from visitedLinks if a single url is deleted --- qutebrowser/browser/history.py | 4 ++++ qutebrowser/browser/webengine/webenginetab.py | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/qutebrowser/browser/history.py b/qutebrowser/browser/history.py index f860813db..7c0db112a 100644 --- a/qutebrowser/browser/history.py +++ b/qutebrowser/browser/history.py @@ -52,7 +52,10 @@ class WebHistory(sql.SqlTable): """The global history of visited pages.""" + # All web history cleared history_cleared = pyqtSignal() + # one url cleared + url_cleared = pyqtSignal(QUrl) def __init__(self, parent=None): super().__init__("History", ['url', 'title', 'atime', 'redirect'], @@ -171,6 +174,7 @@ class WebHistory(sql.SqlTable): qtutils.ensure_valid(qurl) self.delete('url', self._format_url(qurl)) self.completion.delete('url', self._format_completion_url(qurl)) + self.url_cleared.emit(qurl) @pyqtSlot(QUrl, QUrl, str) def add_from_tab(self, url, requested_url, title): diff --git a/qutebrowser/browser/webengine/webenginetab.py b/qutebrowser/browser/webengine/webenginetab.py index e1716027a..cb3feffdb 100644 --- a/qutebrowser/browser/webengine/webenginetab.py +++ b/qutebrowser/browser/webengine/webenginetab.py @@ -79,6 +79,10 @@ def init(): webenginesettings.default_profile.clearAllVisitedLinks) hist.history_cleared.connect( webenginesettings.private_profile.clearAllVisitedLinks) + hist.url_cleared.connect( + lambda url: webenginesettings.default_profile.clearVisitedLinks([url])) + hist.url_cleared.connect( + lambda url: webenginesettings.private_profile.clearVisitedLinks([url])) # Mapping worlds from usertypes.JsWorld to QWebEngineScript world IDs. From 906da44d701cfc618f9ebf5d2b7d54e7becfd807 Mon Sep 17 00:00:00 2001 From: Jay Kamat Date: Mon, 7 May 2018 14:10:03 -0700 Subject: [PATCH 3/3] Simplify visited link clearing by looping over connections --- qutebrowser/browser/webengine/webenginetab.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/qutebrowser/browser/webengine/webenginetab.py b/qutebrowser/browser/webengine/webenginetab.py index cb3feffdb..57b265e4d 100644 --- a/qutebrowser/browser/webengine/webenginetab.py +++ b/qutebrowser/browser/webengine/webenginetab.py @@ -75,14 +75,11 @@ def init(): # Clear visited links on web history clear hist = objreg.get('web-history') - hist.history_cleared.connect( - webenginesettings.default_profile.clearAllVisitedLinks) - hist.history_cleared.connect( - webenginesettings.private_profile.clearAllVisitedLinks) - hist.url_cleared.connect( - lambda url: webenginesettings.default_profile.clearVisitedLinks([url])) - hist.url_cleared.connect( - lambda url: webenginesettings.private_profile.clearVisitedLinks([url])) + for p in [webenginesettings.default_profile, + webenginesettings.private_profile]: + hist.history_cleared.connect(p.clearAllVisitedLinks) + hist.url_cleared.connect(lambda url, profile=p: + profile.clearVisitedLinks([url])) # Mapping worlds from usertypes.JsWorld to QWebEngineScript world IDs.