From b99e17af8e9df438c0430df626afe3861ede585a Mon Sep 17 00:00:00 2001 From: dongqingran Date: Thu, 16 Nov 2023 16:18:38 +0800 Subject: [PATCH] system live view button mst and solve crash Signed-off-by: dongqingran --- .../ans_innerkits_module_publish_test.cpp | 53 +++++++++++++++++++ .../ans/src/advanced_notification_service.cpp | 1 + 2 files changed, 54 insertions(+) diff --git a/frameworks/test/moduletest/ans_innerkits_module_publish_test.cpp b/frameworks/test/moduletest/ans_innerkits_module_publish_test.cpp index a547e3f5f..e2313a3fe 100644 --- a/frameworks/test/moduletest/ans_innerkits_module_publish_test.cpp +++ b/frameworks/test/moduletest/ans_innerkits_module_publish_test.cpp @@ -63,6 +63,7 @@ const int32_t CASE_FIFTEEN = 15; const int32_t CASE_SIXTEEN = 16; const int32_t CASE_SEVENTEEN = 17; const int32_t CASE_EIGHTEEN = 18; +const int32_t CASE_NINETEEN = 19; const int32_t PIXEL_MAP_TEST_WIDTH = 32; const int32_t PIXEL_MAP_TEST_HEIGHT = 32; @@ -1680,6 +1681,58 @@ HWTEST_F(AnsInnerKitsModulePublishTest, ANS_Interface_MT_Publish_10001, Function WaitOnUnsubscribeResult(); } +/** + * @tc.number : ANS_Interface_MT_Publish_10002 + * @tc.name : Publish_10002 + * @tc.desc : Add notification slot(type is LIVE_VIEW), make a subscriber, a system live view subscriber + * and publish a system live view notification. Then trigger a button. + * @tc.expected : Add notification slot success, make a subscriber, publish a notification + * and trigger a buuton success. + */ +HWTEST_F(AnsInnerKitsModulePublishTest, ANS_Interface_MT_Publish_10002, Function | MediumTest | Level1) +{ + NotificationSlot slot(NotificationConstant::LIVE_VIEW); + EXPECT_EQ(0, NotificationHelper::AddNotificationSlot(slot)); + auto subscriber = TestAnsSubscriber(); + g_subscribe_mtx.lock(); + EXPECT_EQ(0, NotificationHelper::SubscribeNotification(subscriber)); + WaitOnSubscribeResult(); + + auto systemLiveViewSubscriber = TestLocalLiveViewSubscriber(); + EXPECT_EQ(0, NotificationHelper::SubscribeLocalLiveViewNotification(systemLiveViewSubscriber)); + + MessageUser messageUser; + std::shared_ptr liveContent = + std::make_shared(); + EXPECT_NE(liveContent, nullptr); + std::shared_ptr content = std::make_shared(liveContent); + EXPECT_NE(content, nullptr); + + NotificationRequest req; + int32_t notificationId = CASE_NINETEEN; + req.SetContent(content); + req.SetSlotType(NotificationConstant::LIVE_VIEW); + req.SetNotificationId(notificationId); + + g_consumed_mtx.lock(); + EXPECT_EQ(0, NotificationHelper::PublishNotification(req)); + WaitOnConsumed(); + + std::string buttonName = "testButton"; + NotificationBundleOption bundleOption; + bundleOption.SetBundleName("bundleName"); + bundleOption.SetUid(1); + NotificationButtonOption buttonOption; + buttonOption.SetButtonName(buttonName); + g_system_live_view_subscribe_response_mtx.lock(); + EXPECT_EQ(0, NotificationHelper::TriggerLocalLiveView(bundleOption, notificationId, buttonOption)); + WaitOnResponse(CASE_NINETEEN, buttonName); + + g_unsubscribe_mtx.lock(); + EXPECT_EQ(0, NotificationHelper::UnSubscribeNotification(subscriber)); + WaitOnUnsubscribeResult(); +} + /** * @tc.name: ANS_Interface_MT_SetBadgeNumber_00100 * @tc.desc: check SetBadgeNumber interface return value. diff --git a/services/ans/src/advanced_notification_service.cpp b/services/ans/src/advanced_notification_service.cpp index 93309924a..c746578e5 100644 --- a/services/ans/src/advanced_notification_service.cpp +++ b/services/ans/src/advanced_notification_service.cpp @@ -368,6 +368,7 @@ void AdvancedNotificationService::SelfClean() NotificationSubscriberManager::GetInstance()->ResetFfrtQueue(); DistributedNotificationManager::GetInstance()->ResetFfrtQueue(); + NotificationLocalLiveViewSubscriberManager::GetInstance()->ResetFfrtQueue(); } ErrCode AdvancedNotificationService::SetDefaultNotificationEnabled( -- Gitee