From e9851c241cb79a0d5215ee2d2791d3b6ed3c6c0d Mon Sep 17 00:00:00 2001 From: Peng fafu Date: Thu, 11 Sep 2025 19:48:24 +0800 Subject: [PATCH 1/4] =?UTF-8?q?UEC=E5=88=9B=E5=BB=BA=E5=AD=90=E7=AA=97?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Peng fafu --- .../session_manager/src/scene_session_manager.cpp | 8 +++++++- .../scene_session_manager_extension_test.cpp | 10 ++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/window_scene/session_manager/src/scene_session_manager.cpp b/window_scene/session_manager/src/scene_session_manager.cpp index 4597ef22bb..b7cf9303cf 100644 --- a/window_scene/session_manager/src/scene_session_manager.cpp +++ b/window_scene/session_manager/src/scene_session_manager.cpp @@ -3887,6 +3887,11 @@ WSError SceneSessionManager::CheckSubSessionStartedByExtension(const sptrGetParentPersistentId()); return WSError::WS_ERROR_NULLPTR; } + if (extensionParentSession->GetSessionInfo().isSystem_) { + TLOGE(WmsLogTag::WMS_UIEXT, "extensionParentSession is SCBSystemSession: %{public}d", + property->GetParentPersistentId()); + return WSError::WS_ERROR_INVALID_WINDOW; + } auto pid = IPCSkeleton::GetCallingRealPid(); auto parentPid = extensionParentSession->GetCallingPid(); if (pid == parentPid) { // Determine Whether to create a sub window in the same process. @@ -3903,7 +3908,8 @@ WSError SceneSessionManager::CheckSubSessionStartedByExtension(const sptrCheckSubSessionStartedByExtension(token, property), WSError::WS_ERROR_NULLPTR); property->SetParentPersistentId(parentSession->GetPersistentId()); + info.isSystem_ = true; + parentSession->sessionInfo_ = info; + ssm_->sceneSessionMap_.insert({ parentSession->GetPersistentId(), parentSession }); + EXPECT_EQ(ssm_->CheckSubSessionStartedByExtension(token, property), WSError::WS_ERROR_INVALID_WINDOW); + info.isSystem_ = false; + parentSession->sessionInfo_ = info; + ssm_->sceneSessionMap_.insert({ parentSession->GetPersistentId(), parentSession }); + LOCK_GUARD_EXPR(SCENE_GUARD, parentSession->SetCallingPid(IPCSkeleton::GetCallingPid())); EXPECT_EQ(ssm_->CheckSubSessionStartedByExtension(token, property), WSError::WS_OK); LOCK_GUARD_EXPR(SCENE_GUARD, parentSession->SetCallingPid(IPCSkeleton::GetCallingPid() + 1)); @@ -152,6 +160,8 @@ HWTEST_F(SceneSessionManagerExtensionTest, CheckSubSessionStartedByExtension, Te MockUIExtSessionPermission::SetIsSystemCallingFlag(true); EXPECT_EQ(ssm_->CheckSubSessionStartedByExtension(token, property), WSError::WS_OK); + extensionSessionInfo..extensionAbilityType == AAFwk::ExtensionAbilityType::UI; + EXPECT_EQ(ssm_->CheckSubSessionStartedByExtension(token, property), WSError::WS_ERROR_INVALID_WINDOW); MockUIExtSessionPermission::ClearAllFlag(); AAFwk::MockAbilityManagerClient::ClearAll(); -- Gitee From 78074784027e8e701f1971e1336fb597b82b3a38 Mon Sep 17 00:00:00 2001 From: Peng fafu Date: Thu, 11 Sep 2025 19:55:53 +0800 Subject: [PATCH 2/4] =?UTF-8?q?UEC=E5=88=9B=E5=BB=BA=E5=AD=90=E7=AA=97?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Peng fafu --- .../ui_extension/scene_session_manager_extension_test.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/window_scene/test/unittest/ui_extension/scene_session_manager_extension_test.cpp b/window_scene/test/unittest/ui_extension/scene_session_manager_extension_test.cpp index 7d2f6c170a..fd10780377 100644 --- a/window_scene/test/unittest/ui_extension/scene_session_manager_extension_test.cpp +++ b/window_scene/test/unittest/ui_extension/scene_session_manager_extension_test.cpp @@ -161,6 +161,7 @@ HWTEST_F(SceneSessionManagerExtensionTest, CheckSubSessionStartedByExtension, Te MockUIExtSessionPermission::SetIsSystemCallingFlag(true); EXPECT_EQ(ssm_->CheckSubSessionStartedByExtension(token, property), WSError::WS_OK); extensionSessionInfo..extensionAbilityType == AAFwk::ExtensionAbilityType::UI; + AAFwk::MockAbilityManagerClient::SetUIExtensionSessionInfo(extensionSessionInfo); EXPECT_EQ(ssm_->CheckSubSessionStartedByExtension(token, property), WSError::WS_ERROR_INVALID_WINDOW); MockUIExtSessionPermission::ClearAllFlag(); -- Gitee From 709fa35308a4980578578857ab0e2a598d8e8b02 Mon Sep 17 00:00:00 2001 From: Peng fafu Date: Thu, 11 Sep 2025 20:21:56 +0800 Subject: [PATCH 3/4] =?UTF-8?q?UEC=E5=88=9B=E5=BB=BA=E5=AD=90=E7=AA=97?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Peng fafu --- window_scene/session_manager/src/scene_session_manager.cpp | 2 +- .../ui_extension/scene_session_manager_extension_test.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/window_scene/session_manager/src/scene_session_manager.cpp b/window_scene/session_manager/src/scene_session_manager.cpp index b7cf9303cf..15e562b6f6 100644 --- a/window_scene/session_manager/src/scene_session_manager.cpp +++ b/window_scene/session_manager/src/scene_session_manager.cpp @@ -3909,7 +3909,7 @@ WSError SceneSessionManager::CheckSubSessionStartedByExtension(const sptrCheckSubSessionStartedByExtension(token, property), WSError::WS_OK); - extensionSessionInfo..extensionAbilityType == AAFwk::ExtensionAbilityType::UI; + extensionSessionInfo.extensionAbilityType == AppExecFwk::ExtensionAbilityType::UI; AAFwk::MockAbilityManagerClient::SetUIExtensionSessionInfo(extensionSessionInfo); EXPECT_EQ(ssm_->CheckSubSessionStartedByExtension(token, property), WSError::WS_ERROR_INVALID_WINDOW); -- Gitee From 7c1c0c4be51bd02c1d14b968833c65ca9469aacc Mon Sep 17 00:00:00 2001 From: Peng fafu Date: Fri, 12 Sep 2025 14:50:27 +0800 Subject: [PATCH 4/4] =?UTF-8?q?UEC=E5=88=9B=E5=BB=BA=E5=AD=90=E7=AA=97?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Peng fafu --- window_scene/test/mock/mock_ability_manager_client.cpp | 2 ++ .../ui_extension/scene_session_manager_extension_test.cpp | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/window_scene/test/mock/mock_ability_manager_client.cpp b/window_scene/test/mock/mock_ability_manager_client.cpp index ef97c9822d..26686fa501 100644 --- a/window_scene/test/mock/mock_ability_manager_client.cpp +++ b/window_scene/test/mock/mock_ability_manager_client.cpp @@ -38,6 +38,7 @@ void MockAbilityManagerClient::SetUIExtensionSessionInfo(const UIExtensionSessio g_uiExtensionSessionInfo->hostElementName.SetBundleName(sessionInfo.hostElementName.GetBundleName()); g_uiExtensionSessionInfo->persistentId = sessionInfo.persistentId; g_uiExtensionSessionInfo->hostWindowId = sessionInfo.hostWindowId; + g_uiExtensionSessionInfo->extensionAbilityType = sessionInfo.extensionAbilityType; } ErrCode AbilityManagerClient::GetUIExtensionRootHostInfo(const sptr token, @@ -56,6 +57,7 @@ ErrCode AbilityManagerClient::GetUIExtensionSessionInfo(const sptrhostElementName.GetBundleName()); sessionInfo.persistentId = g_uiExtensionSessionInfo->persistentId; sessionInfo.hostWindowId = g_uiExtensionSessionInfo->hostWindowId; + sessionInfo.extensionAbilityType = g_uiExtensionSessionInfo->extensionAbilityType; } return 0; } diff --git a/window_scene/test/unittest/ui_extension/scene_session_manager_extension_test.cpp b/window_scene/test/unittest/ui_extension/scene_session_manager_extension_test.cpp index b6a698503c..86f761ed19 100644 --- a/window_scene/test/unittest/ui_extension/scene_session_manager_extension_test.cpp +++ b/window_scene/test/unittest/ui_extension/scene_session_manager_extension_test.cpp @@ -160,7 +160,7 @@ HWTEST_F(SceneSessionManagerExtensionTest, CheckSubSessionStartedByExtension, Te MockUIExtSessionPermission::SetIsSystemCallingFlag(true); EXPECT_EQ(ssm_->CheckSubSessionStartedByExtension(token, property), WSError::WS_OK); - extensionSessionInfo.extensionAbilityType == AppExecFwk::ExtensionAbilityType::UI; + extensionSessionInfo.extensionAbilityType = AppExecFwk::ExtensionAbilityType::UI; AAFwk::MockAbilityManagerClient::SetUIExtensionSessionInfo(extensionSessionInfo); EXPECT_EQ(ssm_->CheckSubSessionStartedByExtension(token, property), WSError::WS_ERROR_INVALID_WINDOW); -- Gitee