summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/webenginewidgets/simplebrowser/webpage.cpp45
-rw-r--r--examples/webenginewidgets/simplebrowser/webpage.h2
-rw-r--r--src/core/api/qwebenginecertificateerror.cpp44
-rw-r--r--src/core/api/qwebenginecertificateerror.h19
-rw-r--r--src/core/web_contents_delegate_qt.cpp2
-rw-r--r--src/webengine/api/qquickwebengineview_p.h2
-rw-r--r--src/webenginewidgets/api/qwebenginepage.cpp2
-rw-r--r--src/webenginewidgets/api/qwebenginepage.h2
-rw-r--r--tests/auto/quick/certificateerror/tst_certificateerror.cpp10
-rw-r--r--tests/auto/quick/publicapi/tst_publicapi.cpp38
-rw-r--r--tests/auto/quick/qmltests/data/tst_certificateError.qml4
-rw-r--r--tests/auto/widgets/certificateerror/tst_certificateerror.cpp9
12 files changed, 70 insertions, 109 deletions
diff --git a/examples/webenginewidgets/simplebrowser/webpage.cpp b/examples/webenginewidgets/simplebrowser/webpage.cpp
index d8f954c90..c4d7204cb 100644
--- a/examples/webenginewidgets/simplebrowser/webpage.cpp
+++ b/examples/webenginewidgets/simplebrowser/webpage.cpp
@@ -70,34 +70,29 @@ WebPage::WebPage(QWebEngineProfile *profile, QObject *parent)
connect(this, &QWebEnginePage::selectClientCertificate, this, &WebPage::handleSelectClientCertificate);
}
-void WebPage::certificateError(const QWebEngineCertificateError &error)
+void WebPage::certificateError(QWebEngineCertificateError error)
{
QWidget *mainWindow = view()->window();
- 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();
- }
+ error.defer();
+
+ QTimer::singleShot(0, mainWindow, [mainWindow, error]() mutable {
+ 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.description());
+ dialog.setWindowTitle(tr("Certificate Error"));
+
+ if (dialog.exec() == QDialog::Accepted)
+ error.acceptCertificate();
+ else
+ error.rejectCertificate();
});
}
diff --git a/examples/webenginewidgets/simplebrowser/webpage.h b/examples/webenginewidgets/simplebrowser/webpage.h
index fbb15fc0f..d69c459e9 100644
--- a/examples/webenginewidgets/simplebrowser/webpage.h
+++ b/examples/webenginewidgets/simplebrowser/webpage.h
@@ -62,7 +62,7 @@ public:
WebPage(QWebEngineProfile *profile, QObject *parent = nullptr);
protected:
- void certificateError(const QWebEngineCertificateError &error) override;
+ void certificateError(QWebEngineCertificateError error) override;
private slots:
void handleAuthenticationRequired(const QUrl &requestUrl, QAuthenticator *auth);
diff --git a/src/core/api/qwebenginecertificateerror.cpp b/src/core/api/qwebenginecertificateerror.cpp
index cf8a20d53..098986132 100644
--- a/src/core/api/qwebenginecertificateerror.cpp
+++ b/src/core/api/qwebenginecertificateerror.cpp
@@ -103,7 +103,7 @@ QWebEngineCertificateError& QWebEngineCertificateError::operator=(const QWebEngi
QWebEngineCertificateError::~QWebEngineCertificateError() = default;
/*!
- \enum QWebEngineCertificateError::Error
+ \enum QWebEngineCertificateError::Type
This enum describes the type of certificate error encountered.
@@ -136,7 +136,7 @@ QWebEngineCertificateError::~QWebEngineCertificateError() = default;
/*!
Returns whether this error can be overridden and accepted.
- \sa error(), errorDescription()
+ \sa error(), description()
*/
bool QWebEngineCertificateError::isOverridable() const
{
@@ -146,7 +146,7 @@ bool QWebEngineCertificateError::isOverridable() const
/*!
Returns the URL that triggered the error.
- \sa error(), errorDescription()
+ \sa error(), description()
*/
QUrl QWebEngineCertificateError::url() const
{
@@ -156,11 +156,11 @@ QUrl QWebEngineCertificateError::url() const
/*!
Returns the type of the error.
- \sa errorDescription(), isOverridable()
+ \sa description(), isOverridable()
*/
-QWebEngineCertificateError::Error QWebEngineCertificateError::error() const
+QWebEngineCertificateError::Type QWebEngineCertificateError::type() const
{
- return Error(d->error());
+ return Type(d->error());
}
/*!
@@ -168,7 +168,7 @@ QWebEngineCertificateError::Error QWebEngineCertificateError::error() const
\sa error(), url(), isOverridable()
*/
-QString QWebEngineCertificateError::errorDescription() const
+QString QWebEngineCertificateError::description() const
{
return d->errorString();
}
@@ -178,9 +178,9 @@ QString QWebEngineCertificateError::errorDescription() const
Marks the certificate error for delayed handling.
- This function should be called when there is a need to postpone the decision whether to ignore a
- certificate error, for example, while waiting for user input. When called, the function pauses the
- URL request until ignoreCertificateError() or rejectCertificate() is called.
+ This function should be called when there is a need to postpone the decision whether to accept a
+ certificate, for example, while waiting for user input. When called, the function pauses the
+ URL request until acceptCertificate() or rejectCertificate() is called.
\note It is only possible to defer overridable certificate errors.
@@ -194,19 +194,9 @@ void QWebEngineCertificateError::defer()
/*!
\since 5.14
- Returns whether the decision for error handling was delayed and the URL load was halted.
+ Accepts the certificate and continues the loading of the requested URL.
*/
-bool QWebEngineCertificateError::deferred() const
-{
- return d->deferred();
-}
-
-/*!
- \since 5.14
-
- Ignores the certificate error and continues the loading of the requested URL.
-*/
-void QWebEngineCertificateError::ignoreCertificateError()
+void QWebEngineCertificateError::acceptCertificate()
{
d->ignoreCertificateError();
}
@@ -224,16 +214,6 @@ void QWebEngineCertificateError::rejectCertificate()
/*!
\since 5.14
- Returns \c true if the error was explicitly rejected or ignored.
-*/
-bool QWebEngineCertificateError::answered() const
-{
- return d->answered();
-}
-
-/*!
- \since 5.14
-
Returns the peer's chain of digital certificates.
Chain starts with the peer's immediate certificate and ending with the CA's certificate.
diff --git a/src/core/api/qwebenginecertificateerror.h b/src/core/api/qwebenginecertificateerror.h
index 029c2a512..1fdea42be 100644
--- a/src/core/api/qwebenginecertificateerror.h
+++ b/src/core/api/qwebenginecertificateerror.h
@@ -56,11 +56,9 @@ QT_BEGIN_NAMESPACE
class Q_WEBENGINECORE_EXPORT QWebEngineCertificateError {
Q_GADGET
Q_PROPERTY(QUrl url READ url CONSTANT FINAL)
- Q_PROPERTY(Error error READ error CONSTANT FINAL)
- Q_PROPERTY(QString description READ errorDescription CONSTANT FINAL)
+ Q_PROPERTY(Type type READ type CONSTANT FINAL)
+ Q_PROPERTY(QString description READ description CONSTANT FINAL)
Q_PROPERTY(bool overridable READ isOverridable CONSTANT FINAL)
- Q_PROPERTY(bool deferred READ deferred CONSTANT FINAL)
- Q_PROPERTY(bool answered READ answered CONSTANT FINAL)
public:
QWebEngineCertificateError(const QWebEngineCertificateError &other);
@@ -68,7 +66,7 @@ public:
~QWebEngineCertificateError();
// Keep this identical to CertificateErrorController::CertificateError, or add mapping layer.
- enum Error {
+ enum Type {
SslPinnedKeyNotInCertificateChain = -150,
CertificateCommonNameInvalid = -200,
CertificateDateInvalid = -201,
@@ -86,19 +84,16 @@ public:
CertificateTransparencyRequired = -214,
CertificateKnownInterceptionBlocked = -217,
};
- Q_ENUM(Error)
+ Q_ENUM(Type)
- Error error() const;
+ Type type() const;
QUrl url() const;
bool isOverridable() const;
- QString errorDescription() const;
+ QString description() const;
Q_INVOKABLE void defer();
- bool deferred() const;
-
Q_INVOKABLE void rejectCertificate();
- Q_INVOKABLE void ignoreCertificateError();
- bool answered() const;
+ Q_INVOKABLE void acceptCertificate();
QList<QSslCertificate> certificateChain() const;
diff --git a/src/core/web_contents_delegate_qt.cpp b/src/core/web_contents_delegate_qt.cpp
index ceee1d282..5318cdf1b 100644
--- a/src/core/web_contents_delegate_qt.cpp
+++ b/src/core/web_contents_delegate_qt.cpp
@@ -683,7 +683,7 @@ void WebContentsDelegateQt::allowCertificateError(
{
QWebEngineCertificateError error(controller);
m_viewClient->allowCertificateError(error);
- if (!error.isOverridable() || (!error.deferred() && !error.answered()))
+ if (!error.isOverridable() || (!controller->deferred() && !controller->answered()))
error.rejectCertificate();
else
m_certificateErrorControllers.append(controller);
diff --git a/src/webengine/api/qquickwebengineview_p.h b/src/webengine/api/qquickwebengineview_p.h
index e169d0490..800c1c491 100644
--- a/src/webengine/api/qquickwebengineview_p.h
+++ b/src/webengine/api/qquickwebengineview_p.h
@@ -552,7 +552,7 @@ Q_SIGNALS:
void linkHovered(const QUrl &hoveredUrl);
void navigationRequested(QQuickWebEngineNavigationRequest *request);
void javaScriptConsoleMessage(JavaScriptConsoleMessageLevel level, const QString &message, int lineNumber, const QString &sourceID);
- Q_REVISION(1) void certificateError(const QWebEngineCertificateError &error);
+ Q_REVISION(1) void certificateError(QWebEngineCertificateError error);
Q_REVISION(1) void fullScreenRequested(const QQuickWebEngineFullScreenRequest &request);
Q_REVISION(1) void isFullScreenChanged();
Q_REVISION(1) void featurePermissionRequested(const QUrl &securityOrigin, Feature feature);
diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp
index 1e4ade4ac..f211347f1 100644
--- a/src/webenginewidgets/api/qwebenginepage.cpp
+++ b/src/webenginewidgets/api/qwebenginepage.cpp
@@ -2382,7 +2382,7 @@ void QWebEnginePage::javaScriptConsoleMessage(JavaScriptConsoleMessageLevel leve
}
}
-void QWebEnginePage::certificateError(const QWebEngineCertificateError &) { }
+void QWebEnginePage::certificateError(QWebEngineCertificateError) { }
bool QWebEnginePage::acceptNavigationRequest(const QUrl &url, NavigationType type, bool isMainFrame)
{
diff --git a/src/webenginewidgets/api/qwebenginepage.h b/src/webenginewidgets/api/qwebenginepage.h
index 199ba9e2e..102f36a30 100644
--- a/src/webenginewidgets/api/qwebenginepage.h
+++ b/src/webenginewidgets/api/qwebenginepage.h
@@ -375,7 +375,7 @@ protected:
virtual bool javaScriptConfirm(const QUrl &securityOrigin, const QString& msg);
virtual bool javaScriptPrompt(const QUrl &securityOrigin, const QString& msg, const QString& defaultValue, QString* result);
virtual void javaScriptConsoleMessage(JavaScriptConsoleMessageLevel level, const QString& message, int lineNumber, const QString& sourceID);
- virtual void certificateError(const QWebEngineCertificateError &certificateError);
+ virtual void certificateError(QWebEngineCertificateError certificateError);
virtual bool acceptNavigationRequest(const QUrl &url, NavigationType type, bool isMainFrame);
private:
diff --git a/tests/auto/quick/certificateerror/tst_certificateerror.cpp b/tests/auto/quick/certificateerror/tst_certificateerror.cpp
index 6652fd511..3e2dc85fb 100644
--- a/tests/auto/quick/certificateerror/tst_certificateerror.cpp
+++ b/tests/auto/quick/certificateerror/tst_certificateerror.cpp
@@ -99,7 +99,7 @@ void tst_CertificateError::handleError()
}
if (acceptCertificate)
- error.ignoreCertificateError();
+ error.acceptCertificate();
else
error.rejectCertificate();
@@ -110,16 +110,12 @@ void tst_CertificateError::handleError()
QCOMPARE(chain[1].serialNumber(), "6d:52:fb:b4:57:3b:b2:03:c8:62:7b:7e:44:45:5c:d3:08:87:74:17");
if (deferError) {
- QVERIFY(error.deferred());
- QVERIFY(!error.answered());
QVERIFY(!m_handler->loadSuccess());
if (acceptCertificate)
- error.ignoreCertificateError();
+ error.acceptCertificate();
else
- error.rejectCertificate();
-
- QVERIFY(error.answered());
+ error.rejectCertificate();
}
QTRY_COMPARE_WITH_TIMEOUT(m_handler->loadSuccess(), acceptCertificate, 3000);
}
diff --git a/tests/auto/quick/publicapi/tst_publicapi.cpp b/tests/auto/quick/publicapi/tst_publicapi.cpp
index e5f5bf27d..83ae3f0cd 100644
--- a/tests/auto/quick/publicapi/tst_publicapi.cpp
+++ b/tests/auto/quick/publicapi/tst_publicapi.cpp
@@ -121,28 +121,26 @@ static const QStringList expectedAPI = QStringList()
<< "QQuickWebEngineAuthenticationDialogRequest.realm --> QString"
<< "QQuickWebEngineAuthenticationDialogRequest.type --> AuthenticationType"
<< "QQuickWebEngineAuthenticationDialogRequest.url --> QUrl"
- << "QWebEngineCertificateError.CertificateAuthorityInvalid --> Error"
- << "QWebEngineCertificateError.CertificateCommonNameInvalid --> Error"
- << "QWebEngineCertificateError.CertificateContainsErrors --> Error"
- << "QWebEngineCertificateError.CertificateDateInvalid --> Error"
- << "QWebEngineCertificateError.CertificateInvalid --> Error"
- << "QWebEngineCertificateError.CertificateKnownInterceptionBlocked --> Error"
- << "QWebEngineCertificateError.CertificateNameConstraintViolation --> Error"
- << "QWebEngineCertificateError.CertificateNoRevocationMechanism --> Error"
- << "QWebEngineCertificateError.CertificateNonUniqueName --> Error"
- << "QWebEngineCertificateError.CertificateRevoked --> Error"
- << "QWebEngineCertificateError.CertificateTransparencyRequired --> Error"
- << "QWebEngineCertificateError.CertificateUnableToCheckRevocation --> Error"
- << "QWebEngineCertificateError.CertificateValidityTooLong --> Error"
- << "QWebEngineCertificateError.CertificateWeakKey --> Error"
- << "QWebEngineCertificateError.CertificateWeakSignatureAlgorithm --> Error"
- << "QWebEngineCertificateError.SslPinnedKeyNotInCertificateChain --> Error"
- << "QWebEngineCertificateError.answered --> bool"
- << "QWebEngineCertificateError.deferred --> bool"
+ << "QWebEngineCertificateError.CertificateAuthorityInvalid --> Type"
+ << "QWebEngineCertificateError.CertificateCommonNameInvalid --> Type"
+ << "QWebEngineCertificateError.CertificateContainsErrors --> Type"
+ << "QWebEngineCertificateError.CertificateDateInvalid --> Type"
+ << "QWebEngineCertificateError.CertificateInvalid --> Type"
+ << "QWebEngineCertificateError.CertificateKnownInterceptionBlocked --> Type"
+ << "QWebEngineCertificateError.CertificateNameConstraintViolation --> Type"
+ << "QWebEngineCertificateError.CertificateNoRevocationMechanism --> Type"
+ << "QWebEngineCertificateError.CertificateNonUniqueName --> Type"
+ << "QWebEngineCertificateError.CertificateRevoked --> Type"
+ << "QWebEngineCertificateError.CertificateTransparencyRequired --> Type"
+ << "QWebEngineCertificateError.CertificateUnableToCheckRevocation --> Type"
+ << "QWebEngineCertificateError.CertificateValidityTooLong --> Type"
+ << "QWebEngineCertificateError.CertificateWeakKey --> Type"
+ << "QWebEngineCertificateError.CertificateWeakSignatureAlgorithm --> Type"
+ << "QWebEngineCertificateError.SslPinnedKeyNotInCertificateChain --> Type"
<< "QWebEngineCertificateError.defer() --> void"
<< "QWebEngineCertificateError.description --> QString"
- << "QWebEngineCertificateError.error --> Error"
- << "QWebEngineCertificateError.ignoreCertificateError() --> void"
+ << "QWebEngineCertificateError.type --> Type"
+ << "QWebEngineCertificateError.acceptCertificate() --> void"
<< "QWebEngineCertificateError.overridable --> bool"
<< "QWebEngineCertificateError.rejectCertificate() --> void"
<< "QWebEngineCertificateError.url --> QUrl"
diff --git a/tests/auto/quick/qmltests/data/tst_certificateError.qml b/tests/auto/quick/qmltests/data/tst_certificateError.qml
index 0629be175..a4bd9597a 100644
--- a/tests/auto/quick/qmltests/data/tst_certificateError.qml
+++ b/tests/auto/quick/qmltests/data/tst_certificateError.qml
@@ -42,7 +42,7 @@ TestWebEngineView {
if (deferError)
error.defer()
else if (acceptCertificate)
- error.ignoreCertificateError()
+ error.acceptCertificate()
else
error.rejectCertificate()
}
@@ -97,7 +97,7 @@ TestWebEngineView {
let error = spyError.signalArguments[0][0]
if (data.acceptCertificate)
- error.ignoreCertificateError()
+ error.acceptCertificate()
else
error.rejectCertificate()
}
diff --git a/tests/auto/widgets/certificateerror/tst_certificateerror.cpp b/tests/auto/widgets/certificateerror/tst_certificateerror.cpp
index 34508be0c..d57c1788b 100644
--- a/tests/auto/widgets/certificateerror/tst_certificateerror.cpp
+++ b/tests/auto/widgets/certificateerror/tst_certificateerror.cpp
@@ -57,7 +57,7 @@ struct PageWithCertificateErrorHandler : QWebEnginePage
QSignalSpy loadSpy;
QScopedPointer<QWebEngineCertificateError> error;
- void certificateError(const QWebEngineCertificateError &e) override
+ void certificateError(QWebEngineCertificateError e) override
{
error.reset(new QWebEngineCertificateError(e));
if (deferError) {
@@ -66,7 +66,7 @@ struct PageWithCertificateErrorHandler : QWebEnginePage
}
if (acceptCertificate)
- error->ignoreCertificateError();
+ error->acceptCertificate();
else
error->rejectCertificate();
}
@@ -109,17 +109,14 @@ void tst_CertificateError::handleError()
QCOMPARE(chain[1].serialNumber(), "6d:52:fb:b4:57:3b:b2:03:c8:62:7b:7e:44:45:5c:d3:08:87:74:17");
if (deferError) {
- QVERIFY(page.error->deferred());
- QVERIFY(!page.error->answered());
QCOMPARE(page.loadSpy.count(), 0);
QCOMPARE(toPlainTextSync(&page), QString());
if (acceptCertificate)
- page.error->ignoreCertificateError();
+ page.error->acceptCertificate();
else
page.error->rejectCertificate();
- QVERIFY(page.error->answered());
page.error.reset();
}
QTRY_COMPARE_WITH_TIMEOUT(page.loadSpy.count(), 1, 30000);