From 482f803a793bfcc0e780f148bae49c7775d7d194 Mon Sep 17 00:00:00 2001 From: zhushengle Date: Fri, 12 Sep 2025 01:25:39 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8DArkTS1.2=E5=A4=96?= =?UTF-8?q?=E9=83=A8=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhushengle Change-Id: Ifb1d22c21fe64db984d724a4721804b22c7805dd --- .../ani/webview/ets/@ohos.web.webview.ets | 54 +++++++++++++++++++ .../ani_native_media_player_handler.cpp | 10 ++-- .../ani_webview_controller.cpp | 18 +++---- 3 files changed, 68 insertions(+), 14 deletions(-) diff --git a/interfaces/kits/ani/webview/ets/@ohos.web.webview.ets b/interfaces/kits/ani/webview/ets/@ohos.web.webview.ets index 291a41bdd..2a280a81e 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 c15cfec62..de034898c 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 5513b8cd5..610cb1a43 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, -- Gitee