diff --git a/interfaces/inner_api/ability_manager/include/mission_listener_interface.h b/interfaces/inner_api/ability_manager/include/mission_listener_interface.h index 5fb82a2791..44913fdf0f 100644 --- a/interfaces/inner_api/ability_manager/include/mission_listener_interface.h +++ b/interfaces/inner_api/ability_manager/include/mission_listener_interface.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021-2023 Huawei Device Co., Ltd. + * Copyright (c) 2021-2025 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 @@ -59,6 +59,8 @@ public: */ virtual void OnMissionMovedToFront(int32_t missionId) = 0; + virtual void OnMissionMovedToBackground(int32_t missionId) {}; + /** * @brief When the ability focused, AbilityMs notifies the listener of the mission id * @@ -125,6 +127,9 @@ public: // ipc id for OnMissionUnfocused ON_MISSION_UNFOCUSED, + // ipc id for OnMissionMovedToBackground + ON_MISSION_MOVED_TO_BACKGROUND, + // maximum of enum MISSION_LINSTENER_CMD_MAX }; diff --git a/interfaces/inner_api/ability_manager/include/mission_listener_proxy.h b/interfaces/inner_api/ability_manager/include/mission_listener_proxy.h index f074bba985..e7f82ee3cc 100644 --- a/interfaces/inner_api/ability_manager/include/mission_listener_proxy.h +++ b/interfaces/inner_api/ability_manager/include/mission_listener_proxy.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021-2023 Huawei Device Co., Ltd. + * Copyright (c) 2021-2025 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 @@ -58,6 +58,8 @@ public: */ virtual void OnMissionMovedToFront(int32_t missionId) override; + virtual void OnMissionMovedToBackground(int32_t missionId) override; + /** * @brief Sends OnMissionFocused request. * diff --git a/interfaces/inner_api/ability_manager/include/mission_listener_stub.h b/interfaces/inner_api/ability_manager/include/mission_listener_stub.h index e9cde518cd..4b24eb60d8 100644 --- a/interfaces/inner_api/ability_manager/include/mission_listener_stub.h +++ b/interfaces/inner_api/ability_manager/include/mission_listener_stub.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021-2023 Huawei Device Co., Ltd. + * Copyright (c) 2021-2025 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 @@ -44,6 +44,7 @@ private: int OnMissionDestroyedInner(MessageParcel &data, MessageParcel &reply); int OnMissionSnapshotChangedInner(MessageParcel &data, MessageParcel &reply); int OnMissionMovedToFrontInner(MessageParcel &data, MessageParcel &reply); + int OnMissionMovedToBackgroundInner(MessageParcel &data, MessageParcel &reply); int OnMissionIconUpdatedInner(MessageParcel &data, MessageParcel &reply); int OnMissionClosedInner(MessageParcel &data, MessageParcel &reply); int OnMissionLabelUpdatedInner(MessageParcel &data, MessageParcel &reply); diff --git a/services/abilitymgr/src/mission/mission_listener_proxy.cpp b/services/abilitymgr/src/mission/mission_listener_proxy.cpp index 1f20390a76..3c829cb8b5 100644 --- a/services/abilitymgr/src/mission/mission_listener_proxy.cpp +++ b/services/abilitymgr/src/mission/mission_listener_proxy.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021-2024 Huawei Device Co., Ltd. + * Copyright (c) 2021-2025 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 @@ -39,6 +39,11 @@ void MissionListenerProxy::OnMissionMovedToFront(int32_t missionId) SendRequestCommon(missionId, IMissionListener::ON_MISSION_MOVED_TO_FRONT); } +void MissionListenerProxy::OnMissionMovedToBackground(int32_t missionId) +{ + SendRequestCommon(missionId, IMissionListener::ON_MISSION_MOVED_TO_BACKGROUND); +} + void MissionListenerProxy::OnMissionFocused(int32_t missionId) { SendRequestCommon(missionId, IMissionListener::ON_MISSION_FOCUSED); diff --git a/services/abilitymgr/src/mission/mission_listener_stub.cpp b/services/abilitymgr/src/mission/mission_listener_stub.cpp index 8a3ec41f05..6885638ebb 100644 --- a/services/abilitymgr/src/mission/mission_listener_stub.cpp +++ b/services/abilitymgr/src/mission/mission_listener_stub.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021-2024 Huawei Device Co., Ltd. + * Copyright (c) 2021-2025 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 @@ -49,6 +49,13 @@ int MissionListenerStub::OnMissionMovedToFrontInner(MessageParcel &data, Message return NO_ERROR; } +int MissionListenerStub::OnMissionMovedToBackgroundInner(MessageParcel &data, MessageParcel &reply) +{ + auto missionId = data.ReadInt32(); + OnMissionMovedToBackground(missionId); + return NO_ERROR; +} + int MissionListenerStub::OnMissionFocusedInner(MessageParcel &data, MessageParcel &reply) { auto missionId = data.ReadInt32(); @@ -126,6 +133,8 @@ int MissionListenerStub::OnRemoteRequest( case ON_MISSION_UNFOCUSED: return OnMissionUnfocusedInner(data, reply); break; + case ON_MISSION_MOVED_TO_BACKGROUND: + return OnMissionMovedToBackgroundInner(data, reply); } } return IPCObjectStub::OnRemoteRequest(code, data, reply, option); diff --git a/test/fuzztest/missionlistenercontroller_fuzzer/missionlistenercontroller_fuzzer.cpp b/test/fuzztest/missionlistenercontroller_fuzzer/missionlistenercontroller_fuzzer.cpp index 441b632754..64a41b390a 100644 --- a/test/fuzztest/missionlistenercontroller_fuzzer/missionlistenercontroller_fuzzer.cpp +++ b/test/fuzztest/missionlistenercontroller_fuzzer/missionlistenercontroller_fuzzer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Huawei Device Co., Ltd. + * Copyright (c) 2024-2025 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 @@ -67,6 +67,11 @@ public: isMissionMovedToFront_ = true; } + void OnMissionMovedToBackground(int32_t missionId) override + { + isMissionMovedToBackground_ = true; + } + void OnMissionIconUpdated(int32_t missionId, const std::shared_ptr& icon) override { isMissionIconUpdated_ = true; @@ -122,6 +127,7 @@ private: bool isMissionDestroyed_ = false; bool isMissionSnapshotChanged_ = false; bool isMissionMovedToFront_ = false; + bool isMissionMovedToBackground_ = false; bool isMissionIconUpdated_ = false; bool isMissionClosed_ = false; bool isMissionLabelUpdated_ = false; diff --git a/test/fuzztest/missionlistenerstub_fuzzer/missionlistenerstub_fuzzer.cpp b/test/fuzztest/missionlistenerstub_fuzzer/missionlistenerstub_fuzzer.cpp index bc6b72b1e3..622adda265 100644 --- a/test/fuzztest/missionlistenerstub_fuzzer/missionlistenerstub_fuzzer.cpp +++ b/test/fuzztest/missionlistenerstub_fuzzer/missionlistenerstub_fuzzer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Huawei Device Co., Ltd. + * Copyright (c) 2024-2025 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 @@ -44,6 +44,8 @@ public: {} void OnMissionMovedToFront(int32_t missionId) override {} + void OnMissionMovedToBackground(int32_t missionId) override + {} void OnMissionIconUpdated(int32_t missionId, const std::shared_ptr& icon) override {} void OnMissionClosed(int32_t missionId) override diff --git a/test/fuzztest/registermissionlistener_fuzzer/registermissionlistener_fuzzer.cpp b/test/fuzztest/registermissionlistener_fuzzer/registermissionlistener_fuzzer.cpp index 48f3e7b730..ed5e928035 100755 --- a/test/fuzztest/registermissionlistener_fuzzer/registermissionlistener_fuzzer.cpp +++ b/test/fuzztest/registermissionlistener_fuzzer/registermissionlistener_fuzzer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Huawei Device Co., Ltd. + * Copyright (c) 2024-2025 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 @@ -38,6 +38,7 @@ public: void OnMissionDestroyed(int32_t missionId) override {}; void OnMissionSnapshotChanged(int32_t missionId) override {}; void OnMissionMovedToFront(int32_t missionId) override {}; + void OnMissionMovedToBackground(int32_t missionId) override {}; void OnMissionClosed(int32_t missionId) override {}; void OnMissionLabelUpdated(int32_t missionId) override {}; #ifdef SUPPORT_GRAPHICS diff --git a/test/fuzztest/unregistermissionlistener_fuzzer/unregistermissionlistener_fuzzer.cpp b/test/fuzztest/unregistermissionlistener_fuzzer/unregistermissionlistener_fuzzer.cpp index 23ae7a30f3..d2da1b1280 100644 --- a/test/fuzztest/unregistermissionlistener_fuzzer/unregistermissionlistener_fuzzer.cpp +++ b/test/fuzztest/unregistermissionlistener_fuzzer/unregistermissionlistener_fuzzer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024 Huawei Device Co., Ltd. + * Copyright (c) 2024-2025 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 @@ -38,6 +38,7 @@ public: void OnMissionDestroyed(int32_t missionId) override {}; void OnMissionSnapshotChanged(int32_t missionId) override {}; void OnMissionMovedToFront(int32_t missionId) override {}; + void OnMissionMovedToBackground(int32_t missionId) override {}; void OnMissionClosed(int32_t missionId) override {}; void OnMissionLabelUpdated(int32_t missionId) override {}; #ifdef SUPPORT_GRAPHICS diff --git a/test/unittest/mission_listener_proxy_test/mission_listener_proxy_test.cpp b/test/unittest/mission_listener_proxy_test/mission_listener_proxy_test.cpp index 3f162a44c2..a141d4ad3f 100755 --- a/test/unittest/mission_listener_proxy_test/mission_listener_proxy_test.cpp +++ b/test/unittest/mission_listener_proxy_test/mission_listener_proxy_test.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Huawei Device Co., Ltd. + * Copyright (c) 2022-2025 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 @@ -109,6 +109,13 @@ HWTEST_F(MissionListenerProxyTest, OnMissionMovedToFront_001, TestSize.Level1) EXPECT_TRUE(proxy_ != nullptr); } +HWTEST_F(MissionListenerProxyTest, OnMissionMovedToBackground_001, TestSize.Level1) +{ + int32_t missionId = 0; + proxy_->OnMissionMovedToBackground(missionId); + EXPECT_TRUE(proxy_ != nullptr); +} + #ifdef SUPPORT_GRAPHICS /* * Feature: MissionListenerProxy diff --git a/test/unittest/mission_listener_proxy_test/mission_listener_stub_mock.h b/test/unittest/mission_listener_proxy_test/mission_listener_stub_mock.h index 4493ac3e69..236e7a53f8 100755 --- a/test/unittest/mission_listener_proxy_test/mission_listener_stub_mock.h +++ b/test/unittest/mission_listener_proxy_test/mission_listener_stub_mock.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021 Huawei Device Co., Ltd. + * Copyright (c) 2021-2025 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 @@ -43,6 +43,7 @@ public: virtual void OnMissionDestroyed(int32_t missionId) {} virtual void OnMissionSnapshotChanged(int32_t missionId) {} virtual void OnMissionMovedToFront(int32_t missionId) {} + virtual void OnMissionMovedToBackground(int32_t missionId) {} #ifdef SUPPORT_GRAPHICS virtual void OnMissionIconUpdated(int32_t missionId, const std::shared_ptr &icon) {} #endif diff --git a/test/unittest/mission_listener_stub_second_test/mission_listener_stub_second_test.cpp b/test/unittest/mission_listener_stub_second_test/mission_listener_stub_second_test.cpp index 895c53e805..cedfaae883 100644 --- a/test/unittest/mission_listener_stub_second_test/mission_listener_stub_second_test.cpp +++ b/test/unittest/mission_listener_stub_second_test/mission_listener_stub_second_test.cpp @@ -166,5 +166,20 @@ HWTEST_F(MissionListenerStubSecondTest, OnRemoteRequest_008, TestSize.Level1) int res = stub_->OnRemoteRequest(IMissionListener::ON_MISSION_UNFOCUSED, data, reply, option); EXPECT_EQ(res, NO_ERROR); } + +/* + * Feature: OnRemoteRequest_009 + * Function: OnRemoteRequest + * SubFunction: NA + */ +HWTEST_F(MissionListenerStubSecondTest, OnRemoteRequest_009, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option; + WriteInterfaceToken(data); + int res = stub_->OnRemoteRequest(IMissionListener::ON_MISSION_MOVED_TO_BACKGROUND, data, reply, option); + EXPECT_EQ(res, NO_ERROR); +} } // namespace AAFwk } // namespace OHOS diff --git a/test/unittest/mission_listener_stub_second_test/mock_mission_listener_stub.h b/test/unittest/mission_listener_stub_second_test/mock_mission_listener_stub.h index 41f125eb64..e01984086b 100644 --- a/test/unittest/mission_listener_stub_second_test/mock_mission_listener_stub.h +++ b/test/unittest/mission_listener_stub_second_test/mock_mission_listener_stub.h @@ -33,6 +33,7 @@ public: MOCK_METHOD1(OnMissionDestroyed, void(int32_t missionId)); MOCK_METHOD1(OnMissionSnapshotChanged, void(int32_t missionId)); MOCK_METHOD1(OnMissionMovedToFront, void(int32_t missionId)); + MOCK_METHOD1(OnMissionMovedToBackground, void(int32_t missionId)); MOCK_METHOD2(OnMissionIconUpdated, void(int32_t missionId, const std::shared_ptr& icon)); MOCK_METHOD1(OnMissionClosed, void(int32_t missionId)); MOCK_METHOD1(OnMissionLabelUpdated, void(int32_t missionId)); diff --git a/test/unittest/mission_listener_stub_test/mission_listener_stub_test.cpp b/test/unittest/mission_listener_stub_test/mission_listener_stub_test.cpp index e8b3dd6175..6a4ec5618d 100755 --- a/test/unittest/mission_listener_stub_test/mission_listener_stub_test.cpp +++ b/test/unittest/mission_listener_stub_test/mission_listener_stub_test.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021 Huawei Device Co., Ltd. + * Copyright (c) 2021-2025 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 @@ -169,6 +169,15 @@ HWTEST_F(MissionListenerStubTest, MissionListenerStubTest_OnMissionMovedToFrontI EXPECT_EQ(res, NO_ERROR); } +HWTEST_F(MissionListenerStubTest, MissionListenerStubTest_OnMissionMovedToBackgroundInner_001, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + EXPECT_CALL(*stub_, OnMissionMovedToBackground(_)).Times(1).WillOnce(Return()); + int res = stub_->OnMissionMovedToBackgroundInner(data, reply); + EXPECT_EQ(res, NO_ERROR); +} + /* * Feature: MissionListenerStub * Function: OnMissionIconUpdatedInner diff --git a/test/unittest/mission_listener_stub_test/mock_mission_listener_stub.h b/test/unittest/mission_listener_stub_test/mock_mission_listener_stub.h index c4871de64c..0e68f8e676 100755 --- a/test/unittest/mission_listener_stub_test/mock_mission_listener_stub.h +++ b/test/unittest/mission_listener_stub_test/mock_mission_listener_stub.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021 Huawei Device Co., Ltd. + * Copyright (c) 2021-2025 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 @@ -33,6 +33,7 @@ public: MOCK_METHOD1(OnMissionDestroyed, void(int32_t missionId)); MOCK_METHOD1(OnMissionSnapshotChanged, void(int32_t missionId)); MOCK_METHOD1(OnMissionMovedToFront, void(int32_t missionId)); + MOCK_METHOD1(OnMissionMovedToBackground, void(int32_t missionId)); MOCK_METHOD2(OnMissionIconUpdated, void(int32_t missionId, const std::shared_ptr& icon)); MOCK_METHOD1(OnMissionClosed, void(int32_t missionId)); MOCK_METHOD1(OnMissionLabelUpdated, void(int32_t missionId)); diff --git a/test/unittest/mission_listener_test/mission_listener_test.cpp b/test/unittest/mission_listener_test/mission_listener_test.cpp index 208d252ceb..423e2b75a4 100644 --- a/test/unittest/mission_listener_test/mission_listener_test.cpp +++ b/test/unittest/mission_listener_test/mission_listener_test.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Huawei Device Co., Ltd. + * Copyright (c) 2022-2025 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 @@ -53,6 +53,11 @@ public: isMissionMovedToFront_ = true; } + void OnMissionMovedToBackground(int32_t missionId) override + { + isMissionMovedToBackground_ = true; + } + void OnMissionIconUpdated(int32_t missionId, const std::shared_ptr& icon) override { isMissionIconUpdated_ = true; @@ -108,6 +113,7 @@ private: bool isMissionDestroyed_ = false; bool isMissionSnapshotChanged_ = false; bool isMissionMovedToFront_ = false; + bool isMissionMovedToBackground_ = false; bool isMissionIconUpdated_ = false; bool isMissionClosed_ = false; bool isMissionLabelUpdated_ = false;