From dc8e6295e44567861a38b523ffc5cebb9a47e8f6 Mon Sep 17 00:00:00 2001 From: zhubingwei Date: Tue, 3 Sep 2024 18:51:32 +0800 Subject: [PATCH] fix uiservice jsexception handle Signed-off-by: zhubingwei Change-Id: Ib711c0a693bddf820b04d275fad2449d09577157 --- frameworks/native/ability/native/BUILD.gn | 1 + .../js_ui_service_extension.cpp | 6 ++++++ .../service_extension_context_test.cpp | 2 +- .../ui_service_extension_test/ui_service_extension_test.cpp | 4 ++-- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/frameworks/native/ability/native/BUILD.gn b/frameworks/native/ability/native/BUILD.gn index 25827bd6f0..9b1647fe0d 100644 --- a/frameworks/native/ability/native/BUILD.gn +++ b/frameworks/native/ability/native/BUILD.gn @@ -931,6 +931,7 @@ ohos_shared_library("ui_service_extension") { "ace_engine:ace_uicontent", "c_utils:utils", "common_event_service:cesfwk_innerkits", + "ets_runtime:libark_jsruntime", "eventhandler:libeventhandler", "hilog:libhilog", "hitrace:hitrace_meter", diff --git a/frameworks/native/ability/native/ui_service_extension_ability/js_ui_service_extension.cpp b/frameworks/native/ability/native/ui_service_extension_ability/js_ui_service_extension.cpp index 7ea3738ad2..7538574039 100644 --- a/frameworks/native/ability/native/ui_service_extension_ability/js_ui_service_extension.cpp +++ b/frameworks/native/ability/native/ui_service_extension_ability/js_ui_service_extension.cpp @@ -534,7 +534,13 @@ napi_value JsUIServiceExtension::CallObjectMethod(const char* name, napi_value c } TAG_LOGD(AAFwkTag::UISERVC_EXT, "CallFunction(%{public}s) ok", name); napi_value result = nullptr; + + TryCatch tryCatch(env); napi_call_function(env, obj, method, argc, argv, &result); + if (tryCatch.HasCaught()) { + TAG_LOGE(AAFwkTag::UISERVC_EXT, "HandleUncaughtException"); + reinterpret_cast(env)->HandleUncaughtException(); + } return result; } diff --git a/test/unittest/service_extension_context_test/service_extension_context_test.cpp b/test/unittest/service_extension_context_test/service_extension_context_test.cpp index ef8eb3791f..ddca32e21f 100644 --- a/test/unittest/service_extension_context_test/service_extension_context_test.cpp +++ b/test/unittest/service_extension_context_test/service_extension_context_test.cpp @@ -454,7 +454,7 @@ HWTEST_F(ServiceExtensionContextTest, service_extension_context_StartUIServiceEx int32_t accountId = 1; StartOptions startOptions; ErrCode result = serviceExtensionContextTest.StartUIServiceExtensionAbility(want, accountId); - EXPECT_EQ(CHECK_PERMISSION_FAILED, result); + EXPECT_NE(ERR_OK, result); } /** diff --git a/test/unittest/ui_service_extension_test/ui_service_extension_test.cpp b/test/unittest/ui_service_extension_test/ui_service_extension_test.cpp index a54851967b..7d7418d6c5 100644 --- a/test/unittest/ui_service_extension_test/ui_service_extension_test.cpp +++ b/test/unittest/ui_service_extension_test/ui_service_extension_test.cpp @@ -338,7 +338,7 @@ HWTEST_F(UIServiceExtensionTest, GetWindowOption_0200, TestSize.Level1) extensionWindowConfig->windowAttribute = Rosen::ExtensionWindowAttribute::SUB_WINDOW; extensionWindowConfig->subWindowOptions.isModal = false; extensionWindowConfig->subWindowOptions.isTopmost = true; - int32_t hostWindowId{0}; + int32_t hostWindowId{100}; Runtime::Options options; auto runtime = Runtime::Create(options); @@ -363,7 +363,7 @@ HWTEST_F(UIServiceExtensionTest, GetWindowOption_0300, TestSize.Level1) extensionWindowConfig->windowAttribute = Rosen::ExtensionWindowAttribute::SUB_WINDOW; extensionWindowConfig->subWindowOptions.isModal = true; extensionWindowConfig->subWindowOptions.isTopmost = false; - int32_t hostWindowId{0}; + int32_t hostWindowId{100}; Runtime::Options options; auto runtime = Runtime::Create(options);