Skip to content

Commit 00f3059

Browse files
authored
Merge pull request #11 from ridi/feature/revert-on-background-callback
JS 콜백을 백그라운드에서 이뤄지도록 수정한 부분을 롤백
2 parents 19f5b43 + 90e1809 commit 00f3059

File tree

1 file changed

+79
-83
lines changed

1 file changed

+79
-83
lines changed

Sources/WKJavaScriptController/WKJavaScriptController.swift

Lines changed: 79 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -486,91 +486,87 @@ extension WKJavaScriptController: WKScriptMessageHandler {
486486
}
487487

488488
let imp = method_getImplementation(method)
489-
DispatchQueue.global().async {
490-
var result: Result!
491-
switch bridge.argumentCount {
492-
case 0:
493-
if bridge.isReturnRequired {
494-
result = unsafeBitCast(imp, to: XInvocation0.self)(target, bridge.nativeSelector)
495-
} else {
496-
unsafeBitCast(imp, to: Invocation0.self)(target, bridge.nativeSelector)
497-
}
498-
case 1:
499-
if bridge.isReturnRequired {
500-
result = unsafeBitCast(imp, to: XInvocation1.self)(target, bridge.nativeSelector, self.cast(args[0]))
501-
} else {
502-
unsafeBitCast(imp, to: Invocation1.self)(target, bridge.nativeSelector, self.cast(args[0]))
503-
}
504-
case 2:
505-
if bridge.isReturnRequired {
506-
result = unsafeBitCast(imp, to: XInvocation2.self)(target, bridge.nativeSelector, self.cast(args[0]), self.cast(args[1]))
507-
} else {
508-
unsafeBitCast(imp, to: Invocation2.self)(target, bridge.nativeSelector, self.cast(args[0]), self.cast(args[1]))
509-
}
510-
case 3:
511-
if bridge.isReturnRequired {
512-
result = unsafeBitCast(imp, to: XInvocation3.self)(target, bridge.nativeSelector, self.cast(args[0]), self.cast(args[1]), self.cast(args[2]))
513-
} else {
514-
unsafeBitCast(imp, to: Invocation3.self)(target, bridge.nativeSelector, self.cast(args[0]), self.cast(args[1]), self.cast(args[2]))
515-
}
516-
case 4:
517-
if bridge.isReturnRequired {
518-
result = unsafeBitCast(imp, to: XInvocation4.self)(target, bridge.nativeSelector, self.cast(args[0]), self.cast(args[1]), self.cast(args[2]), self.cast(args[3]))
519-
} else {
520-
unsafeBitCast(imp, to: Invocation4.self)(target, bridge.nativeSelector, self.cast(args[0]), self.cast(args[1]), self.cast(args[2]), self.cast(args[3]))
521-
}
522-
case 5:
523-
if bridge.isReturnRequired {
524-
result = unsafeBitCast(imp, to: XInvocation5.self)(target, bridge.nativeSelector, self.cast(args[0]), self.cast(args[1]), self.cast(args[2]), self.cast(args[3]), self.cast(args[4]))
525-
} else {
526-
unsafeBitCast(imp, to: Invocation5.self)(target, bridge.nativeSelector, self.cast(args[0]), self.cast(args[1]), self.cast(args[2]), self.cast(args[3]), self.cast(args[4]))
527-
}
528-
case 6:
529-
if bridge.isReturnRequired {
530-
result = unsafeBitCast(imp, to: XInvocation6.self)(target, bridge.nativeSelector, self.cast(args[0]), self.cast(args[1]), self.cast(args[2]), self.cast(args[3]), self.cast(args[4]), self.cast(args[5]))
531-
} else {
532-
unsafeBitCast(imp, to: Invocation6.self)(target, bridge.nativeSelector, self.cast(args[0]), self.cast(args[1]), self.cast(args[2]), self.cast(args[3]), self.cast(args[4]), self.cast(args[5]))
533-
}
534-
case 7:
535-
if bridge.isReturnRequired {
536-
result = unsafeBitCast(imp, to: XInvocation7.self)(target, bridge.nativeSelector, self.cast(args[0]), self.cast(args[1]), self.cast(args[2]), self.cast(args[3]), self.cast(args[4]), self.cast(args[5]), self.cast(args[6]))
537-
} else {
538-
unsafeBitCast(imp, to: Invocation7.self)(target, bridge.nativeSelector, self.cast(args[0]), self.cast(args[1]), self.cast(args[2]), self.cast(args[3]), self.cast(args[4]), self.cast(args[5]), self.cast(args[6]))
539-
}
540-
case 8:
541-
if bridge.isReturnRequired {
542-
result = unsafeBitCast(imp, to: XInvocation8.self)(target, bridge.nativeSelector, self.cast(args[0]), self.cast(args[1]), self.cast(args[2]), self.cast(args[3]), self.cast(args[4]), self.cast(args[5]), self.cast(args[6]), self.cast(args[7]))
543-
} else {
544-
unsafeBitCast(imp, to: Invocation8.self)(target, bridge.nativeSelector, self.cast(args[0]), self.cast(args[1]), self.cast(args[2]), self.cast(args[3]), self.cast(args[4]), self.cast(args[5]), self.cast(args[6]), self.cast(args[7]))
545-
}
546-
case 9:
547-
if bridge.isReturnRequired {
548-
result = unsafeBitCast(imp, to: XInvocation9.self)(target, bridge.nativeSelector, self.cast(args[0]), self.cast(args[1]), self.cast(args[2]), self.cast(args[3]), self.cast(args[4]), self.cast(args[5]), self.cast(args[6]), self.cast(args[7]), self.cast(args[8]))
549-
} else {
550-
unsafeBitCast(imp, to: Invocation9.self)(target, bridge.nativeSelector, self.cast(args[0]), self.cast(args[1]), self.cast(args[2]), self.cast(args[3]), self.cast(args[4]), self.cast(args[5]), self.cast(args[6]), self.cast(args[7]), self.cast(args[8]))
551-
}
552-
case argumentCountLimit:
553-
if bridge.isReturnRequired {
554-
result = unsafeBitCast(imp, to: XInvocation10.self)(target, bridge.nativeSelector, self.cast(args[0]), self.cast(args[1]), self.cast(args[2]), self.cast(args[3]), self.cast(args[4]), self.cast(args[5]), self.cast(args[6]), self.cast(args[7]), self.cast(args[8]), self.cast(args[9]))
555-
} else {
556-
unsafeBitCast(imp, to: Invocation10.self)(target, bridge.nativeSelector, self.cast(args[0]), self.cast(args[1]), self.cast(args[2]), self.cast(args[3]), self.cast(args[4]), self.cast(args[5]), self.cast(args[6]), self.cast(args[7]), self.cast(args[8]), self.cast(args[9]))
557-
}
558-
default:
559-
// Not called.
560-
break
489+
var result: Result!
490+
switch bridge.argumentCount {
491+
case 0:
492+
if bridge.isReturnRequired {
493+
result = unsafeBitCast(imp, to: XInvocation0.self)(target, bridge.nativeSelector)
494+
} else {
495+
unsafeBitCast(imp, to: Invocation0.self)(target, bridge.nativeSelector)
561496
}
562-
563-
DispatchQueue.main.async {
564-
let script = """
565-
(() => {
566-
const callback = \(self.name).\(ReserveKeyword.callbackList)['\(callbackId)'];
567-
callback.end = new Date();
568-
callback.resolve(\(bridge.isReturnRequired ? self.stringFrom(result) : ""));
569-
clearTimeout(callback.timer);
570-
})();
571-
"""
572-
self.webView?.evaluateJavaScript(script, completionHandler: nil)
497+
case 1:
498+
if bridge.isReturnRequired {
499+
result = unsafeBitCast(imp, to: XInvocation1.self)(target, bridge.nativeSelector, cast(args[0]))
500+
} else {
501+
unsafeBitCast(imp, to: Invocation1.self)(target, bridge.nativeSelector, cast(args[0]))
502+
}
503+
case 2:
504+
if bridge.isReturnRequired {
505+
result = unsafeBitCast(imp, to: XInvocation2.self)(target, bridge.nativeSelector, cast(args[0]), cast(args[1]))
506+
} else {
507+
unsafeBitCast(imp, to: Invocation2.self)(target, bridge.nativeSelector, cast(args[0]), cast(args[1]))
508+
}
509+
case 3:
510+
if bridge.isReturnRequired {
511+
result = unsafeBitCast(imp, to: XInvocation3.self)(target, bridge.nativeSelector, cast(args[0]), cast(args[1]), cast(args[2]))
512+
} else {
513+
unsafeBitCast(imp, to: Invocation3.self)(target, bridge.nativeSelector, cast(args[0]), cast(args[1]), cast(args[2]))
514+
}
515+
case 4:
516+
if bridge.isReturnRequired {
517+
result = unsafeBitCast(imp, to: XInvocation4.self)(target, bridge.nativeSelector, cast(args[0]), cast(args[1]), cast(args[2]), cast(args[3]))
518+
} else {
519+
unsafeBitCast(imp, to: Invocation4.self)(target, bridge.nativeSelector, cast(args[0]), cast(args[1]), cast(args[2]), cast(args[3]))
520+
}
521+
case 5:
522+
if bridge.isReturnRequired {
523+
result = unsafeBitCast(imp, to: XInvocation5.self)(target, bridge.nativeSelector, cast(args[0]), cast(args[1]), cast(args[2]), cast(args[3]), cast(args[4]))
524+
} else {
525+
unsafeBitCast(imp, to: Invocation5.self)(target, bridge.nativeSelector, cast(args[0]), cast(args[1]), cast(args[2]), cast(args[3]), cast(args[4]))
526+
}
527+
case 6:
528+
if bridge.isReturnRequired {
529+
result = unsafeBitCast(imp, to: XInvocation6.self)(target, bridge.nativeSelector, cast(args[0]), cast(args[1]), cast(args[2]), cast(args[3]), cast(args[4]), cast(args[5]))
530+
} else {
531+
unsafeBitCast(imp, to: Invocation6.self)(target, bridge.nativeSelector, cast(args[0]), cast(args[1]), cast(args[2]), cast(args[3]), cast(args[4]), cast(args[5]))
532+
}
533+
case 7:
534+
if bridge.isReturnRequired {
535+
result = unsafeBitCast(imp, to: XInvocation7.self)(target, bridge.nativeSelector, cast(args[0]), cast(args[1]), cast(args[2]), cast(args[3]), cast(args[4]), cast(args[5]), cast(args[6]))
536+
} else {
537+
unsafeBitCast(imp, to: Invocation7.self)(target, bridge.nativeSelector, cast(args[0]), cast(args[1]), cast(args[2]), cast(args[3]), cast(args[4]), cast(args[5]), cast(args[6]))
573538
}
539+
case 8:
540+
if bridge.isReturnRequired {
541+
result = unsafeBitCast(imp, to: XInvocation8.self)(target, bridge.nativeSelector, cast(args[0]), cast(args[1]), cast(args[2]), cast(args[3]), cast(args[4]), cast(args[5]), cast(args[6]), cast(args[7]))
542+
} else {
543+
unsafeBitCast(imp, to: Invocation8.self)(target, bridge.nativeSelector, cast(args[0]), cast(args[1]), cast(args[2]), cast(args[3]), cast(args[4]), cast(args[5]), cast(args[6]), cast(args[7]))
544+
}
545+
case 9:
546+
if bridge.isReturnRequired {
547+
result = unsafeBitCast(imp, to: XInvocation9.self)(target, bridge.nativeSelector, cast(args[0]), cast(args[1]), cast(args[2]), cast(args[3]), cast(args[4]), cast(args[5]), cast(args[6]), cast(args[7]), cast(args[8]))
548+
} else {
549+
unsafeBitCast(imp, to: Invocation9.self)(target, bridge.nativeSelector, cast(args[0]), cast(args[1]), cast(args[2]), cast(args[3]), cast(args[4]), cast(args[5]), cast(args[6]), cast(args[7]), cast(args[8]))
550+
}
551+
case argumentCountLimit:
552+
if bridge.isReturnRequired {
553+
result = unsafeBitCast(imp, to: XInvocation10.self)(target, bridge.nativeSelector, cast(args[0]), cast(args[1]), cast(args[2]), cast(args[3]), cast(args[4]), cast(args[5]), cast(args[6]), cast(args[7]), cast(args[8]), cast(args[9]))
554+
} else {
555+
unsafeBitCast(imp, to: Invocation10.self)(target, bridge.nativeSelector, cast(args[0]), cast(args[1]), cast(args[2]), cast(args[3]), cast(args[4]), cast(args[5]), cast(args[6]), cast(args[7]), cast(args[8]), cast(args[9]))
556+
}
557+
default:
558+
// Not called.
559+
break
574560
}
561+
562+
let script = """
563+
(() => {
564+
const callback = \(name).\(ReserveKeyword.callbackList)['\(callbackId)'];
565+
callback.end = new Date();
566+
callback.resolve(\(bridge.isReturnRequired ? stringFrom(result) : ""));
567+
clearTimeout(callback.timer);
568+
})();
569+
"""
570+
webView?.evaluateJavaScript(script, completionHandler: nil)
575571
}
576572
}

0 commit comments

Comments
 (0)