diff --git a/window_scene/session_manager/src/scene_session_manager.cpp b/window_scene/session_manager/src/scene_session_manager.cpp index 15759264bf1834f4a1ead0fbe534a4fadb85fb24..7b5908d4921e7427ddac7535a14f4c6292639d69 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 9a11a8c1fdef6ae524abb90f056f689612833e71..4dd099b80d8cf7d77a49b77cb5361950acb8bcb5 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 2be83c2ec0e292891609d952983ca3da6766fd48..5fc0719fa502adade929994ddceab78413829ad0 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