diff --git a/ios/brave-ios/Sources/Brave/Frontend/Browser/BrowserViewController/BVC+WKNavigationDelegate.swift b/ios/brave-ios/Sources/Brave/Frontend/Browser/BrowserViewController/BVC+WKNavigationDelegate.swift index bf7cabb06e6b..05572bc93668 100644 --- a/ios/brave-ios/Sources/Brave/Frontend/Browser/BrowserViewController/BVC+WKNavigationDelegate.swift +++ b/ios/brave-ios/Sources/Brave/Frontend/Browser/BrowserViewController/BVC+WKNavigationDelegate.swift @@ -744,7 +744,26 @@ extension BrowserViewController: WKNavigationDelegate { let mimeType = response.mimeType.flatMap({ UTType(mimeType: $0) }), mimeTypesThatRequireSFSafariViewControllerHandling.contains(mimeType) { - handleLinkWithSafariViewController(url, tab: tab) + // Do what Chromium does: https://source.chromium.org/chromium/chromium/src/+/main:ios/chrome/browser/download/ui_bundled/safari_download_coordinator.mm;l=100;bpv=1;bpt=1?q=presentMobileConfigAlertFromURL&ss=chromium%2Fchromium%2Fsrc + // and present an alert before showing the Safari View Controller + + let alert = UIAlertController( + title: Strings.openMobileConfigurationAlertTitle, + message: String.init( + format: Strings.openMobileConfigurationAlertDescription, + url.absoluteString + ), + preferredStyle: .alert + ) + alert.addAction( + UIAlertAction(title: Strings.OBContinueButton, style: .default) { [weak self] _ in + self?.handleLinkWithSafariViewController(url, tab: tab) + } + ) + + alert.addAction(UIAlertAction(title: Strings.cancelButtonTitle, style: .cancel)) + present(alert, animated: true) + return .cancel } diff --git a/ios/brave-ios/Sources/BraveStrings/BraveStrings.swift b/ios/brave-ios/Sources/BraveStrings/BraveStrings.swift index 2a27cd39c880..cf7daaeee96f 100644 --- a/ios/brave-ios/Sources/BraveStrings/BraveStrings.swift +++ b/ios/brave-ios/Sources/BraveStrings/BraveStrings.swift @@ -3619,6 +3619,20 @@ extension Strings { value: "Don't Allow", comment: "Don't allow Brave to open the external app URL" ) + public static let openMobileConfigurationAlertTitle = NSLocalizedString( + "OpenMobileConfigurationAlertTitle", + tableName: "BraveShared", + bundle: .module, + value: "Configuration profile available", + comment: "Title of the alert when a mobile configuration profile is available for download" + ) + public static let openMobileConfigurationAlertDescription = NSLocalizedString( + "OpenMobileConfigurationAlertTitle", + tableName: "BraveShared", + bundle: .module, + value: "Continue download a configuration profile from %@", + comment: "Title of the alert when a mobile configuration profile is available for download. %@ is the URL placeholder of the website where the profile will be downloaded from" + ) public static let requestCameraPermissionPrompt = NSLocalizedString( "requestCameraPermissionPrompt", tableName: "BraveShared",