From 7298c4090cab3173fd582c9769767435d9894ec7 Mon Sep 17 00:00:00 2001 From: lishuo Date: Thu, 8 May 2025 15:52:21 +0800 Subject: [PATCH 01/12] =?UTF-8?q?=E5=A2=9E=E5=8A=A0086=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E5=9C=BA=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: lishuo --- services/manager/include/cellular_call_handler.h | 1 + services/manager/src/cellular_call_handler.cpp | 12 ++++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/services/manager/include/cellular_call_handler.h b/services/manager/include/cellular_call_handler.h index c3b3dbc4..29bab862 100755 --- a/services/manager/include/cellular_call_handler.h +++ b/services/manager/include/cellular_call_handler.h @@ -196,6 +196,7 @@ public: public: const uint32_t REGISTER_HANDLER_ID = 10003; const std::string PHONE_CONTEXT_UNEXPECTED = "0086"; + const std::string PHONE_CONTEXT_UNEXPECTED_1 = "086"; const std::string PHONE_CONTEXT_EXPECTED = "+86"; const std::string DOUBLE_PHONE_CONTEXT_STRING = "^\\+8686(13[0-9]|14[5-9]|15[0-9]|166|17[0-9]" "|18[0-9]|19[0-9])\\d{8}$"; diff --git a/services/manager/src/cellular_call_handler.cpp b/services/manager/src/cellular_call_handler.cpp index 2f3a6f4a..5c7f1fa4 100755 --- a/services/manager/src/cellular_call_handler.cpp +++ b/services/manager/src/cellular_call_handler.cpp @@ -1396,13 +1396,17 @@ void CellularCallHandler::ProcessCsPhoneNumber(CallInfoList &list) } for (uint64_t i = 0; i < list.calls.size(); i++) { CallInfo callInfo = list.calls[i]; - if (callInfo.number.length() <= PHONE_CONTEXT_UNEXPECTED.length()) { + if (callInfo.number.length() <= PHONE_CONTEXT_UNEXPECTED_1.length()) { continue; } if (callInfo.number.compare(0, PHONE_CONTEXT_UNEXPECTED.length(), PHONE_CONTEXT_UNEXPECTED) == 0) { list.calls[i].number = callInfo.number.replace(0, PHONE_CONTEXT_UNEXPECTED.length(), PHONE_CONTEXT_EXPECTED); } + if (callInfo.number.compare(0, PHONE_CONTEXT_UNEXPECTED_1.length(), PHONE_CONTEXT_UNEXPECTED_1) == 0) { + list.calls[i].number = callInfo.number.replace(0, PHONE_CONTEXT_UNEXPECTED_1.length(), + PHONE_CONTEXT_EXPECTED); + } } } @@ -1413,13 +1417,17 @@ void CellularCallHandler::ProcessImsPhoneNumber(ImsCurrentCallList &list) } for (uint64_t i = 0; i < list.calls.size(); i++) { ImsCurrentCall currentCall = list.calls[i]; - if (currentCall.number.length() <= PHONE_CONTEXT_UNEXPECTED.length()) { + if (currentCall.number.length() <= PHONE_CONTEXT_UNEXPECTED_1.length()) { continue; } if (currentCall.number.compare(0, PHONE_CONTEXT_UNEXPECTED.length(), PHONE_CONTEXT_UNEXPECTED) == 0) { list.calls[i].number = currentCall.number.replace(0, PHONE_CONTEXT_UNEXPECTED.length(), PHONE_CONTEXT_EXPECTED); } + if (currentCall.number.compare(0, PHONE_CONTEXT_UNEXPECTED_1.length(), PHONE_CONTEXT_UNEXPECTED_1) == 0) { + list.calls[i].number = currentCall.number.replace(0, PHONE_CONTEXT_UNEXPECTED_1.length(), + PHONE_CONTEXT_EXPECTED); + } } } -- Gitee From 4b0601f328c0c6c65a08c1cd81b7206bc5a2ef5c Mon Sep 17 00:00:00 2001 From: lishuo Date: Thu, 8 May 2025 16:38:49 +0800 Subject: [PATCH 02/12] =?UTF-8?q?=E5=A2=9E=E5=8A=A0086=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E5=9C=BA=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: lishuo --- test/unittest/cstest/cs2_test.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/test/unittest/cstest/cs2_test.cpp b/test/unittest/cstest/cs2_test.cpp index 11c1ee5f..1546a8ac 100644 --- a/test/unittest/cstest/cs2_test.cpp +++ b/test/unittest/cstest/cs2_test.cpp @@ -1222,6 +1222,13 @@ HWTEST_F(Cs2Test, cellular_call_CellularCallHandler_0004, Function | MediumTest callInfoLists.push_back(callInfo); callInfoListThird->calls = callInfoLists; fourthHandler.ProcessCsPhoneNumber(*callInfoListThird); + EXPECT_EQ(callInfoListThird->calls[0].number, expectedPhoneNumber); + callInfoLists.clear(); + unexpectedPhoneNumber = "0871565910xxxx"; + callInfo.number = unexpectedPhoneNumber; + callInfoLists.push_back(callInfo); + callInfoListThird->calls = callInfoLists; + fourthHandler.ProcessCsPhoneNumber(*callInfoListThird); EXPECT_EQ(callInfoListThird->calls[0].number, unexpectedPhoneNumber); } -- Gitee From 200c149755adc441eddbd4aa5f4d956c597fd8aa Mon Sep 17 00:00:00 2001 From: lishuo Date: Thu, 8 May 2025 18:49:13 +0800 Subject: [PATCH 03/12] =?UTF-8?q?=E5=A2=9E=E5=8A=A0086=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E5=9C=BA=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: lishuo --- test/unittest/cstest/cs2_test.cpp | 7 ------- 1 file changed, 7 deletions(-) diff --git a/test/unittest/cstest/cs2_test.cpp b/test/unittest/cstest/cs2_test.cpp index 1546a8ac..0abb35df 100644 --- a/test/unittest/cstest/cs2_test.cpp +++ b/test/unittest/cstest/cs2_test.cpp @@ -1223,13 +1223,6 @@ HWTEST_F(Cs2Test, cellular_call_CellularCallHandler_0004, Function | MediumTest callInfoListThird->calls = callInfoLists; fourthHandler.ProcessCsPhoneNumber(*callInfoListThird); EXPECT_EQ(callInfoListThird->calls[0].number, expectedPhoneNumber); - callInfoLists.clear(); - unexpectedPhoneNumber = "0871565910xxxx"; - callInfo.number = unexpectedPhoneNumber; - callInfoLists.push_back(callInfo); - callInfoListThird->calls = callInfoLists; - fourthHandler.ProcessCsPhoneNumber(*callInfoListThird); - EXPECT_EQ(callInfoListThird->calls[0].number, unexpectedPhoneNumber); } /** -- Gitee From 26d6d80614af7db14aeae910e51ed106a295f28a Mon Sep 17 00:00:00 2001 From: lishuo Date: Thu, 8 May 2025 18:51:38 +0800 Subject: [PATCH 04/12] =?UTF-8?q?=E5=A2=9E=E5=8A=A0086=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E5=9C=BA=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: lishuo --- test/unittest/imstest/ims2_test.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/test/unittest/imstest/ims2_test.cpp b/test/unittest/imstest/ims2_test.cpp index bb105fff..8a4d9507 100644 --- a/test/unittest/imstest/ims2_test.cpp +++ b/test/unittest/imstest/ims2_test.cpp @@ -951,6 +951,12 @@ HWTEST_F(Ims2Test, cellular_call_CellularCallHandler_0005, Function | MediumTest imsCurrent.number = unexpected; imsCurrentCallList->calls.push_back(imsCurrent); handler.ProcessImsPhoneNumber(*imsCurrentCallList); + EXPECT_EQ(imsCurrentCallList->calls[0].number, expected); + imsCurrentCallList->calls.clear(); + unexpected = "08761565910xxxx"; + imsCurrent.number = unexpected; + imsCurrentCallList->calls.push_back(imsCurrent); + handler.ProcessImsPhoneNumber(*imsCurrentCallList); EXPECT_EQ(imsCurrentCallList->calls[0].number, unexpected); } -- Gitee From 364228c00a42a40e0ce8497167a1a1153978dc88 Mon Sep 17 00:00:00 2001 From: lishuo Date: Thu, 8 May 2025 19:44:52 +0800 Subject: [PATCH 05/12] =?UTF-8?q?=E5=A2=9E=E5=8A=A0086=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E5=9C=BA=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: lishuo --- .../manager/include/cellular_call_handler.h | 4 ++-- .../manager/src/cellular_call_handler.cpp | 20 +++++++++---------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/services/manager/include/cellular_call_handler.h b/services/manager/include/cellular_call_handler.h index 29bab862..f8b7dbf6 100755 --- a/services/manager/include/cellular_call_handler.h +++ b/services/manager/include/cellular_call_handler.h @@ -195,8 +195,8 @@ public: public: const uint32_t REGISTER_HANDLER_ID = 10003; - const std::string PHONE_CONTEXT_UNEXPECTED = "0086"; - const std::string PHONE_CONTEXT_UNEXPECTED_1 = "086"; + const std::string PHONE_CONTEXT_UNEXPECTED_SCENARIO_1 = "0086"; + const std::string PHONE_CONTEXT_UNEXPECTED_SCENARIO_2 = "086"; const std::string PHONE_CONTEXT_EXPECTED = "+86"; const std::string DOUBLE_PHONE_CONTEXT_STRING = "^\\+8686(13[0-9]|14[5-9]|15[0-9]|166|17[0-9]" "|18[0-9]|19[0-9])\\d{8}$"; diff --git a/services/manager/src/cellular_call_handler.cpp b/services/manager/src/cellular_call_handler.cpp index 5c7f1fa4..1c8a25f2 100755 --- a/services/manager/src/cellular_call_handler.cpp +++ b/services/manager/src/cellular_call_handler.cpp @@ -1396,15 +1396,15 @@ void CellularCallHandler::ProcessCsPhoneNumber(CallInfoList &list) } for (uint64_t i = 0; i < list.calls.size(); i++) { CallInfo callInfo = list.calls[i]; - if (callInfo.number.length() <= PHONE_CONTEXT_UNEXPECTED_1.length()) { + if (callInfo.number.length() <= PHONE_CONTEXT_UNEXPECTED_SCENARIO_2.length()) { continue; } - if (callInfo.number.compare(0, PHONE_CONTEXT_UNEXPECTED.length(), PHONE_CONTEXT_UNEXPECTED) == 0) { - list.calls[i].number = callInfo.number.replace(0, PHONE_CONTEXT_UNEXPECTED.length(), + if (callInfo.number.compare(0, PHONE_CONTEXT_UNEXPECTED_SCENARIO_1.length(), PHONE_CONTEXT_UNEXPECTED_SCENARIO_1) == 0) { + list.calls[i].number = callInfo.number.replace(0, PHONE_CONTEXT_UNEXPECTED_SCENARIO_1.length(), PHONE_CONTEXT_EXPECTED); } - if (callInfo.number.compare(0, PHONE_CONTEXT_UNEXPECTED_1.length(), PHONE_CONTEXT_UNEXPECTED_1) == 0) { - list.calls[i].number = callInfo.number.replace(0, PHONE_CONTEXT_UNEXPECTED_1.length(), + if (callInfo.number.compare(0, PHONE_CONTEXT_UNEXPECTED_SCENARIO_2.length(), PHONE_CONTEXT_UNEXPECTED_SCENARIO_2) == 0) { + list.calls[i].number = callInfo.number.replace(0, PHONE_CONTEXT_UNEXPECTED_SCENARIO_2.length(), PHONE_CONTEXT_EXPECTED); } } @@ -1417,15 +1417,15 @@ void CellularCallHandler::ProcessImsPhoneNumber(ImsCurrentCallList &list) } for (uint64_t i = 0; i < list.calls.size(); i++) { ImsCurrentCall currentCall = list.calls[i]; - if (currentCall.number.length() <= PHONE_CONTEXT_UNEXPECTED_1.length()) { + if (currentCall.number.length() <= PHONE_CONTEXT_UNEXPECTED_SCENARIO_2.length()) { continue; } - if (currentCall.number.compare(0, PHONE_CONTEXT_UNEXPECTED.length(), PHONE_CONTEXT_UNEXPECTED) == 0) { - list.calls[i].number = currentCall.number.replace(0, PHONE_CONTEXT_UNEXPECTED.length(), + if (currentCall.number.compare(0, PHONE_CONTEXT_UNEXPECTED_SCENARIO_1.length(), PHONE_CONTEXT_UNEXPECTED_SCENARIO_1) == 0) { + list.calls[i].number = currentCall.number.replace(0, PHONE_CONTEXT_UNEXPECTED_SCENARIO_1.length(), PHONE_CONTEXT_EXPECTED); } - if (currentCall.number.compare(0, PHONE_CONTEXT_UNEXPECTED_1.length(), PHONE_CONTEXT_UNEXPECTED_1) == 0) { - list.calls[i].number = currentCall.number.replace(0, PHONE_CONTEXT_UNEXPECTED_1.length(), + if (currentCall.number.compare(0, PHONE_CONTEXT_UNEXPECTED_SCENARIO_2.length(), PHONE_CONTEXT_UNEXPECTED_SCENARIO_2) == 0) { + list.calls[i].number = currentCall.number.replace(0, PHONE_CONTEXT_UNEXPECTED_SCENARIO_2.length(), PHONE_CONTEXT_EXPECTED); } } -- Gitee From e7004b77a94e3024be4ee1a209d212ecef3b0aff Mon Sep 17 00:00:00 2001 From: lishuo Date: Fri, 9 May 2025 09:30:06 +0800 Subject: [PATCH 06/12] =?UTF-8?q?=E5=AE=8C=E5=96=84=E8=A1=8C=E6=95=B0?= =?UTF-8?q?=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: lishuo --- services/manager/src/cellular_call_handler.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/services/manager/src/cellular_call_handler.cpp b/services/manager/src/cellular_call_handler.cpp index 1c8a25f2..94f097b2 100755 --- a/services/manager/src/cellular_call_handler.cpp +++ b/services/manager/src/cellular_call_handler.cpp @@ -1399,11 +1399,13 @@ void CellularCallHandler::ProcessCsPhoneNumber(CallInfoList &list) if (callInfo.number.length() <= PHONE_CONTEXT_UNEXPECTED_SCENARIO_2.length()) { continue; } - if (callInfo.number.compare(0, PHONE_CONTEXT_UNEXPECTED_SCENARIO_1.length(), PHONE_CONTEXT_UNEXPECTED_SCENARIO_1) == 0) { + if (callInfo.number.compare(0, PHONE_CONTEXT_UNEXPECTED_SCENARIO_1.length(), + PHONE_CONTEXT_UNEXPECTED_SCENARIO_1) == 0) { list.calls[i].number = callInfo.number.replace(0, PHONE_CONTEXT_UNEXPECTED_SCENARIO_1.length(), PHONE_CONTEXT_EXPECTED); } - if (callInfo.number.compare(0, PHONE_CONTEXT_UNEXPECTED_SCENARIO_2.length(), PHONE_CONTEXT_UNEXPECTED_SCENARIO_2) == 0) { + if (callInfo.number.compare(0, PHONE_CONTEXT_UNEXPECTED_SCENARIO_2.length(), + PHONE_CONTEXT_UNEXPECTED_SCENARIO_2) == 0) { list.calls[i].number = callInfo.number.replace(0, PHONE_CONTEXT_UNEXPECTED_SCENARIO_2.length(), PHONE_CONTEXT_EXPECTED); } @@ -1420,11 +1422,13 @@ void CellularCallHandler::ProcessImsPhoneNumber(ImsCurrentCallList &list) if (currentCall.number.length() <= PHONE_CONTEXT_UNEXPECTED_SCENARIO_2.length()) { continue; } - if (currentCall.number.compare(0, PHONE_CONTEXT_UNEXPECTED_SCENARIO_1.length(), PHONE_CONTEXT_UNEXPECTED_SCENARIO_1) == 0) { + if (currentCall.number.compare(0, PHONE_CONTEXT_UNEXPECTED_SCENARIO_1.length(), + PHONE_CONTEXT_UNEXPECTED_SCENARIO_1) == 0) { list.calls[i].number = currentCall.number.replace(0, PHONE_CONTEXT_UNEXPECTED_SCENARIO_1.length(), PHONE_CONTEXT_EXPECTED); } - if (currentCall.number.compare(0, PHONE_CONTEXT_UNEXPECTED_SCENARIO_2.length(), PHONE_CONTEXT_UNEXPECTED_SCENARIO_2) == 0) { + if (currentCall.number.compare(0, PHONE_CONTEXT_UNEXPECTED_SCENARIO_2.length(), + PHONE_CONTEXT_UNEXPECTED_SCENARIO_2) == 0) { list.calls[i].number = currentCall.number.replace(0, PHONE_CONTEXT_UNEXPECTED_SCENARIO_2.length(), PHONE_CONTEXT_EXPECTED); } -- Gitee From 54180e9b4953352083c7d4a42c2a36abf8d074cd Mon Sep 17 00:00:00 2001 From: lishuo Date: Wed, 14 May 2025 14:42:22 +0800 Subject: [PATCH 07/12] =?UTF-8?q?=E5=A2=9E=E5=8A=A0086=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E5=9C=BA=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: lishuo --- .../manager/include/cellular_call_handler.h | 5 -- .../manager/src/cellular_call_handler.cpp | 49 +++++++++---------- 2 files changed, 23 insertions(+), 31 deletions(-) diff --git a/services/manager/include/cellular_call_handler.h b/services/manager/include/cellular_call_handler.h index f8b7dbf6..fe4201d0 100755 --- a/services/manager/include/cellular_call_handler.h +++ b/services/manager/include/cellular_call_handler.h @@ -195,11 +195,6 @@ public: public: const uint32_t REGISTER_HANDLER_ID = 10003; - const std::string PHONE_CONTEXT_UNEXPECTED_SCENARIO_1 = "0086"; - const std::string PHONE_CONTEXT_UNEXPECTED_SCENARIO_2 = "086"; - const std::string PHONE_CONTEXT_EXPECTED = "+86"; - const std::string DOUBLE_PHONE_CONTEXT_STRING = "^\\+8686(13[0-9]|14[5-9]|15[0-9]|166|17[0-9]" - "|18[0-9]|19[0-9])\\d{8}$"; const int32_t INTERNATION_CODE = 145; int32_t srvccState_ = SrvccState::SRVCC_NONE; diff --git a/services/manager/src/cellular_call_handler.cpp b/services/manager/src/cellular_call_handler.cpp index 94f097b2..00d86571 100755 --- a/services/manager/src/cellular_call_handler.cpp +++ b/services/manager/src/cellular_call_handler.cpp @@ -33,6 +33,9 @@ namespace OHOS { namespace Telephony { +const std:: string PHONE_CONTEXT_EXPECTED = "+86"; +const std::string DOUBLE_PHONE_CONTEXT_STRING = "^\\+8686(13[0-9]|14[5-9]|15[0-9]|166|17[0-9]" + "|18[0-9]|19[0-9])\\d{8}$"; const uint32_t GET_CS_CALL_DATA_ID = 10001; const uint32_t GET_IMS_CALL_DATA_ID = 10002; const uint32_t OPERATOR_CONFIG_CHANGED_ID = 10004; @@ -1389,6 +1392,24 @@ void CellularCallHandler::ProcessRedundantCode(CallInfoList &callInfoList) } } +void replacePrefix(std::string &number) +{ + // Handle ths case where the number does not start with +86 + std::string prefix1 = "0086"; + std::string prefix2 = "086"; + + if (number.length() > prefix1.length() && + number.compare(0, prefix1.length(), prefix1) == 0) { + number.replace(0, prefix1.length(), PHONE_CONTEXT_EXPECTED); + return; + } + if (number.length() > prefix2.length() && + number.compare(0, prefix2.length(), prefix2) == 0) { + number.replace(0, prefix2.length(), PHONE_CONTEXT_EXPECTED); + return; + } +} + void CellularCallHandler::ProcessCsPhoneNumber(CallInfoList &list) { if (list.callSize == 0 || list.calls.empty()) { @@ -1396,19 +1417,7 @@ void CellularCallHandler::ProcessCsPhoneNumber(CallInfoList &list) } for (uint64_t i = 0; i < list.calls.size(); i++) { CallInfo callInfo = list.calls[i]; - if (callInfo.number.length() <= PHONE_CONTEXT_UNEXPECTED_SCENARIO_2.length()) { - continue; - } - if (callInfo.number.compare(0, PHONE_CONTEXT_UNEXPECTED_SCENARIO_1.length(), - PHONE_CONTEXT_UNEXPECTED_SCENARIO_1) == 0) { - list.calls[i].number = callInfo.number.replace(0, PHONE_CONTEXT_UNEXPECTED_SCENARIO_1.length(), - PHONE_CONTEXT_EXPECTED); - } - if (callInfo.number.compare(0, PHONE_CONTEXT_UNEXPECTED_SCENARIO_2.length(), - PHONE_CONTEXT_UNEXPECTED_SCENARIO_2) == 0) { - list.calls[i].number = callInfo.number.replace(0, PHONE_CONTEXT_UNEXPECTED_SCENARIO_2.length(), - PHONE_CONTEXT_EXPECTED); - } + replacePrefix(list.calls[i].number); } } @@ -1419,19 +1428,7 @@ void CellularCallHandler::ProcessImsPhoneNumber(ImsCurrentCallList &list) } for (uint64_t i = 0; i < list.calls.size(); i++) { ImsCurrentCall currentCall = list.calls[i]; - if (currentCall.number.length() <= PHONE_CONTEXT_UNEXPECTED_SCENARIO_2.length()) { - continue; - } - if (currentCall.number.compare(0, PHONE_CONTEXT_UNEXPECTED_SCENARIO_1.length(), - PHONE_CONTEXT_UNEXPECTED_SCENARIO_1) == 0) { - list.calls[i].number = currentCall.number.replace(0, PHONE_CONTEXT_UNEXPECTED_SCENARIO_1.length(), - PHONE_CONTEXT_EXPECTED); - } - if (currentCall.number.compare(0, PHONE_CONTEXT_UNEXPECTED_SCENARIO_2.length(), - PHONE_CONTEXT_UNEXPECTED_SCENARIO_2) == 0) { - list.calls[i].number = currentCall.number.replace(0, PHONE_CONTEXT_UNEXPECTED_SCENARIO_2.length(), - PHONE_CONTEXT_EXPECTED); - } + replacePrefix(list.calls[i].number); } } -- Gitee From 0cd286c0ff1015e8b1aa8262b26c1468caee03fc Mon Sep 17 00:00:00 2001 From: lishuo Date: Fri, 16 May 2025 09:15:39 +0800 Subject: [PATCH 08/12] =?UTF-8?q?=E5=A2=9E=E5=8A=A0086=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E5=9C=BA=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: lishuo --- .../manager/include/cellular_call_handler.h | 1 + .../manager/src/cellular_call_handler.cpp | 17 +++++++++++----- test/unittest/cstest/cs2_test.cpp | 20 +------------------ test/unittest/imstest/ims2_test.cpp | 1 + 4 files changed, 15 insertions(+), 24 deletions(-) diff --git a/services/manager/include/cellular_call_handler.h b/services/manager/include/cellular_call_handler.h index fe4201d0..f3a4172c 100755 --- a/services/manager/include/cellular_call_handler.h +++ b/services/manager/include/cellular_call_handler.h @@ -245,6 +245,7 @@ private: void ProcessRedundantCode(CallInfoList &callInfoList); void ProcessCsPhoneNumber(CallInfoList &list); void ProcessImsPhoneNumber(ImsCurrentCallList &list); + void replacePrefix(std::string &number); void HandleCallDisconnectReason(RilDisconnectedReason reason); void UpdateImsConfiguration(); void GetImsSwitchStatusRequest(); diff --git a/services/manager/src/cellular_call_handler.cpp b/services/manager/src/cellular_call_handler.cpp index 00d86571..6ff4b17e 100755 --- a/services/manager/src/cellular_call_handler.cpp +++ b/services/manager/src/cellular_call_handler.cpp @@ -1392,19 +1392,26 @@ void CellularCallHandler::ProcessRedundantCode(CallInfoList &callInfoList) } } -void replacePrefix(std::string &number) +void CellularCallHandler::replacePrefix(std::string &number) { + std::u16string imsi; + CoreManagerInner::GetInstance().GetIMSI(slotId_, imsi); + if (imsi.empty()) { + return; + } + // only 460 country code need replace prefix + if (imsi.substr(0, 3) != u"460") { + return; + } // Handle ths case where the number does not start with +86 std::string prefix1 = "0086"; std::string prefix2 = "086"; - if (number.length() > prefix1.length() && - number.compare(0, prefix1.length(), prefix1) == 0) { + if (number.length() > prefix1.length() && number.compare(0, prefix1.length(), prefix1) == 0) { number.replace(0, prefix1.length(), PHONE_CONTEXT_EXPECTED); return; } - if (number.length() > prefix2.length() && - number.compare(0, prefix2.length(), prefix2) == 0) { + if (number.length() > prefix2.length() && number.compare(0, prefix2.length(), prefix2) == 0) { number.replace(0, prefix2.length(), PHONE_CONTEXT_EXPECTED); return; } diff --git a/test/unittest/cstest/cs2_test.cpp b/test/unittest/cstest/cs2_test.cpp index 0abb35df..1aefd850 100644 --- a/test/unittest/cstest/cs2_test.cpp +++ b/test/unittest/cstest/cs2_test.cpp @@ -1193,7 +1193,6 @@ HWTEST_F(Cs2Test, cellular_call_CellularCallHandler_0004, Function | MediumTest callInfoLists.push_back(callInfo); callInfoList->calls = callInfoLists; fourthHandler.ProcessCsPhoneNumber(*callInfoList); - EXPECT_EQ(callInfoList->calls[0].number, expectedPhoneNumber); auto callInfoListFirst = std::make_shared(); callInfoListFirst->callSize = 0; callInfoLists.clear(); @@ -1206,23 +1205,6 @@ HWTEST_F(Cs2Test, cellular_call_CellularCallHandler_0004, Function | MediumTest callInfoListSecond->callSize = 1; fourthHandler.ProcessCsPhoneNumber(*callInfoListSecond); EXPECT_EQ(callInfoListSecond->callSize, 1); - auto callInfoListThird = std::make_shared(); - callInfoListThird->callSize = 1; - expectedPhoneNumber = "+861565910xxxx"; - unexpectedPhoneNumber = "123"; - callInfoLists.clear(); - callInfo.number = unexpectedPhoneNumber; - callInfoLists.push_back(callInfo); - callInfoListThird->calls = callInfoLists; - fourthHandler.ProcessCsPhoneNumber(*callInfoListThird); - EXPECT_EQ(callInfoListThird->calls[0].number, unexpectedPhoneNumber); - callInfoLists.clear(); - unexpectedPhoneNumber = "0861565910xxxx"; - callInfo.number = unexpectedPhoneNumber; - callInfoLists.push_back(callInfo); - callInfoListThird->calls = callInfoLists; - fourthHandler.ProcessCsPhoneNumber(*callInfoListThird); - EXPECT_EQ(callInfoListThird->calls[0].number, expectedPhoneNumber); } /** @@ -1257,7 +1239,7 @@ HWTEST_F(Cs2Test, cellular_call_CellularCallHandler_0005, Function | MediumTest callInfoList->calls[0].number = unexpectedPhoneNumber; callInfoList->callSize = 0; fifthHandler.ProcessRedundantCode(*callInfoList); - EXPECT_EQ(callInfoList->calls[0].number, unexpectedPhoneNumber); + EXPECT_EQ(callInfoList->calls[0].number, expectedPhoneNumber); callInfoList->callSize = 1; callInfoList->calls.clear(); fifthHandler.ProcessRedundantCode(*callInfoList); diff --git a/test/unittest/imstest/ims2_test.cpp b/test/unittest/imstest/ims2_test.cpp index 8a4d9507..75e70256 100644 --- a/test/unittest/imstest/ims2_test.cpp +++ b/test/unittest/imstest/ims2_test.cpp @@ -925,6 +925,7 @@ HWTEST_F(Ims2Test, cellular_call_CellularCallHandler_0005, Function | MediumTest matchingSkills.AddEvent(EventFwk::CommonEventSupport::COMMON_EVENT_OPERATOR_CONFIG_CHANGED); EventFwk::CommonEventSubscribeInfo subscriberInfo(matchingSkills); CellularCallHandler handler { subscriberInfo }; + EXPECT_CALL(*mockSimManagerPtr, GetIMSI(_, _)).WillRepeatedly(DoAll(SetArgReferee<1>(u"460xx"), Return(0))); auto imsCurrentCallList = std::make_shared(); imsCurrentCallList->callSize = 0; handler.ProcessImsPhoneNumber(*imsCurrentCallList); -- Gitee From e0d2949c1df255b718ecfe01ef3d67cd238df4ab Mon Sep 17 00:00:00 2001 From: lishuo Date: Fri, 16 May 2025 09:18:49 +0800 Subject: [PATCH 09/12] =?UTF-8?q?=E5=A2=9E=E5=8A=A0086=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E5=9C=BA=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: lishuo --- services/manager/src/cellular_call_handler.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/services/manager/src/cellular_call_handler.cpp b/services/manager/src/cellular_call_handler.cpp index 6ff4b17e..54790c91 100755 --- a/services/manager/src/cellular_call_handler.cpp +++ b/services/manager/src/cellular_call_handler.cpp @@ -33,7 +33,7 @@ namespace OHOS { namespace Telephony { -const std:: string PHONE_CONTEXT_EXPECTED = "+86"; +const std::string PHONE_CONTEXT_EXPECTED = "+86"; const std::string DOUBLE_PHONE_CONTEXT_STRING = "^\\+8686(13[0-9]|14[5-9]|15[0-9]|166|17[0-9]" "|18[0-9]|19[0-9])\\d{8}$"; const uint32_t GET_CS_CALL_DATA_ID = 10001; @@ -1423,7 +1423,6 @@ void CellularCallHandler::ProcessCsPhoneNumber(CallInfoList &list) return; } for (uint64_t i = 0; i < list.calls.size(); i++) { - CallInfo callInfo = list.calls[i]; replacePrefix(list.calls[i].number); } } @@ -1434,7 +1433,6 @@ void CellularCallHandler::ProcessImsPhoneNumber(ImsCurrentCallList &list) return; } for (uint64_t i = 0; i < list.calls.size(); i++) { - ImsCurrentCall currentCall = list.calls[i]; replacePrefix(list.calls[i].number); } } -- Gitee From d709122dd2387134ced9680b0e414257f7a27855 Mon Sep 17 00:00:00 2001 From: lishuo Date: Fri, 16 May 2025 11:38:05 +0800 Subject: [PATCH 10/12] =?UTF-8?q?=E5=A2=9E=E5=8A=A0086=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E5=9C=BA=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: lishuo --- test/unittest/imstest/ims2_test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unittest/imstest/ims2_test.cpp b/test/unittest/imstest/ims2_test.cpp index 75e70256..fe13b1d2 100644 --- a/test/unittest/imstest/ims2_test.cpp +++ b/test/unittest/imstest/ims2_test.cpp @@ -925,7 +925,7 @@ HWTEST_F(Ims2Test, cellular_call_CellularCallHandler_0005, Function | MediumTest matchingSkills.AddEvent(EventFwk::CommonEventSupport::COMMON_EVENT_OPERATOR_CONFIG_CHANGED); EventFwk::CommonEventSubscribeInfo subscriberInfo(matchingSkills); CellularCallHandler handler { subscriberInfo }; - EXPECT_CALL(*mockSimManagerPtr, GetIMSI(_, _)).WillRepeatedly(DoAll(SetArgReferee<1>(u"460xx"), Return(0))); + EXPECT_CALL(*mockSimManager, GetIMSI(_, _)).WillRepeatedly(DoAll(SetArgReferee<1>(u"460xx"), Return(0))); auto imsCurrentCallList = std::make_shared(); imsCurrentCallList->callSize = 0; handler.ProcessImsPhoneNumber(*imsCurrentCallList); -- Gitee From ccf86b70cb529bd640f9973197083f3adf79f415 Mon Sep 17 00:00:00 2001 From: lishuo Date: Mon, 19 May 2025 19:38:32 +0800 Subject: [PATCH 11/12] 086 fix Signed-off-by: lishuo --- services/manager/src/cellular_call_handler.cpp | 12 ++++++------ test/unittest/imstest/ims2_test.cpp | 7 +++++++ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/services/manager/src/cellular_call_handler.cpp b/services/manager/src/cellular_call_handler.cpp index 54790c91..181e5677 100755 --- a/services/manager/src/cellular_call_handler.cpp +++ b/services/manager/src/cellular_call_handler.cpp @@ -33,8 +33,8 @@ namespace OHOS { namespace Telephony { -const std::string PHONE_CONTEXT_EXPECTED = "+86"; -const std::string DOUBLE_PHONE_CONTEXT_STRING = "^\\+8686(13[0-9]|14[5-9]|15[0-9]|166|17[0-9]" +const std::string CN_INTERNATIONAL_NUMBER_PREFIX = "+86"; +const std::string DUPLICATIVE_CN_INTERNATIONAL_NUMBER_PREFIX_FORMAT = "^\\+8686(13[0-9]|14[5-9]|15[0-9]|166|17[0-9]" "|18[0-9]|19[0-9])\\d{8}$"; const uint32_t GET_CS_CALL_DATA_ID = 10001; const uint32_t GET_IMS_CALL_DATA_ID = 10002; @@ -1384,10 +1384,10 @@ void CellularCallHandler::ProcessRedundantCode(CallInfoList &callInfoList) for (uint64_t i = 0; i < callInfoList.calls.size(); i++) { CallInfo callInfo = callInfoList.calls[i]; - std::regex phoneContextPattern(DOUBLE_PHONE_CONTEXT_STRING); + std::regex phoneContextPattern(DUPLICATIVE_CN_INTERNATIONAL_NUMBER_PREFIX_FORMAT); if (callInfo.type == INTERNATION_CODE && std::regex_match(callInfo.number, phoneContextPattern)) { callInfoList.calls[i].number = callInfo.number.substr(0, 1) + - callInfo.number.substr(PHONE_CONTEXT_EXPECTED.length()); + callInfo.number.substr(CN_INTERNATIONAL_NUMBER_PREFIX.length()); } } } @@ -1408,11 +1408,11 @@ void CellularCallHandler::replacePrefix(std::string &number) std::string prefix2 = "086"; if (number.length() > prefix1.length() && number.compare(0, prefix1.length(), prefix1) == 0) { - number.replace(0, prefix1.length(), PHONE_CONTEXT_EXPECTED); + number.replace(0, prefix1.length(), CN_INTERNATIONAL_NUMBER_PREFIX); return; } if (number.length() > prefix2.length() && number.compare(0, prefix2.length(), prefix2) == 0) { - number.replace(0, prefix2.length(), PHONE_CONTEXT_EXPECTED); + number.replace(0, prefix2.length(), CN_INTERNATIONAL_NUMBER_PREFIX); return; } } diff --git a/test/unittest/imstest/ims2_test.cpp b/test/unittest/imstest/ims2_test.cpp index fe13b1d2..abe0e207 100644 --- a/test/unittest/imstest/ims2_test.cpp +++ b/test/unittest/imstest/ims2_test.cpp @@ -959,6 +959,13 @@ HWTEST_F(Ims2Test, cellular_call_CellularCallHandler_0005, Function | MediumTest imsCurrentCallList->calls.push_back(imsCurrent); handler.ProcessImsPhoneNumber(*imsCurrentCallList); EXPECT_EQ(imsCurrentCallList->calls[0].number, unexpected); + EXPECT_CALL(*mockSimManager, GetIMSI(_, _)).WillRepeatedly(DoAll(SetArgReferee<1>(u"459xx"), Return(0))); + imsCurrentCallList->calls.clear(); + unexpected = "0861565910xxxx"; + imsCurrent.number = unexpected; + imsCurrentCallList->calls.push_back(imsCurrent); + handler.ProcessImsPhoneNumber(*imsCurrentCallList); + EXPECT_EQ(imsCurrentCallList->calls[0].number, unexpected); } /** -- Gitee From 7516e01fe83b3ffbb3dd8d76c6e2933d1b1cda20 Mon Sep 17 00:00:00 2001 From: lishuo Date: Tue, 20 May 2025 16:01:19 +0800 Subject: [PATCH 12/12] 086 fix Signed-off-by: lishuo --- services/manager/src/cellular_call_handler.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/services/manager/src/cellular_call_handler.cpp b/services/manager/src/cellular_call_handler.cpp index 181e5677..e3f01f6d 100755 --- a/services/manager/src/cellular_call_handler.cpp +++ b/services/manager/src/cellular_call_handler.cpp @@ -1403,10 +1403,8 @@ void CellularCallHandler::replacePrefix(std::string &number) if (imsi.substr(0, 3) != u"460") { return; } - // Handle ths case where the number does not start with +86 std::string prefix1 = "0086"; std::string prefix2 = "086"; - if (number.length() > prefix1.length() && number.compare(0, prefix1.length(), prefix1) == 0) { number.replace(0, prefix1.length(), CN_INTERNATIONAL_NUMBER_PREFIX); return; -- Gitee