diff options
author | Andy Shaw <[email protected]> | 2018-03-13 11:18:22 +0100 |
---|---|---|
committer | Andy Shaw <[email protected]> | 2018-03-21 16:15:03 +0000 |
commit | 574bb84a8b17b510b2ad8661a3bc5fa54e021310 (patch) | |
tree | 0c19178487df5a0b69c222981341844a70a7f6a2 | |
parent | a499bd8b96715912948fbfe1ae435dc325c9d170 (diff) |
Darwin: Implement didFailNavigation to handle when an error occursv5.11.0-beta3
When an error occurs during navigation then didFailNavigation will be
called. As didFailProvisionalNavigation is not called in this case then
we need to handle it in the same way to ensure the request count is
correctly decremented.
Change-Id: Ib0bab408c4d8a54a1f1e7e0b1c3832f05cd10f65
Reviewed-by: Timur Pocheptsov <[email protected]>
Reviewed-by: Christian Stromme <[email protected]>
-rw-r--r-- | src/plugins/darwin/qdarwinwebview.mm | 39 |
1 files changed, 27 insertions, 12 deletions
diff --git a/src/plugins/darwin/qdarwinwebview.mm b/src/plugins/darwin/qdarwinwebview.mm index 9cf7b93..c8cb11f 100644 --- a/src/plugins/darwin/qdarwinwebview.mm +++ b/src/plugins/darwin/qdarwinwebview.mm @@ -117,12 +117,16 @@ QT_END_NAMESPACE } - (QtWKWebViewDelegate *)initWithQAbstractWebView:(QDarwinWebViewPrivate *)webViewPrivate; - (void)pageDone; +- (void)handleError:(NSError *)error; // protocol: - (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation; - (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation; - (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation withError:(NSError *)error; +- (void)webView:(WKWebView *)webView didFailNavigation:(WKNavigation *)navigation + withError:(NSError *)error; + @end @implementation QtWKWebViewDelegate @@ -141,6 +145,18 @@ QT_END_NAMESPACE Q_EMIT qDarwinWebViewPrivate->titleChanged(qDarwinWebViewPrivate->title()); } +- (void)handleError:(NSError *)error +{ + [self pageDone]; + NSString *errorString = [error localizedDescription]; + NSURL *failingURL = error.userInfo[@"NSErrorFailingURLKey"]; + const QUrl url = [failingURL isKindOfClass:[NSURL class]] + ? QUrl::fromNSURL(failingURL) : qDarwinWebViewPrivate->url(); + Q_EMIT qDarwinWebViewPrivate->loadingChanged( + QWebViewLoadRequestPrivate(url, QWebView::LoadFailedStatus, + QString::fromNSString(errorString))); +} + - (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation { Q_UNUSED(webView); @@ -176,18 +192,17 @@ QT_END_NAMESPACE { Q_UNUSED(webView); Q_UNUSED(navigation); - if (--qDarwinWebViewPrivate->requestFrameCount == 0) { - [self pageDone]; - NSString *errorString = [error localizedDescription]; - NSURL *failingURL = error.userInfo[@"NSErrorFailingURLKey"]; - const QUrl url = [failingURL isKindOfClass:[NSURL class]] - ? QUrl::fromNSURL(failingURL) - : qDarwinWebViewPrivate->url(); - Q_EMIT qDarwinWebViewPrivate->loadingChanged( - QWebViewLoadRequestPrivate(url, - QWebView::LoadFailedStatus, - QString::fromNSString(errorString))); - } + if (--qDarwinWebViewPrivate->requestFrameCount == 0) + [self handleError:error]; +} + +- (void)webView:(WKWebView *)webView didFailNavigation:(WKNavigation *)navigation + withError:(NSError *)error +{ + Q_UNUSED(webView); + Q_UNUSED(navigation); + if (--qDarwinWebViewPrivate->requestFrameCount == 0) + [self handleError:error]; } - (void)webView:(WKWebView *)webView |