in Sources/Instrumentation/WKWebView/WKWebViewDelegate.swift [116:153]
func handleSyncCallWithPrompt(webView: WKWebView, prompt: String, defaultText: String?, completionHandler: @escaping (String?) -> Void) -> Bool {
if prompt != "OTelJSBridge" {
return false
}
guard let defaultText = defaultText else {
completionHandler(nil)
return false
}
guard let jsonData = defaultText.data(using: .utf8), let body = try? JSONSerialization.jsonObject(with: jsonData) as? [String: Any] else {
completionHandler(nil)
return false
}
let bridgeMessage = JSBridgeMessageModule(dictionary: body) { response in
guard let response = response, response.count > 0 else {
completionHandler(nil)
return
}
guard let data = try? JSONSerialization.data(withJSONObject: response) else {
completionHandler(nil)
return
}
guard let jsonString = String.init(data: data, encoding: .utf8) else {
completionHandler(nil)
return
}
completionHandler(jsonString)
}
WKWebViewInstrumentation.dispatchCallbackMessage(webView: webView, message: bridgeMessage)
return true
}