RecoveryJsObject: Use safer method to get BrowserWindow from WebPage

remotes/origin/falkon
David Rosca 11 years ago
parent fc85caff57
commit a9d0e79eeb
  1. 21
      src/lib/session/recoveryjsobject.cpp
  2. 3
      src/lib/session/recoveryjsobject.h

@ -38,14 +38,29 @@ void RecoveryJsObject::setPage(WebPage *page)
void RecoveryJsObject::startNewSession()
{
m_page->load(static_cast<TabbedWebView*>(m_page->view())->browserWindow()->homepageUrl());
BrowserWindow *window = getBrowserWindow();
if (!window)
return;
m_page->load(window->homepageUrl());
mApp->destroyRestoreManager();
}
void RecoveryJsObject::restoreSession()
{
if (!mApp->restoreSession(static_cast<TabbedWebView*>(m_page->view())->browserWindow() , m_manager->restoreData())) {
BrowserWindow *window = getBrowserWindow();
if (!window)
return;
bool ok = mApp->restoreSession(window , m_manager->restoreData());
if (!ok)
startNewSession();
}
}
BrowserWindow *RecoveryJsObject::getBrowserWindow() const
{
TabbedWebView *view = qobject_cast<TabbedWebView*>(m_page->view());
return view ? view->browserWindow() : Q_NULLPTR;
}

@ -22,6 +22,7 @@
#include <QObject>
class WebPage;
class BrowserWindow;
class RestoreManager;
class RecoveryJsObject : public QObject
@ -37,6 +38,8 @@ public slots:
void restoreSession();
private:
BrowserWindow *getBrowserWindow() const;
RestoreManager *m_manager;
WebPage *m_page;
};

Loading…
Cancel
Save