From 0acac7ff0e93b1e4fe9705d75dba00a9ab3995c7 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 30 Jan 2026 21:03:37 +0000 Subject: [PATCH 1/2] fix: Native iOS inserter inserts media The `MediaFileSchemeHandler` was defined but not registered with the `WKWebView` configuration, causing media insertion from the native iOS block inserter to fail. Selected photos and videos from the device's photo library were not displaying in the editor because the WebView couldn't load `gbk-media-file://` URLs. This fix adds the missing scheme handler registration in `EditorViewController.init()`, restoring functionality that was accidentally removed in commit 6486090. --- ios/Sources/GutenbergKit/Sources/EditorViewController.swift | 3 +++ 1 file changed, 3 insertions(+) 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) From 76c0546241ab7117581c3bce68465a759c8fb04b Mon Sep 17 00:00:00 2001 From: David Calhoun Date: Fri, 30 Jan 2026 16:36:44 -0500 Subject: [PATCH 2/2] test: Assert MediaFileSchemeHandler registration --- ...iaFileSchemeHandlerRegistrationTests.swift | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 ios/Tests/GutenbergKitTests/Media/MediaFileSchemeHandlerRegistrationTests.swift 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