summaryrefslogtreecommitdiffstats
path: root/examples/webenginewidgets/simplebrowser/webpage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/webenginewidgets/simplebrowser/webpage.cpp')
-rw-r--r--examples/webenginewidgets/simplebrowser/webpage.cpp42
1 files changed, 27 insertions, 15 deletions
diff --git a/examples/webenginewidgets/simplebrowser/webpage.cpp b/examples/webenginewidgets/simplebrowser/webpage.cpp
index 99849c77d..2e49f651f 100644
--- a/examples/webenginewidgets/simplebrowser/webpage.cpp
+++ b/examples/webenginewidgets/simplebrowser/webpage.cpp
@@ -57,6 +57,7 @@
#include <QAuthenticator>
#include <QMessageBox>
#include <QStyle>
+#include <QTimer>
#include <QWebEngineCertificateError>
WebPage::WebPage(QWebEngineProfile *profile, QObject *parent)
@@ -74,22 +75,33 @@ WebPage::WebPage(QWebEngineProfile *profile, QObject *parent)
bool WebPage::certificateError(const QWebEngineCertificateError &error)
{
QWidget *mainWindow = view()->window();
- if (error.isOverridable()) {
- QDialog dialog(mainWindow);
- dialog.setModal(true);
- dialog.setWindowFlags(dialog.windowFlags() & ~Qt::WindowContextHelpButtonHint);
- Ui::CertificateErrorDialog certificateDialog;
- certificateDialog.setupUi(&dialog);
- certificateDialog.m_iconLabel->setText(QString());
- QIcon icon(mainWindow->style()->standardIcon(QStyle::SP_MessageBoxWarning, 0, mainWindow));
- certificateDialog.m_iconLabel->setPixmap(icon.pixmap(32, 32));
- certificateDialog.m_errorLabel->setText(error.errorDescription());
- dialog.setWindowTitle(tr("Certificate Error"));
- return dialog.exec() == QDialog::Accepted;
- }
- QMessageBox::critical(mainWindow, tr("Certificate Error"), error.errorDescription());
- return false;
+ QWebEngineCertificateError deferredError = error;
+ deferredError.defer();
+
+ QTimer::singleShot(0, mainWindow, [mainWindow, error = std::move(deferredError)] () mutable {
+ if (!error.deferred()) {
+ QMessageBox::critical(mainWindow, tr("Certificate Error"), error.errorDescription());
+ } else {
+ QDialog dialog(mainWindow);
+ dialog.setModal(true);
+ dialog.setWindowFlags(dialog.windowFlags() & ~Qt::WindowContextHelpButtonHint);
+
+ Ui::CertificateErrorDialog certificateDialog;
+ certificateDialog.setupUi(&dialog);
+ certificateDialog.m_iconLabel->setText(QString());
+ QIcon icon(mainWindow->style()->standardIcon(QStyle::SP_MessageBoxWarning, 0, mainWindow));
+ certificateDialog.m_iconLabel->setPixmap(icon.pixmap(32, 32));
+ certificateDialog.m_errorLabel->setText(error.errorDescription());
+ dialog.setWindowTitle(tr("Certificate Error"));
+
+ if (dialog.exec() == QDialog::Accepted)
+ error.ignoreCertificateError();
+ else
+ error.rejectCertificate();
+ }
+ });
+ return true;
}
void WebPage::handleAuthenticationRequired(const QUrl &requestUrl, QAuthenticator *auth)