diff --git a/interfaces/kits/ani/webview/ets/@ohos.web.webview.ets b/interfaces/kits/ani/webview/ets/@ohos.web.webview.ets index 291a41bdd0da56e2c54c730a3ea9dc9b9c2abc4c..2a280a81e961cd38d8d9d95c0ab1c980083e0dcb 100644 --- a/interfaces/kits/ani/webview/ets/@ohos.web.webview.ets +++ b/interfaces/kits/ani/webview/ets/@ohos.web.webview.ets @@ -772,6 +772,60 @@ export default namespace webview { } native getCertificateSync(): Array; + getCertificate(): Promise> { + let certChainData = this.getCertificateSync(); + return new Promise>((resolve, reject) => { + let taskPromise = taskpool.execute(():undefined => { + return undefined}); + taskPromise.then(async (results: NullishType) => { + const certs: Array = []; + for (let i = 0; i < certChainData.length; i++) { + let certsUint8Array = new Uint8Array(certChainData[i]); + const encodingBlob: cert.EncodingBlob = { + data: certsUint8Array, + encodingFormat: cert.EncodingFormat.FORMAT_DER + }; + try { + const x509Cert = await cert.createX509Cert(encodingBlob); + certs.push(x509Cert); + } catch (e) { + console.error("Failed to parse certificate", e); + } + } + resolve(certs); + }) + .catch((error: Error) => { + reject(error); + }); + }); + } + getCertificate(callback: AsyncCallback>): void { + let certChainData = this.getCertificateSync(); + let p = taskpool.execute(():undefined => { + return undefined}); + p.then((results : NullishType) => { + const certs: Array = []; + for (let i = 0; i < certChainData.length; i++) { + let certsUint8Array = new Uint8Array(certChainData[i]); + const encodingBlob: cert.EncodingBlob = { + data: new Uint8Array (certChainData[i]), + encodingFormat: cert.EncodingFormat.FORMAT_DER + }; + try { + const x509Cert = await cert.createX509Cert(encodingBlob); + certs.push(x509Cert); + } catch (e) { + console.error("Failed to parse certificate", e); + } + } + let error = new BusinessError(); + callback(error, certs); + }).catch((error: Error) => { + let err = error as BusinessError; + let data = new Array; + callback(err, data); + }); + } } export class WebSchemeHandlerResponse { diff --git a/interfaces/kits/ani/webview/src/webviewcontroller/ani_native_media_player_handler.cpp b/interfaces/kits/ani/webview/src/webviewcontroller/ani_native_media_player_handler.cpp index c15cfec626764c38ed14353507373652b0146267..de034898cbcc3d8897b68cc915243232b2fd3533 100644 --- a/interfaces/kits/ani/webview/src/webviewcontroller/ani_native_media_player_handler.cpp +++ b/interfaces/kits/ani/webview/src/webviewcontroller/ani_native_media_player_handler.cpp @@ -28,7 +28,7 @@ #include "securec.h" #include "web_errors.h" #include "interop_js/arkts_esvalue.h" -// #include "interop_js/arkts_interop_js_api.h" +#include "interop_js/arkts_interop_js_api.h" namespace OHOS { namespace NWeb { @@ -610,10 +610,10 @@ static ani_boolean TransferNativeMediaPlayerHandlerToStaticInner(ani_env* env, a } void* nativePtr = nullptr; - // if (!arkts_esvalue_unwrap(env, input, &nativePtr) || nativePtr == nullptr) { - // WVLOG_E("[TRANSFER] arkts_esvalue_unwrap failed"); - // return ANI_FALSE; - // } + if (!arkts_esvalue_unwrap(env, input, &nativePtr) || nativePtr == nullptr) { + WVLOG_E("[TRANSFER] arkts_esvalue_unwrap failed"); + return ANI_FALSE; + } NapiNativeMediaPlayerHandlerImpl *handler = reinterpret_cast(nativePtr); diff --git a/interfaces/kits/ani/webview/src/webviewcontroller/ani_webview_controller.cpp b/interfaces/kits/ani/webview/src/webviewcontroller/ani_webview_controller.cpp index 5513b8cd584f7f16dc523adb53b3f299c9df0a29..610cb1a4381bd44833456cdb176c1325b52b4d81 100644 --- a/interfaces/kits/ani/webview/src/webviewcontroller/ani_webview_controller.cpp +++ b/interfaces/kits/ani/webview/src/webviewcontroller/ani_webview_controller.cpp @@ -49,7 +49,7 @@ #include "web_history_list.h" #include "web_message_port.h" #include "interop_js/arkts_esvalue.h" -// #include "interop_js/arkts_interop_js_api.h" +#include "interop_js/arkts_interop_js_api.h" #include "nweb_precompile_callback.h" #include "nweb_cache_options_impl.h" @@ -2233,10 +2233,10 @@ static ani_boolean TransferBackForwardListToStaticInner( } void* nativePtr = nullptr; - // if (!arkts_esvalue_unwrap(env, input, &nativePtr) || !nativePtr) { - // WVLOG_E("[TRANSFER] arkts_esvalue_unwrap failed"); - // return ANI_FALSE; - // } + if (!arkts_esvalue_unwrap(env, input, &nativePtr) || !nativePtr) { + WVLOG_E("[TRANSFER] arkts_esvalue_unwrap failed"); + return ANI_FALSE; + } WebHistoryList *webHistoryList = reinterpret_cast(nativePtr); if (!AniParseUtils::Wrap(env, output, ANI_BACK_FORWARD_LIST_INNER_CLASS_NAME, @@ -2300,10 +2300,10 @@ static ani_boolean TransferWebMessagePortToStaticInner(ani_env* env, ani_class a } void* nativePtr = nullptr; - // if (!arkts_esvalue_unwrap(env, input, &nativePtr) || !nativePtr) { - // WVLOG_E("[TRANSFER] arkts_esvalue_unwrap failed"); - // return ANI_FALSE; - // } + if (!arkts_esvalue_unwrap(env, input, &nativePtr) || !nativePtr) { + WVLOG_E("[TRANSFER] arkts_esvalue_unwrap failed"); + return ANI_FALSE; + } WebMessagePort* msgPort = reinterpret_cast(nativePtr); if (!AniParseUtils::Wrap(env, output, ANI_WEB_MESSAGE_PORT_INNER_CLASS_NAME,