summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Shaw <andy.shaw@qt.io>2018-03-13 11:18:22 +0100
committerAndy Shaw <andy.shaw@qt.io>2018-03-21 16:15:03 +0000
commit574bb84a8b17b510b2ad8661a3bc5fa54e021310 (patch)
tree0c19178487df5a0b69c222981341844a70a7f6a2
parenta499bd8b96715912948fbfe1ae435dc325c9d170 (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 <timur.pocheptsov@qt.io> Reviewed-by: Christian Stromme <christian.stromme@qt.io>
-rw-r--r--src/plugins/darwin/qdarwinwebview.mm39
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