diff --git a/qutebrowser/browser/history.py b/qutebrowser/browser/history.py index 96d37db83..6b172a6e8 100644 --- a/qutebrowser/browser/history.py +++ b/qutebrowser/browser/history.py @@ -125,6 +125,9 @@ class WebHistory(sql.SqlTable): completion: A CompletionHistory instance. metainfo: A CompletionMetaInfo instance. _progress: A HistoryProgress instance. + + Class attributes: + _PROGRESS_THRESHOLD: When to start showing progress dialogs. """ # All web history cleared @@ -132,6 +135,8 @@ class WebHistory(sql.SqlTable): # one url cleared url_cleared = pyqtSignal(QUrl) + _PROGRESS_THRESHOLD = 1000 + def __init__(self, progress, parent=None): super().__init__("History", ['url', 'title', 'atime', 'redirect'], constraints={'url': 'NOT NULL', @@ -203,7 +208,7 @@ class WebHistory(sql.SqlTable): 'GROUP BY url ORDER BY atime asc') entries = list(q.run()) - if len(entries) > 1000: + if len(entries) > self._PROGRESS_THRESHOLD: self._progress.start("Rebuilding completion...", len(entries)) for entry in entries: diff --git a/tests/unit/browser/test_history.py b/tests/unit/browser/test_history.py index 4e4ef2e10..0dc97f316 100644 --- a/tests/unit/browser/test_history.py +++ b/tests/unit/browser/test_history.py @@ -41,14 +41,19 @@ class FakeHistoryProgress: """Fake for a WebHistoryProgress object.""" + def __init__(self): + self._started = False + self._finished = False + self._value = 0 + def start(self, _text, _maximum): - pass + self._started = True def tick(self): - pass + self._value += 1 def finish(self): - pass + self._finished = True @pytest.fixture() @@ -515,6 +520,21 @@ class TestRebuild: config_stub.val.history_gap_interval = 1234 assert not hist.metainfo['force_rebuild'] + @pytest.mark.parametrize('patch_threshold', [True, False]) + def test_progress(self, hist, config_stub, monkeypatch, patch_threshold): + hist.add_url(QUrl('example.com/1'), redirect=False, atime=1) + hist.add_url(QUrl('example.com/2'), redirect=False, atime=2) + hist.metainfo['force_rebuild'] = True + + if patch_threshold: + monkeypatch.setattr(history.WebHistory, '_PROGRESS_THRESHOLD', 1) + + progress = FakeHistoryProgress() + history.WebHistory(progress=progress) + assert progress._value == 2 + assert progress._finished + assert progress._started == patch_threshold + class TestCompletionMetaInfo: