From 17eae9d418f573c9e0b102b213780379cd147c39 Mon Sep 17 00:00:00 2001 From: yecong2332 Date: Fri, 5 Sep 2025 10:49:05 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=AE=BE=E7=BD=AE=E8=83=8C?= =?UTF-8?q?=E6=99=AF=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: yecong2332 --- .../src/scene_session_manager.cpp | 14 +++++--- .../unittest/scene_session_manager_test5.cpp | 30 ----------------- .../window_pattern_starting_window_test.cpp | 32 +++++++++++++++++++ 3 files changed, 42 insertions(+), 34 deletions(-) diff --git a/window_scene/session_manager/src/scene_session_manager.cpp b/window_scene/session_manager/src/scene_session_manager.cpp index 15759264bf..7b5908d492 100644 --- a/window_scene/session_manager/src/scene_session_manager.cpp +++ b/window_scene/session_manager/src/scene_session_manager.cpp @@ -5609,12 +5609,18 @@ uint32_t SceneSessionManager::UpdateCachedColorToAppSet(const std::string& bundl return static_cast(UpdateStartingWindowColorCacheResult::INFO_MAP_BUNDLE_NOT_FOUND); } auto& infoMap = iter->second; - auto infoIter = infoMap.find(key); - if (infoIter == infoMap.end()) { + bool keyPairFound = false; + for (bool darkMode : {false, true}) { + auto infoIter = infoMap.find(key + std::to_string(darkMode)); + if (infoIter != infoMap.end()) { + infoIter->second.backgroundColorEarlyVersion_ = color; + infoIter->second.backgroundColor_ = color; + keyPairFound = true; + } + } + if (!keyPairFound) { return static_cast(UpdateStartingWindowColorCacheResult::INFO_MAP_BUNDLE_NOT_FOUND); } - infoIter->second.backgroundColorEarlyVersion_ = color; - infoIter->second.backgroundColor_ = color; } return static_cast(UpdateStartingWindowColorCacheResult::SUCCESS); } diff --git a/window_scene/test/unittest/scene_session_manager_test5.cpp b/window_scene/test/unittest/scene_session_manager_test5.cpp index 9a11a8c1fd..4dd099b80d 100644 --- a/window_scene/test/unittest/scene_session_manager_test5.cpp +++ b/window_scene/test/unittest/scene_session_manager_test5.cpp @@ -125,36 +125,6 @@ HWTEST_F(SceneSessionManagerTest5, SetStartWindowBackgroundColor, TestSize.Level EXPECT_NE(res, WMError::WM_ERROR_INVALID_CALLING); } -/** - * @tc.name: UpdateCachedColorToAppSet - * @tc.desc: SceneSessionManager set update cached color to app set - * @tc.type: FUNC - */ -HWTEST_F(SceneSessionManagerTest5, UpdateCachedColorToAppSet, TestSize.Level1) -{ - ASSERT_NE(ssm_, nullptr); - ssm_->startingWindowMap_.clear(); - ssm_->startingWindowColorFromAppMap_.clear(); - std::string bundleName = "testBundleName"; - std::string moduleName = "testModuleName"; - std::string abilityName = "testAbilityName"; - std::string key = moduleName + abilityName; - StartingWindowInfo info; - StartingWindowInfo tempInfo; - info.backgroundColor_ = 0x00000000; - ssm_->startingWindowMap_[bundleName][key] = info; - ssm_->UpdateCachedColorToAppSet(bundleName, moduleName, abilityName, tempInfo); - EXPECT_EQ(0x00000000, ssm_->startingWindowMap_[bundleName][key].backgroundColor_); - - ssm_->startingWindowColorFromAppMap_[bundleName][key] = 0xffffffff; - ssm_->UpdateCachedColorToAppSet(bundleName, moduleName, abilityName, tempInfo); - EXPECT_EQ(0xffffffff, ssm_->startingWindowMap_[bundleName][key].backgroundColor_); - - ssm_->startingWindowMap_.clear(); - ssm_->UpdateCachedColorToAppSet(bundleName, moduleName, abilityName, tempInfo); - EXPECT_EQ(0, ssm_->startingWindowMap_.size()); -} - /** * @tc.name: OnBundleUpdated * @tc.desc: Erase cached info when bundle update diff --git a/window_scene/test/unittest/window_pattern/window_pattern_starting_window_test.cpp b/window_scene/test/unittest/window_pattern/window_pattern_starting_window_test.cpp index 2be83c2ec0..5fc0719fa5 100644 --- a/window_scene/test/unittest/window_pattern/window_pattern_starting_window_test.cpp +++ b/window_scene/test/unittest/window_pattern/window_pattern_starting_window_test.cpp @@ -673,6 +673,38 @@ HWTEST_F(WindowPatternStartingWindowTest, GetStartWindowColorFollowApp, TestSize ssm_->startingWindowFollowAppMap_.clear(); EXPECT_EQ(true, ssm_->startingWindowFollowAppMap_.empty()); } + +/** + * @tc.name: UpdateCachedColorToAppSet + * @tc.desc: SceneSessionManager set update cached color to app set + * @tc.type: FUNC + */ +HWTEST_F(WindowPatternStartingWindowTest, UpdateCachedColorToAppSet, TestSize.Level0) +{ + ASSERT_NE(ssm_, nullptr); + ssm_->startingWindowMap_.clear(); + ssm_->startingWindowColorFromAppMap_.clear(); + std::string bundleName = "testBundleName"; + std::string moduleName = "testModuleName"; + std::string abilityName = "testAbilityName"; + std::string keyForCached = moduleName + abilityName + std::to_string(true); + std::string keyForAppSet = moduleName + abilityName; + StartingWindowInfo info; + StartingWindowInfo tempInfo; + info.backgroundColor_ = 0x00000000; + ssm_->startingWindowMap_[bundleName][keyForCached] = info; + ssm_->startingWindowMap_[bundleName][keyForAppSet + std::to_string(false)] = info; + ssm_->UpdateCachedColorToAppSet(bundleName, moduleName, abilityName, tempInfo); + EXPECT_EQ(0x00000000, ssm_->startingWindowMap_[bundleName][keyForCached].backgroundColor_); + + ssm_->startingWindowColorFromAppMap_[bundleName][keyForAppSet] = 0xffffffff; + ssm_->UpdateCachedColorToAppSet(bundleName, moduleName, abilityName, tempInfo); + EXPECT_EQ(0xffffffff, ssm_->startingWindowMap_[bundleName][keyForCached].backgroundColor_); + + ssm_->startingWindowMap_.clear(); + ssm_->UpdateCachedColorToAppSet(bundleName, moduleName, abilityName, tempInfo); + EXPECT_EQ(0, ssm_->startingWindowMap_.size()); +} } // namespace } // namespace Rosen } // namespace OHOS \ No newline at end of file -- Gitee