@@ -7,6 +7,13 @@ import WebEngine
77import WebKit
88@testable import Client
99
10+ // TODO: FXIOS-14534 - Add JavascriptPanel test in responder if WKFrameIngo limitation can be bypass
11+ // The following WKUIDelegate methods cannot be unit tested due to WKFrameInfo:
12+ // Technical reason: WKFrameInfo crashes during deallocation in tests, even when mocked.
13+ // This is a WebKit limitation that cannot be worked around.
14+ // - BrowserWebUIDelegate is a simple forwarding/routing layer with no business logic
15+ // so unit test makes more sense to live in actual implementation like (engineResponder/legacyResponder)
16+
1017@MainActor
1118final class BrowserWebUIDelegateTests : XCTestCase {
1219 private var mockLegacyResponder : MockLegacyResponder !
@@ -50,38 +57,6 @@ final class BrowserWebUIDelegateTests: XCTestCase {
5057 XCTAssertEqual ( mockLegacyResponder. createWebViewCalled, 0 )
5158 }
5259
53- func testRunJavascriptAlertPanel_respondsToBrowserViewController( ) {
54- let subject = createSubject ( )
55-
56- subject. webView ( webView, runJavaScriptAlertPanelWithMessage: " " , initiatedByFrame: . init( ) ) { }
57-
58- XCTAssertEqual ( engineResponder. runJavaScriptAlertPanelCalled, 0 )
59- XCTAssertEqual ( mockLegacyResponder. runJavaScriptAlertPanelCalled, 1 )
60- }
61-
62- func testRunJavascriptConfirmPanel_respondsToBrowserViewController( ) {
63- let subject = createSubject ( )
64-
65- subject. webView ( webView, runJavaScriptConfirmPanelWithMessage: " " , initiatedByFrame: . init( ) ) { _ in }
66-
67- XCTAssertEqual ( engineResponder. runJavaScriptConfirmPanelCalled, 0 )
68- XCTAssertEqual ( mockLegacyResponder. runJavaScriptConfirmPanelCalled, 1 )
69- }
70-
71- func testRunJavascriptTextInputPanel_respondsToBrowserViewController( ) {
72- let subject = createSubject ( )
73-
74- subject. webView (
75- webView,
76- runJavaScriptTextInputPanelWithPrompt: " " ,
77- defaultText: nil ,
78- initiatedByFrame: . init( )
79- ) { _ in }
80-
81- XCTAssertEqual ( engineResponder. runJavaScriptTextInputPanelCalled, 0 )
82- XCTAssertEqual ( mockLegacyResponder. runJavaScriptTextInputPanelCalled, 1 )
83- }
84-
8560 func testWebViewDidClose_respondsToBrowserViewController( ) {
8661 let subject = createSubject ( )
8762
@@ -91,20 +66,6 @@ final class BrowserWebUIDelegateTests: XCTestCase {
9166 XCTAssertEqual ( mockLegacyResponder. webViewDidCloseCalled, 1 )
9267 }
9368
94- func testRequestMediaCapturePermission_respondsToBrowserViewController( ) {
95- let subject = createSubject ( )
96-
97- subject. webView (
98- webView,
99- requestMediaCapturePermissionFor: WKSecurityOriginMock . new ( URL ( string: " https://www.example.com " ) ) ,
100- initiatedByFrame: . init( ) ,
101- type: . camera
102- ) { _ in }
103-
104- XCTAssertEqual ( engineResponder. requestMediaCapturePermissionCalled, 0 )
105- XCTAssertEqual ( mockLegacyResponder. requestMediaCapturePermissionCalled, 1 )
106- }
107-
10869 private func createSubject( ) -> BrowserWebUIDelegate {
10970 let subject = BrowserWebUIDelegate ( engineResponder: engineResponder, legacyResponder: mockLegacyResponder)
11071 trackForMemoryLeaks ( subject)
0 commit comments