summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2023-08-17 20:09:45 +0200
committerGitHub <noreply@github.com>2023-08-17 20:09:45 +0200
commit051b0d6087ac70a5d7b6c8116b112a616966ed77 (patch)
tree1eeaf032739270b8c365168106ff98428a1c429f
parentd5a8f22a2af9bee2976092f95a32e0c1b749665b (diff)
parent5faae69f7711578182ad6b85bbe893f2b0e6ef8e (diff)
downloadqutebrowser-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.py7
-rw-r--r--tests/end2end/features/sessions.feature20
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