summaryrefslogtreecommitdiffstats
path: root/tests/auto/quick
diff options
context:
space:
mode:
authorPeter Varga <pvarga@inf.u-szeged.hu>2020-09-08 14:36:36 +0200
committerPeter Varga <pvarga@inf.u-szeged.hu>2020-09-16 16:28:09 +0200
commit746d61c92279f479512e373a18ee95ac8ee7d88c (patch)
tree3572f5a8869255a86888138223e8abd7459c0374 /tests/auto/quick
parent9e831f63df8e60f0dc6cae96ae9ceb7ae89e065d (diff)
Avoid to reject a certificate error twice in Quick
Widget API already ignores these cases. This would cause a crash for fatal certificate errors after 83-based. Change-Id: I3e80bb12f023f22e330218a5b20f3e267bb237dc Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'tests/auto/quick')
-rw-r--r--tests/auto/quick/qmltests_ssl/data/tst_certificateError.qml38
1 files changed, 29 insertions, 9 deletions
diff --git a/tests/auto/quick/qmltests_ssl/data/tst_certificateError.qml b/tests/auto/quick/qmltests_ssl/data/tst_certificateError.qml
index 0629be175..4c252e210 100644
--- a/tests/auto/quick/qmltests_ssl/data/tst_certificateError.qml
+++ b/tests/auto/quick/qmltests_ssl/data/tst_certificateError.qml
@@ -38,15 +38,6 @@ TestWebEngineView {
property bool deferError: false
property bool acceptCertificate: false
- onCertificateError: function(error) {
- if (deferError)
- error.defer()
- else if (acceptCertificate)
- error.ignoreCertificateError()
- else
- error.rejectCertificate()
- }
-
SignalSpy {
id: spyError
target: view
@@ -88,6 +79,16 @@ TestWebEngineView {
function test_error(data) {
view.deferError = data.deferError
view.acceptCertificate = data.acceptCertificate
+ var handleCertificateError = function(error) {
+ if (deferError)
+ error.defer()
+ else if (acceptCertificate)
+ error.ignoreCertificateError()
+ else
+ error.rejectCertificate()
+ }
+ view.certificateError.connect(handleCertificateError)
+
view.url = Shared.HttpsServer.url()
if (data.deferError) {
@@ -109,6 +110,25 @@ TestWebEngineView {
compare(spyError.count, 1)
compare(data.expectedContent, view.getBodyText())
+
+ view.certificateError.disconnect(handleCertificateError)
+ }
+
+ function test_fatalError() {
+ var handleCertificateError = function(error) {
+ verify(!error.overrideable);
+ // QQuickWebEngineViewPrivate::allowCertificateError() will implicitly reject
+ // fatal errors and it should not crash if already rejected in handler.
+ error.rejectCertificate();
+ }
+ view.certificateError.connect(handleCertificateError);
+
+ view.url = Qt.resolvedUrl('https://revoked.badssl.com');
+ if (!view.waitForLoadFailed(10000))
+ skip("Couldn't load page from network, skipping test.");
+ compare(spyError.count, 1);
+
+ view.certificateError.disconnect(handleCertificateError);
}
}
}