From ff7c27147da6f8816c6aa1679101c22eab20544e Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Thu, 27 Jun 2024 12:08:01 +0200 Subject: Try to get timeout logic under control --- src/loginform.cpp | 6 ++++-- src/qrlogin.cpp | 1 + src/webview.cpp | 14 +++++++++----- src/webview.h | 2 ++ 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/loginform.cpp b/src/loginform.cpp index 3ca0ec4..e25bf8d 100644 --- a/src/loginform.cpp +++ b/src/loginform.cpp @@ -164,7 +164,7 @@ void LoginForm::initialize() if (Settings::resetForm() > 0) { connect(&resetFormTimer, &QTimer::timeout, [this]() { if (ui->loginChooser->currentWidget() == ui->qrPage) - return; + return; // Has own timeout logic int idleTime = static_cast(getIdleTime(QX11Info::display())); int remaining = Settings::resetForm() * 1000 - idleTime; if (remaining <= 0) { @@ -532,11 +532,13 @@ void LoginForm::keyPressEvent(QKeyEvent *event) void LoginForm::resetForm() { - std::cerr << "PageCount: " << pageCount << std::endl; if (ui->loginChooser->currentWidget() == ui->qrPage && qrlogin != nullptr) { qrlogin->abort(); hideMessage(); } + if (ui->loginChooser->currentWidget() == ui->shibPage && browser != nullptr) { + browser->resetBrowserAndTimeout(); + } if (pageCount > 1) { ui->loginChooser->setCurrentWidget(ui->welcomePage); } diff --git a/src/qrlogin.cpp b/src/qrlogin.cpp index c562e98..26398ac 100644 --- a/src/qrlogin.cpp +++ b/src/qrlogin.cpp @@ -162,6 +162,7 @@ void QrLogin::handleAuthReceived(const QStringList &lines) } emit startAuthentication(lines[0], QLatin1String("shib=") + lines[1]); } else { + timer->stop(); emit triggerReset(QLatin1String("QR: Invalid reply received")); } } diff --git a/src/webview.cpp b/src/webview.cpp index 55443b3..745d700 100644 --- a/src/webview.cpp +++ b/src/webview.cpp @@ -62,13 +62,20 @@ WebView::WebView(QWidget* parent) connect(page(), SIGNAL(downloadRequested(QNetworkRequest)),this,SLOT(downloadRequest(QNetworkRequest))); connect(_timerAbortMessage, &QTimer::timeout, this, &WebView::downloadDeniedMessage); connect(_timerReset, &QTimer::timeout, this, [this]() { - this->stop(); - this->page()->mainFrame()->setContent(""); + this->resetBrowserAndTimeout(); emit triggerReset(tr("Inactivity Timeout")); }); connect(this, &QWebView::loadFinished, this, &WebView::onLoadFinished); } +void WebView::resetBrowserAndTimeout() +{ + _timerReset->stop(); + _timerAbortMessage->stop(); + this->stop(); + this->page()->mainFrame()->setContent(""); +} + void WebView::jsInjector(QWebFrame *frame) { QString str = Global::getCombinedIdpWhitelist().replace( @@ -201,9 +208,6 @@ void WebView::reset(const QString baseUrl) _firstLoad = true; _timerAbortMessage->stop(); _timerReset->stop(); - QTimer::singleShot(5000, [this]() { - _timerReset->stop(); - }); } static QRegularExpression urlListToRegExp(const QStringList &list) diff --git a/src/webview.h b/src/webview.h index 27ab2f7..48c0ceb 100644 --- a/src/webview.h +++ b/src/webview.h @@ -20,6 +20,8 @@ public: WebView(QWidget* parent = NULL); void reset(const QString baseUrl); + void resetBrowserAndTimeout(); + protected: QWebView *createWindow(QWebPage::WebWindowType) override; void mousePressEvent(QMouseEvent*) override; -- cgit v1.2.3-55-g7522