From 77e0446c0e74646bb9032812377132cb650f8e84 Mon Sep 17 00:00:00 2001 From: Mupceet Date: Fri, 24 Jun 2022 17:32:53 +0800 Subject: [PATCH] =?UTF-8?q?nothrow=E5=AF=B9=E5=BA=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mupceet --- .../src/accessible_ability_channel_client.cpp | 35 ++++- .../src/accessible_ability_client_impl.cpp | 9 +- ...cessibility_system_ability_client_impl.cpp | 16 ++- .../src/napi_accessibility_config.cpp | 14 +- .../src/native_module.cpp | 120 +++++++++++++----- .../accessibility_extension_module_loader.cpp | 4 +- .../src/napi_accessibility_element.cpp | 40 ++++-- .../src/napi_accessibility_extension.cpp | 64 ++++++++-- .../napi_accessibility_extension_context.cpp | 26 +++- .../napi_accessibility_config_observer.cpp | 108 ++++++++++++---- ...pi_accessibility_system_ability_client.cpp | 53 ++++++-- .../aams/src/accessibility_touch_guider.cpp | 12 +- .../accessibility_element_operator_stub.cpp | 15 +-- .../src/accessible_ability_channel_proxy.cpp | 9 +- .../src/accessible_ability_channel_stub.cpp | 18 ++- ...ccessible_ability_manager_service_stub.cpp | 15 ++- .../accessibility_ability_info_parcel.cpp | 6 +- .../parcel/accessibility_caption_parcel.cpp | 6 +- .../accessibility_element_info_parcel.cpp | 36 +++++- .../accessibility_event_info_parcel.cpp | 6 +- ...cessibility_gesture_inject_path_parcel.cpp | 6 +- .../accessibility_window_info_parcel.cpp | 6 +- 22 files changed, 489 insertions(+), 135 deletions(-) diff --git a/frameworks/aafwk/src/accessible_ability_channel_client.cpp b/frameworks/aafwk/src/accessible_ability_channel_client.cpp index 385a7fcc..edd0d294 100644 --- a/frameworks/aafwk/src/accessible_ability_channel_client.cpp +++ b/frameworks/aafwk/src/accessible_ability_channel_client.cpp @@ -60,7 +60,12 @@ bool AccessibleAbilityChannelClient::FindFocusedElementInfo(int32_t accessibilit } int32_t requestId = GenrateRequestId(); - sptr elementOperator = new AccessibilityElementOperatorCallbackImpl(); + sptr elementOperator = + new(std::nothrow) AccessibilityElementOperatorCallbackImpl(); + if (!elementOperator) { + HILOG_ERROR("Failed to create elementOperator."); + return false; + } std::future promiseFutrue = elementOperator->promise_.get_future(); if (!proxy_->FindFocusedElementInfo(accessibilityWindowId, elementId, focusType, requestId, elementOperator)) { @@ -110,7 +115,12 @@ bool AccessibleAbilityChannelClient::ExecuteAction(int32_t accessibilityWindowId } int32_t requestId = GenrateRequestId(); - sptr elementOperator = new AccessibilityElementOperatorCallbackImpl(); + sptr elementOperator = + new(std::nothrow) AccessibilityElementOperatorCallbackImpl(); + if (!elementOperator) { + HILOG_ERROR("Failed to create elementOperator."); + return false; + } std::future promiseFutrue = elementOperator->promise_.get_future(); if (!proxy_->ExecuteAction(accessibilityWindowId, elementId, action, actionArguments, requestId, elementOperator)) { @@ -137,7 +147,12 @@ bool AccessibleAbilityChannelClient::SearchElementInfosByAccessibilityId(int32_t } int32_t requestId = GenrateRequestId(); - sptr elementOperator = new AccessibilityElementOperatorCallbackImpl(); + sptr elementOperator = + new(std::nothrow) AccessibilityElementOperatorCallbackImpl(); + if (!elementOperator) { + HILOG_ERROR("Failed to create elementOperator."); + return false; + } std::future promiseFutrue = elementOperator->promise_.get_future(); if (!proxy_->SearchElementInfoByAccessibilityId(accessibilityWindowId, elementId, requestId, @@ -215,7 +230,12 @@ bool AccessibleAbilityChannelClient::SearchElementInfosByText(int32_t accessibil } int32_t requestId = GenrateRequestId(); - sptr elementOperator = new AccessibilityElementOperatorCallbackImpl(); + sptr elementOperator = + new(std::nothrow) AccessibilityElementOperatorCallbackImpl(); + if (!elementOperator) { + HILOG_ERROR("Failed to create elementOperator."); + return false; + } std::future promiseFutrue = elementOperator->promise_.get_future(); if (!proxy_->SearchElementInfosByText(accessibilityWindowId, elementId, text, requestId, elementOperator)) { @@ -250,7 +270,12 @@ bool AccessibleAbilityChannelClient::FocusMoveSearch(int32_t accessibilityWindow } int32_t requestId = GenrateRequestId(); - sptr elementOperator = new AccessibilityElementOperatorCallbackImpl(); + sptr elementOperator = + new(std::nothrow) AccessibilityElementOperatorCallbackImpl(); + if (!elementOperator) { + HILOG_ERROR("Failed to create elementOperator."); + return false; + } std::future promiseFutrue = elementOperator->promise_.get_future(); if (!proxy_->FocusMoveSearch(accessibilityWindowId, elementId, direction, requestId, elementOperator)) { diff --git a/frameworks/aafwk/src/accessible_ability_client_impl.cpp b/frameworks/aafwk/src/accessible_ability_client_impl.cpp index cbe22ff8..ac399775 100644 --- a/frameworks/aafwk/src/accessible_ability_client_impl.cpp +++ b/frameworks/aafwk/src/accessible_ability_client_impl.cpp @@ -34,7 +34,7 @@ sptr AccessibleAbilityClient::GetInstance() HILOG_DEBUG(); std::lock_guard lock(g_Mutex); if (!g_Instance) { - g_Instance = new AccessibleAbilityClientImpl(); + g_Instance = new(std::nothrow) AccessibleAbilityClientImpl(); } return g_Instance; } @@ -103,7 +103,12 @@ void AccessibleAbilityClientImpl::Init(const sptr &ch // Add death recipient if (!deathRecipient_) { - deathRecipient_ = new AccessibleAbilityDeathRecipient(*this); + deathRecipient_ = new(std::nothrow) AccessibleAbilityDeathRecipient(*this); + } + + if (!deathRecipient_) { + HILOG_ERROR("Failed to create deathRecipient."); + return; } auto object = channelClient_->GetRemote(); diff --git a/frameworks/asacfwk/src/accessibility_system_ability_client_impl.cpp b/frameworks/asacfwk/src/accessibility_system_ability_client_impl.cpp index d68b4cb3..3095b953 100644 --- a/frameworks/asacfwk/src/accessibility_system_ability_client_impl.cpp +++ b/frameworks/asacfwk/src/accessibility_system_ability_client_impl.cpp @@ -70,8 +70,10 @@ bool AccessibilitySystemAbilityClientImpl::ConnectToService() return false; } + deathRecipient_ = new(std::nothrow) DeathRecipient(*this); if (!deathRecipient_) { - deathRecipient_ = new DeathRecipient(*this); + HILOG_ERROR("Failed to create deathRecipient."); + return false; } if ((object->IsProxyObject()) && (!object->AddDeathRecipient(deathRecipient_))) { @@ -92,7 +94,11 @@ void AccessibilitySystemAbilityClientImpl::Init() { HILOG_DEBUG(); stateArray_.fill(false); - stateObserver_ = new AccessibleAbilityManagerStateObserverImpl(*this); + stateObserver_ = new(std::nothrow) AccessibleAbilityManagerStateObserverImpl(*this); + if (!stateObserver_) { + HILOG_ERROR("Failed to create stateObserver."); + return; + } uint32_t stateType = serviceProxy_->RegisterStateObserver(stateObserver_); if (stateType & STATE_ACCESSIBILITY_ENABLED) { stateArray_[AccessibilityStateEventType::EVENT_ACCESSIBILITY_STATE_CHANGED] = true; @@ -143,7 +149,11 @@ int32_t AccessibilitySystemAbilityClientImpl::RegisterElementOperator( } sptr aamsInteractionOperator = - new AccessibilityElementOperatorImpl(windowId, operation); + new(std::nothrow) AccessibilityElementOperatorImpl(windowId, operation); + if (!aamsInteractionOperator) { + HILOG_ERROR("Failed to create aamsInteractionOperator."); + return -1; + } interactionOperators_[windowId] = aamsInteractionOperator; serviceProxy_->RegisterElementOperator(windowId, aamsInteractionOperator); diff --git a/interfaces/kits/napi/accessibility_config/src/napi_accessibility_config.cpp b/interfaces/kits/napi/accessibility_config/src/napi_accessibility_config.cpp index d2853716..a4543bdf 100644 --- a/interfaces/kits/napi/accessibility_config/src/napi_accessibility_config.cpp +++ b/interfaces/kits/napi/accessibility_config/src/napi_accessibility_config.cpp @@ -646,13 +646,21 @@ void EnableAbilityListsObserver::OnEnableAbilityListsStateChanged() HILOG_ERROR("callbackInfo is nullptr"); return; } + + uv_work_t *work = new(std::nothrow) uv_work_t; + if (!work) { + HILOG_ERROR("Failed to create work."); + delete callbackInfo; + callbackInfo = nullptr; + return; + } + callbackInfo->env_ = env_; callbackInfo->ref_ = callback_; + work->data = static_cast(callbackInfo); + uv_loop_s *loop = nullptr; napi_get_uv_event_loop(env_, &loop); - uv_work_t *work = new uv_work_t; - work->data = static_cast(callbackInfo); - uv_queue_work( loop, work, diff --git a/interfaces/kits/napi/accessibility_config/src/native_module.cpp b/interfaces/kits/napi/accessibility_config/src/native_module.cpp index f7989cdb..3927911e 100644 --- a/interfaces/kits/napi/accessibility_config/src/native_module.cpp +++ b/interfaces/kits/napi/accessibility_config/src/native_module.cpp @@ -41,8 +41,12 @@ static napi_value InitHighContrastText(napi_env env) NAPI_CALL(env, napi_define_properties(env, highContrastTextValue, sizeof(configDesc) / sizeof(configDesc[0]), configDesc)); - NAccessibilityConfigClass* nativeObj = new NAccessibilityConfigClass( - OHOS::AccessibilityConfig::CONFIG_HIGH_CONTRASTE_TEXT); + NAccessibilityConfigClass* nativeObj = + new(std::nothrow) NAccessibilityConfigClass(OHOS::AccessibilityConfig::CONFIG_HIGH_CONTRASTE_TEXT); + if (!nativeObj) { + HILOG_ERROR("Failed to create nativeObj."); + return nullptr; + } nativeObj->SetEnv(env); NAPI_CALL(env, napi_wrap(env, highContrastTextValue, reinterpret_cast(nativeObj), NAccessibilityConfigClass::Destructor, nullptr, nativeObj->GetWrapper())); @@ -56,8 +60,12 @@ static napi_value InitInvertColor(napi_env env) NAPI_CALL(env, napi_define_properties(env, invertColorValue, sizeof(configDesc) / sizeof(configDesc[0]), configDesc)); - NAccessibilityConfigClass* nativeObj = new NAccessibilityConfigClass( - OHOS::AccessibilityConfig::CONFIG_INVERT_COLOR); + NAccessibilityConfigClass* nativeObj = + new(std::nothrow) NAccessibilityConfigClass(OHOS::AccessibilityConfig::CONFIG_INVERT_COLOR); + if (!nativeObj) { + HILOG_ERROR("Failed to create nativeObj."); + return nullptr; + } nativeObj->SetEnv(env); NAPI_CALL(env, napi_wrap(env, invertColorValue, reinterpret_cast(nativeObj), NAccessibilityConfigClass::Destructor, nullptr, nativeObj->GetWrapper())); @@ -72,8 +80,12 @@ static napi_value InitDaltonizationColorFilter(napi_env env) sizeof(configDesc) / sizeof(configDesc[0]), configDesc)); - NAccessibilityConfigClass* nativeObj = new NAccessibilityConfigClass( - OHOS::AccessibilityConfig::CONFIG_DALTONIZATION_COLOR_FILTER); + NAccessibilityConfigClass* nativeObj = + new(std::nothrow) NAccessibilityConfigClass(OHOS::AccessibilityConfig::CONFIG_DALTONIZATION_COLOR_FILTER); + if (!nativeObj) { + HILOG_ERROR("Failed to create nativeObj."); + return nullptr; + } nativeObj->SetEnv(env); NAPI_CALL(env, napi_wrap(env, daltonizationColorFilterValue, reinterpret_cast(nativeObj), NAccessibilityConfigClass::Destructor, nullptr, nativeObj->GetWrapper())); @@ -87,8 +99,12 @@ static napi_value InitContentTimeout(napi_env env) NAPI_CALL(env, napi_define_properties(env, contentTimeoutValue, sizeof(configDesc) / sizeof(configDesc[0]), configDesc)); - NAccessibilityConfigClass* nativeObj = new NAccessibilityConfigClass( - OHOS::AccessibilityConfig::CONFIG_CONTENT_TIMEOUT); + NAccessibilityConfigClass* nativeObj = + new(std::nothrow) NAccessibilityConfigClass(OHOS::AccessibilityConfig::CONFIG_CONTENT_TIMEOUT); + if (!nativeObj) { + HILOG_ERROR("Failed to create nativeObj."); + return nullptr; + } nativeObj->SetEnv(env); NAPI_CALL(env, napi_wrap(env, contentTimeoutValue, reinterpret_cast(nativeObj), NAccessibilityConfigClass::Destructor, nullptr, nativeObj->GetWrapper())); @@ -102,8 +118,12 @@ static napi_value InitAnimationOff(napi_env env) NAPI_CALL(env, napi_define_properties(env, animationOffValue, sizeof(configDesc) / sizeof(configDesc[0]), configDesc)); - NAccessibilityConfigClass* nativeObj = new NAccessibilityConfigClass( - OHOS::AccessibilityConfig::CONFIG_ANIMATION_OFF); + NAccessibilityConfigClass* nativeObj = + new(std::nothrow) NAccessibilityConfigClass(OHOS::AccessibilityConfig::CONFIG_ANIMATION_OFF); + if (!nativeObj) { + HILOG_ERROR("Failed to create nativeObj."); + return nullptr; + } nativeObj->SetEnv(env); NAPI_CALL(env, napi_wrap(env, animationOffValue, reinterpret_cast(nativeObj), NAccessibilityConfigClass::Destructor, nullptr, nativeObj->GetWrapper())); @@ -117,8 +137,12 @@ static napi_value InitBrightnessDiscount(napi_env env) NAPI_CALL(env, napi_define_properties(env, brightnessDiscountValue, sizeof(configDesc) / sizeof(configDesc[0]), configDesc)); - NAccessibilityConfigClass* nativeObj = new NAccessibilityConfigClass( - OHOS::AccessibilityConfig::CONFIG_BRIGHTNESS_DISCOUNT); + NAccessibilityConfigClass* nativeObj = + new(std::nothrow) NAccessibilityConfigClass(OHOS::AccessibilityConfig::CONFIG_BRIGHTNESS_DISCOUNT); + if (!nativeObj) { + HILOG_ERROR("Failed to create nativeObj."); + return nullptr; + } nativeObj->SetEnv(env); NAPI_CALL(env, napi_wrap(env, brightnessDiscountValue, reinterpret_cast(nativeObj), NAccessibilityConfigClass::Destructor, nullptr, nativeObj->GetWrapper())); @@ -132,8 +156,12 @@ static napi_value InitScreenMagnifier(napi_env env) NAPI_CALL(env, napi_define_properties(env, screenMagnifierValue, sizeof(configDesc) / sizeof(configDesc[0]), configDesc)); - NAccessibilityConfigClass* nativeObj = new NAccessibilityConfigClass( - OHOS::AccessibilityConfig::CONFIG_SCREEN_MAGNIFICATION); + NAccessibilityConfigClass* nativeObj = + new(std::nothrow) NAccessibilityConfigClass(OHOS::AccessibilityConfig::CONFIG_SCREEN_MAGNIFICATION); + if (!nativeObj) { + HILOG_ERROR("Failed to create nativeObj."); + return nullptr; + } nativeObj->SetEnv(env); NAPI_CALL(env, napi_wrap(env, screenMagnifierValue, reinterpret_cast(nativeObj), NAccessibilityConfigClass::Destructor, nullptr, nativeObj->GetWrapper())); @@ -147,8 +175,12 @@ static napi_value InitAudioMono(napi_env env) NAPI_CALL(env, napi_define_properties(env, audioMonoValue, sizeof(configDesc) / sizeof(configDesc[0]), configDesc)); - NAccessibilityConfigClass* nativeObj = new NAccessibilityConfigClass( - OHOS::AccessibilityConfig::CONFIG_AUDIO_MONO); + NAccessibilityConfigClass* nativeObj = + new(std::nothrow) NAccessibilityConfigClass(OHOS::AccessibilityConfig::CONFIG_AUDIO_MONO); + if (!nativeObj) { + HILOG_ERROR("Failed to create nativeObj."); + return nullptr; + } nativeObj->SetEnv(env); NAPI_CALL(env, napi_wrap(env, audioMonoValue, reinterpret_cast(nativeObj), NAccessibilityConfigClass::Destructor, nullptr, nativeObj->GetWrapper())); @@ -162,8 +194,12 @@ static napi_value InitAudioBalance(napi_env env) NAPI_CALL(env, napi_define_properties(env, audioBalanceValue, sizeof(configDesc) / sizeof(configDesc[0]), configDesc)); - NAccessibilityConfigClass* nativeObj = new NAccessibilityConfigClass( - OHOS::AccessibilityConfig::CONFIG_AUDIO_BALANCE); + NAccessibilityConfigClass* nativeObj = + new(std::nothrow) NAccessibilityConfigClass(OHOS::AccessibilityConfig::CONFIG_AUDIO_BALANCE); + if (!nativeObj) { + HILOG_ERROR("Failed to create nativeObj."); + return nullptr; + } nativeObj->SetEnv(env); NAPI_CALL(env, napi_wrap(env, audioBalanceValue, reinterpret_cast(nativeObj), NAccessibilityConfigClass::Destructor, nullptr, nativeObj->GetWrapper())); @@ -177,8 +213,12 @@ static napi_value InitMouseKey(napi_env env) NAPI_CALL(env, napi_define_properties(env, mouseKeyValue, sizeof(configDesc) / sizeof(configDesc[0]), configDesc)); - NAccessibilityConfigClass* nativeObj = new NAccessibilityConfigClass( - OHOS::AccessibilityConfig::CONFIG_MOUSE_KEY); + NAccessibilityConfigClass* nativeObj = + new(std::nothrow) NAccessibilityConfigClass(OHOS::AccessibilityConfig::CONFIG_MOUSE_KEY); + if (!nativeObj) { + HILOG_ERROR("Failed to create nativeObj."); + return nullptr; + } nativeObj->SetEnv(env); NAPI_CALL(env, napi_wrap(env, mouseKeyValue, reinterpret_cast(nativeObj), NAccessibilityConfigClass::Destructor, nullptr, nativeObj->GetWrapper())); @@ -192,8 +232,12 @@ static napi_value InitMouseAutoClick(napi_env env) NAPI_CALL(env, napi_define_properties(env, mouseAutoClickValue, sizeof(configDesc) / sizeof(configDesc[0]), configDesc)); - NAccessibilityConfigClass* nativeObj = new NAccessibilityConfigClass( - OHOS::AccessibilityConfig::CONFIG_MOUSE_AUTOCLICK); + NAccessibilityConfigClass* nativeObj = + new(std::nothrow) NAccessibilityConfigClass(OHOS::AccessibilityConfig::CONFIG_MOUSE_AUTOCLICK); + if (!nativeObj) { + HILOG_ERROR("Failed to create nativeObj."); + return nullptr; + } nativeObj->SetEnv(env); NAPI_CALL(env, napi_wrap(env, mouseAutoClickValue, reinterpret_cast(nativeObj), NAccessibilityConfigClass::Destructor, nullptr, nativeObj->GetWrapper())); @@ -207,8 +251,12 @@ static napi_value InitShortKey(napi_env env) NAPI_CALL(env, napi_define_properties(env, shortKeyValue, sizeof(configDesc) / sizeof(configDesc[0]), configDesc)); - NAccessibilityConfigClass* nativeObj = new NAccessibilityConfigClass( - OHOS::AccessibilityConfig::CONFIG_SHORT_KEY); + NAccessibilityConfigClass* nativeObj = + new(std::nothrow) NAccessibilityConfigClass(OHOS::AccessibilityConfig::CONFIG_SHORT_KEY); + if (!nativeObj) { + HILOG_ERROR("Failed to create nativeObj."); + return nullptr; + } nativeObj->SetEnv(env); NAPI_CALL(env, napi_wrap(env, shortKeyValue, reinterpret_cast(nativeObj), NAccessibilityConfigClass::Destructor, nullptr, nativeObj->GetWrapper())); @@ -222,8 +270,12 @@ static napi_value InitShortKeyTarget(napi_env env) NAPI_CALL(env, napi_define_properties(env, shortKeyTargetValue, sizeof(configDesc) / sizeof(configDesc[0]), configDesc)); - NAccessibilityConfigClass* nativeObj = new NAccessibilityConfigClass( - OHOS::AccessibilityConfig::CONFIG_SHORT_KEY_TARGET); + NAccessibilityConfigClass* nativeObj = + new(std::nothrow) NAccessibilityConfigClass(OHOS::AccessibilityConfig::CONFIG_SHORT_KEY_TARGET); + if (!nativeObj) { + HILOG_ERROR("Failed to create nativeObj."); + return nullptr; + } nativeObj->SetEnv(env); NAPI_CALL(env, napi_wrap(env, shortKeyTargetValue, reinterpret_cast(nativeObj), NAccessibilityConfigClass::Destructor, nullptr, nativeObj->GetWrapper())); @@ -237,8 +289,12 @@ static napi_value InitCaptionState(napi_env env) NAPI_CALL(env, napi_define_properties(env, captionValue, sizeof(configDesc) / sizeof(configDesc[0]), configDesc)); - NAccessibilityConfigClass* nativeObj = new NAccessibilityConfigClass( - OHOS::AccessibilityConfig::CONFIG_CAPTION_STATE); + NAccessibilityConfigClass* nativeObj = + new(std::nothrow) NAccessibilityConfigClass(OHOS::AccessibilityConfig::CONFIG_CAPTION_STATE); + if (!nativeObj) { + HILOG_ERROR("Failed to create nativeObj."); + return nullptr; + } nativeObj->SetEnv(env); NAPI_CALL(env, napi_wrap(env, captionValue, reinterpret_cast(nativeObj), NAccessibilityConfigClass::Destructor, nullptr, nativeObj->GetWrapper())); @@ -252,8 +308,12 @@ static napi_value InitCaptionStyle(napi_env env) NAPI_CALL(env, napi_define_properties(env, captionStyleValue, sizeof(configDesc) / sizeof(configDesc[0]), configDesc)); - NAccessibilityConfigClass* nativeObj = new NAccessibilityConfigClass( - OHOS::AccessibilityConfig::CONFIG_CAPTION_STYLE); + NAccessibilityConfigClass* nativeObj = + new(std::nothrow) NAccessibilityConfigClass(OHOS::AccessibilityConfig::CONFIG_CAPTION_STYLE); + if (!nativeObj) { + HILOG_ERROR("Failed to create nativeObj."); + return nullptr; + } nativeObj->SetEnv(env); NAPI_CALL(env, napi_wrap(env, captionStyleValue, reinterpret_cast(nativeObj), NAccessibilityConfigClass::Destructor, nullptr, nativeObj->GetWrapper())); diff --git a/interfaces/kits/napi/accessibility_extension_module_loader/src/accessibility_extension_module_loader.cpp b/interfaces/kits/napi/accessibility_extension_module_loader/src/accessibility_extension_module_loader.cpp index 0fca13da..8b615e93 100644 --- a/interfaces/kits/napi/accessibility_extension_module_loader/src/accessibility_extension_module_loader.cpp +++ b/interfaces/kits/napi/accessibility_extension_module_loader/src/accessibility_extension_module_loader.cpp @@ -26,7 +26,7 @@ AbilityRuntime::Extension *AccessibilityExtensionModuleLoader::Create( const std::unique_ptr& runtime) const { if (!runtime) { - return new AccessibilityExtension(); + return new(std::nothrow) AccessibilityExtension(); } HILOG_INFO("AccessibilityExtension::Create runtime"); switch (runtime->GetLanguage()) { @@ -34,7 +34,7 @@ AbilityRuntime::Extension *AccessibilityExtensionModuleLoader::Create( return NAccessibilityExtension::Create(runtime); default: - return new AccessibilityExtension(); + return new(std::nothrow) AccessibilityExtension(); } } diff --git a/interfaces/kits/napi/accessibility_extension_module_loader/src/napi_accessibility_element.cpp b/interfaces/kits/napi/accessibility_extension_module_loader/src/napi_accessibility_element.cpp index a4d06858..1c000e83 100644 --- a/interfaces/kits/napi/accessibility_extension_module_loader/src/napi_accessibility_element.cpp +++ b/interfaces/kits/napi/accessibility_extension_module_loader/src/napi_accessibility_element.cpp @@ -76,7 +76,11 @@ void NAccessibilityElement::ConvertElementInfoToJS(napi_env env, napi_value resu // Bind js object to a Native object std::shared_ptr elementInformation = std::make_shared(elementInfo); - AccessibilityElement* pAccessibilityElement = new AccessibilityElement(elementInformation); + AccessibilityElement* pAccessibilityElement = new(std::nothrow) AccessibilityElement(elementInformation); + if (!pAccessibilityElement) { + HILOG_ERROR("Failed to create elementInformation."); + return; + } napi_status sts = napi_wrap( env, result, @@ -115,11 +119,15 @@ napi_value NAccessibilityElement::AttributeNames(napi_env env, napi_callback_inf size_t argc = ARGS_SIZE_ZERO; napi_value argv, thisVar; void* data = nullptr; + NAccessibilityElementData *callbackInfo = new(std::nothrow) NAccessibilityElementData(); + if (!callbackInfo) { + HILOG_ERROR("Failed to create callbackInfo."); + return nullptr; + } + callbackInfo->env_ = env; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, &argv, &thisVar, &data)); HILOG_DEBUG("argc = %{public}d", (int)argc); - NAccessibilityElementData *callbackInfo = new NAccessibilityElementData(); - callbackInfo->env_ = env; AccessibilityElement* accessibilityElement = nullptr; napi_status status = napi_unwrap(env, thisVar, (void**)&accessibilityElement); if (!accessibilityElement || status != napi_ok) { @@ -177,7 +185,11 @@ napi_value NAccessibilityElement::AttributeValue(napi_env env, napi_callback_inf napi_value argv[ARGS_SIZE_ONE] = {0}; napi_value thisVar; void* data = nullptr; - NAccessibilityElementData *callbackInfo = new NAccessibilityElementData(); + NAccessibilityElementData *callbackInfo = new(std::nothrow) NAccessibilityElementData(); + if (!callbackInfo) { + HILOG_ERROR("Failed to create callbackInfo."); + return nullptr; + } callbackInfo->env_ = env; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, &thisVar, &data)); HILOG_DEBUG("argc = %{public}d", (int)argc); @@ -230,11 +242,15 @@ napi_value NAccessibilityElement::ActionNames(napi_env env, napi_callback_info i size_t argc = ARGS_SIZE_ZERO; napi_value argv, thisVar; void* data = nullptr; + NAccessibilityElementData *callbackInfo = new(std::nothrow) NAccessibilityElementData(); + if (!callbackInfo) { + HILOG_ERROR("Failed to create callbackInfo."); + return nullptr; + } + callbackInfo->env_ = env; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, &argv, &thisVar, &data)); HILOG_DEBUG("argc = %{public}zu", argc); - NAccessibilityElementData *callbackInfo = new NAccessibilityElementData(); - callbackInfo->env_ = env; AccessibilityElement* accessibilityElement = nullptr; napi_status status = napi_unwrap(env, thisVar, (void**)&accessibilityElement); if (!accessibilityElement || status != napi_ok) { @@ -314,7 +330,11 @@ napi_value NAccessibilityElement::PerformAction(napi_env env, napi_callback_info napi_value argv[ARGS_SIZE_TWO] = {0}; napi_value thisVar; void* data = nullptr; - NAccessibilityElementData *callbackInfo = new NAccessibilityElementData(); + NAccessibilityElementData *callbackInfo = new(std::nothrow) NAccessibilityElementData(); + if (!callbackInfo) { + HILOG_ERROR("Failed to create callbackInfo."); + return nullptr; + } callbackInfo->env_ = env; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, &thisVar, &data)); HILOG_DEBUG("argc = %{public}zu", argc); @@ -398,7 +418,11 @@ napi_value NAccessibilityElement::FindElement(napi_env env, napi_callback_info i napi_value argv[ARGS_SIZE_TWO] = {0}; napi_value thisVar; void* data = nullptr; - NAccessibilityElementData *callbackInfo = new NAccessibilityElementData(); + NAccessibilityElementData *callbackInfo = new(std::nothrow) NAccessibilityElementData(); + if (!callbackInfo) { + HILOG_ERROR("Failed to create callbackInfo."); + return nullptr; + } callbackInfo->env_ = env; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, argv, &thisVar, &data)); HILOG_DEBUG("argc = %{public}d", (int)argc); diff --git a/interfaces/kits/napi/accessibility_extension_module_loader/src/napi_accessibility_extension.cpp b/interfaces/kits/napi/accessibility_extension_module_loader/src/napi_accessibility_extension.cpp index 1b9dbad4..3bfba595 100644 --- a/interfaces/kits/napi/accessibility_extension_module_loader/src/napi_accessibility_extension.cpp +++ b/interfaces/kits/napi/accessibility_extension_module_loader/src/napi_accessibility_extension.cpp @@ -38,7 +38,7 @@ namespace { NAccessibilityExtension* NAccessibilityExtension::Create(const std::unique_ptr& runtime) { HILOG_INFO(); - return new NAccessibilityExtension(static_cast(*runtime)); + return new(std::nothrow) NAccessibilityExtension(static_cast(*runtime)); } NAccessibilityExtension::NAccessibilityExtension(AbilityRuntime::JsRuntime& jsRuntime) : jsRuntime_(jsRuntime) @@ -127,9 +127,19 @@ void NAccessibilityExtension::OnAbilityConnected() { HILOG_INFO(); uv_loop_t *loop = engine_->GetUVLoop(); - uv_work_t *work = new uv_work_t; - ExtensionCallbackInfo *callbackInfo = new ExtensionCallbackInfo(); + ExtensionCallbackInfo *callbackInfo = new(std::nothrow) ExtensionCallbackInfo(); + if (!callbackInfo) { + HILOG_ERROR("Failed to create callbackInfo."); + return; + } callbackInfo->extension_ = this; + uv_work_t *work = new(std::nothrow) uv_work_t; + if (!work) { + HILOG_ERROR("Failed to create data."); + delete callbackInfo; + callbackInfo = nullptr; + return; + } work->data = callbackInfo; uv_queue_work( @@ -151,9 +161,19 @@ void NAccessibilityExtension::OnAbilityDisconnected() { HILOG_INFO(); uv_loop_t *loop = engine_->GetUVLoop(); - uv_work_t *work = new uv_work_t; - ExtensionCallbackInfo *callbackInfo = new ExtensionCallbackInfo(); + ExtensionCallbackInfo *callbackInfo = new(std::nothrow) ExtensionCallbackInfo(); + if (!callbackInfo) { + HILOG_ERROR("Failed to create callbackInfo."); + return; + } callbackInfo->extension_ = this; + uv_work_t *work = new(std::nothrow) uv_work_t; + if (!work) { + HILOG_ERROR("Failed to create data."); + delete callbackInfo; + callbackInfo = nullptr; + return; + } work->data = callbackInfo; uv_queue_work( @@ -234,7 +254,11 @@ void ConvertAccessibilityEventInfoToJS(napi_env env, napi_value objEventInfo, co HILOG_DEBUG("eventType[%{public}s]", strType.c_str()); if (element) { - AccessibilityElement* pAccessibilityElement = new AccessibilityElement(*element); + AccessibilityElement* pAccessibilityElement = new(std::nothrow) AccessibilityElement(*element); + if (!pAccessibilityElement) { + HILOG_ERROR("Failed to create AccessibilityElement."); + return; + } napi_value nTargetObject = nullptr; napi_value constructor = nullptr; napi_get_reference_value(env, NAccessibilityElement::consRef_, &constructor); @@ -272,12 +296,22 @@ void NAccessibilityExtension::OnAccessibilityEvent(const AccessibilityEventInfo& { HILOG_INFO(); uv_loop_t *loop = engine_->GetUVLoop(); - uv_work_t *work = new uv_work_t; - AccessibilityEventInfoCallbackInfo *callbackInfo = new AccessibilityEventInfoCallbackInfo(); + AccessibilityEventInfoCallbackInfo *callbackInfo = new(std::nothrow) AccessibilityEventInfoCallbackInfo(); + if (!callbackInfo) { + HILOG_ERROR("Failed to create callbackInfo."); + return; + } callbackInfo->engine_ = engine_; callbackInfo->extension_ = this; callbackInfo->eventInfo_ = eventInfo; callbackInfo->element_ = GetElement(eventInfo); + uv_work_t *work = new(std::nothrow) uv_work_t; + if (!work) { + HILOG_ERROR("Failed to create data."); + delete callbackInfo; + callbackInfo = nullptr; + return; + } work->data = callbackInfo; uv_queue_work( @@ -305,11 +339,21 @@ bool NAccessibilityExtension::OnKeyPressEvent(const std::shared_ptrGetUVLoop(); - uv_work_t *work = new uv_work_t; - KeyEventCallbackInfo *callbackInfo = new KeyEventCallbackInfo(); + KeyEventCallbackInfo *callbackInfo = new(std::nothrow) KeyEventCallbackInfo(); + if (!callbackInfo) { + HILOG_ERROR("Failed to create callbackInfo."); + return false; + } callbackInfo->engine_ = engine_; callbackInfo->keyEvent_ = MMI::KeyEvent::Clone(keyEvent); callbackInfo->extension_ = this; + uv_work_t *work = new(std::nothrow) uv_work_t; + if (!work) { + HILOG_ERROR("Failed to create data."); + delete callbackInfo; + callbackInfo = nullptr; + return false; + } work->data = callbackInfo; std::future syncFuture = callbackInfo->syncPromise_.get_future(); diff --git a/interfaces/kits/napi/accessibility_extension_module_loader/src/napi_accessibility_extension_context.cpp b/interfaces/kits/napi/accessibility_extension_module_loader/src/napi_accessibility_extension_context.cpp index 55888298..b95d7d4d 100644 --- a/interfaces/kits/napi/accessibility_extension_module_loader/src/napi_accessibility_extension_context.cpp +++ b/interfaces/kits/napi/accessibility_extension_module_loader/src/napi_accessibility_extension_context.cpp @@ -38,7 +38,12 @@ static void ConvertAccessibilityWindowInfoToJS( // Bind js object to a Native object std::shared_ptr windowInfo = std::make_shared(accessibilityWindowInfo); - AccessibilityElement* pAccessibilityElement = new AccessibilityElement(windowInfo); + AccessibilityElement* pAccessibilityElement = new(std::nothrow) AccessibilityElement(windowInfo); + if (!pAccessibilityElement) { + HILOG_ERROR("Failed to create work."); + return; + } + napi_status sts = napi_wrap( env, result, @@ -641,15 +646,26 @@ void NAccessibilityGestureResultListener::OnGestureInjectResult(uint32_t sequenc return; } - StateCallbackInfo *data = new StateCallbackInfo(); + StateCallbackInfo *data = new(std::nothrow) StateCallbackInfo(); + if (!data) { + HILOG_ERROR("Failed to create data."); + return; + } + uv_work_t *work = new(std::nothrow) uv_work_t; + if (!work) { + HILOG_ERROR("Failed to create work."); + delete data; + data = nullptr; + return; + } + data->env_ = callbackInfo->env_; data->state_ = result; data->ref_ = callbackInfo->callback_; - uv_loop_s *loop = nullptr; - napi_get_uv_event_loop(callbackInfo->env_, &loop); - uv_work_t *work = new uv_work_t; work->data = data; + uv_loop_s *loop = nullptr; + napi_get_uv_event_loop(callbackInfo->env_, &loop); uv_queue_work( loop, work, diff --git a/interfaces/kits/napi/src/napi_accessibility_config_observer.cpp b/interfaces/kits/napi/src/napi_accessibility_config_observer.cpp index 9833e7f0..e5750426 100644 --- a/interfaces/kits/napi/src/napi_accessibility_config_observer.cpp +++ b/interfaces/kits/napi/src/napi_accessibility_config_observer.cpp @@ -44,15 +44,25 @@ void NAccessibilityConfigObserver::NotifyStateChangedJS(napi_env env, bool enabl { HILOG_INFO("id = [%{public}d] enabled = [%{public}s]", static_cast(id), enabled ? "true" : "false"); - StateCallbackInfo *callbackInfo = new StateCallbackInfo(); + StateCallbackInfo *callbackInfo = new(std::nothrow) StateCallbackInfo(); + if (!callbackInfo) { + HILOG_ERROR("Failed to create callbackInfo."); + return; + } callbackInfo->state_ = enabled; callbackInfo->env_ = env; callbackInfo->ref_ = handlerRef; + uv_work_t *work = new(std::nothrow) uv_work_t; + if (!work) { + HILOG_ERROR("Failed to create work."); + delete callbackInfo; + callbackInfo = nullptr; + return; + } + work->data = static_cast(callbackInfo); + uv_loop_s *loop = nullptr; napi_get_uv_event_loop(env, &loop); - uv_work_t *work = new uv_work_t; - work->data = static_cast(callbackInfo); - uv_queue_work( loop, work, @@ -126,15 +136,25 @@ void NAccessibilityConfigObserver::NotifyPropertyChangedJS(napi_env env, { HILOG_INFO("id = [%{public}d]", static_cast(id)); - CaptionCallbackInfo *callbackInfo = new CaptionCallbackInfo(); + CaptionCallbackInfo *callbackInfo = new(std::nothrow) CaptionCallbackInfo(); + if (!callbackInfo) { + HILOG_ERROR("Failed to create callbackInfo."); + return; + } callbackInfo->caption_ = caption; callbackInfo->env_ = env; callbackInfo->ref_ = handlerRef; + uv_work_t *work = new(std::nothrow) uv_work_t; + if (!work) { + HILOG_ERROR("Failed to create work."); + delete callbackInfo; + callbackInfo = nullptr; + return; + } + work->data = static_cast(callbackInfo); + uv_loop_s *loop = nullptr; napi_get_uv_event_loop(env, &loop); - uv_work_t *work = new uv_work_t; - work->data = static_cast(callbackInfo); - uv_queue_work( loop, work, @@ -208,15 +228,25 @@ void NAccessibilityConfigObserver::NotifyStringChanged2JSInner( { HILOG_INFO("id = [%{public}d] value = [%{public}s]", static_cast(id), value.c_str()); - StateCallbackInfo *callbackInfo = new StateCallbackInfo(); + StateCallbackInfo *callbackInfo = new(std::nothrow) StateCallbackInfo(); + if (!callbackInfo) { + HILOG_ERROR("Failed to create callbackInfo."); + return; + } callbackInfo->stringValue_ = value; callbackInfo->env_ = env; callbackInfo->ref_ = handlerRef; + uv_work_t *work = new(std::nothrow) uv_work_t; + if (!work) { + HILOG_ERROR("Failed to create work."); + delete callbackInfo; + callbackInfo = nullptr; + return; + } + work->data = static_cast(callbackInfo); + uv_loop_s *loop = nullptr; napi_get_uv_event_loop(env, &loop); - uv_work_t *work = new uv_work_t; - work->data = static_cast(callbackInfo); - uv_queue_work( loop, work, @@ -252,15 +282,25 @@ void NAccessibilityConfigObserver::NotifyIntChanged2JSInner( { HILOG_INFO("id = [%{public}d] value = [%{public}d]", static_cast(id), value); - StateCallbackInfo *callbackInfo = new StateCallbackInfo(); + StateCallbackInfo *callbackInfo = new(std::nothrow) StateCallbackInfo(); + if (!callbackInfo) { + HILOG_ERROR("Failed to create callbackInfo."); + return; + } callbackInfo->int32Value_ = value; callbackInfo->env_ = env; callbackInfo->ref_ = handlerRef; + uv_work_t *work = new(std::nothrow) uv_work_t; + if (!work) { + HILOG_ERROR("Failed to create work."); + delete callbackInfo; + callbackInfo = nullptr; + return; + } + work->data = static_cast(callbackInfo); + uv_loop_s *loop = nullptr; napi_get_uv_event_loop(env, &loop); - uv_work_t *work = new uv_work_t; - work->data = static_cast(callbackInfo); - uv_queue_work( loop, work, @@ -291,15 +331,25 @@ void NAccessibilityConfigObserver::NotifyUintChanged2JSInner( { HILOG_INFO("id = [%{public}d] value = [%{public}u]", static_cast(id), value); - StateCallbackInfo *callbackInfo = new StateCallbackInfo(); + StateCallbackInfo *callbackInfo = new(std::nothrow) StateCallbackInfo(); + if (!callbackInfo) { + HILOG_ERROR("Failed to create callbackInfo."); + return; + } callbackInfo->uint32Value_ = value; callbackInfo->env_ = env; callbackInfo->ref_ = handlerRef; + uv_work_t *work = new(std::nothrow) uv_work_t; + if (!work) { + HILOG_ERROR("Failed to create work."); + delete callbackInfo; + callbackInfo = nullptr; + return; + } + work->data = static_cast(callbackInfo); + uv_loop_s *loop = nullptr; napi_get_uv_event_loop(env, &loop); - uv_work_t *work = new uv_work_t; - work->data = static_cast(callbackInfo); - uv_queue_work( loop, work, @@ -330,15 +380,25 @@ void NAccessibilityConfigObserver::NotifyFloatChanged2JSInner( { HILOG_INFO("id = [%{public}d] value = [%{public}f]", static_cast(id), value); - StateCallbackInfo *callbackInfo = new StateCallbackInfo(); + StateCallbackInfo *callbackInfo = new(std::nothrow) StateCallbackInfo(); + if (!callbackInfo) { + HILOG_ERROR("Failed to create callbackInfo."); + return; + } callbackInfo->floatValue_ = value; callbackInfo->env_ = env; callbackInfo->ref_ = handlerRef; + uv_work_t *work = new(std::nothrow) uv_work_t; + if (!work) { + HILOG_ERROR("Failed to create work."); + delete callbackInfo; + callbackInfo = nullptr; + return; + } + work->data = static_cast(callbackInfo); + uv_loop_s *loop = nullptr; napi_get_uv_event_loop(env, &loop); - uv_work_t *work = new uv_work_t; - work->data = static_cast(callbackInfo); - uv_queue_work( loop, work, diff --git a/interfaces/kits/napi/src/napi_accessibility_system_ability_client.cpp b/interfaces/kits/napi/src/napi_accessibility_system_ability_client.cpp index f5d8f441..26c97084 100644 --- a/interfaces/kits/napi/src/napi_accessibility_system_ability_client.cpp +++ b/interfaces/kits/napi/src/napi_accessibility_system_ability_client.cpp @@ -34,10 +34,14 @@ napi_value NAccessibilityClient::IsOpenAccessibility(napi_env env, napi_callback HILOG_INFO(); size_t argc = ARGS_SIZE_ONE; napi_value argv; + NAccessibilitySystemAbilityClient* callbackInfo = new(std::nothrow) NAccessibilitySystemAbilityClient(); + if (!callbackInfo) { + HILOG_ERROR("Failed to create callbackInfo."); + return nullptr; + } napi_get_cb_info(env, info, &argc, &argv, nullptr, nullptr); napi_value promise = nullptr; - NAccessibilitySystemAbilityClient* callbackInfo = new NAccessibilitySystemAbilityClient(); if (argc > 0) { HILOG_DEBUG("IsOpenAccessibility callback mode"); napi_create_reference(env, argv, 1, &callbackInfo->callback_); @@ -91,12 +95,16 @@ napi_value NAccessibilityClient::IsOpenAccessibility(napi_env env, napi_callback napi_value NAccessibilityClient::IsOpenTouchExploration(napi_env env, napi_callback_info info) { HILOG_INFO(); + NAccessibilitySystemAbilityClient* callbackInfo = new(std::nothrow) NAccessibilitySystemAbilityClient(); + if (!callbackInfo) { + HILOG_ERROR("Failed to create callbackInfo."); + return nullptr; + } size_t argc = ARGS_SIZE_ONE; napi_value argv; napi_get_cb_info(env, info, &argc, &argv, nullptr, nullptr); napi_value promise = nullptr; - NAccessibilitySystemAbilityClient* callbackInfo = new NAccessibilitySystemAbilityClient(); if (argc > 0) { HILOG_DEBUG("IsOpenTouchExploration callback mode"); napi_create_reference(env, argv, 1, &callbackInfo->callback_); @@ -149,6 +157,12 @@ napi_value NAccessibilityClient::IsOpenTouchExploration(napi_env env, napi_callb napi_value NAccessibilityClient::GetAbilityList(napi_env env, napi_callback_info info) { + NAccessibilitySystemAbilityClient* callbackInfo = new(std::nothrow) NAccessibilitySystemAbilityClient(); + if (!callbackInfo) { + HILOG_ERROR("Failed to create callbackInfo."); + return nullptr; + } + size_t argc = 3; napi_value parameters[3] = {0}; napi_get_cb_info(env, info, &argc, parameters, nullptr, nullptr); @@ -157,7 +171,6 @@ napi_value NAccessibilityClient::GetAbilityList(napi_env env, napi_callback_info std::string stateTypes = GetStringFromNAPI(env, parameters[1]); HILOG_INFO("abilityTypes[%{public}s] stateTypes[%{public}s]", abilityTypes.c_str(), stateTypes.c_str()); - NAccessibilitySystemAbilityClient* callbackInfo = new NAccessibilitySystemAbilityClient(); callbackInfo->abilityTypes_ = ConvertStringToAccessibilityAbilityTypes(abilityTypes); callbackInfo->stateTypes_ = ConvertStringToAbilityStateType(stateTypes); @@ -217,11 +230,15 @@ napi_value NAccessibilityClient::GetAbilityList(napi_env env, napi_callback_info napi_value NAccessibilityClient::SendEvent(napi_env env, napi_callback_info info) { HILOG_INFO(); + NAccessibilitySystemAbilityClient* callbackInfo = new(std::nothrow) NAccessibilitySystemAbilityClient(); + if (!callbackInfo) { + HILOG_ERROR("Failed to create callbackInfo."); + return nullptr; + } + size_t argc = ARGS_SIZE_TWO; napi_value parameters[ARGS_SIZE_TWO] = {0}; napi_get_cb_info(env, info, &argc, parameters, nullptr, nullptr); - - NAccessibilitySystemAbilityClient* callbackInfo = new NAccessibilitySystemAbilityClient(); callbackInfo->result_ = ConvertEventInfoJSToNAPI(env, parameters[0], callbackInfo->eventInfo_); napi_value promise = nullptr; @@ -382,15 +399,25 @@ void StateListener::NotifyJS(napi_env env, bool state, napi_ref handlerRef) { HILOG_INFO("state = [%{public}s]", state ? "true" : "false"); - StateCallbackInfo *callbackInfo = new StateCallbackInfo(); + StateCallbackInfo *callbackInfo = new(std::nothrow) StateCallbackInfo(); + if (!callbackInfo) { + HILOG_ERROR("Failed to create callbackInfo."); + return; + } callbackInfo->state_ = state; callbackInfo->env_ = env; callbackInfo->ref_ = handlerRef; + uv_work_t *work = new(std::nothrow) uv_work_t; + if (!work) { + HILOG_ERROR("Failed to create work."); + delete callbackInfo; + callbackInfo = nullptr; + return; + } + work->data = static_cast(callbackInfo); + uv_loop_s *loop = nullptr; napi_get_uv_event_loop(env, &loop); - uv_work_t *work = new uv_work_t; - work->data = static_cast(callbackInfo); - uv_queue_work( loop, work, @@ -429,12 +456,14 @@ void StateListener::OnStateChanged(const bool state) napi_value NAccessibilityClient::GetInstalled(napi_env env, napi_callback_info info) { HILOG_INFO(); + NAccessibilitySystemAbilityClient* callbackInfo = new(std::nothrow) NAccessibilitySystemAbilityClient(); + if (!callbackInfo) { + HILOG_ERROR("Failed to create callbackInfo."); + return nullptr; + } size_t argc = ARGS_SIZE_ONE; napi_value parameters[ARGS_SIZE_ONE] = {0}; napi_get_cb_info(env, info, &argc, parameters, nullptr, nullptr); - - NAccessibilitySystemAbilityClient* callbackInfo = new NAccessibilitySystemAbilityClient(); - napi_value promise = nullptr; if (argc >= ARGS_SIZE_ONE) { diff --git a/services/aams/src/accessibility_touch_guider.cpp b/services/aams/src/accessibility_touch_guider.cpp index 4f476e3c..3f125b14 100644 --- a/services/aams/src/accessibility_touch_guider.cpp +++ b/services/aams/src/accessibility_touch_guider.cpp @@ -885,7 +885,11 @@ bool TouchGuider::ExecuteActionOnAccessibilityFocused(const ActionType &action) } uint32_t timeOut = 500; - sptr focusCallback = new ElementOperatorCallbackImpl(); + sptr focusCallback = new(std::nothrow) ElementOperatorCallbackImpl(); + if (!focusCallback) { + HILOG_ERROR("Failed to create focusCallback."); + return false; + } std::future focusFutrue = focusCallback->promise_.get_future(); connection->GetProxy()->FindFocusedElementInfo(elementId, focusType, 0, focusCallback); std::future_status waitFocus = focusFutrue.wait_for(std::chrono::milliseconds(timeOut)); @@ -896,7 +900,11 @@ bool TouchGuider::ExecuteActionOnAccessibilityFocused(const ActionType &action) elementId = focusCallback->accessibilityInfoResult_.GetAccessibilityId(); std::map actionArguments {}; - sptr actionCallback = new ElementOperatorCallbackImpl(); + sptr actionCallback = new(std::nothrow) ElementOperatorCallbackImpl(); + if (!actionCallback) { + HILOG_ERROR("Failed to create actionCallback."); + return false; + } std::future actionFutrue = actionCallback->promise_.get_future(); connection->GetProxy()->ExecuteAction(elementId, action, actionArguments, 1, actionCallback); std::future_status waitAction = actionFutrue.wait_for(std::chrono::milliseconds(timeOut)); diff --git a/services/interface/src/accessibility_element_operator_stub.cpp b/services/interface/src/accessibility_element_operator_stub.cpp index 4e62300d..71d694b9 100644 --- a/services/interface/src/accessibility_element_operator_stub.cpp +++ b/services/interface/src/accessibility_element_operator_stub.cpp @@ -74,8 +74,7 @@ ErrCode AccessibilityElementOperatorStub::HandleSearchElementInfoByAccessibility int32_t requestId = data.ReadInt32(); sptr remote = data.ReadRemoteObject(); - sptr callback = - new AccessibilityElementOperatorCallbackProxy(remote); + sptr callback = iface_cast(remote); int32_t mode = data.ReadInt32(); SearchElementInfoByAccessibilityId(elementId, requestId, callback, mode); return NO_ERROR; @@ -91,8 +90,7 @@ ErrCode AccessibilityElementOperatorStub::HandleSearchElementInfosByText(Message int32_t requestId = data.ReadInt32(); sptr remote = data.ReadRemoteObject(); - sptr callback = - new AccessibilityElementOperatorCallbackProxy(remote); + sptr callback = iface_cast(remote); SearchElementInfosByText(elementId, text, requestId, callback); return NO_ERROR; } @@ -107,8 +105,7 @@ ErrCode AccessibilityElementOperatorStub::HandleFindFocusedElementInfo(MessagePa int32_t requestId = data.ReadInt32(); sptr remote = data.ReadRemoteObject(); - sptr callback = - new AccessibilityElementOperatorCallbackProxy(remote); + sptr callback = iface_cast(remote); FindFocusedElementInfo(elementId, focusType, requestId, callback); return NO_ERROR; } @@ -122,8 +119,7 @@ ErrCode AccessibilityElementOperatorStub::HandleFocusFind(MessageParcel &data, M int32_t requestId = data.ReadInt32(); sptr remote = data.ReadRemoteObject(); - sptr callback = - new AccessibilityElementOperatorCallbackProxy(remote); + sptr callback = iface_cast(remote); FocusMoveSearch(elementId, direction, requestId, callback); return NO_ERROR; } @@ -151,8 +147,7 @@ ErrCode AccessibilityElementOperatorStub::HandleExecuteAction(MessageParcel &dat int32_t requestId = data.ReadInt32(); sptr remote = data.ReadRemoteObject(); - sptr callback = - new AccessibilityElementOperatorCallbackProxy(remote); + sptr callback = iface_cast(remote); ExecuteAction(elementId, action, arguments, requestId, callback); return NO_ERROR; } diff --git a/services/interface/src/accessible_ability_channel_proxy.cpp b/services/interface/src/accessible_ability_channel_proxy.cpp index e61815d6..5272043e 100644 --- a/services/interface/src/accessible_ability_channel_proxy.cpp +++ b/services/interface/src/accessible_ability_channel_proxy.cpp @@ -458,8 +458,13 @@ void AccessibleAbilityChannelProxy::SendSimulateGesture(const int32_t requestId, HILOG_ERROR("requestId write error: %{public}d, ", requestId); return; } - - sptr path = new AccessibilityGestureInjectPathParcel(*gesturePath); + + sptr path = + new(std::nothrow) AccessibilityGestureInjectPathParcel(*gesturePath); + if (!path) { + HILOG_ERROR("Failed to create path."); + return; + } if (!data.WriteStrongParcelable(path)) { HILOG_ERROR("WriteStrongParcelable failed"); return; diff --git a/services/interface/src/accessible_ability_channel_stub.cpp b/services/interface/src/accessible_ability_channel_stub.cpp index 1be60ea5..80655f8c 100644 --- a/services/interface/src/accessible_ability_channel_stub.cpp +++ b/services/interface/src/accessible_ability_channel_stub.cpp @@ -218,7 +218,11 @@ ErrCode AccessibleAbilityChannelStub::HandleGetWindow(MessageParcel &data, Messa HILOG_DEBUG(); int32_t windowId = data.ReadInt32(); - sptr windowInfoParcel = new AccessibilityWindowInfoParcel(); + sptr windowInfoParcel = new(std::nothrow) AccessibilityWindowInfoParcel(); + if (!windowInfoParcel) { + HILOG_ERROR("Failed to create windowInfoParcel."); + return ERR_NULL_OBJECT; + } bool result = GetWindow(windowId, *windowInfoParcel); if (!reply.WriteStrongParcelable(windowInfoParcel)) { @@ -240,7 +244,11 @@ ErrCode AccessibleAbilityChannelStub::HandleGetWindows(MessageParcel &data, Mess return ERR_INVALID_VALUE; } for (auto &window : windows) { - sptr windowInfo = new AccessibilityWindowInfoParcel(window); + sptr windowInfo = new(std::nothrow) AccessibilityWindowInfoParcel(window); + if (!windowInfo) { + HILOG_ERROR("Failed to create windowInfo."); + return ERR_NULL_OBJECT; + } if (!reply.WriteStrongParcelable(windowInfo)) { HILOG_ERROR("WriteStrongParcelable windows failed"); return ERR_INVALID_VALUE; @@ -262,7 +270,11 @@ ErrCode AccessibleAbilityChannelStub::HandleGetWindowsByDisplayId(MessageParcel return ERR_INVALID_VALUE; } for (auto &window : windows) { - sptr windowInfo = new AccessibilityWindowInfoParcel(window); + sptr windowInfo = new(std::nothrow) AccessibilityWindowInfoParcel(window); + if (!windowInfo) { + HILOG_ERROR("Failed to create windowInfo."); + return ERR_NULL_OBJECT; + } if (!reply.WriteStrongParcelable(windowInfo)) { HILOG_ERROR("WriteStrongParcelable windows failed"); return ERR_INVALID_VALUE; diff --git a/services/interface/src/accessible_ability_manager_service_stub.cpp b/services/interface/src/accessible_ability_manager_service_stub.cpp index 79423d8f..7308d627 100644 --- a/services/interface/src/accessible_ability_manager_service_stub.cpp +++ b/services/interface/src/accessible_ability_manager_service_stub.cpp @@ -202,8 +202,12 @@ ErrCode AccessibleAbilityManagerServiceStub::HandleGetAbilityList(MessageParcel int32_t abilityInfoSize = static_cast(abilityInfos.size()); reply.WriteInt32(abilityInfoSize); - for (auto& abilityInfo : abilityInfos) { - sptr info = new AccessibilityAbilityInfoParcel(abilityInfo); + for (auto &abilityInfo : abilityInfos) { + sptr info = new(std::nothrow) AccessibilityAbilityInfoParcel(abilityInfo); + if (!info) { + HILOG_ERROR("Failed to create info."); + return ERR_NULL_OBJECT; + } if (!reply.WriteStrongParcelable(info)) { HILOG_ERROR("WriteStrongParcelable failed"); return TRANSACTION_ERR; @@ -373,7 +377,12 @@ ErrCode AccessibleAbilityManagerServiceStub::HandleGetInstalledAbilities( reply.WriteInt32(num); for (int32_t i = 0; i < num; i++) { - sptr info = new AccessibilityAbilityInfoParcel(installedAbilities[i]); + sptr info = + new(std::nothrow) AccessibilityAbilityInfoParcel(installedAbilities[i]); + if (!info) { + HILOG_ERROR("Failed to create info."); + return ERR_NULL_OBJECT; + } bool result = reply.WriteStrongParcelable(info); if (!result) { HILOG_ERROR("WriteStrongParcelable failed"); diff --git a/services/interface/src/parcel/accessibility_ability_info_parcel.cpp b/services/interface/src/parcel/accessibility_ability_info_parcel.cpp index 184c02c3..645d9e78 100644 --- a/services/interface/src/parcel/accessibility_ability_info_parcel.cpp +++ b/services/interface/src/parcel/accessibility_ability_info_parcel.cpp @@ -66,7 +66,11 @@ bool AccessibilityAbilityInfoParcel::Marshalling(Parcel &parcel) const sptr AccessibilityAbilityInfoParcel::Unmarshalling(Parcel &parcel) { HILOG_DEBUG(); - sptr info = new AccessibilityAbilityInfoParcel(); + sptr info = new(std::nothrow) AccessibilityAbilityInfoParcel(); + if (!info) { + HILOG_ERROR("Failed to create info."); + return nullptr; + } if (!info->ReadFromParcel(parcel)) { HILOG_ERROR("ReadFromParcel AccessibilityAbilityInfo failed."); info = nullptr; diff --git a/services/interface/src/parcel/accessibility_caption_parcel.cpp b/services/interface/src/parcel/accessibility_caption_parcel.cpp index 6af28e52..59e088f9 100644 --- a/services/interface/src/parcel/accessibility_caption_parcel.cpp +++ b/services/interface/src/parcel/accessibility_caption_parcel.cpp @@ -56,7 +56,11 @@ bool CaptionPropertyParcel::Marshalling(Parcel& parcel) const sptr CaptionPropertyParcel::Unmarshalling(Parcel& parcel) { HILOG_DEBUG(); - sptr captionProperty = new CaptionPropertyParcel(); + sptr captionProperty = new(std::nothrow) CaptionPropertyParcel(); + if (!captionProperty) { + HILOG_ERROR("Failed to create captionProperty."); + return nullptr; + } if (!captionProperty->ReadFromParcel(parcel)) { HILOG_ERROR("read from parcel failed"); return nullptr; diff --git a/services/interface/src/parcel/accessibility_element_info_parcel.cpp b/services/interface/src/parcel/accessibility_element_info_parcel.cpp index d766f8e2..afa393e4 100644 --- a/services/interface/src/parcel/accessibility_element_info_parcel.cpp +++ b/services/interface/src/parcel/accessibility_element_info_parcel.cpp @@ -184,7 +184,11 @@ sptr AccessibilityElementInfoParcel::Unmarshalli { HILOG_DEBUG(); - sptr accessibilityInfo = new AccessibilityElementInfoParcel(); + sptr accessibilityInfo = new(std::nothrow) AccessibilityElementInfoParcel(); + if (!accessibilityInfo) { + HILOG_ERROR("Failed to create accessibilityInfo."); + return nullptr; + } if (!accessibilityInfo->ReadFromParcel(parcel)) { HILOG_ERROR("read from parcel failed"); return nullptr; @@ -222,7 +226,11 @@ bool AccessibleActionParcel::Marshalling(Parcel &parcel) const sptr AccessibleActionParcel::Unmarshalling(Parcel& parcel) { HILOG_DEBUG(); - sptr accessibleOperation = new AccessibleActionParcel(); + sptr accessibleOperation = new(std::nothrow) AccessibleActionParcel(); + if (!accessibleOperation) { + HILOG_ERROR("Failed to create accessibleOperation."); + return nullptr; + } if (!accessibleOperation->ReadFromParcel(parcel)) { HILOG_ERROR("read from parcel failed"); return nullptr; @@ -261,7 +269,11 @@ bool RangeInfoParcel::Marshalling(Parcel &parcel) const sptr RangeInfoParcel::Unmarshalling(Parcel& parcel) { HILOG_DEBUG(); - sptr rangeInfo = new RangeInfoParcel(); + sptr rangeInfo = new(std::nothrow) RangeInfoParcel(); + if (!rangeInfo) { + HILOG_ERROR("Failed to create rangeInfo."); + return nullptr; + } if (!rangeInfo->ReadFromParcel(parcel)) { HILOG_ERROR("read from parcel failed"); return nullptr; @@ -300,7 +312,11 @@ bool GridInfoParcel::Marshalling(Parcel &parcel) const sptr GridInfoParcel::Unmarshalling(Parcel& parcel) { HILOG_DEBUG(); - sptr grid = new GridInfoParcel(); + sptr grid = new(std::nothrow) GridInfoParcel(); + if (!grid) { + HILOG_ERROR("Failed to create grid."); + return nullptr; + } if (!grid->ReadFromParcel(parcel)) { HILOG_ERROR("read from parcel failed"); return nullptr; @@ -345,7 +361,11 @@ bool GridItemInfoParcel::Marshalling(Parcel &parcel) const sptr GridItemInfoParcel::Unmarshalling(Parcel& parcel) { HILOG_DEBUG(); - sptr gridItem = new GridItemInfoParcel(); + sptr gridItem = new(std::nothrow) GridItemInfoParcel(); + if (!gridItem) { + HILOG_ERROR("Failed to create gridItem."); + return nullptr; + } if (!gridItem->ReadFromParcel(parcel)) { HILOG_ERROR("read from parcel failed"); return nullptr; @@ -384,7 +404,11 @@ bool RectParcel::Marshalling(Parcel &parcel) const sptr RectParcel::Unmarshalling(Parcel& parcel) { HILOG_DEBUG(); - sptr rect = new RectParcel(); + sptr rect = new(std::nothrow) RectParcel(); + if (!rect) { + HILOG_ERROR("Failed to create rect."); + return nullptr; + } if (!rect->ReadFromParcel(parcel)) { HILOG_ERROR("read from parcel failed"); return nullptr; diff --git a/services/interface/src/parcel/accessibility_event_info_parcel.cpp b/services/interface/src/parcel/accessibility_event_info_parcel.cpp index 465801b9..bef1fda6 100644 --- a/services/interface/src/parcel/accessibility_event_info_parcel.cpp +++ b/services/interface/src/parcel/accessibility_event_info_parcel.cpp @@ -156,7 +156,11 @@ bool AccessibilityEventInfoParcel::Marshalling(Parcel &parcel) const sptr AccessibilityEventInfoParcel::Unmarshalling(Parcel& parcel) { HILOG_DEBUG(); - sptr accessibilityEventInfo = new AccessibilityEventInfoParcel(); + sptr accessibilityEventInfo = new(std::nothrow) AccessibilityEventInfoParcel(); + if (!accessibilityEventInfo) { + HILOG_ERROR("Failed to create accessibilityEventInfo."); + return nullptr; + } if (!accessibilityEventInfo->ReadFromParcel(parcel)) { HILOG_ERROR("read from parcel failed"); return nullptr; diff --git a/services/interface/src/parcel/accessibility_gesture_inject_path_parcel.cpp b/services/interface/src/parcel/accessibility_gesture_inject_path_parcel.cpp index f6675e6e..806c3101 100644 --- a/services/interface/src/parcel/accessibility_gesture_inject_path_parcel.cpp +++ b/services/interface/src/parcel/accessibility_gesture_inject_path_parcel.cpp @@ -60,7 +60,11 @@ bool AccessibilityGestureInjectPathParcel::Marshalling(Parcel &parcel) const sptr AccessibilityGestureInjectPathParcel::Unmarshalling(Parcel &parcel) { HILOG_DEBUG(); - sptr path = new AccessibilityGestureInjectPathParcel(); + sptr path = new(std::nothrow) AccessibilityGestureInjectPathParcel(); + if (!path) { + HILOG_ERROR("Failed to create path."); + return nullptr; + } if (!path || !path->ReadFromParcel(parcel)) { HILOG_ERROR("ReadFromParcel AccessibilityGestureInjectPathParcel failed."); path = nullptr; diff --git a/services/interface/src/parcel/accessibility_window_info_parcel.cpp b/services/interface/src/parcel/accessibility_window_info_parcel.cpp index 93135fb6..922028c4 100644 --- a/services/interface/src/parcel/accessibility_window_info_parcel.cpp +++ b/services/interface/src/parcel/accessibility_window_info_parcel.cpp @@ -74,7 +74,11 @@ bool AccessibilityWindowInfoParcel::Marshalling(Parcel &parcel) const sptr AccessibilityWindowInfoParcel::Unmarshalling(Parcel &parcel) { HILOG_DEBUG(); - sptr info = new AccessibilityWindowInfoParcel(); + sptr info = new(std::nothrow) AccessibilityWindowInfoParcel(); + if (!info) { + HILOG_ERROR("Failed to create info."); + return nullptr; + } if (!info->ReadFromParcel(parcel)) { HILOG_ERROR("ReadFromParcel failed."); info = nullptr;