diff options
Diffstat (limited to 'tests/quicktestbrowser')
-rw-r--r-- | tests/quicktestbrowser/BrowserWindow.qml | 57 | ||||
-rw-r--r-- | tests/quicktestbrowser/utils.h | 6 |
2 files changed, 52 insertions, 11 deletions
diff --git a/tests/quicktestbrowser/BrowserWindow.qml b/tests/quicktestbrowser/BrowserWindow.qml index 2c8e9e1ea..b111edb6c 100644 --- a/tests/quicktestbrowser/BrowserWindow.qml +++ b/tests/quicktestbrowser/BrowserWindow.qml @@ -357,10 +357,12 @@ ApplicationWindow { ] onCertificateError: { - sslDialog.certError = error - sslDialog.text = "Certificate Error: " + error.description - sslDialog.visible = true - error.defer() + if (!acceptedCertificates.shouldAutoAccept(error)){ + error.defer() + sslDialog.enqueue(error) + } else{ + error.ignoreCertificateError() + } } onNewViewRequested: { @@ -440,17 +442,50 @@ ApplicationWindow { } } + QtObject{ + id:acceptedCertificates + + property var acceptedUrls : [] + + function shouldAutoAccept(certificateError){ + var domain = utils.domainFromString(certificateError.url) + return acceptedUrls.indexOf(domain) >= 0 + } + } + MessageDialog { id: sslDialog - property var certError - - standardButtons: StandardButton.Cancel | StandardButton.Ok - visible: false - title: "Do you want to accept this certificate?" + property var certErrors: [] + icon: StandardIcon.Warning + standardButtons: StandardButton.No | StandardButton.Yes + title: "Server's certificate not trusted" + text: "Do you wish to continue?" + detailedText: "If you wish so, you may continue with an unverified certificate. " + + "Accepting an unverified certificate means " + + "you may not be connected with the host you tried to connect to.\n" + + "Do you wish to override the security check and continue?" + onYes: { + var cert = certErrors.shift() + var domain = utils.domainFromString(cert.url) + acceptedCertificates.acceptedUrls.push(domain) + cert.ignoreCertificateError() + presentError() + } + onNo: reject() + onRejected: reject() - onAccepted: certError.ignoreCertificateError() - onRejected: certError.rejectCertificate() + function reject(){ + certErrors.shift().rejectCertificate() + presentError() + } + function enqueue(error){ + certErrors.push(error) + presentError() + } + function presentError(){ + visible = certErrors.length > 0 + } } DownloadView { diff --git a/tests/quicktestbrowser/utils.h b/tests/quicktestbrowser/utils.h index 0f4460dfe..52025b7e4 100644 --- a/tests/quicktestbrowser/utils.h +++ b/tests/quicktestbrowser/utils.h @@ -48,6 +48,7 @@ class Utils : public QObject { Q_OBJECT public: Q_INVOKABLE static QUrl fromUserInput(const QString& userInput); + Q_INVOKABLE static QString domainFromString(const QString& urlString); }; inline QUrl Utils::fromUserInput(const QString& userInput) @@ -58,4 +59,9 @@ inline QUrl Utils::fromUserInput(const QString& userInput) return QUrl::fromUserInput(userInput); } +inline QString Utils::domainFromString(const QString& urlString) +{ + return QUrl::fromUserInput(urlString).host(); +} + #endif // UTILS_H |