Changes in CDWKWebViewEngine to reflect changes in CDVWebViewEngineProtocol.
Made loadHTMLString and loadRequest explicit - loadRequest implicitly handles file urls by attempting to use loadFileURL if available. Project: http://git-wip-us.apache.org/repos/asf/cordova-plugin-wkwebview-engine/repo Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugin-wkwebview-engine/commit/b9349f08 Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugin-wkwebview-engine/tree/b9349f08 Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugin-wkwebview-engine/diff/b9349f08 Branch: refs/heads/master Commit: b9349f08f009c9f175def0494cf55764c0e9cc0d Parents: 2d5732d Author: Shazron Abdullah <shaz...@apache.org> Authored: Wed Nov 12 07:05:52 2014 -0800 Committer: Shazron Abdullah <shaz...@apache.org> Committed: Wed Nov 12 07:05:52 2014 -0800 ---------------------------------------------------------------------- src/ios/CDVWKWebViewEngine.m | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cordova-plugin-wkwebview-engine/blob/b9349f08/src/ios/CDVWKWebViewEngine.m ---------------------------------------------------------------------- diff --git a/src/ios/CDVWKWebViewEngine.m b/src/ios/CDVWKWebViewEngine.m index fd81e37..de69ddd 100644 --- a/src/ios/CDVWKWebViewEngine.m +++ b/src/ios/CDVWKWebViewEngine.m @@ -86,22 +86,25 @@ [self updateSettings:self.commandDelegate.settings]; } -// We implement this here because certain versions of iOS 8 do not implement this -// in WKWebView, so we need to test for this during runtime. -// It is speculated that this selector will be available in iOS 8.2 for WKWebView -- (void)loadFileURL:(NSURL*)url allowingReadAccessToURL:(NSURL*)readAccessURL +- (id)loadRequest:(NSURLRequest*)request { - SEL wk_sel = @selector(loadFileURL:allowingReadAccessToURL:); - __weak CDVWKWebViewEngine* weakSelf = self; - - // UIKit operations have to be on the main thread. This method does not need to be synchronous - dispatch_async(dispatch_get_main_queue(), ^{ - if ([_engineWebView respondsToSelector:wk_sel] && [[url scheme] isEqualToString:@"file"]) { - ((id (*)(id, SEL, id, id))objc_msgSend)(_engineWebView, wk_sel, url, readAccessURL); - } else { - [weakSelf loadRequest:[NSURLRequest requestWithURL:url]]; - } - }); + SEL wk_sel = NSSelectorFromString(@"loadFileURL:allowingReadAccessToURL:"); + + // the URL needs to be a file reference + NSURL* url = request.URL; + + if ([_engineWebView respondsToSelector:wk_sel] && [url isFileReferenceURL]) { + // allow the folder containing the file reference to be read as well + NSURL* readAccessUrl = [request.URL URLByDeletingLastPathComponent]; + return ((id (*)(id, SEL, id, id))objc_msgSend)(_engineWebView, wk_sel, url, readAccessUrl); + } else { + return [(WKWebView*)_engineWebView loadRequest:request]; + } +} + +- (id)loadHTMLString:(NSString*)string baseURL:(NSURL*)baseURL +{ + return [(WKWebView*)_engineWebView loadHTMLString:string baseURL:baseURL]; } - (void)updateSettings:(NSDictionary*)settings --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@cordova.apache.org For additional commands, e-mail: dev-h...@cordova.apache.org