diff options
author | Florian Bruhin <me@the-compiler.org> | 2023-08-17 20:09:45 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-17 20:09:45 +0200 |
commit | 051b0d6087ac70a5d7b6c8116b112a616966ed77 (patch) | |
tree | 1eeaf032739270b8c365168106ff98428a1c429f | |
parent | d5a8f22a2af9bee2976092f95a32e0c1b749665b (diff) | |
parent | 5faae69f7711578182ad6b85bbe893f2b0e6ef8e (diff) | |
download | qutebrowser-051b0d6087ac70a5d7b6c8116b112a616966ed77.tar.gz qutebrowser-051b0d6087ac70a5d7b6c8116b112a616966ed77.zip |
Merge pull request #7828 from pylbrecht/corrupt-session
Don't include "dead" tabs when saving sessions
-rw-r--r-- | qutebrowser/misc/sessions.py | 7 | ||||
-rw-r--r-- | tests/end2end/features/sessions.feature | 20 |
2 files changed, 27 insertions, 0 deletions
diff --git a/qutebrowser/misc/sessions.py b/qutebrowser/misc/sessions.py index da447c747..dd63904cd 100644 --- a/qutebrowser/misc/sessions.py +++ b/qutebrowser/misc/sessions.py @@ -239,6 +239,13 @@ class SessionManager(QObject): for idx, item in enumerate(history): qtutils.ensure_valid(item) item_data = self._save_tab_item(tab, idx, item) + + if not item.url().isValid(): + # WORKAROUND Qt 6.5 regression + # https://github.com/qutebrowser/qutebrowser/issues/7696 + log.sessions.debug(f"Skipping invalid history item: {item}") + continue + if item.url().scheme() == 'qute' and item.url().host() == 'back': # don't add qute://back to the session file if item_data.get('active', False) and data['history']: diff --git a/tests/end2end/features/sessions.feature b/tests/end2end/features/sessions.feature index a5533f014..9a61baf61 100644 --- a/tests/end2end/features/sessions.feature +++ b/tests/end2end/features/sessions.feature @@ -328,6 +328,26 @@ Feature: Saving and loading sessions - active: true url: http://localhost:*/data/numbers/5.txt + # https://github.com/qutebrowser/qutebrowser/issues/7696 + @qtwebkit_skip + Scenario: Saving session with an empty download tab + When I open data/downloads/downloads.html + And I run :click-element --force-event -t tab id download + And I wait for "Asking question <qutebrowser.utils.usertypes.Question default='*' mode=<PromptMode.download: 5> *" in the log + And I run :mode-leave + And I run :session-save current + And I run :session-load --clear current + And I wait until data/downloads/downloads.html is loaded + Then the session should look like: + windows: + - tabs: + - history: + - active: true + title: Simple downloads + url: http://localhost:*/data/downloads/downloads.html + - active: true + history: [] + # :session-delete Scenario: Deleting a directory |