[iOS] Mark file requests sent to WKWebView as user-initiated
This makes CRWWebRequestController use -[WKWebView loadFileRequest:...]
instead of -[WKWebView loadFileURL:...] when loading file URLs on
iOS 15, so that it can pass in an NSURLRequest whose attribution
property has been set to mark the request as user-initiated.
(cherry picked from commit bfe61d0d5018be2e91facef3f3bcc7a8bfb7d5d5)
Bug: 1266103
Change-Id: I7b152fcc5b2cc8db821fb47745101b04c039a035
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3258103
Reviewed-by: Rohit Rao <rohitrao@chromium.org>
Commit-Queue: Ali Juma <ajuma@chromium.org>
Cr-Original-Commit-Position: refs/heads/main@{#938325}
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3289529
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Ali Juma <ajuma@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/branch-heads/4664@{#1093}
Cr-Branched-From: 24dc4ee75e01a29d390d43c9c264372a169273a7-refs/heads/main@{#929512}
diff --git a/ios/web/web_state/ui/crw_web_request_controller.mm b/ios/web/web_state/ui/crw_web_request_controller.mm
index 5ef2eda..ff7ce9d 100644
--- a/ios/web/web_state/ui/crw_web_request_controller.mm
+++ b/ios/web/web_state/ui/crw_web_request_controller.mm
@@ -508,21 +508,27 @@
}
WKNavigation* navigation = nil;
+#if defined(__IPHONE_15_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_15_0
+ if (@available(iOS 15, *)) {
+ if (base::FeatureList::IsEnabled(web::features::kSetRequestAttribution)) {
+ request.attribution = NSURLRequestAttributionUser;
+ }
+ }
+#endif
+
if (navigationURL.SchemeIsFile() &&
web::GetWebClient()->IsAppSpecificURL(virtualURL)) {
// file:// URL navigations are allowed for app-specific URLs, which
// already have elevated privileges.
- NSURL* navigationNSURL = net::NSURLWithGURL(navigationURL);
- navigation = [self.webView loadFileURL:navigationNSURL
- allowingReadAccessToURL:navigationNSURL];
- } else {
-#if defined(__IPHONE_15_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_15_0
if (@available(iOS 15, *)) {
- if (base::FeatureList::IsEnabled(web::features::kSetRequestAttribution)) {
- request.attribution = NSURLRequestAttributionUser;
- }
+ navigation = [self.webView loadFileRequest:request
+ allowingReadAccessToURL:request.URL];
+ } else {
+ NSURL* navigationNSURL = net::NSURLWithGURL(navigationURL);
+ navigation = [self.webView loadFileURL:navigationNSURL
+ allowingReadAccessToURL:navigationNSURL];
}
-#endif
+ } else {
navigation = [self.webView loadRequest:request];
}
[self.navigationHandler.navigationStates