diff --git a/ios/Sources/GutenbergKit/Sources/EditorViewController.swift b/ios/Sources/GutenbergKit/Sources/EditorViewController.swift index c729f45b..a86f9002 100644 --- a/ios/Sources/GutenbergKit/Sources/EditorViewController.swift +++ b/ios/Sources/GutenbergKit/Sources/EditorViewController.swift @@ -189,6 +189,9 @@ public final class EditorViewController: UIViewController, GutenbergEditorContro self.bundleProvider.bind(to: config) + // Register media file scheme handler for serving local media via gbk-media-file:// URLs + config.setURLSchemeHandler(MediaFileSchemeHandler(), forURLScheme: MediaFileSchemeHandler.scheme) + config.applicationNameForUserAgent = "GutenbergKit/\(GutenbergKitVersion.version)" self.webView = GBWebView(frame: .zero, configuration: config) diff --git a/ios/Tests/GutenbergKitTests/Media/MediaFileSchemeHandlerRegistrationTests.swift b/ios/Tests/GutenbergKitTests/Media/MediaFileSchemeHandlerRegistrationTests.swift new file mode 100644 index 00000000..ad438da5 --- /dev/null +++ b/ios/Tests/GutenbergKitTests/Media/MediaFileSchemeHandlerRegistrationTests.swift @@ -0,0 +1,25 @@ +import Foundation +import Testing +import WebKit + +@testable import GutenbergKit + +#if canImport(UIKit) + +@Suite("MediaFileSchemeHandler Registration") +struct MediaFileSchemeHandlerRegistrationTests: MakesTestFixtures { + static let testSiteURL = URL(string: "https://test.example.com")! + static let testApiRoot = URL(string: "https://test.example.com/wp-json/wp/v2")! + + @MainActor + @Test("EditorViewController registers MediaFileSchemeHandler for gbk-media-file scheme") + func editorViewControllerRegistersSchemeHandler() throws { + let configuration = makeConfiguration() + let editorVC = EditorViewController(configuration: configuration) + + let handler = editorVC.webView.configuration.urlSchemeHandler(forURLScheme: MediaFileSchemeHandler.scheme) + #expect(handler != nil, "MediaFileSchemeHandler should be registered for \(MediaFileSchemeHandler.scheme) scheme") + } +} + +#endif