From 9d5fc35f7c3d349b623acce965007adc0357933b Mon Sep 17 00:00:00 2001 From: livecodepanos Date: Tue, 28 Jul 2020 14:44:52 +0300 Subject: [PATCH] [[ Bug 22816 ]] Fix permissions when loading a local html file This patch uses the `loadFileURL:allowingReadAccessToURL:` instance method of the WKWebView class to load a local html file. This fixes an issue with insufficient permissions on iOS 12 devices that prevented the html file from being loaded. --- docs/notes/bugfix-22816.md | 1 + libbrowser/src/libbrowser_wkwebview.mm | 11 ++++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 docs/notes/bugfix-22816.md diff --git a/docs/notes/bugfix-22816.md b/docs/notes/bugfix-22816.md new file mode 100644 index 00000000000..3f311e569c6 --- /dev/null +++ b/docs/notes/bugfix-22816.md @@ -0,0 +1 @@ +# Fix permissions when loading a local html file on iOS 12 diff --git a/libbrowser/src/libbrowser_wkwebview.mm b/libbrowser/src/libbrowser_wkwebview.mm index 8d2a10de4c1..e3b829fc353 100644 --- a/libbrowser/src/libbrowser_wkwebview.mm +++ b/libbrowser/src/libbrowser_wkwebview.mm @@ -1618,7 +1618,16 @@ - (void) loadRequest:(MCWKWebViewLoadRequest *)request inWebView:(WKWebView *)we MCBrowserRunBlockOnMainFiber(^{ if (request.htmlText == nil) { - [webView loadRequest:[NSURLRequest requestWithURL:request.url]]; + if (![request.url isFileURL]) + [webView loadRequest:[NSURLRequest requestWithURL:request.url]]; + else + { + NSURL *t_docs_dir_url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; + if ([request.url.absoluteString hasPrefix:t_docs_dir_url.absoluteString]) + [webView loadFileURL:request.url allowingReadAccessToURL:t_docs_dir_url]; + else + [webView loadFileURL:request.url allowingReadAccessToURL:request.url.URLByDeletingLastPathComponent]; + } } else {