diff --git a/wm/src/window_scene_session_impl.cpp b/wm/src/window_scene_session_impl.cpp index 793fd300ec037a2cb3bb78619cda29b29497e3fb..58ce4a2a6a84a321aac4d1bb5026dda2eb171eea 100644 --- a/wm/src/window_scene_session_impl.cpp +++ b/wm/src/window_scene_session_impl.cpp @@ -1408,8 +1408,10 @@ void WindowSceneSessionImpl::CalculateNewLimitsByLimits( customizedLimits = property_->GetConfigWindowLimitsVP(); customizedLimits.maxWidth_ = static_cast(customizedLimits.maxWidth_ * virtualPixelRatio); customizedLimits.maxHeight_ = static_cast(customizedLimits.maxHeight_ * virtualPixelRatio); - customizedLimits.minWidth_ = static_cast(customizedLimits.minWidth_ * virtualPixelRatio); - customizedLimits.minHeight_ = static_cast(customizedLimits.minHeight_ * virtualPixelRatio); + if (!WindowHelper::IsSystemWindow(GetType())) { + customizedLimits.minWidth_ = static_cast(customizedLimits.minWidth_ * virtualPixelRatio); + customizedLimits.minHeight_ = static_cast(customizedLimits.minHeight_ * virtualPixelRatio); + } } newLimits = systemLimits; uint32_t limitMinWidth = systemLimits.minWidth_; diff --git a/wm/test/unittest/window_scene_session_impl_test5.cpp b/wm/test/unittest/window_scene_session_impl_test5.cpp index a9dbacb3f8cb0dddb5574632c3b23df2a9adca83..a637973069ba5caf860f9f5c0918fdb0c01c8492 100644 --- a/wm/test/unittest/window_scene_session_impl_test5.cpp +++ b/wm/test/unittest/window_scene_session_impl_test5.cpp @@ -2274,6 +2274,63 @@ HWTEST_F(WindowSceneSessionImplTest5, UpdateImmersiveBySwitchMode, TestSize.Leve window->UpdateImmersiveBySwitchMode(false); EXPECT_EQ(window->enableImmersiveMode_, true); } + +/** + * @tc.name: CalculateNewLimitsByLimits + * @tc.desc: test function: CalculateNewLimitsByLimits + * @tc.type: FUNC + */ +HWTEST_F(WindowSceneSessionImplTest5, CalculateNewLimitsByLimits, TestSize.Level1) +{ + sptr option = sptr::MakeSptr(); + sptr testImpl = sptr::MakeSptr(option); + WindowLimits customizedLimits = {200, 200, 10, 10, 0.0f, 0.0f, 1.0f}; + WindowLimits expectLimits; + WindowLimits newLimits; + testImpl->property_->SetDisplayId(0); + testImpl->SetConfigWindowLimitsVP(customizedLimits); + + // set system limits + testImpl->windowSystemConfig_.maxFloatingWindowSize_ = 6240; + testImpl->windowSystemConfig_.miniWidthOfMainWindow_ = 1; + testImpl->windowSystemConfig_.miniHeightOfMainWindow_ = 1; + testImpl->windowSystemConfig_.miniWidthOfSubWindow_ = 1; + testImpl->windowSystemConfig_.miniHeightOfSubWindow_ = 1; + testImpl->windowSystemConfig_.miniWidthOfDialogWindow_ = 1; + testImpl->windowSystemConfig_.miniHeightOfDialogWindow_ = 1; + + // user set flag is false, window type is mian window + testImpl->userLimitsSet_ = false; + customizedLimits = {200, 200, 10, 10, 0.0f, 0.0f, 1.0f}; + expectLimits = {400, 400, 20, 20, 0.0f, 0.0f, 1.0f}; + testImpl->property_->SetWindowType(WindowType::APP_MAIN_WINDOW_BASE); + testImpl->CalculateNewLimitsByLimits(newLimits, customizedLimits, 2); + EXPECT_EQ(customizedLimits->maxWidth_, expectLimits->maxWidth_); + EXPECT_EQ(customizedLimits->maxHeight_, expectLimits->maxHeight_); + EXPECT_EQ(customizedLimits->minWidth_, expectLimits->minWidth_); + EXPECT_EQ(customizedLimits->minHeight_, expectLimits->minHeight_); + + // user set flag is false, window type is sys window + testImpl->property_->SetWindowType(WindowType::WINDOW_TYPE_GLOBAL_SEARCH); + customizedLimits = {200, 200, 10, 10, 0.0f, 0.0f, 1.0f}; + expectLimits = {400, 400, 10, 10, 0.0f, 0.0f, 1.0f}; + testImpl->CalculateNewLimitsByLimits(newLimits, customizedLimits, 2); + EXPECT_EQ(customizedLimits->maxWidth_, expectLimits->maxWidth_); + EXPECT_EQ(customizedLimits->maxHeight_, expectLimits->maxHeight_); + EXPECT_EQ(customizedLimits->minWidth_, expectLimits->minWidth_); + EXPECT_EQ(customizedLimits->minHeight_, expectLimits->minHeight_); + + // user set flag is true + testImpl->userLimitsSet_ = true; + customizedLimits = {200, 200, 10, 10, 0.0f, 0.0f, 1.0f}; + WindowLimits userLimits = {900, 900, 100, 100, 0.0f, 0.0f, 1.0f}; + testImpl->property_->SetUserWindowLimits(userLimits); + testImpl->CalculateNewLimitsByLimits(newLimits, customizedLimits, 2); + EXPECT_EQ(customizedLimits->maxWidth_, userLimits->maxWidth_); + EXPECT_EQ(customizedLimits->maxHeight_, userLimits->maxHeight_); + EXPECT_EQ(customizedLimits->minWidth_, userLimits->minWidth_); + EXPECT_EQ(customizedLimits->minHeight_, userLimits->minHeight_); +} } } // namespace Rosen } // namespace OHOS \ No newline at end of file