diff options
-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 |