diff options
author | Kirill Burtsev <kirill.burtsev@qt.io> | 2019-08-14 18:59:23 +0200 |
---|---|---|
committer | Kirill Burtsev <kirill.burtsev@qt.io> | 2019-09-05 23:32:55 +0200 |
commit | bf3753f02402b44455038c4fa2a897d41aadf850 (patch) | |
tree | e41ec261298a4f5eff8e7b5507226301eafa3a61 /src/webenginewidgets/api/qwebenginepage.cpp | |
parent | 8213ea60bacb91ddfa1594e1f515abe2cfbde621 (diff) | |
download | qtwebengine-bf3753f02402b44455038c4fa2a897d41aadf850.tar.gz |
Allow deferring QWebEngineCertificateError handling
Introduce defer() method for halting URL load on certificate errors,
and methods for rejecting and ignoring these errors subsequently
in async manner.
[ChangeLog][QtWebEngineWidgets][QWebEngineCertificateError] New
methods for asynchronous decision on certificate error during load.
Fixes: QTBUG-55110
Change-Id: Ib23eb568862ccc360208922a6a581f8e7edc4a7e
Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'src/webenginewidgets/api/qwebenginepage.cpp')
-rw-r--r-- | src/webenginewidgets/api/qwebenginepage.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp index c9e9177b7..b22d47916 100644 --- a/src/webenginewidgets/api/qwebenginepage.cpp +++ b/src/webenginewidgets/api/qwebenginepage.cpp @@ -294,6 +294,7 @@ void QWebEnginePagePrivate::loadStarted(const QUrl &provisionalUrl, bool isError return; isLoading = true; + m_certificateErrorControllers.clear(); QTimer::singleShot(0, q, &QWebEnginePage::loadStarted); } @@ -1715,10 +1716,11 @@ void QWebEnginePagePrivate::allowCertificateError(const QSharedPointer<Certifica Q_Q(QWebEnginePage); bool accepted = false; - QWebEngineCertificateError error(controller->error(), controller->url(), controller->overridable() && !controller->strictEnforcement(), controller->errorString()); + QWebEngineCertificateError error(controller); accepted = q->certificateError(error); - - if (error.isOverridable()) + if (error.deferred() && !error.answered()) + m_certificateErrorControllers.append(controller); + else if (!error.answered() && error.isOverridable()) controller->accept(accepted); } |