diff --git a/frameworks/native/ability/ability_runtime/ability_context_impl.cpp b/frameworks/native/ability/ability_runtime/ability_context_impl.cpp index fe04e24a68..e1dd5e01af 100644 --- a/frameworks/native/ability/ability_runtime/ability_context_impl.cpp +++ b/frameworks/native/ability/ability_runtime/ability_context_impl.cpp @@ -777,8 +777,12 @@ ErrCode AbilityContextImpl::GetMissionId(int32_t &missionId) ErrCode AbilityContextImpl::SetMissionContinueState(const AAFwk::ContinueState &state) { TAG_LOGD(AAFwkTag::CONTEXT, "SetMissionContinueState: %{public}d", state); - ErrCode err = AAFwk::AbilityManagerClient::GetInstance()->SetMissionContinueState(token_, state, - sessionToken_.promote()); + auto sessionToken = GetSessionToken(); + if (sessionToken == nullptr) { + TAG_LOGE(AAFwkTag::CONTEXT, "sessionToken is null"); + return ERR_INVALID_VALUE; + } + ErrCode err = AAFwk::AbilityManagerClient::GetInstance()->SetMissionContinueState(token_, state, sessionToken); if (err != ERR_OK) { TAG_LOGE(AAFwkTag::CONTEXT, "SetMissionContinueState failed: %{public}d", err); } diff --git a/test/unittest/frameworks_kits_ability_ability_runtime_test/ability_context_impl_test.cpp b/test/unittest/frameworks_kits_ability_ability_runtime_test/ability_context_impl_test.cpp index 647e01dafb..380f9b7fcc 100644 --- a/test/unittest/frameworks_kits_ability_ability_runtime_test/ability_context_impl_test.cpp +++ b/test/unittest/frameworks_kits_ability_ability_runtime_test/ability_context_impl_test.cpp @@ -235,6 +235,29 @@ HWTEST_F(AbilityContextImplTest, Ability_Context_Impl_SetMissionContinueState_01 } } +/** + * @tc.name: Ability_Context_Impl_SetMissionContinueState_0200 + * @tc.desc: test set mission continue state. + * @tc.type: FUNC + */ +HWTEST_F(AbilityContextImplTest, Ability_Context_Impl_SetMissionContinueState_0200, Function | MediumTest | Level1) +{ + ASSERT_TRUE(g_mockAbilityMs != nullptr); + ASSERT_TRUE(context_ != nullptr); + AAFwk::AbilityManagerClient::GetInstance()->proxy_ = g_mockAbilityMs; + g_mockAbilityMs->SetCommonMockResult(false); + + AAFwk::ContinueState state = AAFwk::ContinueState::CONTINUESTATE_INACTIVE; + auto ret = context_->SetMissionContinueState(state); + EXPECT_NE(ret, 0); + + g_mockAbilityMs->SetCommonMockResult(true); + ret = context_->SetMissionContinueState(state); + if (!Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) { + EXPECT_EQ(ret, 0); + } +} + /** * @tc.name: Ability_Context_Impl_SetMissionLabel_0100 * @tc.desc: test set mission label.