From 2f35929734fc90b6a4d28bd55c33db12c95ff7be Mon Sep 17 00:00:00 2001 From: lidongrui Date: Wed, 11 Jun 2025 13:01:30 +0800 Subject: [PATCH] hideStartWindow Signed-off-by: lidongrui Change-Id: Ibc439e02c21c4bac7b663d984245f118a1640fa5 --- .../napi_common/napi_common_start_options.cpp | 5 +++++ .../ability_manager/include/start_options.h | 4 ++++ services/abilitymgr/include/ability_record.h | 1 + .../abilitymgr/src/ability_manager_service.cpp | 5 +++++ .../scene_board/ui_ability_lifecycle_manager.cpp | 2 ++ services/abilitymgr/src/start_options.cpp | 15 +++++++++++++++ 6 files changed, 32 insertions(+) diff --git a/frameworks/js/napi/inner/napi_common/napi_common_start_options.cpp b/frameworks/js/napi/inner/napi_common/napi_common_start_options.cpp index ae40836eeb7..009034216ed 100644 --- a/frameworks/js/napi/inner/napi_common/napi_common_start_options.cpp +++ b/frameworks/js/napi/inner/napi_common/napi_common_start_options.cpp @@ -217,6 +217,11 @@ bool UnwrapStartOptions(napi_env env, napi_value param, AAFwk::StartOptions &sta if (UnwrapBooleanByPropertyName(env, param, "windowFocused", windowFocused)) { startOptions.SetWindowFocused(windowFocused); } + + bool hideStartWindow = false; + if (UnwrapBooleanByPropertyName(env, param, "hideStartWindow", hideStartWindow)) { + startOptions.SetHideStartWindow(hideStartWindow); + } std::vector supportWindowModes; if (UnwrapInt32ArrayByPropertyName(env, param, "supportWindowModes", supportWindowModes)) { diff --git a/interfaces/inner_api/ability_manager/include/start_options.h b/interfaces/inner_api/ability_manager/include/start_options.h index 78235c65b42..83390c35fc2 100644 --- a/interfaces/inner_api/ability_manager/include/start_options.h +++ b/interfaces/inner_api/ability_manager/include/start_options.h @@ -64,6 +64,9 @@ public: void SetWindowFocused(bool windowFocused); int32_t GetWindowFocused() const; + void SetHideStartWindow(bool hideStartWindow); + bool GetHideStartWindow() const; + void SetWindowLeft(int32_t windowLeft); int32_t GetWindowLeft() const; @@ -90,6 +93,7 @@ public: private: bool withAnimation_ = true; bool windowFocused_ = true; + bool hideStartWindow_ = false; int32_t windowMode_ = AbilityWindowConfiguration::MULTI_WINDOW_DISPLAY_UNDEFINED; int32_t displayId_ = -1; int32_t windowLeft_ = 0; diff --git a/services/abilitymgr/include/ability_record.h b/services/abilitymgr/include/ability_record.h index 4843aa5922c..a40368a3835 100644 --- a/services/abilitymgr/include/ability_record.h +++ b/services/abilitymgr/include/ability_record.h @@ -253,6 +253,7 @@ struct AbilityRequest { bool isQueryERMS = false; bool isEmbeddedAllowed = false; bool callSpecifiedFlagTimeout = false; + bool hideStartWindow = false; int32_t restartCount = -1; int32_t uid = 0; int32_t collaboratorType = CollaboratorType::DEFAULT_TYPE; diff --git a/services/abilitymgr/src/ability_manager_service.cpp b/services/abilitymgr/src/ability_manager_service.cpp index c5e3ccdc9ba..96acb08c937 100644 --- a/services/abilitymgr/src/ability_manager_service.cpp +++ b/services/abilitymgr/src/ability_manager_service.cpp @@ -2142,6 +2142,11 @@ int AbilityManagerService::StartAbilityForOptionInner(const Want &want, const St abilityRequest.startWindowOption = startOptions.startWindowOption; } abilityRequest.supportWindowModes = startOptions.supportWindowModes_; + auto abilityRecord = Token::GetAbilityRecordByToken(callerToken); + CHECK_POINTER_AND_RETURN_LOG(abilityRecord, ERR_INVALID_VALUE, "ability record is nullptr."); + if (JudgeSelfCalled(abilityRecord)) { + abilityRequest.hideStartWindow = startOptions.GetHideStartWindow(); + } auto uiAbilityManager = GetUIAbilityManagerByUserId(oriValidUserId); CHECK_POINTER_AND_RETURN(uiAbilityManager, ERR_NULL_UI_ABILITY_MANAGER); return uiAbilityManager->NotifySCBToStartUIAbility(abilityRequest); diff --git a/services/abilitymgr/src/scene_board/ui_ability_lifecycle_manager.cpp b/services/abilitymgr/src/scene_board/ui_ability_lifecycle_manager.cpp index effb97b1341..8bf9ce4ae1a 100644 --- a/services/abilitymgr/src/scene_board/ui_ability_lifecycle_manager.cpp +++ b/services/abilitymgr/src/scene_board/ui_ability_lifecycle_manager.cpp @@ -1369,6 +1369,8 @@ int UIAbilityLifecycleManager::NotifySCBPendingActivation(sptr &ses (sessionInfo->want).GetIntParam(Want::PARAM_APP_CLONE_INDEX_KEY, 0), sessionInfo->instanceKey.c_str(), hasStartWindow, backgroundColor.c_str()); auto abilityRecord = GetAbilityRecordByToken(abilityRequest.callerToken); + sessionInfo->hideStartWindow = abilityRequest.hideStartWindow; + TAG_LOGD(AAFwkTag::ABILITYMGR, "sessionInfo->hideStartWindow: %{public}d", sessionInfo->hideStartWindow); if (abilityRecord != nullptr && !abilityRecord->GetRestartAppFlag()) { auto callerSessionInfo = abilityRecord->GetSessionInfo(); CHECK_POINTER_AND_RETURN(callerSessionInfo, ERR_INVALID_VALUE); diff --git a/services/abilitymgr/src/start_options.cpp b/services/abilitymgr/src/start_options.cpp index faf92aa8c92..a27a37ee272 100644 --- a/services/abilitymgr/src/start_options.cpp +++ b/services/abilitymgr/src/start_options.cpp @@ -44,6 +44,7 @@ StartOptions::StartOptions(const StartOptions &other) minWindowHeightUsed_ = other.minWindowHeightUsed_; maxWindowWidthUsed_ = other.maxWindowWidthUsed_; maxWindowHeightUsed_ = other.maxWindowHeightUsed_; + hideStartWindow_ = other.hideStartWindow_; processOptions = other.processOptions; windowFocused_ = other.windowFocused_; startWindowOption = other.startWindowOption; @@ -73,6 +74,7 @@ StartOptions &StartOptions::operator=(const StartOptions &other) minWindowHeightUsed_ = other.minWindowHeightUsed_; maxWindowWidthUsed_ = other.maxWindowWidthUsed_; maxWindowHeightUsed_ = other.maxWindowHeightUsed_; + hideStartWindow_ = other.hideStartWindow_; processOptions = other.processOptions; windowFocused_ = other.windowFocused_; startWindowOption = other.startWindowOption; @@ -96,6 +98,7 @@ bool StartOptions::ReadFromParcel(Parcel &parcel) SetMaxWindowWidth(parcel.ReadInt32()); SetMaxWindowHeight(parcel.ReadInt32()); SetWindowFocused(parcel.ReadBool()); + SetHideStartWindow(parcel.ReadBool()); windowLeftUsed_ = parcel.ReadBool(); windowTopUsed_ = parcel.ReadBool(); windowWidthUsed_ = parcel.ReadBool(); @@ -147,6 +150,7 @@ bool StartOptions::Marshalling(Parcel &parcel) const parcel.WriteInt32(GetMaxWindowWidth()); parcel.WriteInt32(GetMaxWindowHeight()); parcel.WriteBool(GetWindowFocused()); + parcel.WriteBool(GetHideStartWindow()); parcel.WriteBool(windowLeftUsed_); parcel.WriteBool(windowTopUsed_); parcel.WriteBool(windowWidthUsed_); @@ -296,5 +300,16 @@ int32_t StartOptions::GetWindowFocused() const { return windowFocused_; } + +void StartOptions::SetHideStartWindow(bool hideStartWindow) +{ + hideStartWindow_ = hideStartWindow; +} + +bool StartOptions::GetHideStartWindow() const +{ + return hideStartWindow_; +} + } // namespace AAFwk } // namespace OHOS -- Gitee