diff options
Diffstat (limited to 'src/webengine')
-rw-r--r-- | src/webengine/api/qquickwebenginecertificateerror.cpp | 18 | ||||
-rw-r--r-- | src/webengine/api/qquickwebenginecertificateerror_p.h | 1 | ||||
-rw-r--r-- | src/webengine/api/qquickwebengineview.cpp | 6 | ||||
-rw-r--r-- | src/webengine/api/qquickwebengineview_p_p.h | 2 |
4 files changed, 21 insertions, 6 deletions
diff --git a/src/webengine/api/qquickwebenginecertificateerror.cpp b/src/webengine/api/qquickwebenginecertificateerror.cpp index ba22bf1f0..a39bbfb84 100644 --- a/src/webengine/api/qquickwebenginecertificateerror.cpp +++ b/src/webengine/api/qquickwebenginecertificateerror.cpp @@ -45,7 +45,8 @@ public: error(static_cast<QQuickWebEngineCertificateError::Error>(static_cast<int>(controller->error()))), description(controller->errorString()), overridable(controller->overridable()), - async(false) + async(false), + answered(false) { } @@ -54,6 +55,7 @@ public: QString description; bool overridable; bool async; + bool answered; }; @@ -102,7 +104,9 @@ void QQuickWebEngineCertificateError::defer() */ void QQuickWebEngineCertificateError::ignoreCertificateError() { - Q_D(const QQuickWebEngineCertificateError); + Q_D(QQuickWebEngineCertificateError); + + d->answered = true; QSharedPointer<CertificateErrorController> strongRefCert = d->weakRefCertErrorController.toStrongRef(); if (strongRefCert) @@ -116,7 +120,9 @@ void QQuickWebEngineCertificateError::ignoreCertificateError() */ void QQuickWebEngineCertificateError::rejectCertificate() { - Q_D(const QQuickWebEngineCertificateError); + Q_D(QQuickWebEngineCertificateError); + + d->answered = true; QSharedPointer<CertificateErrorController> strongRefCert = d->weakRefCertErrorController.toStrongRef(); if (strongRefCert) @@ -169,5 +175,11 @@ bool QQuickWebEngineCertificateError::deferred() const return d->async; } +bool QQuickWebEngineCertificateError::answered() const +{ + Q_D(const QQuickWebEngineCertificateError); + return d->answered; +} + QT_END_NAMESPACE diff --git a/src/webengine/api/qquickwebenginecertificateerror_p.h b/src/webengine/api/qquickwebenginecertificateerror_p.h index 08ebc83b6..18a1f90e5 100644 --- a/src/webengine/api/qquickwebenginecertificateerror_p.h +++ b/src/webengine/api/qquickwebenginecertificateerror_p.h @@ -83,6 +83,7 @@ public: QString description() const; bool overridable() const; bool deferred() const; + bool answered() const; private: Q_DISABLE_COPY(QQuickWebEngineCertificateError) diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp index 1430d72b3..c1d2ac2b6 100644 --- a/src/webengine/api/qquickwebengineview.cpp +++ b/src/webengine/api/qquickwebengineview.cpp @@ -228,12 +228,13 @@ void QQuickWebEngineViewPrivate::allowCertificateError(const QSharedPointer<Cert { Q_Q(QQuickWebEngineView); - m_certificateErrorController = errorController; QQuickWebEngineCertificateError *quickController = new QQuickWebEngineCertificateError(errorController); QQmlEngine::setObjectOwnership(quickController, QQmlEngine::JavaScriptOwnership); Q_EMIT q->certificateError(quickController); - if (!quickController->deferred()) + if (!quickController->deferred() && !quickController->answered()) quickController->rejectCertificate(); + else + m_certificateErrorControllers.append(errorController); } void QQuickWebEngineViewPrivate::runGeolocationPermissionRequest(const QUrl &url) @@ -305,6 +306,7 @@ void QQuickWebEngineViewPrivate::loadStarted(const QUrl &provisionalUrl) Q_Q(QQuickWebEngineView); isLoading = true; m_history->reset(); + m_certificateErrorControllers.clear(); QQuickWebEngineLoadRequest loadRequest(provisionalUrl, QQuickWebEngineView::LoadStartedStatus); Q_EMIT q->loadingChanged(&loadRequest); } diff --git a/src/webengine/api/qquickwebengineview_p_p.h b/src/webengine/api/qquickwebengineview_p_p.h index 0111d4be4..377dcc91f 100644 --- a/src/webengine/api/qquickwebengineview_p_p.h +++ b/src/webengine/api/qquickwebengineview_p_p.h @@ -202,7 +202,7 @@ public: bool isLoading; qreal devicePixelRatio; QMap<quint64, QJSValue> m_callbacks; - QSharedPointer<CertificateErrorController> m_certificateErrorController; + QList<QSharedPointer<CertificateErrorController> > m_certificateErrorControllers; private: QScopedPointer<QtWebEngineCore::UIDelegatesManager> m_uIDelegatesManager; |