diff --git a/BUILD.gn b/BUILD.gn index 62f4de0da0cb8126e2b91b8232eb12bdf236af18..a0a88b05510c9b4d4ce452ec56b8ae62fb5014ba 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -11,8 +11,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -import("//base/telephony/call_manager/call_manager_aafwk.gni") -import("//base/telephony/core_service/telephony.gni") import("//build/ohos.gni") ohos_shared_library("tel_call_manager") { @@ -88,7 +86,6 @@ ohos_shared_library("tel_call_manager") { "services/telephony_interaction/src/call_status_callback.cpp", "services/telephony_interaction/src/call_status_callback_stub.cpp", "services/telephony_interaction/src/cellular_call_connection.cpp", - "services/telephony_interaction/src/cellular_call_proxy.cpp", "services/telephony_interaction/src/core_service_connection.cpp", "services/telephony_interaction/src/report_call_info_handler.cpp", "services/video/src/video_control_manager.cpp", @@ -101,8 +98,6 @@ ohos_shared_library("tel_call_manager") { "//third_party/libphonenumber/cpp/src/phonenumbers", "//third_party/protobuf/src", "//third_party/protobuf/src/google/protobuf", - "//base/telephony/call_manager/interfaces/innerkits", - "//base/telephony/sms_mms/interfaces/innerkits/", "services/audio/include", "services/audio/include/audio_state", "services/video/include", @@ -114,34 +109,13 @@ ohos_shared_library("tel_call_manager") { "services/call_report/include", "services/video/include", "services/call/call_state_observer/include", - "frameworks/native/include", - "//foundation/graphic/graphic_2d/interfaces/inner_api/surface", - "//foundation/graphic/graphic_2d/interfaces/inner_api/common", - "//drivers/peripheral/camera/interfaces/metadata/include", - "//drivers/hdf_core/framework/include/utils", - "//drivers/hdf_core/adapter/uhdf2/utils/include", - "//drivers/hdf_core/adapter/uhdf2/include/hdi", - "//drivers/peripheral/display/interfaces/include", - "//drivers/peripheral/camera/interfaces/include", - "//drivers/peripheral/camera/interfaces/include/server", - "//drivers/peripheral/camera/interfaces/include/callback/device", - "//drivers/peripheral/camera/interfaces/include/callback/operator", - "//drivers/peripheral/camera/interfaces/include/callback/host", - "${ability_runtime_inner_api_path}/dataobs_manager/include", - "${multimedia_player_framework_path}/frameworks/native/system_sound", - "${multimedia_player_framework_path}/interfaces/inner_api/native", - "${multimedia_player_framework_path}/interfaces/inner_api/native/audio_ringtone/include", - "${multimedia_player_framework_path}/services/utils/include", - "//foundation/multimedia/media_library/interfaces/innerkits/native/include", ] - configs = [ "//base/telephony/core_service/utils:telephony_log_config" ] - deps = [ - "${ability_runtime_inner_api_path}/dataobs_manager:dataobs_manager", + "frameworks/native:tel_call_manager_api", "//base/notification/distributed_notification_service/frameworks/ans:ans_innerkits", - "//base/telephony/core_service/utils:libtel_common", "//third_party/libphonenumber/cpp:phonenumber_standard", + "//third_party/protobuf:protobuf_lite_static", ] external_deps = [ @@ -149,10 +123,12 @@ ohos_shared_library("tel_call_manager") { "ability_base:want", "ability_base:zuri", "ability_runtime:ability_manager", + "ability_runtime:dataobs_manager", "audio_framework:audio_client", "audio_framework:audio_renderer", "c_utils:utils", "common_event_service:cesfwk_innerkits", + "core_service:libtel_common", "core_service:tel_core_service_api", "data_share:datashare_consumer", "eventhandler:libeventhandler", @@ -162,6 +138,7 @@ ohos_shared_library("tel_call_manager") { "ipc:ipc_core", "multimedia_camera_framework:camera_framework", "multimedia_player_framework:audio_ringtone_client", + "multimedia_player_framework:media_client", "power_manager:powermgr_client", "safwk:system_ability_fwk", "samgr:samgr_proxy", @@ -179,7 +156,7 @@ ohos_shared_library("tel_call_manager") { ldflags = [ "-flto" ] - defines += [ + defines = [ "TELEPHONY_LOG_TAG = \"CallManager\"", "LOG_DOMAIN = 0xD001F01", ] @@ -200,9 +177,16 @@ ohos_shared_library("tel_call_manager") { if (defined(global_parts_info) && defined(global_parts_info.telephony_sms_mms) && global_parts_info.telephony_sms_mms) { - deps += [ "//base/telephony/sms_mms/frameworks/native:tel_sms_mms_api" ] + external_deps += [ "sms_mms:tel_sms_mms_api" ] defines += [ "ABILITY_SMS_SUPPORT" ] } + + if (defined(global_parts_info) && + defined(global_parts_info.telephony_cellular_call) && + global_parts_info.telephony_cellular_call) { + defines += [ "CELLULAR_SUPPORT" ] + } + part_name = "call_manager" subsystem_name = "telephony" } diff --git a/bundle.json b/bundle.json index 0c28ee5a0271181c3c1af8efa4a85ce217b9f3ba..71a93ecb122bba0dd494ba7d4df2a955646eb741 100644 --- a/bundle.json +++ b/bundle.json @@ -1,6 +1,6 @@ { "name": "@ohos/call_manager", - "version": "3.1.0", + "version": "4.0", "description": "telephony call manager service", "publishAs": "code-segment", "homePage": "https://gitee.com/openharmony", @@ -26,35 +26,38 @@ "adapted_system_type": [ "standard" ], - "rom": "1.6MB", + "rom": "1639KB", "ram": "6MB", "deps": { "components": [ "ability_base", "ability_runtime", + "access_token", "bluetooth", "c_utils", "common_event_service", "core_service", + "data_share", "distributed_notification_service", "eventhandler", + "hilog", "hisysevent_native", "hitrace_native", "hiviewdfx_hilog_native", "init", "ipc", - "libuv", "audio_framework", "multimedia_camera_framework", + "multimedia_player_framework", "napi", "power_manager", - "relational_store", "safwk", "samgr", "sms_mms" ], "third_party": [ - "libphonenumber" + "libphonenumber", + "libuv" ] }, "build": { @@ -76,7 +79,9 @@ "header_base" : "//base/telephony/call_manager/interfaces/innerkits/", "header_files": [ "call_manager_client.h", - "call_manager_callback.h" + "call_manager_callback.h", + "cellular_call_interface.h", + "i_call_status_callback.h" ] }, "name":"//base/telephony/call_manager/frameworks/native:tel_call_manager_api" diff --git a/call_manager_aafwk.gni b/call_manager_aafwk.gni deleted file mode 100644 index e5d64049a161494571b0e0d188d1ab284b3b563b..0000000000000000000000000000000000000000 --- a/call_manager_aafwk.gni +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright (c) 2022 Huawei Device Co., Ltd. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -ability_runtime_path = "//foundation/ability/ability_runtime" -ability_runtime_inner_api_path = "${ability_runtime_path}/interfaces/inner_api" -ability_runtime_kits_path = "${ability_runtime_path}/frameworks/kits" -multimedia_player_framework_path = "//foundation/multimedia/player_framework" diff --git a/frameworks/js/BUILD.gn b/frameworks/js/BUILD.gn index 46de81449e62ae4366290b7519158127f637bbf6..904d232f080deb3338890ef37d7aa4a720e0778d 100644 --- a/frameworks/js/BUILD.gn +++ b/frameworks/js/BUILD.gn @@ -12,34 +12,22 @@ # limitations under the License. import("//build/ohos.gni") -SUBSYSTEM_DIR = "//base/telephony" config("call_manager_js_config") { - include_dirs = [ - "//third_party/node/src", - "$SUBSYSTEM_DIR/call_manager/frameworks/js/napi/include", - "//commonlibrary/c_utils/base/include", - "$SUBSYSTEM_DIR/core_service/frameworks/js/napi", - ] + include_dirs = [ "napi/include" ] } ohos_shared_library("call") { sources = [ - "$SUBSYSTEM_DIR/core_service/frameworks/js/napi/napi_util.cpp", "napi/src/napi_call_ability_callback.cpp", "napi/src/napi_call_manager.cpp", "napi/src/napi_call_manager_callback.cpp", "napi/src/napi_call_manager_utils.cpp", ] - configs = [ "//base/telephony/core_service/utils:telephony_log_config" ] - public_configs = [ ":call_manager_js_config" ] - deps = [ - "//foundation/arkui/napi:ace_napi", - "//third_party/libuv:uv", - ] + deps = [ "//third_party/libuv:uv" ] external_deps = [ "ability_base:base", @@ -47,8 +35,10 @@ ohos_shared_library("call") { "ability_runtime:ability_manager", "c_utils:utils", "call_manager:tel_call_manager_api", + "core_service:libtel_common", "core_service:tel_core_service_api", "init:libbegetutil", + "napi:ace_napi", ] defines = [ diff --git a/frameworks/js/napi/include/napi_call_manager.h b/frameworks/js/napi/include/napi_call_manager.h index b1502869bb56f3f6b116e58f1fd2288d5afa9cf3..aee6bcb16d359556365c357ec535a753a2d8bd72 100644 --- a/frameworks/js/napi/include/napi_call_manager.h +++ b/frameworks/js/napi/include/napi_call_manager.h @@ -129,6 +129,8 @@ public: static napi_value ReportOttCallEventInfo(napi_env env, napi_callback_info info); static napi_value HasVoiceCapability(napi_env env, napi_callback_info info); static napi_value CloseUnFinishedUssd(napi_env env, napi_callback_info info); + static napi_value InputDialerSpecialCode(napi_env env, napi_callback_info info); + static napi_value CancelMissedIncomingCallNotification(napi_env env, napi_callback_info info); private: static void RegisterCallBack(); @@ -198,6 +200,8 @@ private: static void NativeJoinConference(napi_env env, void *data); static void NativeUpdateImsCallMode(napi_env env, void *data); static void NativeCloseUnFinishedUssd(napi_env env, void *data); + static void NativeInputDialerSpecialCode(napi_env env, void *data); + static void NativeCancelMissedIncomingCallNotification(napi_env env, void *data); static bool MatchEmptyParameter(napi_env env, const napi_value parameters[], const size_t parameterCount); static bool MatchOneOptionalNumberParameter( napi_env env, const napi_value parameters[], const size_t parameterCount); diff --git a/frameworks/js/napi/src/napi_call_manager.cpp b/frameworks/js/napi/src/napi_call_manager.cpp index 0d34cb93ecdc18f685dc84388842efae5f7c625e..49cdd6cc610caac8c91cc2ad393927aadc41d61f 100644 --- a/frameworks/js/napi/src/napi_call_manager.cpp +++ b/frameworks/js/napi/src/napi_call_manager.cpp @@ -104,6 +104,7 @@ napi_value NapiCallManager::DeclareCallSupplementInterface(napi_env env, napi_va DECLARE_NAPI_FUNCTION("isImsSwitchEnabled", IsImsSwitchEnabled), DECLARE_NAPI_FUNCTION("canSetCallTransferTime", CanSetCallTransferTime), DECLARE_NAPI_FUNCTION("closeUnFinishedUssd", CloseUnFinishedUssd), + DECLARE_NAPI_FUNCTION("inputDialerSpecialCode", InputDialerSpecialCode), }; NAPI_CALL(env, napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc)); return exports; @@ -126,6 +127,7 @@ napi_value NapiCallManager::DeclareCallExtendInterface(napi_env env, napi_value DECLARE_NAPI_FUNCTION("off", ObserverOff), DECLARE_NAPI_FUNCTION("reportOttCallDetailsInfo", ReportOttCallDetailsInfo), DECLARE_NAPI_FUNCTION("reportOttCallEventInfo", ReportOttCallEventInfo), + DECLARE_NAPI_FUNCTION("cancelMissedIncomingCallNotification", CancelMissedIncomingCallNotification), }; NAPI_CALL(env, napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc)); return exports; @@ -1386,7 +1388,7 @@ bool NapiCallManager::MatchEmptyParameter(napi_env env, const napi_value paramet bool NapiCallManager::MatchOneOptionalNumberParameter( napi_env env, const napi_value parameters[], const size_t parameterCount) { - TELEPHONY_LOGI("Telephony_CallManager MatchAnswerParameters %{public}zu", parameterCount); + TELEPHONY_LOGD("Telephony_CallManager MatchAnswerParameters %{public}zu", parameterCount); switch (parameterCount) { case ZERO_VALUE: return true; @@ -1415,7 +1417,7 @@ bool NapiCallManager::MatchOneStringParameter(napi_env env, const napi_value par bool NapiCallManager::MatchOneNumberParameter(napi_env env, const napi_value parameters[], const size_t parameterCount) { - TELEPHONY_LOGI("Telephony_CallManager MatchOneNumberParameter %{public}zu", parameterCount); + TELEPHONY_LOGD("Telephony_CallManager MatchOneNumberParameter %{public}zu", parameterCount); switch (parameterCount) { case ONLY_ONE_VALUE: return NapiUtil::MatchParameters(env, parameters, { napi_number }); @@ -2576,9 +2578,58 @@ napi_value NapiCallManager::CloseUnFinishedUssd(napi_env env, napi_callback_info env, asyncContext.release(), "CloseUnFinishedUssd", NativeCloseUnFinishedUssd, NativeVoidCallBackWithErrorCode); } +napi_value NapiCallManager::InputDialerSpecialCode(napi_env env, napi_callback_info info) +{ + GET_PARAMS(env, info, VALUE_MAXIMUM_LIMIT); + if (!MatchOneStringParameter(env, argv, argc)) { + TELEPHONY_LOGE("NapiCallManager::InputDialerSpecialCode MatchOneStringParameter failed."); + NapiUtil::ThrowParameterError(env); + return nullptr; + } + + auto asyncContext = std::make_unique(); + if (asyncContext == nullptr) { + TELEPHONY_LOGE("NapiCallManager::InputDialerSpecialCode asyncContext is nullptr."); + NapiUtil::ThrowParameterError(env); + return nullptr; + } + napi_get_value_string_utf8( + env, argv[ARRAY_INDEX_FIRST], asyncContext->number, PHONE_NUMBER_MAXIMUM_LIMIT, &(asyncContext->numberLen)); + if (argc == TWO_VALUE_LIMIT) { + napi_create_reference(env, argv[ARRAY_INDEX_SECOND], DATA_LENGTH_ONE, &(asyncContext->callbackRef)); + } + return HandleAsyncWork(env, asyncContext.release(), "InputDialerSpecialCode", NativeInputDialerSpecialCode, + NativeVoidCallBackWithErrorCode); +} + +napi_value NapiCallManager::CancelMissedIncomingCallNotification(napi_env env, napi_callback_info info) +{ + GET_PARAMS(env, info, VALUE_MAXIMUM_LIMIT); + if (!MatchEmptyParameter(env, argv, argc)) { + TELEPHONY_LOGE("NapiCallManager::CancelMissedIncomingCallNotification " + "MatchEmptyParameter failed."); + NapiUtil::ThrowParameterError(env); + return nullptr; + } + + auto asyncContext = std::make_unique(); + if (asyncContext == nullptr) { + TELEPHONY_LOGE("NapiCallManager::CancelMissedIncomingCallNotification " + "asyncContext is nullptr."); + NapiUtil::ThrowParameterError(env); + return nullptr; + } + + if (argc == ONLY_ONE_VALUE) { + napi_create_reference(env, argv[ARRAY_INDEX_FIRST], DATA_LENGTH_ONE, &(asyncContext->callbackRef)); + } + return HandleAsyncWork(env, asyncContext.release(), "CancelMissedIncomingCallNotification", + NativeCancelMissedIncomingCallNotification, NativeVoidCallBackWithErrorCode); +} + napi_value NapiCallManager::HasVoiceCapability(napi_env env, napi_callback_info) { - TELEPHONY_LOGI("napi_call HasVoiceCapability"); + TELEPHONY_LOGD("napi_call HasVoiceCapability"); napi_value result = nullptr; napi_get_boolean(env, DelayedSingleton::GetInstance()->HasVoiceCapability(), &result); return result; @@ -4213,6 +4264,37 @@ void NapiCallManager::NativeCloseUnFinishedUssd(napi_env env, void *data) asyncContext->deferred = nullptr; } +void NapiCallManager::NativeInputDialerSpecialCode(napi_env env, void *data) +{ + if (data == nullptr) { + TELEPHONY_LOGE("NapiCallManager::NativeInputDialerSpecialCode data is nullptr"); + NapiUtil::ThrowParameterError(env); + return; + } + AsyncContext *asyncContext = (AsyncContext *)data; + std::string specialCode(asyncContext->number, asyncContext->numberLen); + asyncContext->errorCode = DelayedSingleton::GetInstance()->InputDialerSpecialCode(specialCode); + if (asyncContext->errorCode == TELEPHONY_SUCCESS) { + asyncContext->resolved = TELEPHONY_SUCCESS; + } +} + +void NapiCallManager::NativeCancelMissedIncomingCallNotification(napi_env env, void *data) +{ + if (data == nullptr) { + TELEPHONY_LOGE("NapiCallManager::NativeCancelMissedIncomingCallNotification data is " + "nullptr"); + NapiUtil::ThrowParameterError(env); + return; + } + AsyncContext *asyncContext = (AsyncContext *)data; + asyncContext->errorCode = + DelayedSingleton::GetInstance()->CancelMissedIncomingCallNotification(); + if (asyncContext->errorCode == TELEPHONY_SUCCESS) { + asyncContext->resolved = TELEPHONY_SUCCESS; + } +} + void NapiCallManager::RegisterCallBack() { if (registerStatus_ == TELEPHONY_SUCCESS) { diff --git a/frameworks/native/BUILD.gn b/frameworks/native/BUILD.gn index e3fc68b312d3008d7ca69c777d9d1ad45f38e927..552478451f0e651308ac7ff72835564354e415e2 100644 --- a/frameworks/native/BUILD.gn +++ b/frameworks/native/BUILD.gn @@ -11,17 +11,14 @@ # See the License for the specific language governing permissions and # limitations under the License. -import("//base/telephony/call_manager/call_manager_aafwk.gni") import("//build/ohos.gni") -SUBSYSTEM_DIR = "//base/telephony" +SUBSYSTEM_DIR = "../.." config("call_manager_config") { include_dirs = [ - "$SUBSYSTEM_DIR/call_manager/frameworks/native/include", - "$SUBSYSTEM_DIR/call_manager/interfaces/innerkits", - "$SUBSYSTEM_DIR/call_manager/utils/include", - "${ability_runtime_inner_api_path}/ability_manager/include", - "${ability_runtime_inner_api_path}/app_manager/include/appmgr", + "include", + "${SUBSYSTEM_DIR}/interfaces/innerkits", + "${SUBSYSTEM_DIR}/utils/include", ] } @@ -34,14 +31,16 @@ ohos_shared_library("tel_call_manager_api") { "src/call_manager_client.cpp", "src/call_manager_proxy.cpp", "src/call_manager_service_proxy.cpp", + "src/call_status_callback_proxy.cpp", + "src/cellular_call_proxy.cpp", ] - configs = [ "//base/telephony/core_service/utils:telephony_log_config" ] - public_configs = [ ":call_manager_config" ] external_deps = [ "ability_base:want", + "ability_runtime:ability_manager", + "ability_runtime:app_manager", "c_utils:utils", "common_event_service:cesfwk_innerkits", "core_service:tel_core_service_api", diff --git a/frameworks/native/include/call_manager_proxy.h b/frameworks/native/include/call_manager_proxy.h index 58fcb3538c55b7ffb940a83851e451bcc2773602..85c47bbcfb253b9c1632580693c42a814dfdc44f 100644 --- a/frameworks/native/include/call_manager_proxy.h +++ b/frameworks/native/include/call_manager_proxy.h @@ -99,6 +99,8 @@ public: int32_t ReportOttCallDetailsInfo(std::vector &ottVec); int32_t ReportOttCallEventInfo(OttCallEventInfo &eventInfo); int32_t CloseUnFinishedUssd(int32_t slotId); + int32_t InputDialerSpecialCode(const std::string &specialCode); + int32_t CancelMissedIncomingCallNotification(); sptr GetProxyObjectPtr(CallManagerProxyType proxyType); void OnRemoteDied(const wptr &remote); int32_t ReportAudioDeviceInfo(); diff --git a/frameworks/native/include/call_manager_service_proxy.h b/frameworks/native/include/call_manager_service_proxy.h index 369a73f5886bdd3686c71eab285619d3536b4320..6dcac66d21aee79629c8e559f5cc18389ea1c34a 100644 --- a/frameworks/native/include/call_manager_service_proxy.h +++ b/frameworks/native/include/call_manager_service_proxy.h @@ -565,6 +565,21 @@ public: */ int32_t CloseUnFinishedUssd(int32_t slotId) override; + /** + * Handle special code from dialer. + * + * @param specialCode[in], special code + * @return Returns 0 on success, others on failure. + */ + int32_t InputDialerSpecialCode(const std::string &specialCode) override; + + /** + * Cancel missed incoming call notification. + * + * @return Returns 0 on success, others on failure. + */ + int32_t CancelMissedIncomingCallNotification() override; + /** * GetProxyObjectPtr * diff --git a/frameworks/native/include/i_call_manager_service.h b/frameworks/native/include/i_call_manager_service.h index c3a20bbf91cfc05a527afc394ce5c76336775746..02d8b90f5442c45c40e8f1ce95d9b336b1595fdb 100644 --- a/frameworks/native/include/i_call_manager_service.h +++ b/frameworks/native/include/i_call_manager_service.h @@ -87,6 +87,8 @@ enum CallManagerSurfaceCode { INTERFACE_GET_PROXY_OBJECT_PTR, INTERFACE_CLOSE_UNFINISHED_USSD, INTERFACE_REPORT_AUDIO_DEVICE_INFO, + INTERFACE_INPUT_DIALER_SPECIAL_CODE, + INTERFACE_CANCEL_MISSED_INCOMING_CALL_NOTIFICATION, }; enum CallManagerProxyType { @@ -154,6 +156,8 @@ public: virtual int32_t ReportOttCallDetailsInfo(std::vector &ottVec) = 0; virtual int32_t ReportOttCallEventInfo(OttCallEventInfo &eventInfo) = 0; virtual int32_t CloseUnFinishedUssd(int32_t slotId) = 0; + virtual int32_t InputDialerSpecialCode(const std::string &specialCode) = 0; + virtual int32_t CancelMissedIncomingCallNotification() = 0; virtual sptr GetProxyObjectPtr(CallManagerProxyType proxyType) = 0; virtual int32_t ReportAudioDeviceInfo() = 0; diff --git a/frameworks/native/src/call_ability_callback_stub.cpp b/frameworks/native/src/call_ability_callback_stub.cpp index 36bcc0f9872b0cb538c75b4bc5f4ee613c546274..713fed766303e382afd4b9d4f33f4ba4702c7c56 100644 --- a/frameworks/native/src/call_ability_callback_stub.cpp +++ b/frameworks/native/src/call_ability_callback_stub.cpp @@ -48,7 +48,7 @@ int32_t CallAbilityCallbackStub::OnRemoteRequest( TELEPHONY_LOGE("descriptor checked failed"); return TELEPHONY_ERR_DESCRIPTOR_MISMATCH; } - TELEPHONY_LOGI("OnReceived, cmd = %{public}u", code); + TELEPHONY_LOGD("OnReceived, cmd = %{public}u", code); auto itFunc = memberFuncMap_.find(code); if (itFunc != memberFuncMap_.end()) { auto memberFunc = itFunc->second; diff --git a/frameworks/native/src/call_manager_client.cpp b/frameworks/native/src/call_manager_client.cpp index 6ba76dd757b9c3a7636ef8ad350cb038f9bdf3a3..5f8ddc883c5f8bd4757da61b1895f9ff01e47774 100644 --- a/frameworks/native/src/call_manager_client.cpp +++ b/frameworks/native/src/call_manager_client.cpp @@ -42,7 +42,7 @@ void CallManagerClient::Init(int32_t systemAbilityId) } g_callManagerProxy->Init(systemAbilityId); } - TELEPHONY_LOGI("CallManagerClient init success!"); + TELEPHONY_LOGD("CallManagerClient init success!"); } void CallManagerClient::UnInit() @@ -608,11 +608,29 @@ int32_t CallManagerClient::CloseUnFinishedUssd(int32_t slotId) } } +int32_t CallManagerClient::InputDialerSpecialCode(const std::string &specialCode) +{ + if (g_callManagerProxy == nullptr) { + TELEPHONY_LOGE("init first please!"); + return TELEPHONY_ERR_UNINIT; + } + return g_callManagerProxy->InputDialerSpecialCode(specialCode); +} + +int32_t CallManagerClient::CancelMissedIncomingCallNotification() +{ + if (g_callManagerProxy == nullptr) { + TELEPHONY_LOGE("init first please!"); + return TELEPHONY_ERR_UNINIT; + } + return g_callManagerProxy->CancelMissedIncomingCallNotification(); +} + bool CallManagerClient::HasVoiceCapability() { char retValue[VOICECALL_CAP_VAL_LEN + 1] = {"true"}; int retLen = GetParameter(KEY_VOICECALL_CAP.c_str(), "true", retValue, VOICECALL_CAP_VAL_LEN); - TELEPHONY_LOGI("HasVoiceCapability retValue %{public}s, retLen %{public}d", retValue, retLen); + TELEPHONY_LOGD("HasVoiceCapability retValue %{public}s, retLen %{public}d", retValue, retLen); if (strcmp(retValue, "false") == 0) { return false; } diff --git a/frameworks/native/src/call_manager_proxy.cpp b/frameworks/native/src/call_manager_proxy.cpp index 6919a2e7f9cb9ec62fb9bb05561079e5e335399f..05dc5e0ffe28f723504aeee57546b7cf38a1716b 100644 --- a/frameworks/native/src/call_manager_proxy.cpp +++ b/frameworks/native/src/call_manager_proxy.cpp @@ -90,7 +90,7 @@ void CallManagerProxy::Init(int32_t systemAbilityId) return; } initStatus_ = true; - TELEPHONY_LOGI("connected to call manager service successfully!"); + TELEPHONY_LOGD("connected to call manager service successfully!"); } #ifdef CALL_MANAGER_AUTO_START_OPTIMIZE @@ -117,9 +117,9 @@ void CallManagerProxy::CallManagerProxySubcribed::OnReceiveEvent(const EventFwk: return; } proxy->SetInitState(true); - TELEPHONY_LOGI("OnReceiveEvent connected to call manager service successfully!"); + TELEPHONY_LOGD("OnReceiveEvent connected to call manager service successfully!"); bool unsubscribeResult = EventFwk::CommonEventManager::UnSubscribeCommonEvent(shared_from_this()); - TELEPHONY_LOGI("OnReceiveEvent UnSubscribeCommonEvent unsubscribeResult: %{public}d", unsubscribeResult); + TELEPHONY_LOGD("OnReceiveEvent UnSubscribeCommonEvent unsubscribeResult: %{public}d", unsubscribeResult); } #endif @@ -163,7 +163,7 @@ int32_t CallManagerProxy::RegisterCallBack(std::unique_ptr } return TELEPHONY_ERR_REGISTER_CALLBACK_FAIL; } - TELEPHONY_LOGI("register call ability callback success!"); + TELEPHONY_LOGD("register call ability callback success!"); callAbilityCallbackPtr_->SetProcessCallback(std::move(callback)); registerStatus_ = true; return TELEPHONY_SUCCESS; @@ -195,7 +195,7 @@ int32_t CallManagerProxy::UnRegisterCallBack() callAbilityCallbackPtr_.clear(); callAbilityCallbackPtr_ = nullptr; registerStatus_ = false; - TELEPHONY_LOGI("UnRegisterCallBack success!"); + TELEPHONY_LOGD("UnRegisterCallBack success!"); return TELEPHONY_SUCCESS; } @@ -1056,6 +1056,38 @@ int32_t CallManagerProxy::CloseUnFinishedUssd(int32_t slotId) return TELEPHONY_SUCCESS; } +int32_t CallManagerProxy::InputDialerSpecialCode(const std::string &specialCode) +{ + if (ReConnectService() != TELEPHONY_SUCCESS) { + TELEPHONY_LOGE("ipc reconnect failed!"); + return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL; + } + + std::lock_guard lock(mutex_); + int32_t errCode = callManagerServicePtr_->InputDialerSpecialCode(specialCode); + if (errCode != TELEPHONY_SUCCESS) { + TELEPHONY_LOGE("InputDialerSpecialCode failed, errcode:%{public}d", errCode); + return errCode; + } + return TELEPHONY_SUCCESS; +} + +int32_t CallManagerProxy::CancelMissedIncomingCallNotification() +{ + if (ReConnectService() != TELEPHONY_SUCCESS) { + TELEPHONY_LOGE("ipc reconnect failed!"); + return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL; + } + + std::lock_guard lock(mutex_); + int32_t errCode = callManagerServicePtr_->CancelMissedIncomingCallNotification(); + if (errCode != TELEPHONY_SUCCESS) { + TELEPHONY_LOGE("CancelMissedIncomingCallNotification failed, errcode:%{public}d", errCode); + return errCode; + } + return TELEPHONY_SUCCESS; +} + sptr CallManagerProxy::GetProxyObjectPtr(CallManagerProxyType proxyType) { if (ReConnectService() != TELEPHONY_SUCCESS) { diff --git a/frameworks/native/src/call_manager_service_proxy.cpp b/frameworks/native/src/call_manager_service_proxy.cpp index 2e240cd5c196e48468143cb3ec3b3a8bf79b0f0f..0590c144d0ff3075f017a08a1309cfefae018e8a 100644 --- a/frameworks/native/src/call_manager_service_proxy.cpp +++ b/frameworks/native/src/call_manager_service_proxy.cpp @@ -1397,6 +1397,53 @@ int32_t CallManagerServiceProxy::CloseUnFinishedUssd(int32_t slotId) return replyParcel.ReadInt32(); } +int32_t CallManagerServiceProxy::InputDialerSpecialCode(const std::string &specialCode) +{ + MessageOption option; + MessageParcel dataParcel; + MessageParcel replyParcel; + if (!dataParcel.WriteInterfaceToken(CallManagerServiceProxy::GetDescriptor())) { + TELEPHONY_LOGE("write descriptor fail"); + return TELEPHONY_ERR_WRITE_DESCRIPTOR_TOKEN_FAIL; + } + auto remote = Remote(); + if (remote == nullptr) { + TELEPHONY_LOGE("function Remote() return nullptr!"); + return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL; + } + dataParcel.WriteString(specialCode); + int32_t error = remote->SendRequest(CallManagerSurfaceCode::INTERFACE_INPUT_DIALER_SPECIAL_CODE, + dataParcel, replyParcel, option); + if (error != TELEPHONY_SUCCESS) { + TELEPHONY_LOGE("Function InputDialerSpecialCode! errCode:%{public}d", error); + return error; + } + return replyParcel.ReadInt32(); +} + +int32_t CallManagerServiceProxy::CancelMissedIncomingCallNotification() +{ + MessageOption option; + MessageParcel dataParcel; + MessageParcel replyParcel; + if (!dataParcel.WriteInterfaceToken(CallManagerServiceProxy::GetDescriptor())) { + TELEPHONY_LOGE("write descriptor fail"); + return TELEPHONY_ERR_WRITE_DESCRIPTOR_TOKEN_FAIL; + } + auto remote = Remote(); + if (remote == nullptr) { + TELEPHONY_LOGE("function Remote() return nullptr!"); + return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL; + } + int32_t error = remote->SendRequest( + CallManagerSurfaceCode::INTERFACE_CANCEL_MISSED_INCOMING_CALL_NOTIFICATION, dataParcel, replyParcel, option); + if (error != TELEPHONY_SUCCESS) { + TELEPHONY_LOGE("Function CancelMissedIncomingCallNotification! errCode:%{public}d", error); + return error; + } + return replyParcel.ReadInt32(); +} + sptr CallManagerServiceProxy::GetProxyObjectPtr(CallManagerProxyType proxyType) { MessageOption option; diff --git a/services/telephony_interaction/src/call_status_callback_proxy.cpp b/frameworks/native/src/call_status_callback_proxy.cpp similarity index 100% rename from services/telephony_interaction/src/call_status_callback_proxy.cpp rename to frameworks/native/src/call_status_callback_proxy.cpp diff --git a/services/telephony_interaction/src/cellular_call_proxy.cpp b/frameworks/native/src/cellular_call_proxy.cpp similarity index 97% rename from services/telephony_interaction/src/cellular_call_proxy.cpp rename to frameworks/native/src/cellular_call_proxy.cpp index 1c9b648e70b5b807b93bed1def0e7f22bf95bd54..6c632a111bb8921ad42202983c2e68208131751d 100644 --- a/services/telephony_interaction/src/cellular_call_proxy.cpp +++ b/frameworks/native/src/cellular_call_proxy.cpp @@ -414,6 +414,34 @@ int32_t CellularCallProxy::HangUpAllConnection() return error; } +int32_t CellularCallProxy::SetReadyToCall(int32_t slotId, bool isReadyToCall) +{ + MessageOption option; + MessageParcel in; + MessageParcel out; + if (!in.WriteInterfaceToken(CellularCallProxy::GetDescriptor())) { + return TELEPHONY_ERR_WRITE_DESCRIPTOR_TOKEN_FAIL; + } + if (!in.WriteInt32(slotId)) { + return TELEPHONY_ERR_WRITE_DATA_FAIL; + } + if (!in.WriteBool(isReadyToCall)) { + return TELEPHONY_ERR_WRITE_DATA_FAIL; + } + auto remote = Remote(); + if (remote == nullptr) { + TELEPHONY_LOGE("[slot%{public}d] function Remote() return nullptr!", slotId); + return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL; + } + int32_t error = + remote->SendRequest(static_cast(OperationType::SET_READY_TO_CALL), in, out, option); + if (error == ERR_NONE) { + TELEPHONY_LOGE("Function SetReadyToCall! errCode:%{public}d", error); + return TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL; + } + return out.ReadInt32(); +} + int32_t CellularCallProxy::HangUpAllConnection(int32_t slotId) { return TELEPHONY_ERR_SUCCESS; diff --git a/interfaces/innerkits/call_manager_client.h b/interfaces/innerkits/call_manager_client.h index 62bbda48e64de275367bd1395948ca3476c5872c..122cbaa61b068e39ad5fd489b9532b364f86854e 100644 --- a/interfaces/innerkits/call_manager_client.h +++ b/interfaces/innerkits/call_manager_client.h @@ -84,6 +84,13 @@ public: int32_t ReportOttCallDetailsInfo(std::vector &ottVec); int32_t ReportOttCallEventInfo(OttCallEventInfo &eventInfo); int32_t CloseUnFinishedUssd(int32_t slotId); + int32_t InputDialerSpecialCode(const std::string &specialCode); + /** + * Cancel missed incoming call notification. + * + * @return Returns 0 on success, others on failure. + */ + int32_t CancelMissedIncomingCallNotification(); bool HasVoiceCapability(); int32_t ReportAudioDeviceInfo(); }; diff --git a/services/telephony_interaction/include/call_status_callback_proxy.h b/interfaces/innerkits/call_status_callback_proxy.h similarity index 100% rename from services/telephony_interaction/include/call_status_callback_proxy.h rename to interfaces/innerkits/call_status_callback_proxy.h diff --git a/services/telephony_interaction/include/cellular_call_interface.h b/interfaces/innerkits/cellular_call_interface.h similarity index 99% rename from services/telephony_interaction/include/cellular_call_interface.h rename to interfaces/innerkits/cellular_call_interface.h index c9ce8e8b20d6e82db0c265e1d2466ccab7a9bdfa..455da328696043118516e4af82dbafb5567aecbe 100644 --- a/services/telephony_interaction/include/cellular_call_interface.h +++ b/interfaces/innerkits/cellular_call_interface.h @@ -40,6 +40,7 @@ public: INVITE_TO_CONFERENCE, KICK_OUT_CONFERENCE, HANG_UP_ALL_CONNECTION, + SET_READY_TO_CALL, UPDATE_CALL_MEDIA_MODE, REGISTER_CALLBACK, UNREGISTER_CALLBACK, @@ -194,11 +195,13 @@ public: /** * Hang Up All Connection. * - *@param slotId + * @param slotId * @return Returns TELEPHONY_SUCCESS on success, others on failure. */ virtual int32_t HangUpAllConnection(int32_t slotId) = 0; + virtual int32_t SetReadyToCall(int32_t slotId, bool isReadyToCall) = 0; + /** * IMS Update Call Media Mode * diff --git a/services/telephony_interaction/include/cellular_call_proxy.h b/interfaces/innerkits/cellular_call_proxy.h similarity index 99% rename from services/telephony_interaction/include/cellular_call_proxy.h rename to interfaces/innerkits/cellular_call_proxy.h index b04b1d84a5d19ab3118f789a0d8890c103efad58..31a5ec9cb1e67fdae8fb02bf69f6b38bae1e7fa9 100644 --- a/services/telephony_interaction/include/cellular_call_proxy.h +++ b/interfaces/innerkits/cellular_call_proxy.h @@ -153,6 +153,8 @@ public: */ int32_t HangUpAllConnection(int32_t slotId) override; + int32_t SetReadyToCall(int32_t slotId, bool isReadyToCall) override; + /** * IMS Update Call Media Mode * diff --git a/services/telephony_interaction/include/i_call_status_callback.h b/interfaces/innerkits/i_call_status_callback.h similarity index 100% rename from services/telephony_interaction/include/i_call_status_callback.h rename to interfaces/innerkits/i_call_status_callback.h diff --git a/interfaces/kits/js/@ohos.telephony.call.d.ts b/interfaces/kits/js/@ohos.telephony.call.d.ts index 7c69402210e3d85895b87611a3988866c0d53088..cb38d54b326070fcaa7107300361250c3590105b 100644 --- a/interfaces/kits/js/@ohos.telephony.call.d.ts +++ b/interfaces/kits/js/@ohos.telephony.call.d.ts @@ -42,19 +42,62 @@ declare namespace call { * Makes a call. * * @permission ohos.permission.PLACE_CALL - * @param phoneNumber Indicates the called number. - * @param options Indicates additional information carried in the call. - * @throws {BusinessError} 201 - Permission denied. - * @throws {BusinessError} 401 - Parameter error. - * @throws {BusinessError} 8300001 - Invalid parameter value. - * @throws {BusinessError} 8300002 - Operation failed. Cannot connect to service. - * @throws {BusinessError} 8300003 - System internal error. - * @throws {BusinessError} 8300999 - Unknown error code. + * @param { string } phoneNumber - Indicates the called number. + * @param { AsyncCallback } callback - The callback of dialCall. + * @throws { BusinessError } 201 - Permission denied. + * @throws { BusinessError } 202 - Non-system applications use system APIs. + * @throws { BusinessError } 401 - Parameter error. + * @throws { BusinessError } 8300001 - Invalid parameter value. + * @throws { BusinessError } 8300002 - Operation failed. Cannot connect to service. + * @throws { BusinessError } 8300003 - System internal error. + * @throws { BusinessError } 8300005 - Airplane mode is on. + * @throws { BusinessError } 8300999 - Unknown error code. + * @syscap SystemCapability.Telephony.CallManager * @systemapi Hide this for inner system use. * @since 9 */ function dialCall(phoneNumber: string, callback: AsyncCallback): void; + + /** + * Makes a call. + * + * @permission ohos.permission.PLACE_CALL + * @param { string } phoneNumber - Indicates the called number. + * @param { DialCallOptions } options - Indicates additional information carried in the call. + * @param { AsyncCallback } callback - The callback of dialCall. + * @throws { BusinessError } 201 - Permission denied. + * @throws { BusinessError } 202 - Non-system applications use system APIs. + * @throws { BusinessError } 401 - Parameter error. + * @throws { BusinessError } 8300001 - Invalid parameter value. + * @throws { BusinessError } 8300002 - Operation failed. Cannot connect to service. + * @throws { BusinessError } 8300003 - System internal error. + * @throws { BusinessError } 8300005 - Airplane mode is on. + * @throws { BusinessError } 8300999 - Unknown error code. + * @syscap SystemCapability.Telephony.CallManager + * @systemapi Hide this for inner system use. + * @since 9 + */ function dialCall(phoneNumber: string, options: DialCallOptions, callback: AsyncCallback): void; + + /** + * Makes a call. + * + * @permission ohos.permission.PLACE_CALL + * @param { string } phoneNumber - Indicates the called number. + * @param { DialCallOptions } options - Indicates additional information carried in the call. + * @returns { Promise } The promise returned by the dialCall. + * @throws { BusinessError } 201 - Permission denied. + * @throws { BusinessError } 202 - Non-system applications use system APIs. + * @throws { BusinessError } 401 - Parameter error. + * @throws { BusinessError } 8300001 - Invalid parameter value. + * @throws { BusinessError } 8300002 - Operation failed. Cannot connect to service. + * @throws { BusinessError } 8300003 - System internal error. + * @throws { BusinessError } 8300005 - Airplane mode is on. + * @throws { BusinessError } 8300999 - Unknown error code. + * @syscap SystemCapability.Telephony.CallManager + * @systemapi Hide this for inner system use. + * @since 9 + */ function dialCall(phoneNumber: string, options?: DialCallOptions): Promise; /** @@ -964,6 +1007,81 @@ declare namespace call { function closeUnFinishedUssd(slotId: number): Promise; /** + * Handle special code from dialer. + * + * @permission ohos.permission.PLACE_CALL + * @param { string } inputCode - Indicates the special code entered. + * @param { AsyncCallback } callback - The callback of inputDialerSpecialCode. + * @throws { BusinessError } 201 - Permission denied. + * @throws { BusinessError } 202 - Non-system applications use system APIs. + * @throws { BusinessError } 401 - Parameter error. + * @throws { BusinessError } 8300001 - Invalid parameter value. + * @throws { BusinessError } 8300002 - Operation failed. Cannot connect to service. + * @throws { BusinessError } 8300003 - System internal error. + * @systemapi Hide this for inner system use. + * @since 10 + */ + function inputDialerSpecialCode(inputCode: string, callback: AsyncCallback): void; + + /** + * Handle special code from dialer. + * + * @permission ohos.permission.PLACE_CALL + * @param { string } inputCode - Indicates the special code entered. + * @returns { Promise } The promise returned by the function. + * @throws { BusinessError } 201 - Permission denied. + * @throws { BusinessError } 202 - Non-system applications use system APIs. + * @throws { BusinessError } 401 - Parameter error. + * @throws { BusinessError } 8300001 - Invalid parameter value. + * @throws { BusinessError } 8300002 - Operation failed. Cannot connect to service. + * @throws { BusinessError } 8300003 - System internal error. + * @systemapi Hide this for inner system use. + * @since 10 + */ + function inputDialerSpecialCode(inputCode: string): Promise; + + /** + * Cancel missed incoming call notification. + * + * @permission ohos.permission.SET_TELEPHONY_STATE + * @permission ohos.permission.READ_CALL_LOG + * @permission ohos.permission.WRITE_CALL_LOG + * @param { AsyncCallback } callback - The callback of cancelMissedIncomingCallNotification. + * @throws { BusinessError } 201 - Permission denied. + * @throws { BusinessError } 202 - Non-system applications use system APIs. + * @throws { BusinessError } 401 - Parameter error. + * @throws { BusinessError } 8300002 - Operation failed. Cannot connect to service. + * @throws { BusinessError } 8300003 - System internal error. + * @throws { BusinessError } 8300999 - Unknown error code. + * @syscap SystemCapability.Telephony.CallManager + * @systemapi Hide this for inner system use. + * @since 10 + */ + function cancelMissedIncomingCallNotification(callback: AsyncCallback): void; + + /** + * Cancel missed incoming call notification. + * + * @permission ohos.permission.SET_TELEPHONY_STATE + * @permission ohos.permission.READ_CALL_LOG + * @permission ohos.permission.WRITE_CALL_LOG + * @returns { Promise } The promise returned by the function.. + * @throws { BusinessError } 201 - Permission denied. + * @throws { BusinessError } 202 - Non-system applications use system APIs. + * @throws { BusinessError } 8300002 - Operation failed. Cannot connect to service. + * @throws { BusinessError } 8300003 - System internal error. + * @throws { BusinessError } 8300999 - Unknown error code. + * @syscap SystemCapability.Telephony.CallManager + * @systemapi Hide this for inner system use. + * @since 10 + */ + function cancelMissedIncomingCallNotification(): Promise; + + /** + * Indicates the mode of the ims call. + * + * @enum { number } + * @syscap SystemCapability.Telephony.CallManager * @systemapi Hide this for inner system use. * @since 8 */ diff --git a/resource/audio/BUILD.gn b/resource/audio/BUILD.gn index 4af5d719b21f597ba9530b2b2fbe2551e551ac43..255a33a44547cf2d9c78855dc1261ee773e0ffaf 100644 --- a/resource/audio/BUILD.gn +++ b/resource/audio/BUILD.gn @@ -14,7 +14,7 @@ import("//build/ohos.gni") ## Install ring.wav to /system/etc/telephony/rings/ring.wav ohos_prebuilt_etc("ring.wav") { - source = "//base/telephony/call_manager/resource/audio/ring.wav" + source = "ring.wav" module_install_dir = "etc/telephony/rings/" part_name = "call_manager" subsystem_name = "telephony" diff --git a/services/audio/include/audio_proxy.h b/services/audio/include/audio_proxy.h index f35ee4eb48f683a894d2e39a1054553405481acf..743aa668eb28b9826ffd4d3577b19654d8b7cd3b 100644 --- a/services/audio/include/audio_proxy.h +++ b/services/audio/include/audio_proxy.h @@ -22,7 +22,7 @@ #include "audio_manager_proxy.h" #include "singleton.h" -#include "audio_ringtone_manager.h" +#include "./audio_ringtone/include/iringtone_sound_manager.h" #include "call_manager_errors.h" @@ -79,7 +79,7 @@ private: const std::string defaultTonePath_ = "/system/etc/telephony/tones/tone.wav"; const std::string defaultDtmfPath_ = "/system/etc/telephony/dtmfs/dtmf.wav"; std::shared_ptr context_; - std::unique_ptr audioSoundManager_; + std::unique_ptr audioSoundManager_; std::shared_ptr deviceCallback_; bool isWiredHeadsetConnected_ = false; }; diff --git a/services/audio/src/audio_proxy.cpp b/services/audio/src/audio_proxy.cpp index 888f28fad8f2602549d03cbc4e0e8fbeb34f36dc..fc00b83c70450c99f921962eb74a55013d932d73 100644 --- a/services/audio/src/audio_proxy.cpp +++ b/services/audio/src/audio_proxy.cpp @@ -22,7 +22,7 @@ namespace OHOS { namespace Telephony { AudioProxy::AudioProxy() - : context_(nullptr), audioSoundManager_(std::make_unique()), + : context_(nullptr), audioSoundManager_(Media::RingtoneFactory::CreateRingtoneManager()), deviceCallback_(std::make_shared()) {} diff --git a/services/bluetooth/src/bluetooth_call_stub.cpp b/services/bluetooth/src/bluetooth_call_stub.cpp index 0f537cda740f0333ffaea8dd11b0ce59551ede71..3317d06c7a795ff94a7d12931e01697404220679 100644 --- a/services/bluetooth/src/bluetooth_call_stub.cpp +++ b/services/bluetooth/src/bluetooth_call_stub.cpp @@ -57,7 +57,7 @@ int32_t BluetoothCallStub::OnRemoteRequest(uint32_t code, MessageParcel &data, M TELEPHONY_LOGE("descriptor checked fail !"); return TELEPHONY_ERR_DESCRIPTOR_MISMATCH; } - TELEPHONY_LOGI("OnReceived, cmd = %{public}u", code); + TELEPHONY_LOGD("OnReceived, cmd = %{public}u", code); auto itFunc = memberFuncMap_.find(code); if (itFunc != memberFuncMap_.end()) { auto memberFunc = itFunc->second; diff --git a/services/call/call_state_observer/include/call_data_base_helper.h b/services/call/call_state_observer/include/call_data_base_helper.h index 60715b3560713779da0b99835b807ad24e931451..a1fcecf553d3e3f8740412359682118023b1c3f3 100644 --- a/services/call/call_state_observer/include/call_data_base_helper.h +++ b/services/call/call_state_observer/include/call_data_base_helper.h @@ -53,6 +53,11 @@ constexpr const char *CALL_CONTENT_TYPE = "content_type"; constexpr const char *CALL_PHONE = "phone"; constexpr const char *CALL_SLOT_ID = "slot_id"; +enum class CallLogReadState { + CALL_IS_UNREAD, + CALL_IS_READ, +}; + class CallDataRdbObserver : public AAFwk::DataAbilityObserverStub { public: CallDataRdbObserver(std::vector *phones); @@ -71,7 +76,13 @@ public: bool Insert(DataShare::DataShareValuesBucket &values); bool Query(std::vector *phones, DataShare::DataSharePredicates &predicates); bool Query(ContactInfo &contactInfo, DataShare::DataSharePredicates &predicates); + bool Update(DataShare::DataSharePredicates &predicates, DataShare::DataShareValuesBucket &values); bool Delete(DataShare::DataSharePredicates &predicates); + bool QueryCallLog(std::map &phonesAndUnreadCountMap, + DataShare::DataSharePredicates &predicates); + +public: + const int16_t CALL_LOG_DEFAULT_COUNT = 1; private: sptr callDataRdbObserverPtr_; @@ -79,4 +90,4 @@ private: }; } // namespace Telephony } // namespace OHOS -#endif \ No newline at end of file +#endif diff --git a/services/call/call_state_observer/include/call_records_handler.h b/services/call/call_state_observer/include/call_records_handler.h index 10d9525268319b99b5481b0c03b5eaf94f5e0333..6d988776af22cec6b87a7e0400b6448e2f052f09 100644 --- a/services/call/call_state_observer/include/call_records_handler.h +++ b/services/call/call_state_observer/include/call_records_handler.h @@ -23,6 +23,7 @@ #include "call_status_manager.h" #include "event_handler.h" #include "event_runner.h" +#include "missed_call_notification.h" #include "singleton.h" namespace OHOS { @@ -32,12 +33,15 @@ public: CallRecordsHandler(const std::shared_ptr &runner); virtual ~CallRecordsHandler() = default; void ProcessEvent(const AppExecFwk::InnerEvent::Pointer &event); + int32_t QueryAndNotifyUnReadMissedCall(); + int32_t AddCallLogInfo(CallRecordInfo &info); private: void QueryCallerInfo(ContactInfo &contactInfo, std::string phoneNumber); private: std::shared_ptr callDataPtr_; + std::shared_ptr missedCallNotification_; }; class CallRecordsHandlerService : public std::enable_shared_from_this { @@ -45,8 +49,13 @@ class CallRecordsHandlerService : public std::enable_shared_from_this &callObjectPtr, TelCallState priorState, TelCallState nextState) override; void AddOneCallRecord(CallAttributeInfo &info); void AddOneCallRecord(sptr call, CallAnswerType answerType); + int32_t CancelMissedIncomingCallNotification(); + int32_t QueryUnReadMissedCallLog(); private: std::shared_ptr callRecordsHandlerServerPtr_; diff --git a/services/call/call_state_observer/include/missed_call_notification.h b/services/call/call_state_observer/include/missed_call_notification.h index a19a57920acee89459fd1bb3fbb28eab69844548..eb73d6419bf486f16c227fc66d00c367d6a38682 100644 --- a/services/call/call_state_observer/include/missed_call_notification.h +++ b/services/call/call_state_observer/include/missed_call_notification.h @@ -32,6 +32,7 @@ public: void IncomingCallHungUp(sptr &callObjectPtr, bool isSendSms, std::string content) override; void CallStateUpdated(sptr &callObjectPtr, TelCallState priorState, TelCallState nextState) override; int32_t CancelMissedCallsNotification(int32_t id); + int32_t NotifyUnReadMissedCall(std::map &phoneNumAndUnreadCountMap); private: bool isIncomingCallMissed_; diff --git a/services/call/call_state_observer/src/call_data_base_helper.cpp b/services/call/call_state_observer/src/call_data_base_helper.cpp index 2d1938768bccb32f709bc92459bbfe4d3234a52b..6bfb687a9f120b6530899f68324636bb969f400f 100644 --- a/services/call/call_state_observer/src/call_data_base_helper.cpp +++ b/services/call/call_state_observer/src/call_data_base_helper.cpp @@ -13,12 +13,10 @@ * limitations under the License. */ +#include "ability_context.h" #include "call_data_base_helper.h" - +#include "call_manager_errors.h" #include "iservice_registry.h" - -#include "ability_context.h" - #include "telephony_log_wrapper.h" namespace OHOS { @@ -181,6 +179,55 @@ bool CallDataBaseHelper::Query(ContactInfo &contactInfo, DataShare::DataSharePre return true; } +bool CallDataBaseHelper::QueryCallLog( + std::map &phoneNumAndUnreadCountMap, DataShare::DataSharePredicates &predicates) +{ + std::shared_ptr helper = CreateDataShareHelper(CALLLOG_URI); + if (helper == nullptr) { + TELEPHONY_LOGE("helper is nullptr!"); + return false; + } + Uri uri(CALL_SUBSECTION); + std::vector columns; + columns.push_back(CALL_PHONE_NUMBER); + auto resultSet = helper->Query(uri, predicates, columns); + helper->Release(); + if (resultSet == nullptr) { + return false; + } + int32_t operationResult = resultSet->GoToFirstRow(); + while (operationResult == TELEPHONY_SUCCESS) { + std::string phoneNumber = ""; + int32_t columnIndex = 0; + resultSet->GetColumnIndex(CALL_PHONE_NUMBER, columnIndex); + operationResult = resultSet->GetString(columnIndex, phoneNumber); + if (operationResult == TELEPHONY_SUCCESS && (!phoneNumber.empty())) { + auto iter = phoneNumAndUnreadCountMap.find(phoneNumber); + if (iter != phoneNumAndUnreadCountMap.end()) { + iter->second++; + } else { + phoneNumAndUnreadCountMap.insert( + std::map::value_type(phoneNumber, CALL_LOG_DEFAULT_COUNT)); + } + } + operationResult = resultSet->GoToNextRow(); + } + resultSet->Close(); + TELEPHONY_LOGI("QueryCallLog end"); + return true; +} + +bool CallDataBaseHelper::Update(DataShare::DataSharePredicates &predicates, DataShare::DataShareValuesBucket &values) +{ + std::shared_ptr helper = CreateDataShareHelper(CALLLOG_URI); + if (helper == nullptr) { + TELEPHONY_LOGE("helper is nullptr"); + return true; + } + Uri uri(CALL_SUBSECTION); + return helper->Update(uri, predicates, values); +} + bool CallDataBaseHelper::Delete(DataShare::DataSharePredicates &predicates) { std::shared_ptr helper = CreateDataShareHelper(CALLLOG_URI); @@ -192,4 +239,4 @@ bool CallDataBaseHelper::Delete(DataShare::DataSharePredicates &predicates) return helper->Delete(uri, predicates); } } // namespace Telephony -} // namespace OHOS \ No newline at end of file +} // namespace OHOS diff --git a/services/call/call_state_observer/src/call_records_handler.cpp b/services/call/call_state_observer/src/call_records_handler.cpp index 2fa793b3074266b09a423d48b85b776c9cfb0447..de891dac62596d327ff5ad43be61572e24fbce22 100644 --- a/services/call/call_state_observer/src/call_records_handler.cpp +++ b/services/call/call_state_observer/src/call_records_handler.cpp @@ -16,6 +16,7 @@ #include "call_records_handler.h" #include "call_manager_errors.h" +#include "call_manager_inner_type.h" namespace OHOS { namespace Telephony { @@ -41,46 +42,17 @@ void CallRecordsHandler::ProcessEvent(const AppExecFwk::InnerEvent::Pointer &eve return; } CallRecordInfo info = *object; - if (callDataPtr_ == nullptr) { - TELEPHONY_LOGE("callDataPtr_ is nullptr!"); - return; + int32_t ret = AddCallLogInfo(info); + if (ret != TELEPHONY_SUCCESS) { + TELEPHONY_LOGE("Add Call log fail!"); } - ContactInfo contactInfo = { - .name = "", - .number = "", - .isContacterExists = false, - .ringtonePath = "", - .isSendToVoicemail = false, - .isEcc = false, - .isVoiceMail = false, - }; - QueryCallerInfo(contactInfo, std::string(info.phoneNumber)); - - DataShare::DataShareValuesBucket bucket; - TELEPHONY_LOGI("callLog Insert begin"); - bucket.Put(CALL_PHONE_NUMBER, std::string(info.phoneNumber)); - bucket.Put(CALL_DISPLAY_NAME, std::string(contactInfo.name)); - bucket.Put(CALL_DIRECTION, static_cast(info.directionType)); - bucket.Put(CALL_VOICEMAIL_URI, std::string("")); - bucket.Put(CALL_SIM_TYPE, 0); - bucket.Put(CALL_IS_HD, static_cast(info.callType)); - bucket.Put(CALL_IS_READ, 0); - bucket.Put(CALL_RING_DURATION, static_cast(info.ringDuration)); - bucket.Put(CALL_TALK_DURATION, static_cast(info.callDuration)); - bucket.Put(CALL_FORMAT_NUMBER, std::string(info.formattedPhoneNumber)); - bucket.Put(CALL_QUICKSEARCH_KEY, std::string("")); - bucket.Put(CALL_NUMBER_TYPE, 0); - bucket.Put(CALL_NUMBER_TYPE_NAME, std::string("")); - bucket.Put(CALL_BEGIN_TIME, info.callBeginTime); - bucket.Put(CALL_END_TIME, info.callEndTime); - bucket.Put(CALL_ANSWER_STATE, static_cast(info.answerType)); - time_t timeStamp = time(0); - bucket.Put(CALL_CREATE_TIME, timeStamp); - bucket.Put(CALL_NUMBER_LOCATION, std::string("")); - bucket.Put(CALL_PHOTO_ID, 0); - bucket.Put(CALL_SLOT_ID, info.slotId); - callDataPtr_->Insert(bucket); - return; + } else if (event->GetInnerEventId() == CallRecordsHandlerService::HANDLER_QUERY_UNREAD_MISSED_CALL_LOG) { + int32_t ret = QueryAndNotifyUnReadMissedCall(); + if (ret != TELEPHONY_SUCCESS) { + TELEPHONY_LOGE("Query or notify unread missed call fail!"); + } + } else { + TELEPHONY_LOGI("Above all event are not handled."); } } @@ -101,6 +73,85 @@ void CallRecordsHandler::QueryCallerInfo(ContactInfo &contactInfo, std::string p } } +int32_t CallRecordsHandler::AddCallLogInfo(CallRecordInfo &info) +{ + if (callDataPtr_ == nullptr) { + TELEPHONY_LOGE("callDataPtr is nullptr!"); + return TELEPHONY_ERR_LOCAL_PTR_NULL; + } + ContactInfo contactInfo = { + .name = "", + .number = "", + .isContacterExists = false, + .ringtonePath = "", + .isSendToVoicemail = false, + .isEcc = false, + .isVoiceMail = false, + }; + QueryCallerInfo(contactInfo, std::string(info.phoneNumber)); + + DataShare::DataShareValuesBucket bucket; + TELEPHONY_LOGI("callLog Insert begin"); + bucket.Put(CALL_PHONE_NUMBER, std::string(info.phoneNumber)); + bucket.Put(CALL_DISPLAY_NAME, std::string(contactInfo.name)); + bucket.Put(CALL_DIRECTION, static_cast(info.directionType)); + bucket.Put(CALL_VOICEMAIL_URI, std::string("")); + bucket.Put(CALL_SIM_TYPE, 0); + bucket.Put(CALL_IS_HD, static_cast(info.callType)); + bucket.Put(CALL_IS_READ, 0); + bucket.Put(CALL_RING_DURATION, static_cast(info.ringDuration)); + bucket.Put(CALL_TALK_DURATION, static_cast(info.callDuration)); + bucket.Put(CALL_FORMAT_NUMBER, std::string(info.formattedPhoneNumber)); + bucket.Put(CALL_QUICKSEARCH_KEY, std::string("")); + bucket.Put(CALL_NUMBER_TYPE, 0); + bucket.Put(CALL_NUMBER_TYPE_NAME, std::string("")); + bucket.Put(CALL_BEGIN_TIME, info.callBeginTime); + bucket.Put(CALL_END_TIME, info.callEndTime); + bucket.Put(CALL_ANSWER_STATE, static_cast(info.answerType)); + time_t timeStamp = time(0); + bucket.Put(CALL_CREATE_TIME, timeStamp); + bucket.Put(CALL_NUMBER_LOCATION, std::string("")); + bucket.Put(CALL_PHOTO_ID, 0); + bucket.Put(CALL_SLOT_ID, info.slotId); + bool ret = callDataPtr_->Insert(bucket); + if (!ret) { + TELEPHONY_LOGE("Add call log database fail!"); + return TELEPHONY_ERR_DATABASE_WRITE_FAIL; + } + return TELEPHONY_SUCCESS; +} + +int32_t CallRecordsHandler::QueryAndNotifyUnReadMissedCall() +{ + if (callDataPtr_ == nullptr) { + TELEPHONY_LOGE("callDataPtr is nullptr!"); + return TELEPHONY_ERR_LOCAL_PTR_NULL; + } + missedCallNotification_ = std::make_shared(); + if (missedCallNotification_ == nullptr) { + TELEPHONY_LOGE("missedCallNotification_ is null!"); + return TELEPHONY_ERR_LOCAL_PTR_NULL; + } + DataShare::DataSharePredicates predicates; + std::map phoneNumAndUnreadCountMap; + predicates.EqualTo(CALL_IS_READ, static_cast(CallLogReadState::CALL_IS_UNREAD)); + predicates.And(); + predicates.EqualTo(CALL_DIRECTION, static_cast(CallDirection::CALL_DIRECTION_IN)); + predicates.And(); + predicates.EqualTo(CALL_ANSWER_STATE, static_cast(CallAnswerType::CALL_ANSWER_MISSED)); + bool ret = callDataPtr_->QueryCallLog(phoneNumAndUnreadCountMap, predicates); + if (phoneNumAndUnreadCountMap.empty() || !ret) { + TELEPHONY_LOGE("Don't have unread missed call in call log!"); + return TELEPHONY_ERR_DATABASE_READ_FAIL; + } + int32_t result = missedCallNotification_->NotifyUnReadMissedCall(phoneNumAndUnreadCountMap); + if (result != TELEPHONY_SUCCESS) { + TELEPHONY_LOGE("Notify unread missed call error!"); + return TELEPHONY_ERR_PUBLISH_BROADCAST_FAIL; + } + return TELEPHONY_SUCCESS; +} + CallRecordsHandlerService::CallRecordsHandlerService() : eventLoop_(nullptr), handler_(nullptr) {} CallRecordsHandlerService::~CallRecordsHandlerService() {} @@ -136,5 +187,40 @@ int32_t CallRecordsHandlerService::StoreCallRecord(const CallRecordInfo &info) handler_->SendEvent(HANDLER_ADD_CALL_RECORD_INFO, std::move(para)); return TELEPHONY_SUCCESS; } + +int32_t CallRecordsHandlerService::CancelMissedIncomingCallNotification() +{ + std::shared_ptr callDataPtr = DelayedSingleton::GetInstance(); + if (callDataPtr == nullptr) { + TELEPHONY_LOGE("callDataPtr is nullptr!"); + return TELEPHONY_ERR_LOCAL_PTR_NULL; + } + DataShare::DataSharePredicates predicates; + DataShare::DataShareValuesBucket bucket; + bucket.Put(CALL_IS_READ, static_cast(CallLogReadState::CALL_IS_READ)); + predicates.EqualTo(CALL_IS_READ, static_cast(CallLogReadState::CALL_IS_UNREAD)); + predicates.And(); + predicates.EqualTo(CALL_DIRECTION, static_cast(CallDirection::CALL_DIRECTION_IN)); + predicates.And(); + predicates.EqualTo(CALL_ANSWER_STATE, static_cast(CallAnswerType::CALL_ANSWER_MISSED)); + bool ret = callDataPtr->Update(predicates, bucket); + if (ret) { + TELEPHONY_LOGE("Update call log database fail!"); + return TELEPHONY_ERR_DATABASE_WRITE_FAIL; + } + TELEPHONY_LOGI("Update call log database success!"); + return TELEPHONY_SUCCESS; +} + +int32_t CallRecordsHandlerService::QueryUnReadMissedCallLog() +{ + if (handler_.get() == nullptr) { + TELEPHONY_LOGE("handler_ is nullptr"); + return TELEPHONY_ERR_LOCAL_PTR_NULL; + } + handler_->SendEvent(HANDLER_QUERY_UNREAD_MISSED_CALL_LOG, 0); + return TELEPHONY_SUCCESS; +} + } // namespace Telephony } // namespace OHOS diff --git a/services/call/call_state_observer/src/call_records_manager.cpp b/services/call/call_state_observer/src/call_records_manager.cpp index d901b437b90f13f0f5387081b366c07f55417359..3af6e1cc6ff97e73c8c2a98388a7673e1c7bb308 100644 --- a/services/call/call_state_observer/src/call_records_manager.cpp +++ b/services/call/call_state_observer/src/call_records_manager.cpp @@ -110,5 +110,33 @@ void CallRecordsManager::AddOneCallRecord(CallAttributeInfo &info) } callRecordsHandlerServerPtr_->StoreCallRecord(data); } + +int32_t CallRecordsManager::CancelMissedIncomingCallNotification() +{ + if (callRecordsHandlerServerPtr_ == nullptr) { + TELEPHONY_LOGE("callRecordsHandlerServerPtr_ is nullptr"); + return TELEPHONY_ERR_LOCAL_PTR_NULL; + } + int32_t ret = callRecordsHandlerServerPtr_->CancelMissedIncomingCallNotification(); + if (ret != TELEPHONY_SUCCESS) { + TELEPHONY_LOGE("CancelMissedIncomingCallNotification failed!"); + return ret; + } + return TELEPHONY_SUCCESS; +} + +int32_t CallRecordsManager::QueryUnReadMissedCallLog() +{ + if (callRecordsHandlerServerPtr_ == nullptr) { + TELEPHONY_LOGE("callRecordsHandlerServerPtr_ is nullptr"); + return TELEPHONY_ERR_LOCAL_PTR_NULL; + } + int32_t ret = callRecordsHandlerServerPtr_->QueryUnReadMissedCallLog(); + if (ret != TELEPHONY_SUCCESS) { + TELEPHONY_LOGE("QueryUnReadMissedCallLog failed!"); + return ret; + } + return TELEPHONY_SUCCESS; +} } // namespace Telephony } // namespace OHOS \ No newline at end of file diff --git a/services/call/call_state_observer/src/missed_call_notification.cpp b/services/call/call_state_observer/src/missed_call_notification.cpp index be234f0b7b337ad53ab47102f9519c22a4c67fb2..e73f5bc9607bb0edacc7952fc3a0769a8131fdc2 100644 --- a/services/call/call_state_observer/src/missed_call_notification.cpp +++ b/services/call/call_state_observer/src/missed_call_notification.cpp @@ -111,6 +111,34 @@ int32_t MissedCallNotification::CancelMissedCallsNotification(int32_t id) return TELEPHONY_SUCCESS; } +int32_t MissedCallNotification::NotifyUnReadMissedCall(std::map &phoneNumAndUnreadCountMap) +{ + AAFwk::Want want; + want.SetParam("notificationId", INCOMING_CALL_MISSED_ID); + std::vector phoneNumberList; + std::vector countList; + for (auto it = phoneNumAndUnreadCountMap.begin(); it != phoneNumAndUnreadCountMap.end(); it++) { + phoneNumberList.push_back(it->first); + countList.push_back(it->second); + } + want.SetParam("phoneNumberList", phoneNumberList); + want.SetParam("countList", countList); + want.SetAction(EventFwk::CommonEventSupport::COMMON_EVENT_INCOMING_CALL_MISSED); + EventFwk::CommonEventData data; + data.SetWant(want); + EventFwk::CommonEventPublishInfo publishInfo; + std::vector callPermissions; + callPermissions.emplace_back(Permission::GET_TELEPHONY_STATE); + publishInfo.SetSubscriberPermissions(callPermissions); + bool resultWithNumber = EventFwk::CommonEventManager::PublishCommonEvent(data, publishInfo, nullptr); + TELEPHONY_LOGI("publish unread missed call event with number result : %{public}d", resultWithNumber); + if (!resultWithNumber) { + TELEPHONY_LOGE("publish unread missed call event with number error"); + return TELEPHONY_ERR_PUBLISH_BROADCAST_FAIL; + } + return TELEPHONY_ERR_SUCCESS; +} + void MissedCallNotification::IncomingCallActivated(sptr &callObjectPtr) { if (callObjectPtr != nullptr && callObjectPtr->GetAccountNumber() == incomingCallNumber_) { @@ -127,4 +155,4 @@ void MissedCallNotification::IncomingCallHungUp(sptr &callObjectPtr, b void MissedCallNotification::CallDestroyed(const DisconnectedDetails &details) {} } // namespace Telephony -} // namespace OHOS \ No newline at end of file +} // namespace OHOS diff --git a/services/call/include/call_control_manager.h b/services/call/include/call_control_manager.h index 7258dfd8dffb8edba00b39990b518e142211bc49..ea1c62d671153e37aadd4e6269132e10a6f15374 100644 --- a/services/call/include/call_control_manager.h +++ b/services/call/include/call_control_manager.h @@ -106,6 +106,8 @@ public: int32_t CloseUnFinishedUssd(int32_t slotId); void GetDialParaInfo(DialParaInfo &info); void GetDialParaInfo(DialParaInfo &info, AppExecFwk::PacMap &extras); + int32_t CancelMissedIncomingCallNotification(); + int32_t QueryUnReadMissedCallLog(); private: void CallStateObserve(); diff --git a/services/call/include/call_request_handler.h b/services/call/include/call_request_handler.h index aca792ff23c48adf77b209d799b65c6211ed3eb1..4bb2a73402ae2fd4455ba9ead9531d1c722d285e 100644 --- a/services/call/include/call_request_handler.h +++ b/services/call/include/call_request_handler.h @@ -66,6 +66,7 @@ public: void Init(); void ProcessEvent(const AppExecFwk::InnerEvent::Pointer &event); + int32_t DialCall(); private: using CallRequestFunc = void (CallRequestHandler::*)(const AppExecFwk::InnerEvent::Pointer &event); diff --git a/services/call/include/call_request_process.h b/services/call/include/call_request_process.h index 959bceb57b215439fa6f928f38dedf9eebd182db..c9be5c663068d4a186a054b710599036bd0b12f7 100644 --- a/services/call/include/call_request_process.h +++ b/services/call/include/call_request_process.h @@ -27,7 +27,7 @@ public: CallRequestProcess(); ~CallRequestProcess(); - void DialRequest(); + int32_t DialRequest(); void AnswerRequest(int32_t callId, int32_t videoState); void RejectRequest(int32_t callId, bool isSendSms, std::string &content); void HangUpRequest(int32_t callId); @@ -42,13 +42,14 @@ public: void JoinConference(int32_t callId, std::vector &numberList); private: - void CarrierDialProcess(DialParaInfo &info); - void VoiceMailDialProcess(DialParaInfo &info); - void OttDialProcess(DialParaInfo &info); + int32_t CarrierDialProcess(DialParaInfo &info); + int32_t VoiceMailDialProcess(DialParaInfo &info); + int32_t OttDialProcess(DialParaInfo &info); int32_t UpdateImsCallMode(int32_t callId, ImsCallMode mode); int32_t PackCellularCallInfo(DialParaInfo &info, CellularCallInfo &callInfo); bool IsFdnNumber(std::vector fdnNumberList, std::string phoneNumber); int32_t UpdateCallReportInfo(const DialParaInfo &info, TelCallState state); + int32_t HandleDialFail(); private: std::mutex mutex_; diff --git a/services/call/src/call_control_manager.cpp b/services/call/src/call_control_manager.cpp index ee30d52454ebb72af851df08abf20c0d9b103a01..2814a43aabdfc82f230bea03a6f9cd3a51a71918 100644 --- a/services/call/src/call_control_manager.cpp +++ b/services/call/src/call_control_manager.cpp @@ -121,6 +121,7 @@ int32_t CallControlManager::DialCall(std::u16string &number, AppExecFwk::PacMap TELEPHONY_LOGE("dial policy result:%{public}d", ret); return ret; } + TELEPHONY_LOGI("DiaCallControlManager::DialCalllCall 124"); // temporarily save dial information { std::lock_guard lock(mutex_); @@ -965,6 +966,26 @@ void CallControlManager::GetDialParaInfo(DialParaInfo &info, AppExecFwk::PacMap extras = extras_; } +int32_t CallControlManager::CancelMissedIncomingCallNotification() +{ + int32_t ret = DelayedSingleton::GetInstance()->CancelMissedIncomingCallNotification(); + if (ret != TELEPHONY_SUCCESS) { + TELEPHONY_LOGE("CancelMissedIncomingCallNotification failed!"); + return ret; + } + return TELEPHONY_SUCCESS; +} + +int32_t CallControlManager::QueryUnReadMissedCallLog() +{ + int32_t ret = DelayedSingleton::GetInstance()->QueryUnReadMissedCallLog(); + if (ret != TELEPHONY_SUCCESS) { + TELEPHONY_LOGE("QueryUnReadMissedCallLog failed!"); + return ret; + } + return TELEPHONY_SUCCESS; +} + void CallControlManager::CallStateObserve() { if (callStateListenerPtr_ == nullptr) { diff --git a/services/call/src/call_request_handler.cpp b/services/call/src/call_request_handler.cpp index 85bbd4670ef07b3477eb9b9418c65f97f75a2680..080da76dfa3104faccab107ff7cb1d7d320d9b04 100644 --- a/services/call/src/call_request_handler.cpp +++ b/services/call/src/call_request_handler.cpp @@ -76,6 +76,15 @@ void CallRequestHandler::ProcessEvent(const AppExecFwk::InnerEvent::Pointer &eve } } +int32_t CallRequestHandler::DialCall() +{ + if (callRequestProcessPtr_ == nullptr) { + TELEPHONY_LOGE("callRequestProcessPtr_ is nullptr"); + return TELEPHONY_ERR_LOCAL_PTR_NULL; + } + return callRequestProcessPtr_->DialRequest(); +} + void CallRequestHandler::DialCallEvent(const AppExecFwk::InnerEvent::Pointer &event) { if (event == nullptr) { @@ -350,11 +359,7 @@ int32_t CallRequestHandlerService::DialCall() TELEPHONY_LOGE("handler_ is nullptr"); return TELEPHONY_ERR_LOCAL_PTR_NULL; } - if (!handler_->SendEvent(HANDLER_DIAL_CALL_REQUEST)) { - TELEPHONY_LOGE("send dial event failed!"); - return CALL_ERR_SYSTEM_EVENT_HANDLE_FAILURE; - } - return TELEPHONY_SUCCESS; + return handler_->DialCall(); } int32_t CallRequestHandlerService::AnswerCall(int32_t callId, int32_t videoState) diff --git a/services/call/src/call_request_process.cpp b/services/call/src/call_request_process.cpp index 2b0b28b45bc3de86c56a82c4472e1e06e61dc626..d1e858aa8fd0d72772441f795bd9a662d3c93cf1 100644 --- a/services/call/src/call_request_process.cpp +++ b/services/call/src/call_request_process.cpp @@ -35,7 +35,7 @@ CallRequestProcess::CallRequestProcess() {} CallRequestProcess::~CallRequestProcess() {} -void CallRequestProcess::DialRequest() +int32_t CallRequestProcess::DialRequest() { DialParaInfo info; DelayedSingleton::GetInstance()->GetDialParaInfo(info); @@ -44,11 +44,11 @@ void CallRequestProcess::DialRequest() CallManagerHisysevent::WriteDialCallFaultEvent(info.accountId, static_cast(info.callType), static_cast(info.videoState), static_cast(CallErrorCode::CALL_ERROR_DEVICE_NOT_DIALING), "the device is not dialing"); - return; + return CALL_ERR_ILLEGAL_CALL_OPERATION; } if (info.number.length() > static_cast(kMaxNumberLen)) { TELEPHONY_LOGE("Number out of limit!"); - return; + return CALL_ERR_NUMBER_OUT_OF_RANGE; } if (info.dialType == DialType::DIAL_CARRIER_TYPE && DelayedSingleton::GetInstance()->IsFdnEnabled(info.accountId)) { @@ -64,24 +64,26 @@ void CallRequestProcess::DialRequest() CallManagerHisysevent::WriteDialCallFaultEvent(info.accountId, static_cast(info.callType), static_cast(info.videoState), static_cast(CallErrorCode::CALL_ERROR_INVALID_FDN_NUMBER), "invalid fdn number!"); - return; + return CALL_ERR_DIAL_FAILED; } } TELEPHONY_LOGI("dialType:%{public}d", info.dialType); + int32_t ret = CALL_ERR_UNKNOW_DIAL_TYPE; switch (info.dialType) { case DialType::DIAL_CARRIER_TYPE: - CarrierDialProcess(info); + ret = CarrierDialProcess(info); break; case DialType::DIAL_VOICE_MAIL_TYPE: - VoiceMailDialProcess(info); + ret = VoiceMailDialProcess(info); break; case DialType::DIAL_OTT_TYPE: - OttDialProcess(info); + ret = OttDialProcess(info); break; default: TELEPHONY_LOGE("invalid dialType:%{public}d", info.dialType); break; } + return ret; } void CallRequestProcess::AnswerRequest(int32_t callId, int32_t videoState) @@ -300,57 +302,70 @@ int32_t CallRequestProcess::UpdateCallReportInfo(const DialParaInfo &info, TelCa return DelayedSingleton::GetInstance()->UpdateCallReportInfo(callDetatilInfo); } -void CallRequestProcess::CarrierDialProcess(DialParaInfo &info) +int32_t CallRequestProcess::HandleDialFail() +{ + std::unique_lock lock(mutex_); + while (!isFirstDialCallAdded_) { + if (cv_.wait_for(lock, std::chrono::seconds(WAIT_TIME_ONE_SECOND)) == std::cv_status::timeout) { + TELEPHONY_LOGE("CarrierDialProcess call is not added"); + return CALL_ERR_DIAL_FAILED; + } + } + sptr call = nullptr; + if (GetOneCallObject(CallRunningState::CALL_RUNNING_STATE_CREATE) != nullptr) { + call = GetOneCallObject(CallRunningState::CALL_RUNNING_STATE_CREATE); + } else if (GetOneCallObject(CallRunningState::CALL_RUNNING_STATE_CONNECTING) != nullptr) { + call = GetOneCallObject(CallRunningState::CALL_RUNNING_STATE_CONNECTING); + } else if (GetOneCallObject(CallRunningState::CALL_RUNNING_STATE_DIALING) != nullptr) { + call = GetOneCallObject(CallRunningState::CALL_RUNNING_STATE_DIALING); + } else { + TELEPHONY_LOGE("can not find connect call or dialing call"); + return CALL_ERR_CALL_STATE; + } + return DealFailDial(call); +} + +int32_t CallRequestProcess::CarrierDialProcess(DialParaInfo &info) { std::string newPhoneNumer = DelayedSingleton::GetInstance()->RemoveSeparatorsPhoneNumber(info.number); bool isMMiCode = DelayedSingleton::GetInstance()->IsMMICode(newPhoneNumer); + int32_t ret = TELEPHONY_ERROR; if (!isMMiCode) { isFirstDialCallAdded_ = false; info.number = newPhoneNumer; - if (UpdateCallReportInfo(info, TelCallState::CALL_STATUS_DIALING) != TELEPHONY_SUCCESS) { + ret = UpdateCallReportInfo(info, TelCallState::CALL_STATUS_DIALING); + if (ret != TELEPHONY_SUCCESS) { TELEPHONY_LOGE("UpdateCallReportInfo failed!"); - return; + return ret; } } CellularCallInfo callInfo; - int32_t ret = PackCellularCallInfo(info, callInfo); + ret = PackCellularCallInfo(info, callInfo); if (ret != TELEPHONY_SUCCESS) { TELEPHONY_LOGW("PackCellularCallInfo failed!"); CallManagerHisysevent::WriteDialCallFaultEvent(info.accountId, static_cast(info.callType), static_cast(info.videoState), ret, "Carrier type PackCellularCallInfo failed"); - return; + return ret; } // Obtain gateway information ret = DelayedSingleton::GetInstance()->Dial(callInfo); if (ret != TELEPHONY_SUCCESS) { TELEPHONY_LOGE("Dial failed!"); if (isMMiCode) { - return; + return ret; } - std::unique_lock lock(mutex_); - while (!isFirstDialCallAdded_) { - if (cv_.wait_for(lock, std::chrono::seconds(WAIT_TIME_ONE_SECOND)) == std::cv_status::timeout) { - TELEPHONY_LOGE("CarrierDialProcess call is not added"); - return; - } + int32_t handleRet = HandleDialFail(); + if (handleRet != TELEPHONY_SUCCESS) { + TELEPHONY_LOGE("HandleDialFail failed!"); + return handleRet; } - sptr call = nullptr; - if (GetOneCallObject(CallRunningState::CALL_RUNNING_STATE_CREATE) != nullptr) { - call = GetOneCallObject(CallRunningState::CALL_RUNNING_STATE_CREATE); - } else if (GetOneCallObject(CallRunningState::CALL_RUNNING_STATE_CONNECTING) != nullptr) { - call = GetOneCallObject(CallRunningState::CALL_RUNNING_STATE_CONNECTING); - } else if (GetOneCallObject(CallRunningState::CALL_RUNNING_STATE_DIALING) != nullptr) { - call = GetOneCallObject(CallRunningState::CALL_RUNNING_STATE_DIALING); - } else { - TELEPHONY_LOGE("can not find connect call or dialing call"); - return; - } - DealFailDial(call); + return ret; } + return TELEPHONY_SUCCESS; } -void CallRequestProcess::VoiceMailDialProcess(DialParaInfo &info) +int32_t CallRequestProcess::VoiceMailDialProcess(DialParaInfo &info) { CellularCallInfo callInfo; int32_t ret = PackCellularCallInfo(info, callInfo); @@ -358,16 +373,17 @@ void CallRequestProcess::VoiceMailDialProcess(DialParaInfo &info) TELEPHONY_LOGW("PackCellularCallInfo failed!"); CallManagerHisysevent::WriteDialCallFaultEvent(info.accountId, static_cast(info.callType), static_cast(info.videoState), ret, "Voice mail type PackCellularCallInfo failed"); - return; + return ret; } ret = DelayedSingleton::GetInstance()->Dial(callInfo); if (ret != TELEPHONY_SUCCESS) { TELEPHONY_LOGE("Dial VoiceMail failed!"); - return; + return ret; } + return TELEPHONY_SUCCESS; } -void CallRequestProcess::OttDialProcess(DialParaInfo &info) +int32_t CallRequestProcess::OttDialProcess(DialParaInfo &info) { AppExecFwk::PacMap callInfo; callInfo.PutStringValue("phoneNumber", info.number); @@ -377,8 +393,9 @@ void CallRequestProcess::OttDialProcess(DialParaInfo &info) OttCallRequestId::OTT_REQUEST_DIAL, callInfo); if (ret != TELEPHONY_SUCCESS) { TELEPHONY_LOGE("OTT call Dial failed!"); - return; + return ret; } + return TELEPHONY_SUCCESS; } int32_t CallRequestProcess::PackCellularCallInfo(DialParaInfo &info, CellularCallInfo &callInfo) diff --git a/services/call_manager_service/include/call_manager_service.h b/services/call_manager_service/include/call_manager_service.h index 23b30e4466f7dc2fd1c00c0fa77cae743a622161..df2e885cf509847efcde945aa16d51b16c538982 100644 --- a/services/call_manager_service/include/call_manager_service.h +++ b/services/call_manager_service/include/call_manager_service.h @@ -602,6 +602,21 @@ public: */ int32_t CloseUnFinishedUssd(int32_t slotId) override; + /** + * Cancel missed incoming call notification. + * + * @return Returns 0 on success, others on failure. + */ + int32_t CancelMissedIncomingCallNotification() override; + + /** + * Handle special code from dialer. + * + * @param specialCode[in], special code + * @return Returns 0 on success, others on failure. + */ + int32_t InputDialerSpecialCode(const std::string &specialCode) override; + /** * GetProxyObjectPtr * @@ -632,6 +647,7 @@ private: std::shared_ptr callControlManagerPtr_; std::map> proxyObjectPtrMap_; + std::vector supportSpecialCode_ { "2846579" }; std::mutex lock_; const int32_t startTime_ = 1900; const int32_t extraMonth_ = 1; diff --git a/services/call_manager_service/include/call_manager_service_stub.h b/services/call_manager_service/include/call_manager_service_stub.h index fd4e1f52e00f290475d962427ec63a33dfb836d1..9d762bbb7f61d4dce24eecb78e81b0add8a72221 100644 --- a/services/call_manager_service/include/call_manager_service_stub.h +++ b/services/call_manager_service/include/call_manager_service_stub.h @@ -100,6 +100,8 @@ private: int32_t OnReportOttCallDetailsInfo(MessageParcel &data, MessageParcel &reply); int32_t OnReportOttCallEventInfo(MessageParcel &data, MessageParcel &reply); int32_t OnCloseUnFinishedUssd(MessageParcel &data, MessageParcel &reply); + int32_t OnInputDialerSpecialCode(MessageParcel &data, MessageParcel &reply); + int32_t OnCancelMissedIncomingCallNotification(MessageParcel &data, MessageParcel &reply); int32_t OnGetProxyObjectPtr(MessageParcel &data, MessageParcel &reply); int32_t OnReportAudioDeviceInfo(MessageParcel &data, MessageParcel &reply); std::map memberFuncMap_; diff --git a/services/call_manager_service/src/call_manager_service.cpp b/services/call_manager_service/src/call_manager_service.cpp index 4d9f0b13e70633e3c2861d93e3cdb9f1e9ab2441..1f0e1178738dae451284e86de3ed57482a294fae 100644 --- a/services/call_manager_service/src/call_manager_service.cpp +++ b/services/call_manager_service/src/call_manager_service.cpp @@ -37,6 +37,8 @@ static constexpr const char *OHOS_PERMISSION_SET_TELEPHONY_STATE = "ohos.permiss static constexpr const char *OHOS_PERMISSION_GET_TELEPHONY_STATE = "ohos.permission.GET_TELEPHONY_STATE"; static constexpr const char *OHOS_PERMISSION_PLACE_CALL = "ohos.permission.PLACE_CALL"; static constexpr const char *OHOS_PERMISSION_ANSWER_CALL = "ohos.permission.ANSWER_CALL"; +static constexpr const char *OHOS_PERMISSION_READ_CALL_LOG = "ohos.permission.READ_CALL_LOG"; +static constexpr const char *OHOS_PERMISSION_WRITE_CALL_LOG = "ohos.permission.WRITE_CALL_LOG"; static constexpr const char *SLOT_ID = "accountId"; static constexpr const char *CALL_TYPE = "callType"; static constexpr const char *VIDEO_STATE = "videoState"; @@ -69,6 +71,10 @@ bool CallManagerService::Init() DelayedSingleton::GetInstance()->Init(TELEPHONY_CELLULAR_CALL_SYS_ABILITY_ID); DelayedSingleton::GetInstance()->Init(); DelayedSingleton::GetInstance()->Init(); + int ret = callControlManagerPtr_->QueryUnReadMissedCallLog(); + if (ret == TELEPHONY_SUCCESS) { + TELEPHONY_LOGI("Query unread missed call log success"); + } return true; } @@ -867,6 +873,54 @@ int32_t CallManagerService::CloseUnFinishedUssd(int32_t slotId) } } +int32_t CallManagerService::InputDialerSpecialCode(const std::string &specialCode) +{ + if (!TelephonyPermission::CheckCallerIsSystemApp()) { + TELEPHONY_LOGE("Non system applications use system APIs!"); + return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API; + } + if (!TelephonyPermission::CheckPermission(OHOS_PERMISSION_PLACE_CALL)) { + TELEPHONY_LOGE("Permission denied!"); + return TELEPHONY_ERR_PERMISSION_ERR; + } + + auto it = find(supportSpecialCode_.begin(), supportSpecialCode_.end(), specialCode); + if (it == supportSpecialCode_.end()) { + TELEPHONY_LOGE("specialCode is not support"); + return TELEPHONY_ERR_ARGUMENT_INVALID; + } + AAFwk::Want want; + want.SetAction(EventFwk::CommonEventSupport::COMMON_EVENT_SPECIAL_CODE); + EventFwk::CommonEventData commonEventData; + commonEventData.SetWant(want); + commonEventData.SetData(specialCode); + EventFwk::CommonEventPublishInfo publishInfo; + if (!EventFwk::CommonEventManager::PublishCommonEvent(commonEventData, publishInfo, nullptr)) { + TELEPHONY_LOGE("PublishCommonEvent fail"); + return TELEPHONY_ERR_PUBLISH_BROADCAST_FAIL; + } + return TELEPHONY_SUCCESS; +} + +int32_t CallManagerService::CancelMissedIncomingCallNotification() +{ + if (!TelephonyPermission::CheckCallerIsSystemApp()) { + TELEPHONY_LOGE("Non-system applications use system APIs!"); + return TELEPHONY_ERR_ILLEGAL_USE_OF_SYSTEM_API; + } + if (!TelephonyPermission::CheckPermission(OHOS_PERMISSION_SET_TELEPHONY_STATE) || + !TelephonyPermission::CheckPermission(OHOS_PERMISSION_READ_CALL_LOG) || + !TelephonyPermission::CheckPermission(OHOS_PERMISSION_WRITE_CALL_LOG)) { + TELEPHONY_LOGE("Permission denied!"); + return TELEPHONY_ERR_PERMISSION_ERR; + } + if (callControlManagerPtr_ == nullptr) { + TELEPHONY_LOGE("callControlManagerPtr_ is nullptr!"); + return TELEPHONY_ERR_LOCAL_PTR_NULL; + } + return callControlManagerPtr_->CancelMissedIncomingCallNotification(); +} + sptr CallManagerService::GetProxyObjectPtr(CallManagerProxyType proxyType) { auto it = proxyObjectPtrMap_.find(static_cast(proxyType)); diff --git a/services/call_manager_service/src/call_manager_service_stub.cpp b/services/call_manager_service/src/call_manager_service_stub.cpp index aebbb77afa7cb3f8a98e7d1ca04b4b6b8f28c695..18a0c77e48634474b37182855892f7a2994027ad 100644 --- a/services/call_manager_service/src/call_manager_service_stub.cpp +++ b/services/call_manager_service/src/call_manager_service_stub.cpp @@ -58,6 +58,7 @@ void CallManagerServiceStub::InitCallBasicRequest() memberFuncMap_[INTERFACE_DISCONNECT_CALL] = &CallManagerServiceStub::OnHangUpCall; memberFuncMap_[INTERFACE_GET_CALL_STATE] = &CallManagerServiceStub::OnGetCallState; memberFuncMap_[INTERFACE_SWAP_CALL] = &CallManagerServiceStub::OnSwitchCall; + memberFuncMap_[INTERFACE_INPUT_DIALER_SPECIAL_CODE] = &CallManagerServiceStub::OnInputDialerSpecialCode; } void CallManagerServiceStub::InitCallUtilsRequest() @@ -69,6 +70,8 @@ void CallManagerServiceStub::InitCallUtilsRequest() memberFuncMap_[INTERFACE_IS_EMERGENCY_NUMBER] = &CallManagerServiceStub::OnIsEmergencyPhoneNumber; memberFuncMap_[INTERFACE_IS_FORMAT_NUMBER] = &CallManagerServiceStub::OnFormatPhoneNumber; memberFuncMap_[INTERFACE_IS_FORMAT_NUMBER_E164] = &CallManagerServiceStub::OnFormatPhoneNumberToE164; + memberFuncMap_[INTERFACE_CANCEL_MISSED_INCOMING_CALL_NOTIFICATION] = + &CallManagerServiceStub::OnCancelMissedIncomingCallNotification; } void CallManagerServiceStub::InitCallConferenceRequest() @@ -148,7 +151,7 @@ int32_t CallManagerServiceStub::OnRemoteRequest( TELEPHONY_LOGE("descriptor checked fail !"); return TELEPHONY_ERR_DESCRIPTOR_MISMATCH; } - TELEPHONY_LOGI("OnReceived, cmd = %{public}u", code); + TELEPHONY_LOGD("OnReceived, cmd = %{public}u", code); auto itFunc = memberFuncMap_.find(code); if (itFunc != memberFuncMap_.end()) { auto memberFunc = itFunc->second; @@ -1007,6 +1010,29 @@ int32_t CallManagerServiceStub::OnCloseUnFinishedUssd(MessageParcel &data, Messa return TELEPHONY_SUCCESS; } +int32_t CallManagerServiceStub::OnInputDialerSpecialCode(MessageParcel &data, MessageParcel &reply) +{ + int32_t result = TELEPHONY_ERR_FAIL; + std::string specialCode = data.ReadString(); + result = InputDialerSpecialCode(specialCode); + TELEPHONY_LOGI("result:%{public}d", result); + if (!reply.WriteInt32(result)) { + TELEPHONY_LOGE("fail to write parcel"); + return TELEPHONY_ERR_WRITE_REPLY_FAIL; + } + return TELEPHONY_SUCCESS; +} + +int32_t CallManagerServiceStub::OnCancelMissedIncomingCallNotification(MessageParcel &data, MessageParcel &reply) +{ + int32_t result = CancelMissedIncomingCallNotification(); + if (!reply.WriteInt32(result)) { + TELEPHONY_LOGE("OnCancelMissedIncomingCallNotification fail to write parcel"); + return TELEPHONY_ERR_WRITE_REPLY_FAIL; + } + return TELEPHONY_SUCCESS; +} + int32_t CallManagerServiceStub::OnGetProxyObjectPtr(MessageParcel &data, MessageParcel &reply) { CallManagerProxyType proxyType = static_cast(data.ReadInt32()); diff --git a/services/call_report/src/call_ability_report_proxy.cpp b/services/call_report/src/call_ability_report_proxy.cpp index 4b5abeebb8a7f7bc51a4386d901ff49813ff8576..4e661e8b0e904aea29addce2595ffcc18243acad 100644 --- a/services/call_report/src/call_ability_report_proxy.cpp +++ b/services/call_report/src/call_ability_report_proxy.cpp @@ -63,7 +63,7 @@ int32_t CallAbilityReportProxy::RegisterCallBack( } } callbackPtrList_.emplace_back(callAbilityCallbackPtr); - TELEPHONY_LOGI("%{public}s successfully registered the callback for the first time!", bundleName.c_str()); + TELEPHONY_LOGD("%{public}s successfully registered the callback for the first time!", bundleName.c_str()); return TELEPHONY_SUCCESS; } diff --git a/services/telephony_interaction/src/call_status_callback_stub.cpp b/services/telephony_interaction/src/call_status_callback_stub.cpp index 1af6c6d459687f696247142690d0d27776e5bf83..bbbaae9088f26d4945561433aefbaa7a1a7aa2c2 100644 --- a/services/telephony_interaction/src/call_status_callback_stub.cpp +++ b/services/telephony_interaction/src/call_status_callback_stub.cpp @@ -69,7 +69,7 @@ int32_t CallStatusCallbackStub::OnRemoteRequest( TELEPHONY_LOGE("descriptor checked failed"); return TELEPHONY_ERR_DESCRIPTOR_MISMATCH; } - TELEPHONY_LOGI("OnReceived, cmd = %{public}u", code); + TELEPHONY_LOGD("OnReceived, cmd = %{public}u", code); auto itFunc = memberFuncMap_.find(code); if (itFunc != memberFuncMap_.end()) { auto memberFunc = itFunc->second; diff --git a/services/telephony_interaction/src/cellular_call_connection.cpp b/services/telephony_interaction/src/cellular_call_connection.cpp index 1c256cb3a051aadc227f148aa7cd3c7444a57f46..b87a654985f91fa1c25782be1118abc1cdf99aa3 100644 --- a/services/telephony_interaction/src/cellular_call_connection.cpp +++ b/services/telephony_interaction/src/cellular_call_connection.cpp @@ -19,6 +19,7 @@ #include "call_manager_errors.h" #include "call_manager_hisysevent.h" +#include "cellular_call_proxy.h" #include "iservice_registry.h" #include "system_ability.h" #include "system_ability_definition.h" diff --git a/test/fuzztest/audiodevice_fuzzer/BUILD.gn b/test/fuzztest/audiodevice_fuzzer/BUILD.gn index 3edb2c90cd234944d741c95d24479b186022e862..f1eb1d2dac8625b9e9f7c16161af2dfcfe88edae 100644 --- a/test/fuzztest/audiodevice_fuzzer/BUILD.gn +++ b/test/fuzztest/audiodevice_fuzzer/BUILD.gn @@ -11,67 +11,45 @@ # See the License for the specific language governing permissions and # limitations under the License. -import("//base/telephony/core_service/telephony.gni") import("//build/config/features.gni") import("//build/ohos.gni") import("//build/test.gni") #####################hydra-fuzz################### -import("./../../../call_manager_aafwk.gni") +CALL_MANAGER_PATH = "../../.." ##############################fuzztest########################################## + ohos_fuzztest("AudioDeviceFuzzTest") { module_output_path = "call_manager/AudioDeviceFuzzTest" module_out_path = module_output_path - fuzz_config_file = - "//base/telephony/call_manager/test/fuzztest/audiodevice_fuzzer" + fuzz_config_file = "${CALL_MANAGER_PATH}/test/fuzztest/audiodevice_fuzzer" include_dirs = [ - "//base/telephony/call_manager/frameworks/native/include", - "//base/telephony/call_manager/frameworks/native/include", - "//base/telephony/core_service/interfaces/innerkits/include", "utils/include", "//third_party/libphonenumber/cpp/src", "//third_party/libphonenumber/cpp/src/phonenumbers", "//third_party/protobuf/src", "//third_party/protobuf/src/google/protobuf", - "//base/telephony/call_manager/interfaces/innerkits", - "//base/telephony/sms_mms/interfaces/innerkits/", - "//base/telephony/call_manager/services/audio/include", - "//base/telephony/call_manager/services/audio/include/audio_state", - "//base/telephony/call_manager/services/video/include", - "//base/telephony/call_manager/services/bluetooth/include", - "//base/telephony/call_manager/services/call/include", - "//base/telephony/call_manager/services/call_manager_service/include", - "//base/telephony/call_manager/services/call_setting/include", - "//base/telephony/call_manager/services/telephony_interaction/include", - "//base/telephony/call_manager/services/call_report/include", - "//base/telephony/call_manager/services/video/include", - "//base/telephony/call_manager/services/call/call_state_observer/include", - "//base/telephony/call_manager/frameworks/native/include", - "//base/telephony/call_manager/test/fuzztest/common_fuzzer", - "//foundation/graphic/graphic_2d/interfaces/inner_api/surface", - "//foundation/graphic/graphic_2d/interfaces/inner_api/common", - "//drivers/peripheral/camera/interfaces/metadata/include", - "//drivers/hdf_core/framework/include/utils", - "//drivers/hdf_core/adapter/uhdf2/utils/include", - "//drivers/hdf_core/adapter/uhdf2/include/hdi", - "//drivers/peripheral/display/interfaces/include", - "//drivers/peripheral/camera/interfaces/include", - "//drivers/peripheral/camera/interfaces/include/server", - "//drivers/peripheral/camera/interfaces/include/callback/device", - "//drivers/peripheral/camera/interfaces/include/callback/operator", - "//drivers/peripheral/camera/interfaces/include/callback/host", - "//foundation/graphic/graphic_2d/utils/buffer_handle/export", - "${multimedia_player_framework_path}/frameworks/native/system_sound", - "${multimedia_player_framework_path}/interfaces/inner_api/native", - "${multimedia_player_framework_path}/interfaces/inner_api/native/audio_ringtone/include", - "${multimedia_player_framework_path}/services/utils/include", - "//foundation/multimedia/media_library/interfaces/innerkits/native/include", + "${CALL_MANAGER_PATH}/interfaces/innerkits", + "${CALL_MANAGER_PATH}/services/audio/include", + "${CALL_MANAGER_PATH}/services/audio/include/audio_state", + "${CALL_MANAGER_PATH}/services/video/include", + "${CALL_MANAGER_PATH}/services/bluetooth/include", + "${CALL_MANAGER_PATH}/services/call/include", + "${CALL_MANAGER_PATH}/services/call_manager_service/include", + "${CALL_MANAGER_PATH}/services/call_setting/include", + "${CALL_MANAGER_PATH}/services/telephony_interaction/include", + "${CALL_MANAGER_PATH}/services/call_report/include", + "${CALL_MANAGER_PATH}/services/video/include", + "${CALL_MANAGER_PATH}/services/call/call_state_observer/include", + "${CALL_MANAGER_PATH}/frameworks/native/include", + "${CALL_MANAGER_PATH}/test/fuzztest/common_fuzzer", ] - configs = [ "//base/telephony/core_service/utils:telephony_log_config" ] - - deps = [ "//base/telephony/call_manager:tel_call_manager" ] + deps = [ + "${CALL_MANAGER_PATH}:tel_call_manager", + "${CALL_MANAGER_PATH}/frameworks/native:tel_call_manager_api", + ] external_deps = [ "ability_base:base", @@ -94,11 +72,14 @@ ohos_fuzztest("AudioDeviceFuzzTest") { "ipc:ipc_core", "multimedia_camera_framework:camera_framework", "multimedia_player_framework:audio_ringtone_client", + "multimedia_player_framework:audio_ringtone_client", + "multimedia_player_framework:media_client", "power_manager:powermgr_client", "safwk:system_ability_fwk", "samgr:samgr_proxy", + "sms_mms:tel_sms_mms_api", ] - defines += [ + defines = [ "TELEPHONY_LOG_TAG = \"CallManagerFuzzTest\"", "LOG_DOMAIN = 0xD000F00", ] @@ -109,7 +90,7 @@ ohos_fuzztest("AudioDeviceFuzzTest") { "-fno-omit-frame-pointer", ] sources = [ - "//base/telephony/call_manager/test/fuzztest/common_fuzzer/addcalltoken_fuzzer.cpp", + "${CALL_MANAGER_PATH}/test/fuzztest/common_fuzzer/addcalltoken_fuzzer.cpp", "audiodevice_fuzzer.cpp", ] if (is_standard_system) { diff --git a/test/fuzztest/bluetoothdialcall_fuzzer/BUILD.gn b/test/fuzztest/bluetoothdialcall_fuzzer/BUILD.gn index 152ac690ed5ef724b037ff79299b064e3048f099..b76e521c5464634781e5bbcfc0db6e5b270a3ff9 100644 --- a/test/fuzztest/bluetoothdialcall_fuzzer/BUILD.gn +++ b/test/fuzztest/bluetoothdialcall_fuzzer/BUILD.gn @@ -12,39 +12,36 @@ # limitations under the License. #####################hydra-fuzz################### -import("//base/telephony/core_service/telephony.gni") import("//build/config/features.gni") import("//build/ohos.gni") import("//build/test.gni") ##############################fuzztest########################################## +CALL_MANAGER_PATH = "../../.." ohos_fuzztest("BluetoothDialCallFuzzTest") { module_output_path = "call_manager/BluetoothDialCallFuzzTest" module_out_path = module_output_path fuzz_config_file = - "//base/telephony/call_manager/test/fuzztest/bluetoothdialcall_fuzzer" + "${CALL_MANAGER_PATH}/test/fuzztest/bluetoothdialcall_fuzzer" include_dirs = [ - "//base/telephony/call_manager/interfaces/innerkits", - "//base/telephony/call_manager/services/audio/include", - "//base/telephony/call_manager/services/audio/include/audio_state", - "//base/telephony/call_manager/services/video/include", - "//base/telephony/call_manager/services/bluetooth/include", - "//base/telephony/call_manager/services/call/include", - "//base/telephony/call_manager/services/call_manager_service/include", - "//base/telephony/call_manager/services/call_setting/include", - "//base/telephony/call_manager/services/telephony_interaction/include", - "//base/telephony/call_manager/services/call_report/include", - "//base/telephony/call_manager/services/video/include", - "//base/telephony/call_manager/services/call/call_state_observer/include", - "//base/telephony/call_manager/test/fuzztest/common_fuzzer", - "//base/telephony/call_manager/frameworks/native/include", - "//base/telephony/call_manager/frameworks/native/include", - "//base/telephony/core_service/interfaces/innerkits/include", + "${CALL_MANAGER_PATH}/test/fuzztest/common_fuzzer", + "${CALL_MANAGER_PATH}/services/audio/include", + "${CALL_MANAGER_PATH}/services/audio/include/audio_state", + "${CALL_MANAGER_PATH}/services/video/include", + "${CALL_MANAGER_PATH}/services/bluetooth/include", + "${CALL_MANAGER_PATH}/services/call/include", + "${CALL_MANAGER_PATH}/services/call_manager_service/include", + "${CALL_MANAGER_PATH}/services/call_setting/include", + "${CALL_MANAGER_PATH}/services/telephony_interaction/include", + "${CALL_MANAGER_PATH}/services/call_report/include", + "${CALL_MANAGER_PATH}/services/video/include", + "${CALL_MANAGER_PATH}/services/call/call_state_observer/include", ] - configs = [ "//base/telephony/core_service/utils:telephony_log_config" ] - - deps = [ "//base/telephony/call_manager:tel_call_manager" ] + deps = [ + "${CALL_MANAGER_PATH}:tel_call_manager", + "${CALL_MANAGER_PATH}/frameworks/native:tel_call_manager_api", + ] external_deps = [ "ability_runtime:ability_manager", @@ -54,12 +51,13 @@ ohos_fuzztest("BluetoothDialCallFuzzTest") { "c_utils:utils", "common_event_service:cesfwk_innerkits", "core_service:libtel_common", + "core_service:tel_core_service_api", "data_share:datashare_consumer", "init:libbegetutil", "ipc:ipc_core", "samgr:samgr_proxy", ] - defines += [ + defines = [ "TELEPHONY_LOG_TAG = \"CallManagerFuzzTest\"", "LOG_DOMAIN = 0xD000F00", ] @@ -70,7 +68,7 @@ ohos_fuzztest("BluetoothDialCallFuzzTest") { "-fno-omit-frame-pointer", ] sources = [ - "//base/telephony/call_manager/test/fuzztest/common_fuzzer/addcalltoken_fuzzer.cpp", + "${CALL_MANAGER_PATH}/test/fuzztest/common_fuzzer/addcalltoken_fuzzer.cpp", "bluetoothdialcall_fuzzer.cpp", ] if (is_standard_system) { diff --git a/test/fuzztest/call_fuzzer/BUILD.gn b/test/fuzztest/call_fuzzer/BUILD.gn index 1cce996113e91bfbae40028d8713ab0b96834283..733008be83b25c8f76332a3388241f3b3ca4081d 100644 --- a/test/fuzztest/call_fuzzer/BUILD.gn +++ b/test/fuzztest/call_fuzzer/BUILD.gn @@ -12,38 +12,35 @@ # limitations under the License. #####################hydra-fuzz################### -import("//base/telephony/core_service/telephony.gni") import("//build/config/features.gni") import("//build/ohos.gni") import("//build/test.gni") ##############################fuzztest########################################## +CALL_MANAGER_PATH = "../../.." ohos_fuzztest("CallFuzzTest") { module_output_path = "call_manager/CallFuzzTest" module_out_path = module_output_path - fuzz_config_file = "//base/telephony/call_manager/test/fuzztest/call_fuzzer" + fuzz_config_file = "${CALL_MANAGER_PATH}/test/fuzztest/call_fuzzer" include_dirs = [ - "//base/telephony/call_manager/interfaces/innerkits", - "//base/telephony/call_manager/services/audio/include", - "//base/telephony/call_manager/services/audio/include/audio_state", - "//base/telephony/call_manager/services/video/include", - "//base/telephony/call_manager/services/bluetooth/include", - "//base/telephony/call_manager/services/call/include", - "//base/telephony/call_manager/services/call_manager_service/include", - "//base/telephony/call_manager/services/call_setting/include", - "//base/telephony/call_manager/services/telephony_interaction/include", - "//base/telephony/call_manager/services/call_report/include", - "//base/telephony/call_manager/services/video/include", - "//base/telephony/call_manager/services/call/call_state_observer/include", - "//base/telephony/call_manager/test/fuzztest/common_fuzzer", - "//base/telephony/call_manager/frameworks/native/include", - "//base/telephony/call_manager/frameworks/native/include", - "//base/telephony/core_service/interfaces/innerkits/include", + "${CALL_MANAGER_PATH}/test/fuzztest/common_fuzzer", + "${CALL_MANAGER_PATH}/services/audio/include", + "${CALL_MANAGER_PATH}/services/audio/include/audio_state", + "${CALL_MANAGER_PATH}/services/video/include", + "${CALL_MANAGER_PATH}/services/bluetooth/include", + "${CALL_MANAGER_PATH}/services/call/include", + "${CALL_MANAGER_PATH}/services/call_manager_service/include", + "${CALL_MANAGER_PATH}/services/call_setting/include", + "${CALL_MANAGER_PATH}/services/telephony_interaction/include", + "${CALL_MANAGER_PATH}/services/call_report/include", + "${CALL_MANAGER_PATH}/services/video/include", + "${CALL_MANAGER_PATH}/services/call/call_state_observer/include", ] - configs = [ "//base/telephony/core_service/utils:telephony_log_config" ] - - deps = [ "//base/telephony/call_manager:tel_call_manager" ] + deps = [ + "${CALL_MANAGER_PATH}:tel_call_manager", + "${CALL_MANAGER_PATH}/frameworks/native:tel_call_manager_api", + ] external_deps = [ "ability_runtime:ability_manager", @@ -52,13 +49,13 @@ ohos_fuzztest("CallFuzzTest") { "access_token:libtoken_setproc", "c_utils:utils", "common_event_service:cesfwk_innerkits", - "core_service:libtel_common", + "core_service:tel_core_service_api", "data_share:datashare_consumer", "init:libbegetutil", "ipc:ipc_core", "samgr:samgr_proxy", ] - defines += [ + defines = [ "TELEPHONY_LOG_TAG = \"CallManagerFuzzTest\"", "LOG_DOMAIN = 0xD000F00", ] @@ -69,7 +66,7 @@ ohos_fuzztest("CallFuzzTest") { "-fno-omit-frame-pointer", ] sources = [ - "//base/telephony/call_manager/test/fuzztest/common_fuzzer/addcalltoken_fuzzer.cpp", + "${CALL_MANAGER_PATH}/test/fuzztest/common_fuzzer/addcalltoken_fuzzer.cpp", "call_fuzzer.cpp", ] if (is_standard_system) { diff --git a/test/fuzztest/callnotification_fuzzer/BUILD.gn b/test/fuzztest/callnotification_fuzzer/BUILD.gn index 2067b2959421d58483435ac41019144e0bd730f2..51b13624f4a717327148cb6a7bea21d25ea473ad 100644 --- a/test/fuzztest/callnotification_fuzzer/BUILD.gn +++ b/test/fuzztest/callnotification_fuzzer/BUILD.gn @@ -12,39 +12,36 @@ # limitations under the License. #####################hydra-fuzz################### -import("//base/telephony/core_service/telephony.gni") import("//build/config/features.gni") import("//build/ohos.gni") import("//build/test.gni") ##############################fuzztest########################################## +CALL_MANAGER_PATH = "../../.." ohos_fuzztest("CallNotificationFuzzTest") { module_output_path = "call_manager/CallNotificationFuzzTest" module_out_path = module_output_path fuzz_config_file = - "//base/telephony/call_manager/test/fuzztest/callnotification_fuzzer" + "${CALL_MANAGER_PATH}/test/fuzztest/callnotification_fuzzer" include_dirs = [ - "//base/telephony/call_manager/interfaces/innerkits", - "//base/telephony/call_manager/services/audio/include", - "//base/telephony/call_manager/services/audio/include/audio_state", - "//base/telephony/call_manager/services/video/include", - "//base/telephony/call_manager/services/bluetooth/include", - "//base/telephony/call_manager/services/call/include", - "//base/telephony/call_manager/services/call_manager_service/include", - "//base/telephony/call_manager/services/call_setting/include", - "//base/telephony/call_manager/services/telephony_interaction/include", - "//base/telephony/call_manager/services/call_report/include", - "//base/telephony/call_manager/services/video/include", - "//base/telephony/call_manager/services/call/call_state_observer/include", - "//base/telephony/call_manager/test/fuzztest/common_fuzzer", - "//base/telephony/call_manager/frameworks/native/include", - "//base/telephony/call_manager/frameworks/native/include", - "//base/telephony/core_service/interfaces/innerkits/include", + "${CALL_MANAGER_PATH}/test/fuzztest/common_fuzzer", + "${CALL_MANAGER_PATH}/services/audio/include", + "${CALL_MANAGER_PATH}/services/audio/include/audio_state", + "${CALL_MANAGER_PATH}/services/video/include", + "${CALL_MANAGER_PATH}/services/bluetooth/include", + "${CALL_MANAGER_PATH}/services/call/include", + "${CALL_MANAGER_PATH}/services/call_manager_service/include", + "${CALL_MANAGER_PATH}/services/call_setting/include", + "${CALL_MANAGER_PATH}/services/telephony_interaction/include", + "${CALL_MANAGER_PATH}/services/call_report/include", + "${CALL_MANAGER_PATH}/services/video/include", + "${CALL_MANAGER_PATH}/services/call/call_state_observer/include", ] - configs = [ "//base/telephony/core_service/utils:telephony_log_config" ] - - deps = [ "//base/telephony/call_manager:tel_call_manager" ] + deps = [ + "${CALL_MANAGER_PATH}:tel_call_manager", + "${CALL_MANAGER_PATH}/frameworks/native:tel_call_manager_api", + ] external_deps = [ "ability_runtime:ability_manager", @@ -53,14 +50,14 @@ ohos_fuzztest("CallNotificationFuzzTest") { "access_token:libtoken_setproc", "c_utils:utils", "common_event_service:cesfwk_innerkits", - "core_service:libtel_common", + "core_service:tel_core_service_api", "data_share:datashare_consumer", "init:libbegetutil", "ipc:ipc_core", "power_manager:powermgr_client", "samgr:samgr_proxy", ] - defines += [ + defines = [ "TELEPHONY_LOG_TAG = \"CallManagerFuzzTest\"", "LOG_DOMAIN = 0xD000F00", ] @@ -71,7 +68,7 @@ ohos_fuzztest("CallNotificationFuzzTest") { "-fno-omit-frame-pointer", ] sources = [ - "//base/telephony/call_manager/test/fuzztest/common_fuzzer/addcalltoken_fuzzer.cpp", + "${CALL_MANAGER_PATH}/test/fuzztest/common_fuzzer/addcalltoken_fuzzer.cpp", "callnotification_fuzzer.cpp", ] if (is_standard_system) { diff --git a/test/fuzztest/common_fuzzer/addcalltoken_fuzzer.cpp b/test/fuzztest/common_fuzzer/addcalltoken_fuzzer.cpp index 1257710712055b3978eb5af1145ff4336ff1dbc1..b4d34bf8c2385deac6f48f2b9f63712ddc7135d7 100644 --- a/test/fuzztest/common_fuzzer/addcalltoken_fuzzer.cpp +++ b/test/fuzztest/common_fuzzer/addcalltoken_fuzzer.cpp @@ -21,7 +21,7 @@ #include "token_setproc.h" namespace OHOS { -const int PERMS_NUM = 4; +const int PERMS_NUM = 6; AddCallTokenFuzzer::AddCallTokenFuzzer() { @@ -30,6 +30,8 @@ AddCallTokenFuzzer::AddCallTokenFuzzer() "ohos.permission.ANSWER_CALL", "ohos.permission.SET_TELEPHONY_STATE", "ohos.permission.GET_TELEPHONY_STATE", + "ohos.permission.READ_CALL_LOG", + "ohos.permission.WRITE_CALL_LOG", }; NativeTokenInfoParams testCallInfoParams = { diff --git a/test/fuzztest/controlcamera_fuzzer/BUILD.gn b/test/fuzztest/controlcamera_fuzzer/BUILD.gn index b5cf16f3ae08a9c5fe408e4093a90841b25322e3..e715987692234cd1d09fa6b7cc509fb925de7736 100644 --- a/test/fuzztest/controlcamera_fuzzer/BUILD.gn +++ b/test/fuzztest/controlcamera_fuzzer/BUILD.gn @@ -12,40 +12,36 @@ # limitations under the License. #####################hydra-fuzz################### -import("//base/telephony/core_service/telephony.gni") import("//build/config/features.gni") import("//build/ohos.gni") import("//build/test.gni") ##############################fuzztest########################################## +CALL_MANAGER_PATH = "../../.." ohos_fuzztest("ControlCameraFuzzTest") { module_output_path = "call_manager/ControlCameraFuzzTest" module_out_path = module_output_path - fuzz_config_file = - "//base/telephony/call_manager/test/fuzztest/controlcamera_fuzzer" + fuzz_config_file = "${CALL_MANAGER_PATH}/test/fuzztest/controlcamera_fuzzer" include_dirs = [ - "//base/telephony/call_manager/interfaces/innerkits", - "//base/telephony/call_manager/services/audio/include", - "//base/telephony/call_manager/services/audio/include/audio_state", - "//base/telephony/call_manager/services/video/include", - "//base/telephony/call_manager/services/bluetooth/include", - "//base/telephony/call_manager/services/call/include", - "//base/telephony/call_manager/services/call_manager_service/include", - "//base/telephony/call_manager/services/call_setting/include", - "//base/telephony/call_manager/services/telephony_interaction/include", - "//base/telephony/call_manager/services/call_report/include", - "//base/telephony/call_manager/services/video/include", - "//base/telephony/call_manager/services/call/call_state_observer/include", - "//base/telephony/call_manager/test/fuzztest/common_fuzzer", - "//base/telephony/call_manager/frameworks/native/include", - "//base/telephony/call_manager/frameworks/native/include", - "//base/telephony/core_service/interfaces/innerkits/include", + "${CALL_MANAGER_PATH}/test/fuzztest/common_fuzzer", + "${CALL_MANAGER_PATH}/services/audio/include", + "${CALL_MANAGER_PATH}/services/audio/include/audio_state", + "${CALL_MANAGER_PATH}/services/video/include", + "${CALL_MANAGER_PATH}/services/bluetooth/include", + "${CALL_MANAGER_PATH}/services/call/include", + "${CALL_MANAGER_PATH}/services/call_manager_service/include", + "${CALL_MANAGER_PATH}/services/call_setting/include", + "${CALL_MANAGER_PATH}/services/telephony_interaction/include", + "${CALL_MANAGER_PATH}/services/call_report/include", + "${CALL_MANAGER_PATH}/services/video/include", + "${CALL_MANAGER_PATH}/services/call/call_state_observer/include", ] - configs = [ "//base/telephony/core_service/utils:telephony_log_config" ] - - deps = [ "//base/telephony/call_manager:tel_call_manager" ] + deps = [ + "${CALL_MANAGER_PATH}:tel_call_manager", + "${CALL_MANAGER_PATH}/frameworks/native:tel_call_manager_api", + ] external_deps = [ "ability_runtime:ability_manager", @@ -54,13 +50,13 @@ ohos_fuzztest("ControlCameraFuzzTest") { "access_token:libtoken_setproc", "c_utils:utils", "common_event_service:cesfwk_innerkits", - "core_service:libtel_common", + "core_service:tel_core_service_api", "data_share:datashare_consumer", "init:libbegetutil", "ipc:ipc_core", "samgr:samgr_proxy", ] - defines += [ + defines = [ "TELEPHONY_LOG_TAG = \"CallManagerFuzzTest\"", "LOG_DOMAIN = 0xD000F00", ] @@ -71,7 +67,7 @@ ohos_fuzztest("ControlCameraFuzzTest") { "-fno-omit-frame-pointer", ] sources = [ - "//base/telephony/call_manager/test/fuzztest/common_fuzzer/addcalltoken_fuzzer.cpp", + "${CALL_MANAGER_PATH}/test/fuzztest/common_fuzzer/addcalltoken_fuzzer.cpp", "controlcamera_fuzzer.cpp", ] if (is_standard_system) { diff --git a/test/fuzztest/dialcall_fuzzer/BUILD.gn b/test/fuzztest/dialcall_fuzzer/BUILD.gn index 6164749fb36754a5618bef5241d73c110aa6babb..dbd0f52a8d8e62b3e7cf90545c8980511eb8df50 100644 --- a/test/fuzztest/dialcall_fuzzer/BUILD.gn +++ b/test/fuzztest/dialcall_fuzzer/BUILD.gn @@ -12,39 +12,35 @@ # limitations under the License. #####################hydra-fuzz################### -import("//base/telephony/core_service/telephony.gni") import("//build/config/features.gni") import("//build/ohos.gni") import("//build/test.gni") +CALL_MANAGER_PATH = "../../.." ##############################fuzztest########################################## ohos_fuzztest("DialCallFuzzTest") { module_output_path = "call_manager/DialCallFuzzTest" module_out_path = module_output_path - fuzz_config_file = - "//base/telephony/call_manager/test/fuzztest/dialcall_fuzzer" + fuzz_config_file = "${CALL_MANAGER_PATH}/test/fuzztest/dialcall_fuzzer" include_dirs = [ - "//base/telephony/call_manager/interfaces/innerkits", - "//base/telephony/call_manager/services/audio/include", - "//base/telephony/call_manager/services/audio/include/audio_state", - "//base/telephony/call_manager/services/video/include", - "//base/telephony/call_manager/services/bluetooth/include", - "//base/telephony/call_manager/services/call/include", - "//base/telephony/call_manager/services/call_manager_service/include", - "//base/telephony/call_manager/services/call_setting/include", - "//base/telephony/call_manager/services/telephony_interaction/include", - "//base/telephony/call_manager/services/call_report/include", - "//base/telephony/call_manager/services/video/include", - "//base/telephony/call_manager/services/call/call_state_observer/include", - "//base/telephony/call_manager/test/fuzztest/common_fuzzer", - "//base/telephony/call_manager/frameworks/native/include", - "//base/telephony/call_manager/frameworks/native/include", - "//base/telephony/core_service/interfaces/innerkits/include", + "${CALL_MANAGER_PATH}/test/fuzztest/common_fuzzer", + "${CALL_MANAGER_PATH}/services/audio/include", + "${CALL_MANAGER_PATH}/services/audio/include/audio_state", + "${CALL_MANAGER_PATH}/services/video/include", + "${CALL_MANAGER_PATH}/services/bluetooth/include", + "${CALL_MANAGER_PATH}/services/call/include", + "${CALL_MANAGER_PATH}/services/call_manager_service/include", + "${CALL_MANAGER_PATH}/services/call_setting/include", + "${CALL_MANAGER_PATH}/services/telephony_interaction/include", + "${CALL_MANAGER_PATH}/services/call_report/include", + "${CALL_MANAGER_PATH}/services/video/include", + "${CALL_MANAGER_PATH}/services/call/call_state_observer/include", ] - configs = [ "//base/telephony/core_service/utils:telephony_log_config" ] - - deps = [ "//base/telephony/call_manager:tel_call_manager" ] + deps = [ + "${CALL_MANAGER_PATH}:tel_call_manager", + "${CALL_MANAGER_PATH}/frameworks/native:tel_call_manager_api", + ] external_deps = [ "ability_runtime:ability_manager", @@ -53,13 +49,13 @@ ohos_fuzztest("DialCallFuzzTest") { "access_token:libtoken_setproc", "c_utils:utils", "common_event_service:cesfwk_innerkits", - "core_service:libtel_common", + "core_service:tel_core_service_api", "data_share:datashare_consumer", "init:libbegetutil", "ipc:ipc_core", "samgr:samgr_proxy", ] - defines += [ + defines = [ "TELEPHONY_LOG_TAG = \"CallManagerFuzzTest\"", "LOG_DOMAIN = 0xD000F00", ] @@ -70,7 +66,7 @@ ohos_fuzztest("DialCallFuzzTest") { "-fno-omit-frame-pointer", ] sources = [ - "//base/telephony/call_manager/test/fuzztest/common_fuzzer/addcalltoken_fuzzer.cpp", + "${CALL_MANAGER_PATH}/test/fuzztest/common_fuzzer/addcalltoken_fuzzer.cpp", "dialcall_fuzzer.cpp", ] if (is_standard_system) { diff --git a/test/fuzztest/dialcall_fuzzer/dialcall_fuzzer.cpp b/test/fuzztest/dialcall_fuzzer/dialcall_fuzzer.cpp index 471400d00f4abc27f54a44d3e132fea07e5b2feb..2c11c5748de44919ca3fb80d9c857b31f4c08726 100644 --- a/test/fuzztest/dialcall_fuzzer/dialcall_fuzzer.cpp +++ b/test/fuzztest/dialcall_fuzzer/dialcall_fuzzer.cpp @@ -147,6 +147,19 @@ int32_t SetCallWaiting(const uint8_t *data, size_t size) return DelayedSingleton::GetInstance()->OnSetCallWaiting(dataParcel, reply); } +int32_t InputDialerSpecialCode(const uint8_t *data, size_t size) +{ + if (!IsServiceInited()) { + return TELEPHONY_ERROR; + } + std::string specialCode(reinterpret_cast(data), size); + MessageParcel dataParcel; + dataParcel.WriteString(specialCode); + dataParcel.RewindRead(0); + MessageParcel reply; + return DelayedSingleton::GetInstance()->OnInputDialerSpecialCode(dataParcel, reply); +} + void DoSomethingInterestingWithMyAPI(const uint8_t *data, size_t size) { if (data == nullptr || size == 0) { @@ -160,6 +173,7 @@ void DoSomethingInterestingWithMyAPI(const uint8_t *data, size_t size) IsInEmergencyCall(data, size); DialCall(data, size); SetCallWaiting(data, size); + InputDialerSpecialCode(data, size); } } // namespace OHOS diff --git a/test/fuzztest/formatphonenumber_fuzzer/BUILD.gn b/test/fuzztest/formatphonenumber_fuzzer/BUILD.gn index 57325c63c643aebe02c1d63f2e83454bf21442dd..6aadd63990cde9bd969343fee6b59e7575d14f6d 100644 --- a/test/fuzztest/formatphonenumber_fuzzer/BUILD.gn +++ b/test/fuzztest/formatphonenumber_fuzzer/BUILD.gn @@ -12,40 +12,37 @@ # limitations under the License. #####################hydra-fuzz################### -import("//base/telephony/core_service/telephony.gni") import("//build/config/features.gni") import("//build/ohos.gni") import("//build/test.gni") +CALL_MANAGER_PATH = "../../.." ##############################fuzztest########################################## ohos_fuzztest("FormatPhoneNumberFuzzTest") { module_output_path = "call_manager/FormatPhoneNumberFuzzTest" module_out_path = module_output_path fuzz_config_file = - "//base/telephony/call_manager/test/fuzztest/formatphonenumber_fuzzer" + "${CALL_MANAGER_PATH}/test/fuzztest/formatphonenumber_fuzzer" include_dirs = [ - "//base/telephony/call_manager/interfaces/innerkits", - "//base/telephony/call_manager/services/audio/include", - "//base/telephony/call_manager/services/audio/include/audio_state", - "//base/telephony/call_manager/services/video/include", - "//base/telephony/call_manager/services/bluetooth/include", - "//base/telephony/call_manager/services/call/include", - "//base/telephony/call_manager/services/call_manager_service/include", - "//base/telephony/call_manager/services/call_setting/include", - "//base/telephony/call_manager/services/telephony_interaction/include", - "//base/telephony/call_manager/services/call_report/include", - "//base/telephony/call_manager/services/video/include", - "//base/telephony/call_manager/services/call/call_state_observer/include", - "//base/telephony/call_manager/test/fuzztest/common_fuzzer", - "//base/telephony/call_manager/frameworks/native/include", - "//base/telephony/call_manager/frameworks/native/include", - "//base/telephony/core_service/interfaces/innerkits/include", + "${CALL_MANAGER_PATH}/test/fuzztest/common_fuzzer", + "${CALL_MANAGER_PATH}/services/audio/include", + "${CALL_MANAGER_PATH}/services/audio/include/audio_state", + "${CALL_MANAGER_PATH}/services/video/include", + "${CALL_MANAGER_PATH}/services/bluetooth/include", + "${CALL_MANAGER_PATH}/services/call/include", + "${CALL_MANAGER_PATH}/services/call_manager_service/include", + "${CALL_MANAGER_PATH}/services/call_setting/include", + "${CALL_MANAGER_PATH}/services/telephony_interaction/include", + "${CALL_MANAGER_PATH}/services/call_report/include", + "${CALL_MANAGER_PATH}/services/video/include", + "${CALL_MANAGER_PATH}/services/call/call_state_observer/include", ] - configs = [ "//base/telephony/core_service/utils:telephony_log_config" ] - - deps = [ "//base/telephony/call_manager:tel_call_manager" ] + deps = [ + "${CALL_MANAGER_PATH}:tel_call_manager", + "${CALL_MANAGER_PATH}/frameworks/native:tel_call_manager_api", + ] external_deps = [ "ability_runtime:ability_manager", @@ -54,13 +51,13 @@ ohos_fuzztest("FormatPhoneNumberFuzzTest") { "access_token:libtoken_setproc", "c_utils:utils", "common_event_service:cesfwk_innerkits", - "core_service:libtel_common", + "core_service:tel_core_service_api", "data_share:datashare_consumer", "init:libbegetutil", "ipc:ipc_core", "samgr:samgr_proxy", ] - defines += [ + defines = [ "TELEPHONY_LOG_TAG = \"CallManagerFuzzTest\"", "LOG_DOMAIN = 0xD000F00", ] @@ -71,7 +68,7 @@ ohos_fuzztest("FormatPhoneNumberFuzzTest") { "-fno-omit-frame-pointer", ] sources = [ - "//base/telephony/call_manager/test/fuzztest/common_fuzzer/addcalltoken_fuzzer.cpp", + "${CALL_MANAGER_PATH}/test/fuzztest/common_fuzzer/addcalltoken_fuzzer.cpp", "formatphonenumber_fuzzer.cpp", ] if (is_standard_system) { diff --git a/test/fuzztest/formatphonenumbertoe164_fuzzer/BUILD.gn b/test/fuzztest/formatphonenumbertoe164_fuzzer/BUILD.gn index cb233e717a99aec1768dd2100d19867ace34a8f2..b2857f093e907cfcda480bdb786b7b1ba37401ff 100644 --- a/test/fuzztest/formatphonenumbertoe164_fuzzer/BUILD.gn +++ b/test/fuzztest/formatphonenumbertoe164_fuzzer/BUILD.gn @@ -12,39 +12,37 @@ # limitations under the License. #####################hydra-fuzz################### -import("//base/telephony/core_service/telephony.gni") import("//build/config/features.gni") import("//build/ohos.gni") import("//build/test.gni") +CALL_MANAGER_PATH = "../../.." ##############################fuzztest########################################## ohos_fuzztest("FormatPhoneNumberToE164FuzzTest") { module_output_path = "call_manager/FormatPhoneNumberToE164FuzzTest" module_out_path = module_output_path - fuzz_config_file = "//base/telephony/call_manager/test/fuzztest/formatphonenumbertoe164_fuzzer" + fuzz_config_file = + "${CALL_MANAGER_PATH}/test/fuzztest/formatphonenumbertoe164_fuzzer" include_dirs = [ - "//base/telephony/call_manager/interfaces/innerkits", - "//base/telephony/call_manager/services/audio/include", - "//base/telephony/call_manager/services/audio/include/audio_state", - "//base/telephony/call_manager/services/video/include", - "//base/telephony/call_manager/services/bluetooth/include", - "//base/telephony/call_manager/services/call/include", - "//base/telephony/call_manager/services/call_manager_service/include", - "//base/telephony/call_manager/services/call_setting/include", - "//base/telephony/call_manager/services/telephony_interaction/include", - "//base/telephony/call_manager/services/call_report/include", - "//base/telephony/call_manager/services/video/include", - "//base/telephony/call_manager/services/call/call_state_observer/include", - "//base/telephony/call_manager/test/fuzztest/common_fuzzer", - "//base/telephony/call_manager/frameworks/native/include", - "//base/telephony/call_manager/frameworks/native/include", - "//base/telephony/core_service/interfaces/innerkits/include", + "${CALL_MANAGER_PATH}/test/fuzztest/common_fuzzer", + "${CALL_MANAGER_PATH}/services/audio/include", + "${CALL_MANAGER_PATH}/services/audio/include/audio_state", + "${CALL_MANAGER_PATH}/services/video/include", + "${CALL_MANAGER_PATH}/services/bluetooth/include", + "${CALL_MANAGER_PATH}/services/call/include", + "${CALL_MANAGER_PATH}/services/call_manager_service/include", + "${CALL_MANAGER_PATH}/services/call_setting/include", + "${CALL_MANAGER_PATH}/services/telephony_interaction/include", + "${CALL_MANAGER_PATH}/services/call_report/include", + "${CALL_MANAGER_PATH}/services/video/include", + "${CALL_MANAGER_PATH}/services/call/call_state_observer/include", ] - configs = [ "//base/telephony/core_service/utils:telephony_log_config" ] - - deps = [ "//base/telephony/call_manager:tel_call_manager" ] + deps = [ + "${CALL_MANAGER_PATH}:tel_call_manager", + "${CALL_MANAGER_PATH}/frameworks/native:tel_call_manager_api", + ] external_deps = [ "ability_runtime:ability_manager", @@ -53,13 +51,13 @@ ohos_fuzztest("FormatPhoneNumberToE164FuzzTest") { "access_token:libtoken_setproc", "c_utils:utils", "common_event_service:cesfwk_innerkits", - "core_service:libtel_common", + "core_service:tel_core_service_api", "data_share:datashare_consumer", "init:libbegetutil", "ipc:ipc_core", "samgr:samgr_proxy", ] - defines += [ + defines = [ "TELEPHONY_LOG_TAG = \"CallManagerFuzzTest\"", "LOG_DOMAIN = 0xD000F00", ] @@ -70,7 +68,7 @@ ohos_fuzztest("FormatPhoneNumberToE164FuzzTest") { "-fno-omit-frame-pointer", ] sources = [ - "//base/telephony/call_manager/test/fuzztest/common_fuzzer/addcalltoken_fuzzer.cpp", + "${CALL_MANAGER_PATH}/test/fuzztest/common_fuzzer/addcalltoken_fuzzer.cpp", "formatphonenumbertoe164_fuzzer.cpp", ] if (is_standard_system) { diff --git a/test/fuzztest/isemergencyphonenumber_fuzzer/BUILD.gn b/test/fuzztest/isemergencyphonenumber_fuzzer/BUILD.gn index 042d27e3f88fdcdfd4d7fa24aa8b3fc6c5b95861..ff372c1ae4fd118e1540b395641465da959e638b 100644 --- a/test/fuzztest/isemergencyphonenumber_fuzzer/BUILD.gn +++ b/test/fuzztest/isemergencyphonenumber_fuzzer/BUILD.gn @@ -12,39 +12,37 @@ # limitations under the License. #####################hydra-fuzz################### -import("//base/telephony/core_service/telephony.gni") import("//build/config/features.gni") import("//build/ohos.gni") import("//build/test.gni") +CALL_MANAGER_PATH = "../../.." ##############################fuzztest########################################## ohos_fuzztest("IsEmergencyPhoneNumberFuzzTest") { module_output_path = "call_manager/IsEmergencyPhoneNumberFuzzTest" module_out_path = module_output_path - fuzz_config_file = "//base/telephony/call_manager/test/fuzztest/isemergencyphonenumber_fuzzer" + fuzz_config_file = + "${CALL_MANAGER_PATH}/test/fuzztest/isemergencyphonenumber_fuzzer" include_dirs = [ - "//base/telephony/call_manager/interfaces/innerkits", - "//base/telephony/call_manager/services/audio/include", - "//base/telephony/call_manager/services/audio/include/audio_state", - "//base/telephony/call_manager/services/video/include", - "//base/telephony/call_manager/services/bluetooth/include", - "//base/telephony/call_manager/services/call/include", - "//base/telephony/call_manager/services/call_manager_service/include", - "//base/telephony/call_manager/services/call_setting/include", - "//base/telephony/call_manager/services/telephony_interaction/include", - "//base/telephony/call_manager/services/call_report/include", - "//base/telephony/call_manager/services/video/include", - "//base/telephony/call_manager/services/call/call_state_observer/include", - "//base/telephony/call_manager/test/fuzztest/common_fuzzer", - "//base/telephony/call_manager/frameworks/native/include", - "//base/telephony/call_manager/frameworks/native/include", - "//base/telephony/core_service/interfaces/innerkits/include", + "${CALL_MANAGER_PATH}/test/fuzztest/common_fuzzer", + "${CALL_MANAGER_PATH}/services/audio/include", + "${CALL_MANAGER_PATH}/services/audio/include/audio_state", + "${CALL_MANAGER_PATH}/services/video/include", + "${CALL_MANAGER_PATH}/services/bluetooth/include", + "${CALL_MANAGER_PATH}/services/call/include", + "${CALL_MANAGER_PATH}/services/call_manager_service/include", + "${CALL_MANAGER_PATH}/services/call_setting/include", + "${CALL_MANAGER_PATH}/services/telephony_interaction/include", + "${CALL_MANAGER_PATH}/services/call_report/include", + "${CALL_MANAGER_PATH}/services/video/include", + "${CALL_MANAGER_PATH}/services/call/call_state_observer/include", ] - configs = [ "//base/telephony/core_service/utils:telephony_log_config" ] - - deps = [ "//base/telephony/call_manager:tel_call_manager" ] + deps = [ + "${CALL_MANAGER_PATH}:tel_call_manager", + "${CALL_MANAGER_PATH}/frameworks/native:tel_call_manager_api", + ] external_deps = [ "ability_runtime:ability_manager", @@ -53,13 +51,13 @@ ohos_fuzztest("IsEmergencyPhoneNumberFuzzTest") { "access_token:libtoken_setproc", "c_utils:utils", "common_event_service:cesfwk_innerkits", - "core_service:libtel_common", + "core_service:tel_core_service_api", "data_share:datashare_consumer", "init:libbegetutil", "ipc:ipc_core", "samgr:samgr_proxy", ] - defines += [ + defines = [ "TELEPHONY_LOG_TAG = \"CallManagerFuzzTest\"", "LOG_DOMAIN = 0xD000F00", ] @@ -70,7 +68,7 @@ ohos_fuzztest("IsEmergencyPhoneNumberFuzzTest") { "-fno-omit-frame-pointer", ] sources = [ - "//base/telephony/call_manager/test/fuzztest/common_fuzzer/addcalltoken_fuzzer.cpp", + "${CALL_MANAGER_PATH}/test/fuzztest/common_fuzzer/addcalltoken_fuzzer.cpp", "isemergencyphonenumber_fuzzer.cpp", ] if (is_standard_system) { diff --git a/test/fuzztest/rejectcall_fuzzer/BUILD.gn b/test/fuzztest/rejectcall_fuzzer/BUILD.gn index ef7995e5b3e1dbd8e4142929a6297bb73699bf6d..239fd2501d470922afd05b38b46adc107af977bf 100644 --- a/test/fuzztest/rejectcall_fuzzer/BUILD.gn +++ b/test/fuzztest/rejectcall_fuzzer/BUILD.gn @@ -12,40 +12,36 @@ # limitations under the License. #####################hydra-fuzz################### -import("//base/telephony/core_service/telephony.gni") import("//build/config/features.gni") import("//build/ohos.gni") import("//build/test.gni") +CALL_MANAGER_PATH = "../../.." ##############################fuzztest########################################## ohos_fuzztest("RejectCallFuzzTest") { module_output_path = "call_manager/RejectCallFuzzTest" module_out_path = module_output_path - fuzz_config_file = - "//base/telephony/call_manager/test/fuzztest/rejectcall_fuzzer" + fuzz_config_file = "${CALL_MANAGER_PATH}/test/fuzztest/rejectcall_fuzzer" include_dirs = [ - "//base/telephony/call_manager/interfaces/innerkits", - "//base/telephony/call_manager/services/audio/include", - "//base/telephony/call_manager/services/audio/include/audio_state", - "//base/telephony/call_manager/services/video/include", - "//base/telephony/call_manager/services/bluetooth/include", - "//base/telephony/call_manager/services/call/include", - "//base/telephony/call_manager/services/call_manager_service/include", - "//base/telephony/call_manager/services/call_setting/include", - "//base/telephony/call_manager/services/telephony_interaction/include", - "//base/telephony/call_manager/services/call_report/include", - "//base/telephony/call_manager/services/video/include", - "//base/telephony/call_manager/services/call/call_state_observer/include", - "//base/telephony/call_manager/test/fuzztest/common_fuzzer", - "//base/telephony/call_manager/frameworks/native/include", - "//base/telephony/call_manager/frameworks/native/include", - "//base/telephony/core_service/interfaces/innerkits/include", + "${CALL_MANAGER_PATH}/test/fuzztest/common_fuzzer", + "${CALL_MANAGER_PATH}/services/audio/include", + "${CALL_MANAGER_PATH}/services/audio/include/audio_state", + "${CALL_MANAGER_PATH}/services/video/include", + "${CALL_MANAGER_PATH}/services/bluetooth/include", + "${CALL_MANAGER_PATH}/services/call/include", + "${CALL_MANAGER_PATH}/services/call_manager_service/include", + "${CALL_MANAGER_PATH}/services/call_setting/include", + "${CALL_MANAGER_PATH}/services/telephony_interaction/include", + "${CALL_MANAGER_PATH}/services/call_report/include", + "${CALL_MANAGER_PATH}/services/video/include", + "${CALL_MANAGER_PATH}/services/call/call_state_observer/include", ] - configs = [ "//base/telephony/core_service/utils:telephony_log_config" ] - - deps = [ "//base/telephony/call_manager:tel_call_manager" ] + deps = [ + "${CALL_MANAGER_PATH}:tel_call_manager", + "${CALL_MANAGER_PATH}/frameworks/native:tel_call_manager_api", + ] external_deps = [ "ability_runtime:ability_manager", @@ -54,13 +50,13 @@ ohos_fuzztest("RejectCallFuzzTest") { "access_token:libtoken_setproc", "c_utils:utils", "common_event_service:cesfwk_innerkits", - "core_service:libtel_common", + "core_service:tel_core_service_api", "data_share:datashare_consumer", "init:libbegetutil", "ipc:ipc_core", "samgr:samgr_proxy", ] - defines += [ + defines = [ "TELEPHONY_LOG_TAG = \"CallManagerFuzzTest\"", "LOG_DOMAIN = 0xD000F00", ] @@ -71,7 +67,7 @@ ohos_fuzztest("RejectCallFuzzTest") { "-fno-omit-frame-pointer", ] sources = [ - "//base/telephony/call_manager/test/fuzztest/common_fuzzer/addcalltoken_fuzzer.cpp", + "${CALL_MANAGER_PATH}/test/fuzztest/common_fuzzer/addcalltoken_fuzzer.cpp", "rejectcall_fuzzer.cpp", ] if (is_standard_system) { diff --git a/test/fuzztest/rejectcall_fuzzer/rejectcall_fuzzer.cpp b/test/fuzztest/rejectcall_fuzzer/rejectcall_fuzzer.cpp index 5874b8cab13effa4e4cce8a59bb89354a1a59ea3..bd18cb49af7a398bbb8172b47096739e5a6cfdcd 100644 --- a/test/fuzztest/rejectcall_fuzzer/rejectcall_fuzzer.cpp +++ b/test/fuzztest/rejectcall_fuzzer/rejectcall_fuzzer.cpp @@ -59,6 +59,18 @@ void RejectCall(const uint8_t *data, size_t size) DelayedSingleton::GetInstance()->OnRejectCall(dataMessageParcel, reply); } +void CancelMissedIncomingCallNotification(const uint8_t *data, size_t size) +{ + if (!IsServiceInited()) { + return; + } + MessageParcel dataMessageParcel; + dataMessageParcel.RewindRead(0); + MessageParcel reply; + DelayedSingleton::GetInstance()->OnCancelMissedIncomingCallNotification( + dataMessageParcel, reply); +} + void DoSomethingInterestingWithMyAPI(const uint8_t *data, size_t size) { if (data == nullptr || size == 0) { @@ -66,6 +78,7 @@ void DoSomethingInterestingWithMyAPI(const uint8_t *data, size_t size) } RejectCall(data, size); + CancelMissedIncomingCallNotification(data, size); } } // namespace OHOS diff --git a/test/fuzztest/setaudiodevice_fuzzer/BUILD.gn b/test/fuzztest/setaudiodevice_fuzzer/BUILD.gn index f39baa4dedf4e0b6db05318db985e3affd9454e4..650d7224083d2c8bbc4ac667306f37edeb131d7a 100644 --- a/test/fuzztest/setaudiodevice_fuzzer/BUILD.gn +++ b/test/fuzztest/setaudiodevice_fuzzer/BUILD.gn @@ -12,40 +12,36 @@ # limitations under the License. #####################hydra-fuzz################### -import("//base/telephony/core_service/telephony.gni") import("//build/config/features.gni") import("//build/ohos.gni") import("//build/test.gni") +CALL_MANAGER_PATH = "../../.." ##############################fuzztest########################################## ohos_fuzztest("SetAudioDeviceFuzzTest") { module_output_path = "call_manager/SetAudioDeviceFuzzTest" module_out_path = module_output_path - fuzz_config_file = - "//base/telephony/call_manager/test/fuzztest/setaudiodevice_fuzzer" + fuzz_config_file = "${CALL_MANAGER_PATH}/test/fuzztest/setaudiodevice_fuzzer" include_dirs = [ - "//base/telephony/call_manager/interfaces/innerkits", - "//base/telephony/call_manager/services/audio/include", - "//base/telephony/call_manager/services/audio/include/audio_state", - "//base/telephony/call_manager/services/video/include", - "//base/telephony/call_manager/services/bluetooth/include", - "//base/telephony/call_manager/services/call/include", - "//base/telephony/call_manager/services/call_manager_service/include", - "//base/telephony/call_manager/services/call_setting/include", - "//base/telephony/call_manager/services/telephony_interaction/include", - "//base/telephony/call_manager/services/call_report/include", - "//base/telephony/call_manager/services/video/include", - "//base/telephony/call_manager/services/call/call_state_observer/include", - "//base/telephony/call_manager/test/fuzztest/common_fuzzer", - "//base/telephony/call_manager/frameworks/native/include", - "//base/telephony/call_manager/frameworks/native/include", - "//base/telephony/core_service/interfaces/innerkits/include", + "${CALL_MANAGER_PATH}/test/fuzztest/common_fuzzer", + "${CALL_MANAGER_PATH}/services/audio/include", + "${CALL_MANAGER_PATH}/services/audio/include/audio_state", + "${CALL_MANAGER_PATH}/services/video/include", + "${CALL_MANAGER_PATH}/services/bluetooth/include", + "${CALL_MANAGER_PATH}/services/call/include", + "${CALL_MANAGER_PATH}/services/call_manager_service/include", + "${CALL_MANAGER_PATH}/services/call_setting/include", + "${CALL_MANAGER_PATH}/services/telephony_interaction/include", + "${CALL_MANAGER_PATH}/services/call_report/include", + "${CALL_MANAGER_PATH}/services/video/include", + "${CALL_MANAGER_PATH}/services/call/call_state_observer/include", ] - configs = [ "//base/telephony/core_service/utils:telephony_log_config" ] - - deps = [ "//base/telephony/call_manager:tel_call_manager" ] + deps = [ + "${CALL_MANAGER_PATH}:tel_call_manager", + "${CALL_MANAGER_PATH}/frameworks/native:tel_call_manager_api", + ] external_deps = [ "ability_runtime:ability_manager", @@ -54,13 +50,13 @@ ohos_fuzztest("SetAudioDeviceFuzzTest") { "access_token:libtoken_setproc", "c_utils:utils", "common_event_service:cesfwk_innerkits", - "core_service:libtel_common", + "core_service:tel_core_service_api", "data_share:datashare_consumer", "init:libbegetutil", "ipc:ipc_core", "samgr:samgr_proxy", ] - defines += [ + defines = [ "TELEPHONY_LOG_TAG = \"CallManagerFuzzTest\"", "LOG_DOMAIN = 0xD000F00", ] @@ -71,7 +67,7 @@ ohos_fuzztest("SetAudioDeviceFuzzTest") { "-fno-omit-frame-pointer", ] sources = [ - "//base/telephony/call_manager/test/fuzztest/common_fuzzer/addcalltoken_fuzzer.cpp", + "${CALL_MANAGER_PATH}/test/fuzztest/common_fuzzer/addcalltoken_fuzzer.cpp", "setaudiodevice_fuzzer.cpp", ] if (is_standard_system) { diff --git a/test/fuzztest/setcalltransferinfo_fuzzer/BUILD.gn b/test/fuzztest/setcalltransferinfo_fuzzer/BUILD.gn index cb6333a64b5d9181579ed178758b8efbecefd1fe..a664239d0520849082a9a37105a91c48c378d251 100644 --- a/test/fuzztest/setcalltransferinfo_fuzzer/BUILD.gn +++ b/test/fuzztest/setcalltransferinfo_fuzzer/BUILD.gn @@ -12,38 +12,36 @@ # limitations under the License. #####################hydra-fuzz################### -import("//base/telephony/core_service/telephony.gni") import("//build/config/features.gni") import("//build/ohos.gni") import("//build/test.gni") +CALL_MANAGER_PATH = "../../.." ##############################fuzztest########################################## ohos_fuzztest("SetCallTransferInfoFuzzTest") { module_output_path = "call_manager/SetCallTransferInfoFuzzTest" module_out_path = module_output_path fuzz_config_file = - "//base/telephony/call_manager/test/fuzztest/setcalltransferinfo_fuzzer" + "${CALL_MANAGER_PATH}/test/fuzztest/setcalltransferinfo_fuzzer" include_dirs = [ - "//base/telephony/call_manager/interfaces/innerkits", - "//base/telephony/call_manager/services/audio/include", - "//base/telephony/call_manager/services/audio/include/audio_state", - "//base/telephony/call_manager/services/video/include", - "//base/telephony/call_manager/services/bluetooth/include", - "//base/telephony/call_manager/services/call/include", - "//base/telephony/call_manager/services/call_manager_service/include", - "//base/telephony/call_manager/services/call_setting/include", - "//base/telephony/call_manager/services/telephony_interaction/include", - "//base/telephony/call_manager/services/call_report/include", - "//base/telephony/call_manager/services/video/include", - "//base/telephony/call_manager/services/call/call_state_observer/include", - "//base/telephony/call_manager/test/fuzztest/common_fuzzer", - "//base/telephony/call_manager/frameworks/native/include", - "//base/telephony/call_manager/frameworks/native/include", - "//base/telephony/core_service/interfaces/innerkits/include", + "${CALL_MANAGER_PATH}/test/fuzztest/common_fuzzer", + "${CALL_MANAGER_PATH}/services/audio/include", + "${CALL_MANAGER_PATH}/services/audio/include/audio_state", + "${CALL_MANAGER_PATH}/services/video/include", + "${CALL_MANAGER_PATH}/services/bluetooth/include", + "${CALL_MANAGER_PATH}/services/call/include", + "${CALL_MANAGER_PATH}/services/call_manager_service/include", + "${CALL_MANAGER_PATH}/services/call_setting/include", + "${CALL_MANAGER_PATH}/services/telephony_interaction/include", + "${CALL_MANAGER_PATH}/services/call_report/include", + "${CALL_MANAGER_PATH}/services/video/include", + "${CALL_MANAGER_PATH}/services/call/call_state_observer/include", ] - configs = [ "//base/telephony/core_service/utils:telephony_log_config" ] - deps = [ "//base/telephony/call_manager:tel_call_manager" ] + deps = [ + "${CALL_MANAGER_PATH}:tel_call_manager", + "${CALL_MANAGER_PATH}/frameworks/native:tel_call_manager_api", + ] external_deps = [ "ability_runtime:ability_manager", @@ -52,13 +50,13 @@ ohos_fuzztest("SetCallTransferInfoFuzzTest") { "access_token:libtoken_setproc", "c_utils:utils", "common_event_service:cesfwk_innerkits", - "core_service:libtel_common", + "core_service:tel_core_service_api", "data_share:datashare_consumer", "init:libbegetutil", "ipc:ipc_core", "samgr:samgr_proxy", ] - defines += [ + defines = [ "TELEPHONY_LOG_TAG = \"CallManagerFuzzTest\"", "LOG_DOMAIN = 0xD000F00", ] @@ -69,7 +67,7 @@ ohos_fuzztest("SetCallTransferInfoFuzzTest") { "-fno-omit-frame-pointer", ] sources = [ - "//base/telephony/call_manager/test/fuzztest/common_fuzzer/addcalltoken_fuzzer.cpp", + "${CALL_MANAGER_PATH}/test/fuzztest/common_fuzzer/addcalltoken_fuzzer.cpp", "setcalltransferinfo_fuzzer.cpp", ] if (is_standard_system) { diff --git a/test/fuzztest/setpausepicture_fuzzer/BUILD.gn b/test/fuzztest/setpausepicture_fuzzer/BUILD.gn index 37f859e61613a2451d23171d0012892fb4390818..7cbeda8ef5bcace2d5955a18a3456332a5b72158 100644 --- a/test/fuzztest/setpausepicture_fuzzer/BUILD.gn +++ b/test/fuzztest/setpausepicture_fuzzer/BUILD.gn @@ -12,39 +12,36 @@ # limitations under the License. #####################hydra-fuzz################### -import("//base/telephony/core_service/telephony.gni") import("//build/config/features.gni") import("//build/ohos.gni") import("//build/test.gni") +CALL_MANAGER_PATH = "../../.." ##############################fuzztest########################################## ohos_fuzztest("SetPausePictureFuzzTest") { module_output_path = "call_manager/SetPausePictureFuzzTest" module_out_path = module_output_path - fuzz_config_file = - "//base/telephony/call_manager/test/fuzztest/setpausepicture_fuzzer" + fuzz_config_file = "${CALL_MANAGER_PATH}/test/fuzztest/setpausepicture_fuzzer" include_dirs = [ - "//base/telephony/call_manager/interfaces/innerkits", - "//base/telephony/call_manager/services/audio/include", - "//base/telephony/call_manager/services/audio/include/audio_state", - "//base/telephony/call_manager/services/video/include", - "//base/telephony/call_manager/services/bluetooth/include", - "//base/telephony/call_manager/services/call/include", - "//base/telephony/call_manager/services/call_manager_service/include", - "//base/telephony/call_manager/services/call_setting/include", - "//base/telephony/call_manager/services/telephony_interaction/include", - "//base/telephony/call_manager/services/call_report/include", - "//base/telephony/call_manager/services/video/include", - "//base/telephony/call_manager/services/call/call_state_observer/include", - "//base/telephony/call_manager/test/fuzztest/common_fuzzer", - "//base/telephony/call_manager/frameworks/native/include", - "//base/telephony/call_manager/frameworks/native/include", - "//base/telephony/core_service/interfaces/innerkits/include", + "${CALL_MANAGER_PATH}/test/fuzztest/common_fuzzer", + "${CALL_MANAGER_PATH}/services/audio/include", + "${CALL_MANAGER_PATH}/services/audio/include/audio_state", + "${CALL_MANAGER_PATH}/services/video/include", + "${CALL_MANAGER_PATH}/services/bluetooth/include", + "${CALL_MANAGER_PATH}/services/call/include", + "${CALL_MANAGER_PATH}/services/call_manager_service/include", + "${CALL_MANAGER_PATH}/services/call_setting/include", + "${CALL_MANAGER_PATH}/services/telephony_interaction/include", + "${CALL_MANAGER_PATH}/services/call_report/include", + "${CALL_MANAGER_PATH}/services/video/include", + "${CALL_MANAGER_PATH}/services/call/call_state_observer/include", ] - configs = [ "//base/telephony/core_service/utils:telephony_log_config" ] + deps = [ + "${CALL_MANAGER_PATH}:tel_call_manager", + "${CALL_MANAGER_PATH}/frameworks/native:tel_call_manager_api", + ] - deps = [ "//base/telephony/call_manager:tel_call_manager" ] external_deps = [ "ability_runtime:ability_manager", "access_token:libaccesstoken_sdk", @@ -52,13 +49,13 @@ ohos_fuzztest("SetPausePictureFuzzTest") { "access_token:libtoken_setproc", "c_utils:utils", "common_event_service:cesfwk_innerkits", - "core_service:libtel_common", + "core_service:tel_core_service_api", "data_share:datashare_consumer", "init:libbegetutil", "ipc:ipc_core", "samgr:samgr_proxy", ] - defines += [ + defines = [ "TELEPHONY_LOG_TAG = \"CallManagerFuzzTest\"", "LOG_DOMAIN = 0xD000F00", ] @@ -69,7 +66,7 @@ ohos_fuzztest("SetPausePictureFuzzTest") { "-fno-omit-frame-pointer", ] sources = [ - "//base/telephony/call_manager/test/fuzztest/common_fuzzer/addcalltoken_fuzzer.cpp", + "${CALL_MANAGER_PATH}/test/fuzztest/common_fuzzer/addcalltoken_fuzzer.cpp", "setpausepicture_fuzzer.cpp", ] if (is_standard_system) { diff --git a/test/fuzztest/startdtmf_fuzzer/BUILD.gn b/test/fuzztest/startdtmf_fuzzer/BUILD.gn index 0bd1b3e4e2ca51fb0e72b1843bda21985e9db428..99d4229e3d01b49801d321fc6ea1eb684174fa3b 100644 --- a/test/fuzztest/startdtmf_fuzzer/BUILD.gn +++ b/test/fuzztest/startdtmf_fuzzer/BUILD.gn @@ -12,39 +12,35 @@ # limitations under the License. #####################hydra-fuzz################### -import("//base/telephony/core_service/telephony.gni") import("//build/config/features.gni") import("//build/ohos.gni") import("//build/test.gni") +CALL_MANAGER_PATH = "../../.." ##############################fuzztest########################################## ohos_fuzztest("StartDtmfFuzzTest") { module_output_path = "call_manager/StartDtmfFuzzTest" module_out_path = module_output_path - fuzz_config_file = - "//base/telephony/call_manager/test/fuzztest/startdtmf_fuzzer" + fuzz_config_file = "${CALL_MANAGER_PATH}/test/fuzztest/startdtmf_fuzzer" include_dirs = [ - "//base/telephony/call_manager/interfaces/innerkits", - "//base/telephony/call_manager/services/audio/include", - "//base/telephony/call_manager/services/audio/include/audio_state", - "//base/telephony/call_manager/services/video/include", - "//base/telephony/call_manager/services/bluetooth/include", - "//base/telephony/call_manager/services/call/include", - "//base/telephony/call_manager/services/call_manager_service/include", - "//base/telephony/call_manager/services/call_setting/include", - "//base/telephony/call_manager/services/telephony_interaction/include", - "//base/telephony/call_manager/services/call_report/include", - "//base/telephony/call_manager/services/video/include", - "//base/telephony/call_manager/services/call/call_state_observer/include", - "//base/telephony/call_manager/test/fuzztest/common_fuzzer", - "//base/telephony/call_manager/frameworks/native/include", - "//base/telephony/call_manager/frameworks/native/include", - "//base/telephony/core_service/interfaces/innerkits/include", + "${CALL_MANAGER_PATH}/test/fuzztest/common_fuzzer", + "${CALL_MANAGER_PATH}/services/audio/include", + "${CALL_MANAGER_PATH}/services/audio/include/audio_state", + "${CALL_MANAGER_PATH}/services/video/include", + "${CALL_MANAGER_PATH}/services/bluetooth/include", + "${CALL_MANAGER_PATH}/services/call/include", + "${CALL_MANAGER_PATH}/services/call_manager_service/include", + "${CALL_MANAGER_PATH}/services/call_setting/include", + "${CALL_MANAGER_PATH}/services/telephony_interaction/include", + "${CALL_MANAGER_PATH}/services/call_report/include", + "${CALL_MANAGER_PATH}/services/video/include", + "${CALL_MANAGER_PATH}/services/call/call_state_observer/include", ] - configs = [ "//base/telephony/core_service/utils:telephony_log_config" ] - - deps = [ "//base/telephony/call_manager:tel_call_manager" ] + deps = [ + "${CALL_MANAGER_PATH}:tel_call_manager", + "${CALL_MANAGER_PATH}/frameworks/native:tel_call_manager_api", + ] external_deps = [ "ability_runtime:ability_manager", @@ -53,13 +49,13 @@ ohos_fuzztest("StartDtmfFuzzTest") { "access_token:libtoken_setproc", "c_utils:utils", "common_event_service:cesfwk_innerkits", - "core_service:libtel_common", + "core_service:tel_core_service_api", "data_share:datashare_consumer", "init:libbegetutil", "ipc:ipc_core", "samgr:samgr_proxy", ] - defines += [ + defines = [ "TELEPHONY_LOG_TAG = \"CallManagerFuzzTest\"", "LOG_DOMAIN = 0xD000F00", ] @@ -70,7 +66,7 @@ ohos_fuzztest("StartDtmfFuzzTest") { "-fno-omit-frame-pointer", ] sources = [ - "//base/telephony/call_manager/test/fuzztest/common_fuzzer/addcalltoken_fuzzer.cpp", + "${CALL_MANAGER_PATH}/test/fuzztest/common_fuzzer/addcalltoken_fuzzer.cpp", "startdtmf_fuzzer.cpp", ] if (is_standard_system) { diff --git a/test/unittest/call_manager_gtest/BUILD.gn b/test/unittest/call_manager_gtest/BUILD.gn index 81f2b7ff0801967c023da2172cb84fa1d3162c5e..ade1e7a6aba6263ac885e89ec09ba1240dc34a73 100644 --- a/test/unittest/call_manager_gtest/BUILD.gn +++ b/test/unittest/call_manager_gtest/BUILD.gn @@ -11,8 +11,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -import("//base/telephony/call_manager/call_manager_aafwk.gni") import("//build/test.gni") +CALL_MANAGER_PATH = "../../.." ohos_unittest("tel_call_manager_gtest") { install_enable = true @@ -22,49 +22,41 @@ ohos_unittest("tel_call_manager_gtest") { module_out_path = part_name + "/" + test_module sources = [ - "//base/telephony/call_manager/frameworks/native/src/call_manager_service_proxy.cpp", + "${CALL_MANAGER_PATH}/frameworks/native/src/call_manager_service_proxy.cpp", "src/call_manager_gtest.cpp", "src/zero_branch_test.cpp", ] include_dirs = [ - "//base/telephony/call_manager/services/bluetooth/include", - "//base/telephony/call_manager/services/call_manager_service/include", - "//base/telephony/call_manager/test/unittest/call_manager_gtest/include", - "//base/telephony/call_manager/utils/include", - "//base/telephony/call_manager/services/call_report/include", - "//base/telephony/call_manager/services/call/include", - "//base/telephony/call_manager/services/call_setting/include", - "//base/telephony/call_manager/services/telephony_interaction/include", - "//base/telephony/call_manager/services/call/call_state_observer/include", - "//base/telephony/call_manager/services/video/include", - "//base/telephony/call_manager/frameworks/native/include", - "//base/telephony/call_manager/interfaces/innerkits", + "${CALL_MANAGER_PATH}/frameworks/native/include", + "${CALL_MANAGER_PATH}/interfaces/innerkits", + "${CALL_MANAGER_PATH}/services/bluetooth/include", + "${CALL_MANAGER_PATH}/services/call_manager_service/include", + "${CALL_MANAGER_PATH}/services/call_report/include", + "${CALL_MANAGER_PATH}/services/call_setting/include", + "${CALL_MANAGER_PATH}/services/call/call_state_observer/include", + "${CALL_MANAGER_PATH}/services/call/include", + "${CALL_MANAGER_PATH}/services/telephony_interaction/include", + "${CALL_MANAGER_PATH}/services/video/include", + "${CALL_MANAGER_PATH}/test/unittest/call_manager_gtest/include", + "${CALL_MANAGER_PATH}/utils/include", "//third_party/libphonenumber/cpp/src", "//third_party/libphonenumber/cpp/src/phonenumbers", "//third_party/protobuf/src", "//third_party/protobuf/src/google/protobuf", ] - configs = [ "//base/telephony/core_service/utils:telephony_log_config" ] - - deps = [ - "${ability_runtime_inner_api_path}/ability_manager:ability_manager", - "${ability_runtime_path}/frameworks/native/ability/native:abilitykit_native", - "//base/telephony/call_manager:tel_call_manager", - "//base/telephony/call_manager/frameworks/native:tel_call_manager_api", - "//base/telephony/core_service/utils:libtel_common", - "//third_party/googletest:gtest_main", - "//third_party/libphonenumber/cpp:phonenumber_standard", - ] - external_deps = [ "ability_base:want", + "ability_runtime:ability_manager", + "ability_runtime:dataobs_manager", "access_token:libaccesstoken_sdk", "access_token:libnativetoken", "access_token:libtoken_setproc", + "bluetooth:btframework", "c_utils:utils", "common_event_service:cesfwk_innerkits", + "core_service:libtel_common", "core_service:tel_core_service_api", "data_share:datashare_consumer", "eventhandler:libeventhandler", @@ -74,6 +66,11 @@ ohos_unittest("tel_call_manager_gtest") { "samgr:samgr_proxy", ] + deps = [ + "${CALL_MANAGER_PATH}:tel_call_manager", + "${CALL_MANAGER_PATH}/frameworks/native:tel_call_manager_api", + ] + defines = [ "TELEPHONY_LOG_TAG = \"CallManagerGtest\"", "LOG_DOMAIN = 0xD000F00", @@ -83,13 +80,6 @@ ohos_unittest("tel_call_manager_gtest") { defines += [ "CALL_MANAGER_IMS_LITE_UNSUPPORT" ] } - if (defined(global_parts_info) && - defined(global_parts_info.communication_bluetooth) && - global_parts_info.communication_bluetooth) { - external_deps += [ "bluetooth:btframework" ] - defines += [ "ABILITY_BLUETOOTH_SUPPORT" ] - } - if (is_standard_system) { external_deps += [ "hiviewdfx_hilog_native:libhilog" ] } else { diff --git a/test/unittest/call_manager_gtest/include/call_manager_connect.h b/test/unittest/call_manager_gtest/include/call_manager_connect.h index 4da88d1f6197e1fbb3ae986a751fb7a7d328ad24..70fc728b86fc49fd5bb9ac78a8d2ce6f9e425015 100644 --- a/test/unittest/call_manager_gtest/include/call_manager_connect.h +++ b/test/unittest/call_manager_gtest/include/call_manager_connect.h @@ -51,6 +51,7 @@ HapInfoParams testInfoParams = { .userID = 1, .instIndex = 0, .appIDDesc = "test", + .isSystemApp = true, }; PermissionDef testPermPlaceCallDef = { @@ -129,12 +130,70 @@ PermissionStateFull testAnswerCallState = { .resDeviceID = { "local" }, }; +PermissionDef testReadCallLogDef = { + .permissionName = "ohos.permission.READ_CALL_LOG", + .bundleName = "tel_call_manager_gtest", + .grantMode = 1, // SYSTEM_GRANT + .label = "label", + .labelId = 1, + .description = "Test call manager", + .descriptionId = 1, + .availableLevel = APL_SYSTEM_BASIC, +}; + +PermissionStateFull testPermReadCallLog = { + .grantFlags = { 2 }, // PERMISSION_USER_SET + .grantStatus = { PermissionState::PERMISSION_GRANTED }, + .isGeneral = true, + .permissionName = "ohos.permission.READ_CALL_LOG", + .resDeviceID = { "local" }, +}; + +PermissionDef testWriteCallLogDef = { + .permissionName = "ohos.permission.WRITE_CALL_LOG", + .bundleName = "tel_call_manager_gtest", + .grantMode = 1, // SYSTEM_GRANT + .label = "label", + .labelId = 1, + .description = "Test call manager", + .descriptionId = 1, + .availableLevel = APL_SYSTEM_BASIC, +}; + +PermissionStateFull testPermWriteCallLog = { + .grantFlags = { 2 }, // PERMISSION_USER_SET + .grantStatus = { PermissionState::PERMISSION_GRANTED }, + .isGeneral = true, + .permissionName = "ohos.permission.WRITE_CALL_LOG", + .resDeviceID = { "local" }, +}; + +PermissionDef testStartAbilityFromBGDef = { + .permissionName = "ohos.permission.START_ABILITIES_FROM_BACKGROUND", + .bundleName = "tel_call_manager_gtest", + .grantMode = 1, // SYSTEM_GRANT + .label = "label", + .labelId = 1, + .description = "Test call manager", + .descriptionId = 1, + .availableLevel = APL_SYSTEM_BASIC, +}; + +PermissionStateFull testPermStartAbilityFromBG = { + .grantFlags = { 2 }, // PERMISSION_USER_SET + .grantStatus = { PermissionState::PERMISSION_GRANTED }, + .isGeneral = true, + .permissionName = "ohos.permission.START_ABILITIES_FROM_BACKGROUND", + .resDeviceID = { "local" }, +}; + HapPolicyParams testPolicyParams = { .apl = APL_SYSTEM_BASIC, .domain = "test.domain", .permList = { testPermPlaceCallDef, testPermSetTelephonyStateDef, testPermGetTelephonyStateDef, - testPermAnswerCallDef }, - .permStateList = { testPlaceCallState, testSetTelephonyState, testGetTelephonyState, testAnswerCallState }, + testPermAnswerCallDef, testReadCallLogDef, testWriteCallLogDef, testStartAbilityFromBGDef }, + .permStateList = { testPlaceCallState, testSetTelephonyState, testGetTelephonyState, testAnswerCallState, + testPermReadCallLog, testPermWriteCallLog, testPermStartAbilityFromBG }, }; class AccessToken { @@ -144,7 +203,7 @@ public: currentID_ = GetSelfTokenID(); AccessTokenIDEx tokenIdEx = AccessTokenKit::AllocHapToken(testInfoParams, testPolicyParams); accessID_ = tokenIdEx.tokenIdExStruct.tokenID; - SetSelfTokenID(accessID_); + SetSelfTokenID(tokenIdEx.tokenIDEx); } ~AccessToken() { diff --git a/test/unittest/call_manager_gtest/src/call_manager_gtest.cpp b/test/unittest/call_manager_gtest/src/call_manager_gtest.cpp index 0e091d296653a0b06fded045253f9f2910a8121c..236ee27a9fa139db4daaa028d698d4e97875c2ee 100644 --- a/test/unittest/call_manager_gtest/src/call_manager_gtest.cpp +++ b/test/unittest/call_manager_gtest/src/call_manager_gtest.cpp @@ -22,6 +22,7 @@ #include #include "bluetooth_hfp_ag.h" +#include "call_manager_connect.h" #include "call_manager_service.h" #include "telephony_types.h" @@ -2143,7 +2144,7 @@ HWTEST_F(CallManagerGtest, Telephony_CallManager_FormatPhoneNumberToE164_0400, F std::u16string phonyNumber = Str8ToStr16(number); std::u16string countryCode = Str8ToStr16(Code); std::u16string formatNumber = Str8ToStr16(formatBefore); - EXPECT_NE(CallManagerGtest::clientPtr_->FormatPhoneNumberToE164(phonyNumber, countryCode, formatNumber), + EXPECT_EQ(CallManagerGtest::clientPtr_->FormatPhoneNumberToE164(phonyNumber, countryCode, formatNumber), RETURN_VALUE_IS_ZERO); } @@ -4778,6 +4779,81 @@ HWTEST_F(CallManagerGtest, Telephony_CallManager_CloseUnFinishedUssd_0100, Funct } } +/************************************* Test InputDialerSpecialCode() ************************************/ +/** + * @tc.number Telephony_CallManager_InputDialerSpecialCode_0100 + * @tc.name test Input Dialer Special Code with support code + * @tc.desc Function test + */ +HWTEST_F(CallManagerGtest, Telephony_CallManager_InputDialerSpecialCode_0100, Function | MediumTest | Level3) +{ + AccessToken token; + if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) { + return; + } + std::string specialCode = "2846579"; + EXPECT_EQ(CallManagerGtest::clientPtr_->InputDialerSpecialCode(specialCode), RETURN_VALUE_IS_ZERO); +} + +/** + * @tc.number Telephony_CallManager_InputDialerSpecialCode_0200 + * @tc.name test Input Dialer Special Code with unsupport code + * @tc.desc Function test + */ +HWTEST_F(CallManagerGtest, Telephony_CallManager_InputDialerSpecialCode_0200, Function | MediumTest | Level3) +{ + AccessToken token; + if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) { + return; + } + std::string specialCode = "1234"; + EXPECT_NE(CallManagerGtest::clientPtr_->InputDialerSpecialCode(specialCode), RETURN_VALUE_IS_ZERO); +} + +/** + * @tc.number Telephony_CallManager_InputDialerSpecialCode_0300 + * @tc.name test Input Dialer Special Code without permission + * @tc.desc Function test + */ +HWTEST_F(CallManagerGtest, Telephony_CallManager_InputDialerSpecialCode_0300, Function | MediumTest | Level3) +{ + if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) { + return; + } + std::string specialCode = "2846579"; + EXPECT_NE(CallManagerGtest::clientPtr_->InputDialerSpecialCode(specialCode), RETURN_VALUE_IS_ZERO); +} + +/**************************** Test CancelMissedIncomingCallNotification() ****************************/ +/** + * @tc.number Telephony_CallManager_CancelMissedIncomingCallNotification_0100 + * @tc.name test cancel missed incoming call and mark as read + * @tc.desc Function test + */ +HWTEST_F( + CallManagerGtest, Telephony_CallManager_CancelMissedIncomingCallNotification_0100, Function | MediumTest | Level3) +{ + AccessToken token; + if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) { + return; + } + EXPECT_EQ(CallManagerGtest::clientPtr_->CancelMissedIncomingCallNotification(), RETURN_VALUE_IS_ZERO); +} + +/** + * @tc.number Telephony_CallManager_CancelMissedIncomingCallNotification_0200 + * @tc.name test cancel missed incoming call and mark as read without permission + * @tc.desc Function test + */ +HWTEST_F( + CallManagerGtest, Telephony_CallManager_CancelMissedIncomingCallNotification_0200, Function | MediumTest | Level3) +{ + if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) { + return; + } + EXPECT_NE(CallManagerGtest::clientPtr_->CancelMissedIncomingCallNotification(), RETURN_VALUE_IS_ZERO); +} + /*********************************** Test Dump() ***************************************/ /** * @tc.number Telephony_CallManager_TestDump_0100 diff --git a/test/unittest/call_manager_gtest/src/zero_branch_test.cpp b/test/unittest/call_manager_gtest/src/zero_branch_test.cpp index b6f8329bc5106bd248f5ca079b5acd147a14b2e9..0f6c769785aeae73b79e95f587f95cffeaa6917b 100644 --- a/test/unittest/call_manager_gtest/src/zero_branch_test.cpp +++ b/test/unittest/call_manager_gtest/src/zero_branch_test.cpp @@ -133,6 +133,7 @@ HWTEST_F(BranchTest, Telephony_CallRequestHandler_001, Function | MediumTest | L call_request_handler->StartRttEvent(event); call_request_handler->StopRttEvent(event); call_request_handler->JoinConferenceEvent(event); + call_request_handler->DialCall(); std::unique_ptr callRequestHandlerService = std::make_unique(); ASSERT_NE(callRequestHandlerService->DialCall(), TELEPHONY_ERR_SUCCESS); @@ -831,6 +832,9 @@ HWTEST_F(BranchTest, Telephony_MissedCallNotification_001, Function | MediumTest missedCallNotification->PublishMissedCallNotification(callObjectPtr); int32_t id = 1; ASSERT_EQ(missedCallNotification->CancelMissedCallsNotification(id), TELEPHONY_SUCCESS); + std::map phoneNumAndUnReadCountMap; + phoneNumAndUnReadCountMap.insert(pair("000", 1)); + ASSERT_EQ(missedCallNotification->NotifyUnReadMissedCall(phoneNumAndUnReadCountMap), TELEPHONY_SUCCESS); } /** @@ -991,6 +995,7 @@ HWTEST_F(BranchTest, Telephony_CallManagerClient_001, Function | MediumTest | Le ASSERT_NE(callManagerClient->RejectCall(0, false, value), TELEPHONY_SUCCESS); ASSERT_NE(callManagerClient->HangUpCall(0), TELEPHONY_SUCCESS); ASSERT_GE(callManagerClient->GetCallState(), TELEPHONY_SUCCESS); + ASSERT_NE(callManagerClient->CancelMissedIncomingCallNotification(), TELEPHONY_SUCCESS); } /** @@ -1373,14 +1378,12 @@ HWTEST_F(BranchTest, Telephony_BluetoothCallService_001, Function | MediumTest | */ HWTEST_F(BranchTest, Telephony_BluetoothConnection_001, Function | MediumTest | Level3) { +#ifdef ABILITY_BLUETOOTH_SUPPORT BluetoothConnection bluetoothConnection; bluetoothConnection.SetBtScoState(BtScoState::SCO_STATE_CONNECTED); ASSERT_EQ(BtScoState::SCO_STATE_CONNECTED, bluetoothConnection.GetBtScoState()); - ASSERT_EQ(true, bluetoothConnection.ConnectBtSco()); ASSERT_EQ(true, bluetoothConnection.IsBtScoConnected()); bluetoothConnection.SetBtScoState(BtScoState::SCO_STATE_DISCONNECTED); - ASSERT_EQ(true, bluetoothConnection.DisconnectBtSco()); -#ifdef ABILITY_BLUETOOTH_SUPPORT bluetoothConnection.Init(); bluetoothConnection.SetBtScoState(BtScoState::SCO_STATE_UNKNOWN); bluetoothConnection.connectedScoAddr_ = "123456"; @@ -1409,6 +1412,8 @@ HWTEST_F(BranchTest, Telephony_BluetoothConnection_001, Function | MediumTest | bluetoothConnection.OnConnectionStateChanged(device, (int32_t)Bluetooth::HfpScoConnectState::SCO_CONNECTED); bluetoothConnection.OnConnectionStateChanged(device, (int32_t)Bluetooth::HfpScoConnectState::SCO_DISCONNECTED); ASSERT_EQ(nullptr, bluetoothConnection.GetBtDevice("test")); + ASSERT_EQ(true, bluetoothConnection.ConnectBtSco()); + ASSERT_EQ(true, bluetoothConnection.DisconnectBtSco()); #endif } @@ -1691,6 +1696,8 @@ HWTEST_F(BranchTest, Telephony_CallRecordsManager_001, Function | MediumTest | L info.ringBeginTime = ONE_TIME; info.ringEndTime = ONE_TIME; callRecordsManager.AddOneCallRecord(info); + ASSERT_NE(callRecordsManager.CancelMissedIncomingCallNotification(), TELEPHONY_SUCCESS); + ASSERT_EQ(callRecordsManager.QueryUnReadMissedCallLog(), TELEPHONY_SUCCESS); } /** @@ -1739,6 +1746,8 @@ HWTEST_F(BranchTest, Telephony_CallControlManager_001, Function | MediumTest | L ASSERT_TRUE(callControlManager->NotifyCallStateUpdated(callObjectPtr, priorState, nextState)); ASSERT_TRUE(callControlManager->NotifyIncomingCallAnswered(callObjectPtr)); ASSERT_TRUE(callControlManager->NotifyIncomingCallRejected(callObjectPtr, false, "")); + ASSERT_NE(callControlManager->CancelMissedIncomingCallNotification(), TELEPHONY_SUCCESS); + ASSERT_NE(callControlManager->QueryUnReadMissedCallLog(), TELEPHONY_SUCCESS); } /** diff --git a/test/unittest/ui_client/BUILD.gn b/test/unittest/ui_client/BUILD.gn index 68faf4cc38f30f0860268fb5aeebfcee8e88b42e..1fed7e7d56519875dfc01fb8c1845214f1402c4e 100644 --- a/test/unittest/ui_client/BUILD.gn +++ b/test/unittest/ui_client/BUILD.gn @@ -11,8 +11,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -import("//base/telephony/call_manager/call_manager_aafwk.gni") import("//build/ohos.gni") +CALL_MANAGER_PATH = "../../.." ohos_executable("tel_call_manager_ui_test") { install_enable = true @@ -23,31 +23,11 @@ ohos_executable("tel_call_manager_ui_test") { "ui_client_test.cpp", ] - include_dirs = [ - "//base/telephony/call_manager/services/audio/include", - "//foundation/graphic/graphic_2d/frameworks/surface/include", - "//utils/system/safwk/native/include", - "//drivers/hdf_core/framework/include/utils", - "//drivers/hdf_core/adapter/uhdf2/utils/include", - "//drivers/hdf_core/adapter/uhdf2/include/hdi", - "//drivers/peripheral/display/interfaces/include", - "//drivers/peripheral/camera/interfaces/include", - "//drivers/peripheral/camera/interfaces/include/server", - "//drivers/peripheral/camera/interfaces/include/callback/device", - "//drivers/peripheral/camera/interfaces/include/callback/operator", - "//drivers/peripheral/camera/interfaces/include/callback/host", - "/commonlibrary/c_utils/base/include", - ] - - configs = [ "//base/telephony/core_service/utils:telephony_log_config" ] - - deps = [ - "${ability_runtime_path}/frameworks/native/ability/native:abilitykit_native", - "//foundation/graphic/graphic_2d:libsurface", - ] + include_dirs = [ "${CALL_MANAGER_PATH}/services/audio/include" ] external_deps = [ "ability_base:want", + "ability_runtime:abilitykit_native", "access_token:libaccesstoken_sdk", "access_token:libnativetoken", "access_token:libtoken_setproc", diff --git a/test/unittest/ui_client/ui_client_test.cpp b/test/unittest/ui_client/ui_client_test.cpp index d3a10b9f439a71f9b5f25dbea5cb29ac72e95f1c..1acad4d1f8265bf5167c8a9b084b9a3c3a9dadd8 100644 --- a/test/unittest/ui_client/ui_client_test.cpp +++ b/test/unittest/ui_client/ui_client_test.cpp @@ -128,12 +128,70 @@ PermissionStateFull testAnswerCallState = { .grantFlags = { 2 }, // PERMISSION_USER_SET }; +PermissionDef testReadCallLogDef = { + .permissionName = "ohos.permission.READ_CALL_LOG", + .bundleName = "tel_call_manager_gtest", + .grantMode = 1, // SYSTEM_GRANT + .availableLevel = APL_SYSTEM_BASIC, + .label = "label", + .labelId = 1, + .description = "Test call manager", + .descriptionId = 1, +}; + +PermissionStateFull testPermReadCallLog = { + .permissionName = "ohos.permission.READ_CALL_LOG", + .isGeneral = true, + .resDeviceID = { "local" }, + .grantStatus = { PermissionState::PERMISSION_GRANTED }, + .grantFlags = { 2 }, // PERMISSION_USER_SET +}; + +PermissionDef testWriteCallLogDef = { + .permissionName = "ohos.permission.WRITE_CALL_LOG", + .bundleName = "tel_call_manager_gtest", + .grantMode = 1, // SYSTEM_GRANT + .availableLevel = APL_SYSTEM_BASIC, + .label = "label", + .labelId = 1, + .description = "Test call manager", + .descriptionId = 1, +}; + +PermissionStateFull testPermWriteCallLog = { + .permissionName = "ohos.permission.WRITE_CALL_LOG", + .isGeneral = true, + .resDeviceID = { "local" }, + .grantStatus = { PermissionState::PERMISSION_GRANTED }, + .grantFlags = { 2 }, // PERMISSION_USER_SET +}; + +PermissionDef testStartAbilityFromBGDef = { + .permissionName = "ohos.permission.START_ABILITIES_FROM_BACKGROUND", + .bundleName = "tel_call_manager_gtest", + .grantMode = 1, // SYSTEM_GRANT + .availableLevel = APL_SYSTEM_BASIC, + .label = "label", + .labelId = 1, + .description = "Test call manager", + .descriptionId = 1, +}; + +PermissionStateFull testPermStartAbilityFromBG = { + .permissionName = "ohos.permission.START_ABILITIES_FROM_BACKGROUND", + .isGeneral = true, + .resDeviceID = { "local" }, + .grantStatus = { PermissionState::PERMISSION_GRANTED }, + .grantFlags = { 2 }, // PERMISSION_USER_SET +}; + HapPolicyParams testPolicyParams = { .apl = APL_SYSTEM_BASIC, .domain = "test.domain", .permList = { testPermPlaceCallDef, testPermSetTelephonyStateDef, testPermGetTelephonyStateDef, - testPermAnswerCallDef }, - .permStateList = { testPlaceCallState, testSetTelephonyState, testGetTelephonyState, testAnswerCallState }, + testPermAnswerCallDef, testReadCallLogDef, testWriteCallLogDef, testStartAbilityFromBGDef }, + .permStateList = { testPlaceCallState, testSetTelephonyState, testGetTelephonyState, testAnswerCallState, + testPermReadCallLog, testPermWriteCallLog, testPermStartAbilityFromBG }, }; class AccessToken { @@ -1222,6 +1280,33 @@ void StopRtt() std::cout << "return value:" << ret << std::endl; } +void InputDialerSpecialCode() +{ + AccessToken token; + std::string specialCode; + std::cout << "------InputDialerSpecialCode------" << std::endl; + std::cout << "please input special code:" << std::endl; + std::cin >> specialCode; + if (g_clientPtr == nullptr) { + std::cout << "g_clientPtr is nullptr" << std::endl; + return; + } + int32_t ret = g_clientPtr->InputDialerSpecialCode(specialCode); + std::cout << "return value:" << ret << std::endl; +} + +void CancelMissedIncomingCallNotification() +{ + AccessToken token; + std::cout << "------CancelMissedIncomingCallNotification------" << std::endl; + if (g_clientPtr == nullptr) { + std::cout << "g_clientPtr is nullptr" << std::endl; + return; + } + int32_t ret = g_clientPtr->CancelMissedIncomingCallNotification(); + std::cout << "return value:" << ret << std::endl; +} + void AddPermission() { return; @@ -1249,6 +1334,7 @@ void InitCallBasicPower() g_memberFuncMap[OHOS::Telephony::INTERFACE_SWAP_CALL] = &OHOS::Telephony::SwitchCall; g_memberFuncMap[OHOS::Telephony::INTERFACE_START_RTT] = &OHOS::Telephony::StartRtt; g_memberFuncMap[OHOS::Telephony::INTERFACE_STOP_RTT] = &OHOS::Telephony::StopRtt; + g_memberFuncMap[OHOS::Telephony::INTERFACE_INPUT_DIALER_SPECIAL_CODE] = &OHOS::Telephony::InputDialerSpecialCode; } void InitCallUtils() @@ -1260,6 +1346,8 @@ void InitCallUtils() g_memberFuncMap[OHOS::Telephony::INTERFACE_IS_EMERGENCY_NUMBER] = &OHOS::Telephony::IsEmergencyPhoneNumber; g_memberFuncMap[OHOS::Telephony::INTERFACE_IS_FORMAT_NUMBER] = &OHOS::Telephony::FormatPhoneNumber; g_memberFuncMap[OHOS::Telephony::INTERFACE_IS_FORMAT_NUMBER_E164] = &OHOS::Telephony::FormatPhoneNumberToE164; + g_memberFuncMap[OHOS::Telephony::INTERFACE_CANCEL_MISSED_INCOMING_CALL_NOTIFICATION] = + &OHOS::Telephony::CancelMissedIncomingCallNotification; } void InitCallConferencePower() @@ -1376,7 +1464,8 @@ void PrintfCallUtilsInterface() << "13:isInEmergencyCall\n" << "14:isEmergencyPhoneNumber\n" << "15:formatPhoneNumber\n" - << "16:formatPhoneNumberToE164\n"; + << "16:formatPhoneNumberToE164\n" + << "58:CancelMissedIncomingCallNotification\n"; } void PrintfCallConferenceInterface() @@ -1431,6 +1520,7 @@ void PrintfCallMultimediaInterface() << "48:IsImsSwitchEnabled\n" << "49:StartRtt\n" << "50:StopRtt\n" + << "57:InputDialerSpecialCode\n" << "93:InitPermission\n" << "94:VerifyPermission\n" << "95:SendConnectBluetoothScoBroadcast\n"