From 1708b38d7b2c552adc0c97fd4e34162ab3fca341 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Mon, 20 Feb 2017 07:43:41 +0100 Subject: [PATCH] Add SessionManager.{save,delete}_autosave --- qutebrowser/app.py | 6 +----- qutebrowser/browser/browsertab.py | 5 +---- qutebrowser/misc/sessions.py | 15 +++++++++++++++ 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/qutebrowser/app.py b/qutebrowser/app.py index 8f3840906..50965074b 100644 --- a/qutebrowser/app.py +++ b/qutebrowser/app.py @@ -723,11 +723,7 @@ class Quitter: # Now we can hopefully quit without segfaults log.destroy.debug("Deferring QApplication::exit...") objreg.get('signal-handler').deactivate() - try: - objreg.get('session-manager').delete('_autosave') - except sessions.SessionError as e: - log.sessions.error("Failed to delete autosave session: {}" - .format(e)) + objreg.get('session-manager').delete_autosave() # We use a singleshot timer to exit here to minimize the likelihood of # segfaults. QTimer.singleShot(0, functools.partial(qApp.exit, status)) diff --git a/qutebrowser/browser/browsertab.py b/qutebrowser/browser/browsertab.py index 7c2188c48..e2a7c3691 100644 --- a/qutebrowser/browser/browsertab.py +++ b/qutebrowser/browser/browsertab.py @@ -685,10 +685,7 @@ class AbstractTab(QWidget): @pyqtSlot(bool) def _on_load_finished(self, ok): sess_manager = objreg.get('session-manager') - try: - sess_manager.save('_autosave') - except sessions.SessionError as e: - log.sessions.error("Failed to save autosave session: {}".format(e)) + sess_manager.save_autosave() if ok and not self._has_ssl_errors: if self.url().scheme() == 'https': diff --git a/qutebrowser/misc/sessions.py b/qutebrowser/misc/sessions.py index f0d1d7c56..32481da6d 100644 --- a/qutebrowser/misc/sessions.py +++ b/qutebrowser/misc/sessions.py @@ -292,6 +292,21 @@ class SessionManager(QObject): state_config['general']['session'] = name return name + def save_autosave(self): + """Save the autosave session.""" + try: + self.save('_autosave') + except SessionError as e: + log.sessions.error("Failed to save autosave session: {}".format(e)) + + def delete_autosave(self): + """Delete the autosave session.""" + try: + self.delete('_autosave') + except SessionError as e: + log.sessions.error("Failed to delete autosave session: {}" + .format(e)) + def save_last_window_session(self): """Temporarily save the session for the last closed window.""" self._last_window_session = self._save_all()