From f3ab091149458efe3650ac3e76df5d101d0ef83b Mon Sep 17 00:00:00 2001 From: yangwei_814916 Date: Mon, 27 Feb 2023 15:48:52 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E6=8C=89=E9=9C=80=E5=90=AF=E5=81=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: yangwei_814916 --- common/BUILD.gn | 1 - common/include/dscreen_sa_process_state.h | 25 -------- common/src/dscreen_sa_process_state.cpp | 64 ------------------- common/test/unittest/BUILD.gn | 1 - .../test/unittest/src/screen_common_test.cpp | 4 +- .../src/dscreen_sink_service.cpp | 11 +++- .../src/dscreen_source_service.cpp | 11 +++- 7 files changed, 19 insertions(+), 98 deletions(-) delete mode 100644 common/include/dscreen_sa_process_state.h delete mode 100644 common/src/dscreen_sa_process_state.cpp diff --git a/common/BUILD.gn b/common/BUILD.gn index 5eb2ebcf..9a201da3 100644 --- a/common/BUILD.gn +++ b/common/BUILD.gn @@ -29,7 +29,6 @@ ohos_shared_library("distributed_screen_utils") { "src/dscreen_hisysevent.cpp", "src/dscreen_json_util.cpp", "src/dscreen_log.cpp", - "src/dscreen_sa_process_state.cpp", "src/dscreen_util.cpp", ] diff --git a/common/include/dscreen_sa_process_state.h b/common/include/dscreen_sa_process_state.h deleted file mode 100644 index 95e560cc..00000000 --- a/common/include/dscreen_sa_process_state.h +++ /dev/null @@ -1,25 +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. - */ - -#ifndef DSCREEN_SA_PROCESS_STATE_H -#define DSCREEN_SA_PROCESS_STATE_H - -namespace OHOS { -namespace DistributedHardware { -void SetSinkProcessExit(); -void SetSourceProcessExit(); -} // namespace DistributedHardware -} // namespace OHOS -#endif // DSCREEN_SA_PROCESS_STATE_H diff --git a/common/src/dscreen_sa_process_state.cpp b/common/src/dscreen_sa_process_state.cpp deleted file mode 100644 index e0377fce..00000000 --- a/common/src/dscreen_sa_process_state.cpp +++ /dev/null @@ -1,64 +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. - */ - -#include "dscreen_sa_process_state.h" - -#include -#include -#include - -#include "dscreen_constants.h" -#include "dscreen_hisysevent.h" -#include "dscreen_log.h" - -namespace OHOS { -namespace DistributedHardware { -enum DScreenSAState : uint32_t { - DSCREEN_SA_EXIT_STATE_START = 0, - DSCREEN_SA_EXIT_STATE_STOP = 1 -}; -DScreenSAState g_sinkSAState = DSCREEN_SA_EXIT_STATE_START; -DScreenSAState g_sourceSAState = DSCREEN_SA_EXIT_STATE_START; -std::mutex g_saProcessState; - -void SetSinkProcessExit() -{ - DHLOGI("set sink process exit."); - std::lock_guard autoLock(g_saProcessState); - g_sinkSAState = DSCREEN_SA_EXIT_STATE_STOP; - DHLOGI("g_sourceSAState = %" PRId32 ", g_sinkSAState = %" PRId32, g_sourceSAState, g_sinkSAState); - if (g_sourceSAState == DSCREEN_SA_EXIT_STATE_START || g_sinkSAState == DSCREEN_SA_EXIT_STATE_START) { - return; - } - DHLOGI("exit sa process success."); - ReportSaEvent(DSCREEN_EXIT, DISTRIBUTED_HARDWARE_SCREEN_SINK_SA_ID, "dscreen sink sa exit success."); - _Exit(0); -} - -void SetSourceProcessExit() -{ - DHLOGI("set sources process exit."); - std::lock_guard autoLock(g_saProcessState); - g_sourceSAState = DSCREEN_SA_EXIT_STATE_STOP; - DHLOGI("g_sourceSAState = %" PRId32 ", g_sinkSAState = %" PRId32, g_sourceSAState, g_sinkSAState); - if (g_sourceSAState == DSCREEN_SA_EXIT_STATE_START || g_sinkSAState == DSCREEN_SA_EXIT_STATE_START) { - return; - } - DHLOGI("exit sa process success."); - ReportSaEvent(DSCREEN_EXIT, DISTRIBUTED_HARDWARE_SCREEN_SOURCE_SA_ID, "dscreen source sa exit success."); - _Exit(0); -} -} // namespace DistributedHardware -} // namespace OHOS \ No newline at end of file diff --git a/common/test/unittest/BUILD.gn b/common/test/unittest/BUILD.gn index b7555849..033dd19f 100644 --- a/common/test/unittest/BUILD.gn +++ b/common/test/unittest/BUILD.gn @@ -34,7 +34,6 @@ ohos_unittest("ScreenCommonTest") { sources = [ "${common_path}/src/dscreen_hisysevent.cpp", "${common_path}/src/dscreen_log.cpp", - "${common_path}/src/dscreen_sa_process_state.cpp", "${common_path}/src/dscreen_util.cpp", "${common_path}/test/unittest/src/screen_common_test.cpp", ] diff --git a/common/test/unittest/src/screen_common_test.cpp b/common/test/unittest/src/screen_common_test.cpp index bbb50342..98152a24 100644 --- a/common/test/unittest/src/screen_common_test.cpp +++ b/common/test/unittest/src/screen_common_test.cpp @@ -16,7 +16,6 @@ #include "dscreen_errcode.h" #include "dscreen_hisysevent.h" -#include "dscreen_sa_process_state.h" #include "dscreen_log.h" #include "dscreen_util.h" using namespace testing::ext; @@ -40,7 +39,6 @@ void ScreenCommonTest::TearDown() {} HWTEST_F(ScreenCommonTest, common_001, TestSize.Level1) { DHLOGW("common_001."); - SetSourceProcessExit(); std::string networkId = "networkId"; int32_t ret = GetLocalDeviceNetworkId(networkId); EXPECT_NE(DH_SUCCESS, ret); @@ -52,7 +50,7 @@ HWTEST_F(ScreenCommonTest, common_001, TestSize.Level1) * @tc.type: FUNC * @tc.require: Issue Number */ -HWTEST_F(ScreenCommonTest, common_002, TestSize.Level1) +HWTEST_F(ScreenCommonTest, common_002, TestSize.Level1) { DHLOGW("common_002."); ReportSaFail(eventName, errCode, saId, errMsg); diff --git a/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_service.cpp b/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_service.cpp index ed2e0d6a..86585305 100644 --- a/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_service.cpp +++ b/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_service.cpp @@ -25,7 +25,6 @@ #include "dscreen_constants.h" #include "dscreen_errcode.h" #include "dscreen_log.h" -#include "dscreen_sa_process_state.h" #include "dscreen_util.h" namespace OHOS { @@ -80,7 +79,15 @@ int32_t DScreenSinkService::ReleaseSink() DHLOGI("ReleaseSink"); ScreenRegionManager::GetInstance().ReleaseAllRegions(); DHLOGI("exit sink sa process"); - SetSinkProcessExit(); + auto systemAbilityMgr = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); + if (systemAbilityMgr != nullptr) { + int32_t ret = systemAbilityMgr->UnloadSystemAbility(DISTRIBUTED_HARDWARE_SCREEN_SINK_SA_ID); + if (ret != DH_SUCCESS) { + DHLOGE("sink systemAbilityMgr UnLoadSystemAbility failed, ret: %d", ret); + return DSCREEN_BAD_VALUE; + } + } + DHLOGI("sink systemAbilityMgr UnLoadSystemAbility success"); return DH_SUCCESS; } diff --git a/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp b/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp index 80ac3caa..ea29969e 100644 --- a/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp +++ b/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp @@ -26,7 +26,6 @@ #include "dscreen_errcode.h" #include "dscreen_hisysevent.h" #include "dscreen_log.h" -#include "dscreen_sa_process_state.h" #include "dscreen_util.h" namespace OHOS { @@ -95,7 +94,15 @@ int32_t DScreenSourceService::ReleaseSource() return ret; } DHLOGI("exit source sa process"); - SetSourceProcessExit(); + auto systemAbilityMgr = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); + if (systemAbilityMgr != nullptr) { + ret = systemAbilityMgr->UnloadSystemAbility(DISTRIBUTED_HARDWARE_SCREEN_SOURCE_SA_ID); + if (ret != DH_SUCCESS) { + DHLOGE("source systemAbilityMgr UnLoadSystemAbility failed, ret: %d", ret); + return DSCREEN_BAD_VALUE; + } + } + DHLOGI("source systemAbilityMgr UnLoadSystemAbility success"); return DH_SUCCESS; } -- Gitee From a47c4c30a3a3f08465626895dfda8e35e3ee7590 Mon Sep 17 00:00:00 2001 From: yangwei Date: Mon, 27 Feb 2023 08:09:23 +0000 Subject: [PATCH 2/6] update common/test/unittest/src/screen_common_test.cpp. Signed-off-by: yangwei --- common/test/unittest/src/screen_common_test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/test/unittest/src/screen_common_test.cpp b/common/test/unittest/src/screen_common_test.cpp index 98152a24..2a01870b 100644 --- a/common/test/unittest/src/screen_common_test.cpp +++ b/common/test/unittest/src/screen_common_test.cpp @@ -50,7 +50,7 @@ HWTEST_F(ScreenCommonTest, common_001, TestSize.Level1) * @tc.type: FUNC * @tc.require: Issue Number */ -HWTEST_F(ScreenCommonTest, common_002, TestSize.Level1) +HWTEST_F(ScreenCommonTest, common_002, TestSize.Level1) { DHLOGW("common_002."); ReportSaFail(eventName, errCode, saId, errMsg); -- Gitee From 3b4ffd5ca8da1b9a5a75921d6fcb17228184a827 Mon Sep 17 00:00:00 2001 From: yangwei Date: Wed, 1 Mar 2023 02:41:55 +0000 Subject: [PATCH 3/6] update services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_service.cpp. Signed-off-by: yangwei --- .../dscreenservice/src/dscreen_sink_service.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_service.cpp b/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_service.cpp index 86585305..35560944 100644 --- a/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_service.cpp +++ b/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_service.cpp @@ -80,12 +80,14 @@ int32_t DScreenSinkService::ReleaseSink() ScreenRegionManager::GetInstance().ReleaseAllRegions(); DHLOGI("exit sink sa process"); auto systemAbilityMgr = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); - if (systemAbilityMgr != nullptr) { - int32_t ret = systemAbilityMgr->UnloadSystemAbility(DISTRIBUTED_HARDWARE_SCREEN_SINK_SA_ID); - if (ret != DH_SUCCESS) { - DHLOGE("sink systemAbilityMgr UnLoadSystemAbility failed, ret: %d", ret); - return DSCREEN_BAD_VALUE; - } + if (systemAbilityMgr == nullptr) { + DHLOGE("systemAbilityMgr is null"); + return; + } + int32_t ret = systemAbilityMgr->UnloadSystemAbility(DISTRIBUTED_HARDWARE_SCREEN_SINK_SA_ID); + if (ret != DH_SUCCESS) { + DHLOGE("sink systemAbilityMgr UnLoadSystemAbility failed, ret: %d", ret); + return DSCREEN_BAD_VALUE; } DHLOGI("sink systemAbilityMgr UnLoadSystemAbility success"); return DH_SUCCESS; -- Gitee From 1bfa1f06c7d6978a88dd4da67a916ffe3d8793f5 Mon Sep 17 00:00:00 2001 From: yangwei Date: Wed, 1 Mar 2023 02:44:56 +0000 Subject: [PATCH 4/6] update services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp. Signed-off-by: yangwei --- .../dscreenservice/src/dscreen_source_service.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp b/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp index ea29969e..9865ebd8 100644 --- a/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp +++ b/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp @@ -95,12 +95,14 @@ int32_t DScreenSourceService::ReleaseSource() } DHLOGI("exit source sa process"); auto systemAbilityMgr = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); - if (systemAbilityMgr != nullptr) { - ret = systemAbilityMgr->UnloadSystemAbility(DISTRIBUTED_HARDWARE_SCREEN_SOURCE_SA_ID); - if (ret != DH_SUCCESS) { - DHLOGE("source systemAbilityMgr UnLoadSystemAbility failed, ret: %d", ret); - return DSCREEN_BAD_VALUE; - } + if (systemAbilityMgr == nullptr) { + DHLOGE("systemAbilityMgr is null"); + return DSCREEN_INIT_ERR; + } + ret = systemAbilityMgr->UnloadSystemAbility(DISTRIBUTED_HARDWARE_SCREEN_SOURCE_SA_ID); + if (ret != DH_SUCCESS) { + DHLOGE("source systemAbilityMgr UnLoadSystemAbility failed, ret: %d", ret); + return DSCREEN_BAD_VALUE; } DHLOGI("source systemAbilityMgr UnLoadSystemAbility success"); return DH_SUCCESS; -- Gitee From e83b036f4add1d20c5778568c2da64d8a9c2ebc8 Mon Sep 17 00:00:00 2001 From: yangwei Date: Wed, 1 Mar 2023 02:46:20 +0000 Subject: [PATCH 5/6] update services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_service.cpp. Signed-off-by: yangwei --- .../sinkservice/dscreenservice/src/dscreen_sink_service.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_service.cpp b/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_service.cpp index 35560944..d387234e 100644 --- a/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_service.cpp +++ b/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_service.cpp @@ -82,7 +82,7 @@ int32_t DScreenSinkService::ReleaseSink() auto systemAbilityMgr = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); if (systemAbilityMgr == nullptr) { DHLOGE("systemAbilityMgr is null"); - return; + return DSCREEN_INIT_ERR; } int32_t ret = systemAbilityMgr->UnloadSystemAbility(DISTRIBUTED_HARDWARE_SCREEN_SINK_SA_ID); if (ret != DH_SUCCESS) { -- Gitee From e2efd94975d924c44f87f064b594ab30d721d527 Mon Sep 17 00:00:00 2001 From: yangwei_814916 Date: Wed, 1 Mar 2023 11:47:58 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E6=8C=89=E9=9C=80=E5=90=AF=E5=81=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: yangwei_814916 --- .../sinkservice/dscreenservice/src/dscreen_sink_service.cpp | 2 +- .../screenservice/sourceservice/dscreenmgr/src/dscreen.cpp | 4 ++++ .../dscreenservice/src/dscreen_source_service.cpp | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_service.cpp b/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_service.cpp index d387234e..830e1553 100644 --- a/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_service.cpp +++ b/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_service.cpp @@ -86,7 +86,7 @@ int32_t DScreenSinkService::ReleaseSink() } int32_t ret = systemAbilityMgr->UnloadSystemAbility(DISTRIBUTED_HARDWARE_SCREEN_SINK_SA_ID); if (ret != DH_SUCCESS) { - DHLOGE("sink systemAbilityMgr UnLoadSystemAbility failed, ret: %d", ret); + DHLOGE("sink systemAbilityMgr UnLoadSystemAbility failed, ret: %" PRId32, ret); return DSCREEN_BAD_VALUE; } DHLOGI("sink systemAbilityMgr UnLoadSystemAbility success"); diff --git a/services/screenservice/sourceservice/dscreenmgr/src/dscreen.cpp b/services/screenservice/sourceservice/dscreenmgr/src/dscreen.cpp index 2b7528f5..421c4aed 100644 --- a/services/screenservice/sourceservice/dscreenmgr/src/dscreen.cpp +++ b/services/screenservice/sourceservice/dscreenmgr/src/dscreen.cpp @@ -199,6 +199,10 @@ void DScreen::HandleEnable(const std::string ¶m, const std::string &taskId) } json attrJson = json::parse(param, nullptr, false); + if (attrJson.is_discarded()) { + DHLOGE("HandleEnable attrJson is invalid"); + return; + } int32_t ret = CheckJsonData(attrJson); if (ret != DH_SUCCESS) { DHLOGE("check json data failed."); diff --git a/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp b/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp index 9865ebd8..0ff9d570 100644 --- a/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp +++ b/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp @@ -101,7 +101,7 @@ int32_t DScreenSourceService::ReleaseSource() } ret = systemAbilityMgr->UnloadSystemAbility(DISTRIBUTED_HARDWARE_SCREEN_SOURCE_SA_ID); if (ret != DH_SUCCESS) { - DHLOGE("source systemAbilityMgr UnLoadSystemAbility failed, ret: %d", ret); + DHLOGE("source systemAbilityMgr UnLoadSystemAbility failed, ret: %" PRId32, ret); return DSCREEN_BAD_VALUE; } DHLOGI("source systemAbilityMgr UnLoadSystemAbility success"); -- Gitee