diff --git a/frameworks/proxy/event_handler/include/input_manager_impl.h b/frameworks/proxy/event_handler/include/input_manager_impl.h index b3453e44a29f0d90e682678c61477868f4e3b189..2e29d9fba9b7b89b8fa5145331bbfd622f8818c7 100644 --- a/frameworks/proxy/event_handler/include/input_manager_impl.h +++ b/frameworks/proxy/event_handler/include/input_manager_impl.h @@ -99,7 +99,7 @@ public: #if defined(OHOS_BUILD_ENABLE_POINTER) || defined(OHOS_BUILD_ENABLE_TOUCH) void OnPointerEvent(std::shared_ptr pointerEvent); #endif // OHOS_BUILD_ENABLE_POINTER || OHOS_BUILD_ENABLE_TOUCH - int32_t PackDisplayData(NetPacket &pkt, DisplayGroupInfo &displayGroupInfo); + int32_t PackDisplayData(NetPacket &pkt, const DisplayGroupInfo &displayGroupInfo); int32_t AddMonitor(std::function)> monitor); int32_t AddMonitor(std::function)> monitor); @@ -251,15 +251,15 @@ public: void UnsubscribeInputActive(int32_t subscribeId); private: - int32_t PackWindowInfo(NetPacket &pkt, DisplayGroupInfo &displayGroupInfo); + int32_t PackWindowInfo(NetPacket &pkt, const DisplayGroupInfo &displayGroupInfo); int32_t PackWindowGroupInfo(NetPacket &pkt); int32_t PackDisplayInfo(NetPacket &pkt, DisplayGroupInfo &displayGroupInfo); int32_t PackUiExtentionWindowInfo(const std::vector& windowsInfo, NetPacket &pkt); void PrintWindowInfo(const std::vector &windowsInfo); void PrintForemostThreeWindowInfo(const std::vector &windowsInfo); - void PrintDisplayInfo(DisplayGroupInfo &displayGroupInfo); + void PrintDisplayInfo(const DisplayGroupInfo &displayGroupInfo); void PrintWindowGroupInfo(); - int32_t SendDisplayInfo(DisplayGroupInfo &displayGroupInfo); + int32_t SendDisplayInfo(const DisplayGroupInfo &displayGroupInfo); int32_t SendWindowInfo(); void SendWindowAreaInfo(WindowArea area, int32_t pid, int32_t windowId); bool IsValiadWindowAreas(const std::vector &windows); diff --git a/frameworks/proxy/event_handler/src/input_manager_impl.cpp b/frameworks/proxy/event_handler/src/input_manager_impl.cpp index 45fc5de695e01cbe81933067fdc13696738cf14b..230522c086a5884ad4c60f3412fb67747bc708ea 100644 --- a/frameworks/proxy/event_handler/src/input_manager_impl.cpp +++ b/frameworks/proxy/event_handler/src/input_manager_impl.cpp @@ -141,40 +141,49 @@ int32_t InputManagerImpl::UpdateDisplayInfo(const DisplayGroupInfo &displayGroup MMI_HILOGE("Failed to initialize MMI client"); return RET_ERR; } - std::lock_guard guard(mtx_); - displayGroupInfoArray_.clear(); - if (displayGroupInfo.windowsInfo.size() < MAX_WINDOW_SIZE) { - windowGroupInfo_.windowsInfo.clear(); + { + std::lock_guard guard(mtx_); + if (displayGroupInfo.windowsInfo.size() < MAX_WINDOW_SIZE) { + windowGroupInfo_.windowsInfo.clear(); + } + displayGroupInfoArray_.clear(); + displayGroupInfoArray_.emplace_back(displayGroupInfo); } - displayGroupInfo_ = displayGroupInfo; - int32_t ret = SendDisplayInfo(displayGroupInfo_); - displayGroupInfoArray_.emplace_back(displayGroupInfo_); + int32_t ret = SendDisplayInfo(displayGroupInfo); if (ret != RET_OK) { MMI_HILOGE("Failed to send display information to service"); return ret; } - PrintDisplayInfo(displayGroupInfo_); + PrintDisplayInfo(displayGroupInfo); return RET_OK; } -int32_t InputManagerImpl::UpdateDisplayInfo(const std::vector &displayGroupInfo) +int32_t InputManagerImpl::UpdateDisplayInfo(const std::vector &displayGroupInfos) { CALL_DEBUG_ENTER; if (!MMIEventHdl.InitClient()) { MMI_HILOGE("Failed to initialize MMI client"); return RET_ERR; } - std::lock_guard guard(mtx_); - displayGroupInfoArray_.clear(); - for (auto &item : displayGroupInfo) { - displayGroupInfo_ = item; - int32_t ret = SendDisplayInfo(displayGroupInfo_); - displayGroupInfoArray_.emplace_back(displayGroupInfo_); + { + std::lock_guard guard(mtx_); + displayGroupInfoArray_.clear(); + size_t cnt = 0; + for (auto &it : displayGroupInfos) { + displayGroupInfoArray_.emplace_back(it); + cnt += it.windowsInfo.size(); + } + if (cnt < MAX_WINDOW_SIZE) { + windowGroupInfo_.windowsInfo.clear(); + } + } + for (const auto &item : displayGroupInfos) { + int32_t ret = SendDisplayInfo(item); if (ret != RET_OK) { MMI_HILOGE("Failed to send display information to service"); return ret; } - PrintDisplayInfo(displayGroupInfo_); + PrintDisplayInfo(item); } return RET_OK; } @@ -658,7 +667,7 @@ void InputManagerImpl::OnPointerEvent(std::shared_ptr pointerEvent } #endif // OHOS_BUILD_ENABLE_POINTER || OHOS_BUILD_ENABLE_TOUCH -int32_t InputManagerImpl::PackDisplayData(NetPacket &pkt, DisplayGroupInfo &displayGroupInfo) +int32_t InputManagerImpl::PackDisplayData(NetPacket &pkt, const DisplayGroupInfo &displayGroupInfo) { CALL_DEBUG_ENTER; pkt << displayGroupInfo.groupId << displayGroupInfo.isMainGroup << displayGroupInfo.width << displayGroupInfo.height @@ -671,7 +680,7 @@ int32_t InputManagerImpl::PackDisplayData(NetPacket &pkt, DisplayGroupInfo &disp MMI_HILOGE("Packet write windows info failed"); return RET_ERR; } - return PackDisplayInfo(pkt, displayGroupInfo); + return PackDisplayInfo(pkt, const_cast(displayGroupInfo)); } int32_t InputManagerImpl::PackWindowGroupInfo(NetPacket &pkt) @@ -744,7 +753,7 @@ int32_t InputManagerImpl::PackUiExtentionWindowInfo(const std::vector(displayGroupInfo.windowsInfo.size()); @@ -931,7 +940,7 @@ void InputManagerImpl::PrintForemostThreeWindowInfo(const std::vectorsecond; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); bool ret = handler.CheckTwoFingerGestureAction(); EXPECT_FALSE(ret); handler.twoFingerGesture_.touches[0].x = 30; @@ -1122,7 +1127,12 @@ HWTEST_F(KeyCommandHandlerTest, KeyCommandHandlerTest_CheckTwoFingerGestureActio displayInfo.width = 150; displayInfo.height = 300; displayInfo.uniq = "default0"; - inputWindowsManager.displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); handler.twoFingerGesture_.touches[0].y = 200; handler.twoFingerGesture_.touches[1].x = 30; bool ret = handler.CheckTwoFingerGestureAction(); @@ -1291,11 +1301,16 @@ HWTEST_F(KeyCommandHandlerTest, KeyCommandHandlerTest_ConvertVPToPX_004, TestSiz DisplayInfo displayInfo; displayInfo.dpi = -10; displayInfo.uniq = "default0"; - inputWindowsManager.displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); int32_t ret = handler.ConvertVPToPX(vp); ASSERT_EQ(ret, 0); displayInfo.dpi = 160; - inputWindowsManager.displayGroupInfo_.displaysInfo.push_back(displayInfo); + displayGroupInfoRef.displaysInfo.push_back(displayInfo); ret = handler.ConvertVPToPX(vp); ASSERT_EQ(ret, 0); } @@ -4048,7 +4063,12 @@ HWTEST_F(KeyCommandHandlerTest, KeyCommandHandlerTest_ConvertVPToPX_002, TestSiz displayInfo.width = 4; displayInfo.height = 5; displayInfo.dpi = -1; - inputWindowsManager.displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); ret = handler.ConvertVPToPX(vp); ASSERT_EQ(ret, 0); } @@ -4072,7 +4092,12 @@ HWTEST_F(KeyCommandHandlerTest, KeyCommandHandlerTest_ConvertVPToPX_003, TestSiz displayInfo.width = 4; displayInfo.height = 5; displayInfo.dpi = 160; - inputWindowsManager.displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); int32_t ret = handler.ConvertVPToPX(vp); ASSERT_EQ(ret, 0); } @@ -4104,7 +4129,12 @@ HWTEST_F(KeyCommandHandlerTest, KeyCommandHandlerTest_CheckTwoFingerGestureActio displayInfo.width = 4; displayInfo.height = 5; displayInfo.dpi = -1; - inputWindowsManager.displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); bool ret = handler.CheckTwoFingerGestureAction(); EXPECT_FALSE(ret); } @@ -4136,7 +4166,12 @@ HWTEST_F(KeyCommandHandlerTest, KeyCommandHandlerTest_CheckTwoFingerGestureActio displayInfo.width = 40; displayInfo.height = 50; displayInfo.dpi = -1; - inputWindowsManager.displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); bool ret = handler.CheckTwoFingerGestureAction(); EXPECT_FALSE(ret); } @@ -4168,7 +4203,12 @@ HWTEST_F(KeyCommandHandlerTest, KeyCommandHandlerTest_CheckTwoFingerGestureActio displayInfo.width = 40; displayInfo.height = 50; displayInfo.dpi = -1; - inputWindowsManager.displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); bool ret = handler.CheckTwoFingerGestureAction(); EXPECT_FALSE(ret); } @@ -5577,8 +5617,13 @@ HWTEST_F(KeyCommandHandlerTest, KeyCommandHandlerTest_HandleKnuckleGestureDownEv windowInfo.id = 0; windowInfo.windowType = WINDOW_INPUT_METHOD_TYPE; auto inputWindowsManager = std::make_shared(); - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo); + displayGroupInfoRef.displaysInfo.push_back(displayInfo); IInputWindowsManager::instance_ = inputWindowsManager; ASSERT_NO_FATAL_FAILURE(handler.HandleKnuckleGestureDownEvent(touchEvent)); @@ -5613,7 +5658,12 @@ HWTEST_F(KeyCommandHandlerTest, KeyCommandHandlerTest_CheckTwoFingerGestureActio displayInfo.height = 2720; displayInfo.uniq = "default0"; auto inputWindowsManager = std::make_shared(); - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); IInputWindowsManager::instance_ = inputWindowsManager; handler.twoFingerGesture_.touches[0].x = 600; handler.twoFingerGesture_.touches[0].y = 600; @@ -5674,7 +5724,12 @@ HWTEST_F(KeyCommandHandlerTest, KeyCommandHandlerTest_ConvertVPToPX_006, TestSiz displayInfo.dpi = -1; displayInfo.uniq = "default0"; auto inputWindowsManager = std::make_shared(); - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); IInputWindowsManager::instance_ = inputWindowsManager; KeyCommandHandler handler; int32_t ret = handler.ConvertVPToPX(vp); @@ -5710,8 +5765,13 @@ HWTEST_F(KeyCommandHandlerTest, KeyCommandHandlerTest_CheckKnuckleCondition_001, windowInfo.id = 0; windowInfo.windowType = WINDOW_INPUT_METHOD_TYPE; auto inputWindowsManager = std::make_shared(); - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo); + displayGroupInfoRef.displaysInfo.push_back(displayInfo); IInputWindowsManager::instance_ = inputWindowsManager; touchEvent->SetTargetDisplayId(1); @@ -5765,8 +5825,13 @@ HWTEST_F(KeyCommandHandlerTest, KeyCommandHandlerTest_CheckKnuckleCondition_002, windowInfo.id = 0; windowInfo.windowType = WINDOW_INPUT_METHOD_TYPE; auto inputWindowsManager = std::make_shared(); - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo); + displayGroupInfoRef.displaysInfo.push_back(displayInfo); IInputWindowsManager::instance_ = inputWindowsManager; touchEvent->SetTargetDisplayId(0); @@ -5807,7 +5872,12 @@ HWTEST_F(KeyCommandHandlerTest, KeyCommandHandlerTest_HandleKnuckleGestureTouchM displayInfo.id = 0; displayInfo.direction = DIRECTION0; auto inputWindowsManager = std::make_shared(); - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); IInputWindowsManager::instance_ = inputWindowsManager; KeyCommandHandler handler; @@ -5853,7 +5923,12 @@ HWTEST_F(KeyCommandHandlerTest, KeyCommandHandlerTest_HandleKnuckleGestureTouchM displayInfo.id = 0; displayInfo.direction = DIRECTION0; auto inputWindowsManager = std::make_shared(); - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); IInputWindowsManager::instance_ = inputWindowsManager; KeyCommandHandler handler; @@ -5899,7 +5974,12 @@ HWTEST_F(KeyCommandHandlerTest, KeyCommandHandlerTest_HandleKnuckleGestureTouchM displayInfo.id = 0; displayInfo.direction = DIRECTION0; auto inputWindowsManager = std::make_shared(); - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); IInputWindowsManager::instance_ = inputWindowsManager; KeyCommandHandler handler; @@ -5942,7 +6022,12 @@ HWTEST_F(KeyCommandHandlerTest, KeyCommandHandlerTest_HandleKnuckleGestureTouchM displayInfo.id = 0; displayInfo.direction = DIRECTION0; auto inputWindowsManager = std::make_shared(); - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); IInputWindowsManager::instance_ = inputWindowsManager; KeyCommandHandler handler; @@ -5988,7 +6073,12 @@ HWTEST_F(KeyCommandHandlerTest, KeyCommandHandlerTest_HandleKnuckleGestureTouchM displayInfo.id = 0; displayInfo.direction = DIRECTION0; auto inputWindowsManager = std::make_shared(); - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); IInputWindowsManager::instance_ = inputWindowsManager; KeyCommandHandler handler; @@ -6033,7 +6123,12 @@ HWTEST_F(KeyCommandHandlerTest, KeyCommandHandlerTest_HandleKnuckleGestureTouchM displayInfo.id = 0; displayInfo.direction = DIRECTION0; auto inputWindowsManager = std::make_shared(); - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); IInputWindowsManager::instance_ = inputWindowsManager; KeyCommandHandler handler; @@ -6215,8 +6310,13 @@ HWTEST_F(KeyCommandHandlerTest, KeyCommandHandlerTest_CheckSpecialRepeatKey_002, auto inputWindowsManager = std::make_shared(); WindowInfo windowInfo; windowInfo.id = 0; - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); - inputWindowsManager->displayGroupInfo_.focusWindowId = 0; + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo); + displayGroupInfoRef.focusWindowId = 0; UDSServer udsServer; udsServer.idxPidMap_.insert(std::make_pair(0, 1)); SessionPtr sessionPtr = std::make_shared(repeatKey.ability.bundleName, 0, 0, 0, 0); @@ -6252,8 +6352,13 @@ HWTEST_F(KeyCommandHandlerTest, KeyCommandHandlerTest_CheckSpecialRepeatKey_003, auto inputWindowsManager = std::make_shared(); WindowInfo windowInfo; windowInfo.id = 0; - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); - inputWindowsManager->displayGroupInfo_.focusWindowId = 0; + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo); + displayGroupInfoRef.focusWindowId = 0; UDSServer udsServer; udsServer.idxPidMap_.insert(std::make_pair(0, 1)); SessionPtr sessionPtr = std::make_shared(repeatKey.ability.bundleName, 0, 0, 0, 0); @@ -6289,8 +6394,13 @@ HWTEST_F(KeyCommandHandlerTest, KeyCommandHandlerTest_CheckSpecialRepeatKey_004, auto inputWindowsManager = std::make_shared(); WindowInfo windowInfo; windowInfo.id = 0; - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); - inputWindowsManager->displayGroupInfo_.focusWindowId = 0; + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo); + displayGroupInfoRef.focusWindowId = 0; UDSServer udsServer; udsServer.idxPidMap_.insert(std::make_pair(0, 1)); SessionPtr sessionPtr = std::make_shared(repeatKey.ability.bundleName, 0, 0, 0, 0); diff --git a/service/key_command/test/long_press_subscriber_handler_test.cpp b/service/key_command/test/long_press_subscriber_handler_test.cpp index 72a71ed456f2d4abaa7395fa8200d5fedd15d4b1..9f2b5b8a763cc4503929795a923608aae12d5d0d 100644 --- a/service/key_command/test/long_press_subscriber_handler_test.cpp +++ b/service/key_command/test/long_press_subscriber_handler_test.cpp @@ -1067,7 +1067,12 @@ HWTEST_F(LongPressSubscribeHandlerTest, LongPressSubscribeHandlerTest_StartFinge displayInfo.height = 2720; displayInfo.uniq = "default0"; auto inputWindowsManager = std::make_shared(); - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); IInputWindowsManager::instance_ = inputWindowsManager; LONG_PRESS_EVENT_HANDLER->fingerGesture_.touches[0].x = 600; LONG_PRESS_EVENT_HANDLER->fingerGesture_.touches[0].y = 600; @@ -1095,7 +1100,12 @@ HWTEST_F(LongPressSubscribeHandlerTest, LongPressSubscribeHandlerTest_CheckFinge displayInfo.height = 2720; displayInfo.uniq = "default0"; auto inputWindowsManager = std::make_shared(); - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); IInputWindowsManager::instance_ = inputWindowsManager; LONG_PRESS_EVENT_HANDLER->fingerGesture_.touches[0].x = 600; LONG_PRESS_EVENT_HANDLER->fingerGesture_.touches[0].y = 600; @@ -1141,7 +1151,12 @@ HWTEST_F(LongPressSubscribeHandlerTest, LongPressSubscribeHandlerTest_CheckFinge displayInfo.height = 2720; displayInfo.uniq = "default0"; auto inputWindowsManager = std::make_shared(); - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); IInputWindowsManager::instance_ = inputWindowsManager; int32_t fingerCount = 2; LONG_PRESS_EVENT_HANDLER->fingerGesture_.touches[0].x = 600; @@ -1189,7 +1204,12 @@ HWTEST_F(LongPressSubscribeHandlerTest, LongPressSubscribeHandlerTest_CheckFinge displayInfo.height = 2720; displayInfo.uniq = "default0"; auto inputWindowsManager = std::make_shared(); - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); IInputWindowsManager::instance_ = inputWindowsManager; int32_t fingerCount = 2; LONG_PRESS_EVENT_HANDLER->fingerGesture_.touches[0].x = 600; @@ -1266,7 +1286,12 @@ HWTEST_F(LongPressSubscribeHandlerTest, LongPressSubscribeHandlerTest_ConvertVPT displayInfo.dpi = -1; displayInfo.uniq = "default0"; auto inputWindowsManager = std::make_shared(); - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); IInputWindowsManager::instance_ = inputWindowsManager; int32_t ret = LONG_PRESS_EVENT_HANDLER->ConvertVPToPX(vp); ASSERT_EQ(ret, 0); @@ -1384,7 +1409,12 @@ HWTEST_F(LongPressSubscribeHandlerTest, LongPressSubscribeHandlerTest_NotifySubs WindowInfo windowInfo; windowInfo.id = 10000; auto inputWindowsManager = std::make_shared(); - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo); IInputWindowsManager::instance_ = inputWindowsManager; auto pointerEvent = SetupSingleFingerDownEvent(); diff --git a/service/libinput_adapter/src/libinput_adapter.cpp b/service/libinput_adapter/src/libinput_adapter.cpp index 347893ec57ada98ddcad4a4ddb943c4fdd4a86d2..e3d2bb8a8267efa4e8be19e07553fc478f890c89 100644 --- a/service/libinput_adapter/src/libinput_adapter.cpp +++ b/service/libinput_adapter/src/libinput_adapter.cpp @@ -361,7 +361,8 @@ bool LibinputAdapter::GetIsCaptureMode() InputWindowsManager* inputWindowsManager = static_cast(WIN_MGR.get()); if (inputWindowsManager != nullptr) { - DisplayGroupInfo displayGroupInfo = inputWindowsManager->GetDisplayGroupInfo(); + DisplayGroupInfo displayGroupInfo; + inputWindowsManager->GetDisplayGroupInfo(displayGroupInfo); bool isFloating = false; for (auto &windowInfo : displayGroupInfo.windowsInfo) { if (windowInfo.windowNameType == WINDOW_NAME_TYPE_SCHREENSHOT) { @@ -1360,7 +1361,8 @@ bool LibinputAdapter::IsCursorInCastWindow() if (inputWindowsManager == nullptr) { return false; } - DisplayGroupInfo displayGroupInfo = inputWindowsManager->GetDisplayGroupInfo(); + DisplayGroupInfo displayGroupInfo; + inputWindowsManager->GetDisplayGroupInfo(displayGroupInfo); for (auto &windowInfo : displayGroupInfo.windowsInfo) { if (windowInfo.windowType == CAST_WINDOW_TYPE) { auto mouseInfo = WIN_MGR->GetMouseInfo(); diff --git a/service/window_manager/include/input_windows_manager.h b/service/window_manager/include/input_windows_manager.h index 5cbea4cdf6080b243cb2906815165a6661459852..bdd275ab6adc7b1de178319153adc7a234659ecf 100644 --- a/service/window_manager/include/input_windows_manager.h +++ b/service/window_manager/include/input_windows_manager.h @@ -113,10 +113,10 @@ public: void UpdateAndAdjustMouseLocation(int32_t& displayId, double& x, double& y, bool isRealData = true); #endif // OHOS_BUILD_ENABLE_POINTER || OHOS_BUILD_ENABLE_TOUCH #ifdef OHOS_BUILD_ENABLE_POINTER - const DisplayGroupInfo& GetDisplayGroupInfo(int32_t groupId = -1); - std::vector GetDisplayInfoVector(int32_t groupId = -1) const; - const std::vector GetWindowInfoVector(int32_t groupId = -1) const; - int32_t GetFocusWindowId(int32_t groupId = -1) const; + void GetDisplayGroupInfo(DisplayGroupInfo& displayGroupInfoCur, int32_t groupId = DEFAULT_GROUP_ID); + std::vector GetDisplayInfoVector(int32_t groupId = DEFAULT_GROUP_ID) const; + const std::vector GetWindowInfoVector(int32_t groupId = DEFAULT_GROUP_ID) const; + int32_t GetFocusWindowId(int32_t groupId = DEFAULT_GROUP_ID) const; int32_t GetLogicalPositionX(int32_t id); int32_t GetLogicalPositionY(int32_t id); Direction GetLogicalPositionDirection(int32_t id); @@ -213,8 +213,9 @@ public: #endif // OHOS_BUILD_ENABLE_ANCO int32_t SetPixelMapData(int32_t infoId, void *pixelMap); - void CleanInvalidPiexMap(int32_t groupId = -1); + void CleanInvalidPiexMap(int32_t groupId = DEFAULT_GROUP_ID); void HandleWindowPositionChange(const DisplayGroupInfo &displayGroupInfo); + void SendCancelEventWhenWindowChange(int32_t pointerId, int32_t groupId = DEFAULT_GROUP_ID); #ifdef OHOS_BUILD_ENABLE_HARDWARE_CURSOR bool IsSupported(); #endif // OHOS_BUILD_ENABLE_HARDWARE_CURSOR @@ -242,7 +243,7 @@ private: void PrintDisplayGroupInfo(const DisplayGroupInfo displayGroupInfo); void PrintDisplayInfo(const DisplayInfo displayInfo); void PrintWindowGroupInfo(const WindowGroupInfo &windowGroupInfo); - void PrintWindowNavbar(int32_t groupId = -1); + void PrintWindowNavbar(int32_t groupId = DEFAULT_GROUP_ID); void CheckFocusWindowChange(const DisplayGroupInfo &displayGroupInfo); void CheckZorderWindowChange(const std::vector &oldWindowsInfo, const std::vector &newWindowsInfo); @@ -284,9 +285,9 @@ private: int32_t UpdateMouseTarget(std::shared_ptr pointerEvent); void UpdatePointerEvent(int32_t logicalX, int32_t logicalY, const std::shared_ptr& pointerEvent, const WindowInfo& touchWindow); - void NotifyPointerToWindow(int32_t groupId = -1); + void NotifyPointerToWindow(int32_t groupId = DEFAULT_GROUP_ID); void OnSessionLost(SessionPtr session); - void InitPointerStyle(int32_t groupId = -1); + void InitPointerStyle(int32_t groupId = DEFAULT_GROUP_ID); #endif // OHOS_BUILD_ENABLE_POINTER #if defined(OHOS_BUILD_ENABLE_POINTER) || defined(OHOS_BUILD_ENABLE_TOUCH) int32_t UpdatePoinerStyle(int32_t pid, int32_t windowId, PointerStyle pointerStyle); @@ -301,7 +302,7 @@ private: const std::shared_ptr& pointerEvent); void CheckUIExtentionWindowPointerHotArea(int32_t logicalX, int32_t logicalY, const std::vector& windowInfos, int32_t& windowId); - std::optional GetWindowInfo(int32_t logicalX, int32_t logicalY, int32_t groupId = -1); + std::optional GetWindowInfo(int32_t logicalX, int32_t logicalY, int32_t groupId = DEFAULT_GROUP_ID); bool IsInsideDisplay(const DisplayInfo& displayInfo, double physicalX, double physicalY); bool CalculateLayout(const DisplayInfo& displayInfo, const Vector2D &physical, Vector2D& layout); void FindPhysicalDisplay(const DisplayInfo& displayInfo, double& physicalX, @@ -316,10 +317,10 @@ private: int32_t logicalX, int32_t logicalY); void UpdatePointerChangeAreas(const DisplayGroupInfo &displayGroupInfo); #ifdef OHOS_BUILD_ENABLE_POINTER_DRAWING - void AdjustDisplayRotation(int32_t groupId = -1); + void AdjustDisplayRotation(int32_t groupId = DEFAULT_GROUP_ID); void SetPointerEvent(int32_t pointerAction, std::shared_ptr pointerEvent); void DispatchPointerCancel(int32_t displayId); - void AdjustDragPosition(int32_t groupId = -1); + void AdjustDragPosition(int32_t groupId = DEFAULT_GROUP_ID); #endif // OHOS_BUILD_ENABLE_POINTER_DRAWING #endif // OHOS_BUILD_ENABLE_POINTER || OHOS_BUILD_ENABLE_TOUCH @@ -357,7 +358,7 @@ void HandleOneHandMode(const DisplayInfo &displayInfo, std::shared_ptr pointerEvent, const WindowInfo* touchWindow); - void DispatchTouch(int32_t pointerAction, int32_t groupId = -1); + void DispatchTouch(int32_t pointerAction, int32_t groupId = DEFAULT_GROUP_ID); const std::shared_ptr FindPhysicalDisplayInfo(const std::string& uniq) const; bool GetPhysicalDisplayCoord(struct libinput_event_touch* touch, const DisplayInfo& info, EventTouch& touchInfo, bool isNeedClear = false); @@ -392,7 +393,7 @@ void HandleOneHandMode(const DisplayInfo &displayInfo, std::shared_ptr pointerEvent); #endif // OHOS_BUILD_ENABLE_POINTER && OHOS_BUILD_ENABLE_CROWN - void UpdateDisplayMode(int32_t groupId = -1); + void UpdateDisplayMode(int32_t groupId = DEFAULT_GROUP_ID); void HandleValidDisplayChange(const DisplayGroupInfo &displayGroupInfo); void ResetPointerPositionIfOutValidDisplay(const DisplayGroupInfo &displayGroupInfo); void CancelMouseEvent(); @@ -401,7 +402,7 @@ void HandleOneHandMode(const DisplayInfo &displayInfo, std::shared_ptr keyEvent, int32_t focusWindowId, int32_t groupId = -1); + void UpdateKeyEventDisplayId(std::shared_ptr keyEvent, int32_t focusWindowId, int32_t groupId = DEFAULT_GROUP_ID); bool OnDisplayRemovedOrCombinationChanged(const DisplayGroupInfo &displayGroupInfo); void ChangeWindowArea(int32_t x, int32_t y, WindowInfo &windowInfo); void ResetPointerPosition(const DisplayGroupInfo &displayGroupInfo); @@ -431,7 +432,9 @@ private: DisplayGroupInfo& GetMainDisplayGroupInfo(); const DisplayGroupInfo& GetConstMainDisplayGroupInfo() const; const DisplayGroupInfo& FindDisplayGroupInfo(int32_t displayId) const; - + void RotateScreen90(const DisplayInfo& info, PhysicalCoordinate& coord) const; + void InitDisplayGroupInfo(DisplayGroupInfo &displayGroupInfo); + void UpdateGroupInfo(); private: UDSServer* udsServer_ { nullptr }; #if defined(OHOS_BUILD_ENABLE_POINTER) || defined(OHOS_BUILD_ENABLE_TOUCH) @@ -460,6 +463,7 @@ private: std::weak_ptr touchGestureMgr_; #endif // defined(OHOS_BUILD_ENABLE_TOUCH) && defined(OHOS_BUILD_ENABLE_MONITOR) std::map displayGroupInfoMap_; + std::map displayGroupInfoMapTmp_; bool mainGroupExisted_; DisplayGroupInfo displayGroupInfoTmp_; std::mutex tmpInfoMutex_; @@ -470,7 +474,7 @@ private: std::map> windowsPerDisplayMap_; PointerStyle lastPointerStyle_ {.id = -1}; PointerStyle dragPointerStyle_ {.id = -1}; - MouseLocation mouseLocation_ = { -1, -1 }; + MouseLocation mouseLocation_ = { -1, 0, 0 }; std::map mouseLocationMap_; CursorPosition cursorPos_ {}; std::map cursorPosMap_; @@ -528,7 +532,10 @@ private: #endif // OHOS_BUILD_ENABLE_TOUCH bool IsFoldable_ { false }; int32_t timerId_ { -1 }; + int32_t lastDpi_ { 0 }; + std::map lastDpiMap_; std::shared_ptr GetlastPointerEvent(); + void SetDragFlagByPointer(std::shared_ptr lastPointerEvent); std::mutex mtx_; std::atomic_bool isHPR_ { false }; std::mutex oneHandMtx_; diff --git a/service/window_manager/src/input_windows_manager.cpp b/service/window_manager/src/input_windows_manager.cpp index cbe8ccbf61a9d24234187448f85358fe6ab186dc..0247871c7a2a05520c02fff67816c6b09c072378 100644 --- a/service/window_manager/src/input_windows_manager.cpp +++ b/service/window_manager/src/input_windows_manager.cpp @@ -89,6 +89,7 @@ constexpr int32_t CAST_INPUT_DEVICEID { 0xAAAAAAFF }; constexpr int32_t CAST_SCREEN_DEVICEID { 0xAAAAAAFE }; constexpr int32_t DEFAULT_DPI { 0 }; constexpr int32_t DEFAULT_POSITION { 0 }; +constexpr int32_t MAIN_GROUPID { 0 }; } // namespace enum PointerHotArea : int32_t { @@ -153,18 +154,23 @@ InputWindowsManager::InputWindowsManager() : bindInfo_(BIND_CFG_FILE_NAME) lastTouchWindowInfo_.windowType = 0; lastTouchWindowInfo_.windowNameType = 0; #endif // OHOS_BUILD_ENABLE_TOUCH - { - std::lock_guard lock(tmpInfoMutex_); - displayGroupInfoTmp_.focusWindowId = -1; - displayGroupInfoTmp_.width = 0; - displayGroupInfoTmp_.height = 0; - } - { - std::unique_lock lock(displayGroupInfoMtx); - displayGroupInfo_.focusWindowId = -1; - displayGroupInfo_.width = 0; - displayGroupInfo_.height = 0; - } + std::unique_lock lock(displayGroupInfoMtx); + displayGroupInfo_.groupId = MAIN_GROUPID; + displayGroupInfo_.isMainGroup = true; + displayGroupInfo_.focusWindowId = -1; + displayGroupInfo_.width = 0; + displayGroupInfo_.height = 0; + displayGroupInfoMap_[MAIN_GROUPID] = displayGroupInfo_; + displayGroupInfoMapTmp_[MAIN_GROUPID] = displayGroupInfo_; + captureModeInfoMap_[MAIN_GROUPID] = captureModeInfo_; + pointerDrawFlagMap_[MAIN_GROUPID] = pointerDrawFlag_; + mouseLocationMap_[MAIN_GROUPID] = mouseLocation_; + windowsPerDisplayMap_[MAIN_GROUPID] = windowsPerDisplay_; + lastPointerEventforWindowChangeMap_[MAIN_GROUPID] = lastPointerEventforWindowChange_; + displayModeMap_[MAIN_GROUPID] = displayMode_; + lastDpiMap_[MAIN_GROUPID] = lastDpi_; + CursorPosition cursorPos = {}; + cursorPosMap_[MAIN_GROUPID] = cursorPos; } InputWindowsManager::~InputWindowsManager() @@ -280,11 +286,15 @@ const std::vector InputWindowsManager::GetWindowGroupInfoByDisplayId if (displayId < 0) { return GetWindowInfoVector(groupId); } - const auto& iter = windowsPerDisplayMap_.find(groupId); - const std::map& windowsPerDisplayTmp = - (iter != windowsPerDisplayMap_.end()) ? iter->second : windowsPerDisplay_; - const auto& it = windowsPerDisplayTmp.find(displayId); - if (it == windowsPerDisplayTmp.end()) { + std::map& windowsPerDisplay = + const_cast &>(windowsPerDisplay_); + { + std::unique_lock lock(displayGroupInfoMtx); + const auto& iter = windowsPerDisplayMap_.find(groupId); + windowsPerDisplay = (iter != windowsPerDisplayMap_.end()) ? iter->second : windowsPerDisplay_; + } + const auto& it = windowsPerDisplay.find(displayId); + if (it == windowsPerDisplay.end()) { MMI_HILOGD("GetWindowInfo displayId:%{public}d is null from windowGroupInfo_", displayId); return GetWindowInfoVector(groupId); } @@ -298,9 +308,10 @@ const std::vector InputWindowsManager::GetWindowGroupInfoByDisplayId bool InputWindowsManager::CheckAppFocused(int32_t pid) { int32_t focusWindowId = DEFAULT_VALUE; - for (auto &item : displayGroupInfoMap_) { + std::unique_lock lock(displayGroupInfoMtx); + for (const auto& item : displayGroupInfoMap_) { focusWindowId = item.second.focusWindowId; - for (auto windowinfo : item.second.windowsInfo) { + for (const auto& windowinfo : item.second.windowsInfo) { if ((windowinfo.id == focusWindowId) && (windowinfo.pid == pid)) { return true; } else if (windowinfo.id == focusWindowId) { @@ -523,10 +534,13 @@ void InputWindowsManager::FoldScreenRotation(std::shared_ptr point DisplayGroupInfo& InputWindowsManager::FindTargetDisplayGroupInfo(int32_t displayId) { - for (auto& it : displayGroupInfoMap_) { - for (auto& item : it.second.displaysInfo) { - if (item.id == displayId) { - return it.second; + { + std::unique_lock lock(displayGroupInfoMtx); + for (auto& it : displayGroupInfoMap_) { + for (const auto& item : it.second.displaysInfo) { + if (item.id == displayId) { + return it.second; + } } } } @@ -536,6 +550,7 @@ DisplayGroupInfo& InputWindowsManager::FindTargetDisplayGroupInfo(int32_t displa int32_t InputWindowsManager::FindDisplayGroupId(int32_t displayId) const { int32_t groupId = DEFAULT_GROUP_ID; + std::unique_lock lock(displayGroupInfoMtx); for (auto& it : displayGroupInfoMap_) { for (auto& item : it.second.displaysInfo) { if (item.id == displayId) { @@ -552,15 +567,17 @@ int32_t InputWindowsManager::FindDisplayGroupId(int32_t displayId) const DisplayGroupInfo& InputWindowsManager::GetMainDisplayGroupInfo() { - for (auto &it : displayGroupInfoMap_) - if (it.second.isMainGroup) { - return it.second; - } + std::unique_lock lock(displayGroupInfoMtx); + const auto& iter = displayGroupInfoMap_.find(MAIN_GROUPID); + if (iter != displayGroupInfoMap_.end()) { + return iter->second; + } return displayGroupInfo_; } const DisplayGroupInfo& InputWindowsManager::GetConstMainDisplayGroupInfo() const { + std::unique_lock lock(displayGroupInfoMtx); for (auto &it : displayGroupInfoMap_) if (it.second.isMainGroup) { return it.second; @@ -568,7 +585,9 @@ const DisplayGroupInfo& InputWindowsManager::GetConstMainDisplayGroupInfo() cons return displayGroupInfo_; } -const DisplayGroupInfo& InputWindowsManager::FindDisplayGroupInfo(int32_t displayId) const { +const DisplayGroupInfo& InputWindowsManager::FindDisplayGroupInfo(int32_t displayId) const +{ + std::unique_lock lock(displayGroupInfoMtx); for (auto& it : displayGroupInfoMap_) { for (auto& item : it.second.displaysInfo) { if (item.id == displayId) { @@ -631,6 +650,7 @@ void InputWindowsManager::HandleKeyEventWindowId(std::shared_ptr keyEv void InputWindowsManager::ReissueEvent(std::shared_ptr keyEvent, int32_t focusWindowId) { + CHKPV(keyEvent); if (keyEvent->GetKeyAction() != KeyEvent::KEY_ACTION_CANCEL && focusWindowId_ != -1 && focusWindowId_ != focusWindowId && keyEvent->IsRepeatKey()) { auto keyEventReissue = std::make_shared(*keyEvent); @@ -788,23 +808,22 @@ std::vector> InputWindowsManager::GetPidAndUpdate int32_t InputWindowsManager::GetWindowPid(int32_t windowId) const { CALL_DEBUG_ENTER; - int32_t windowPid = INVALID_PID; - for (auto groupItem : displayGroupInfoMap_) { + std::unique_lock lock(displayGroupInfoMtx); + for (const auto &groupItem : displayGroupInfoMap_) { for (const auto &item : groupItem.second.windowsInfo) { MMI_HILOGD("Get windowId:%{public}d", item.id); if (item.id == windowId) { - windowPid = item.pid; - return windowPid; + return item.pid; } for (const auto &uiExtentionWindow : item.uiExtentionWindowInfo) { - if (uiExtentionWindow.id == windowId) { - windowPid = uiExtentionWindow.pid; - return windowPid; - } + CHKCC(uiExtentionWindow.id == windowId); + return uiExtentionWindow.pid; + + } } } - return windowPid; + return INVALID_PID; } int32_t InputWindowsManager::GetWindowPid(int32_t windowId, const std::vector &windowsInfo) const @@ -855,8 +874,7 @@ void InputWindowsManager::UpdateDisplayIdAndName() { using IdNames = std::set>; IdNames newInfo; - auto displayGroupInfo = GetMainDisplayGroupInfo(); - auto DisplaysInfo = GetDisplayInfoVector(displayGroupInfo.groupId); + auto DisplaysInfo = GetDisplayInfoVector(MAIN_GROUPID); for (const auto &item : DisplaysInfo) { newInfo.insert(std::make_pair(item.uniqueId, item.uniq)); } @@ -907,16 +925,28 @@ void InputWindowsManager::UpdateCaptureMode(const DisplayGroupInfo &displayGroup MMI_HILOGW("windowsInfo is empty"); return; } - if (captureModeInfoMap_[displayGroupInfo.groupId].isCaptureMode && !WindowInfo.empty() && + bool isCaptureMode = false; + { + std::unique_lock lock(displayGroupInfoMtx); + auto itr = captureModeInfoMap_.find(displayGroupInfo.groupId); + if (itr != captureModeInfoMap_.end()) { + isCaptureMode = itr->second.isCaptureMode; + } + } + if (isCaptureMode && !WindowInfo.empty() && ((focusWindowId != displayGroupInfo.focusWindowId) || (WindowInfo[0].id != displayGroupInfo.windowsInfo[0].id))) { - captureModeInfoMap_[displayGroupInfo.groupId].isCaptureMode = false; + { + std::unique_lock lock(displayGroupInfoMtx); + captureModeInfoMap_[displayGroupInfo.groupId].isCaptureMode = false; + } } } bool InputWindowsManager::IsFocusedSession(int32_t session) const { if (session >= 0) { + std::unique_lock lock(displayGroupInfoMtx); for (auto &curGroupInfo : displayGroupInfoMap_) { if (session == GetWindowPid(curGroupInfo.second.focusWindowId)) { return true; @@ -930,30 +960,46 @@ void InputWindowsManager::UpdateWindowInfo(const WindowGroupInfo &windowGroupInf { CALL_DEBUG_ENTER; PrintWindowGroupInfo(windowGroupInfo); -#ifdef OHOS_BUILD_ENABLE_ANCO - if (windowGroupInfo.windowsInfo.size() == SHELL_WINDOW_COUNT && IsAncoWindow(windowGroupInfo.windowsInfo[0])) { - return UpdateShellWindow(windowGroupInfo.windowsInfo[0]); - } -#endif // OHOS_BUILD_ENABLE_ANCO - DisplayGroupInfo displayGroupInfo; - { - std::lock_guard lock(tmpInfoMutex_); - displayGroupInfo = displayGroupInfoTmp_; - } - displayGroupInfo.focusWindowId = windowGroupInfo.focusWindowId; - + std::map> groupWindows; for (const auto &item : windowGroupInfo.windowsInfo) { - UpdateDisplayInfoByIncrementalInfo(item, displayGroupInfo); + groupWindows[item.groupId].emplace_back(item); } - + WindowGroupInfo windowGroupInfoTmp; + windowGroupInfoTmp.focusWindowId = windowGroupInfo.focusWindowId; + windowGroupInfoTmp.displayId = windowGroupInfo.displayId; + for (const auto &it : groupWindows) { + windowGroupInfoTmp.windowsInfo = it.second; +#ifdef OHOS_BUILD_ENABLE_ANCO + if (windowGroupInfoTmp.windowsInfo.size() == SHELL_WINDOW_COUNT + && IsAncoWindow(windowGroupInfoTmp.windowsInfo[0])) { + return UpdateShellWindow(windowGroupInfoTmp.windowsInfo[0]); + } +#endif // OHOS_BUILD_ENABLE_ANCO + int32_t groupId = FindDisplayGroupId(windowGroupInfoTmp.windowsInfo[0].displayId); + DisplayGroupInfo displayGroupInfo; + { + std::unique_lock lock(displayGroupInfoMtx); + const auto &iter = displayGroupInfoMapTmp_.find(groupId); + displayGroupInfo = (iter != displayGroupInfoMapTmp_.end()) ? iter->second : GetMainDisplayGroupInfo(); + } + + for (const auto &item : windowGroupInfoTmp.windowsInfo) { + UpdateDisplayInfoByIncrementalInfo(item, displayGroupInfo); + } + #if defined(OHOS_BUILD_ENABLE_POINTER) && defined(OHOS_BUILD_ENABLE_POINTER_DRAWING) - pointerDrawFlagMap_[displayGroupInfo.groupId] = NeedUpdatePointDrawFlag(windowGroupInfo.windowsInfo); + bool pointDrawFlag = NeedUpdatePointDrawFlag(windowGroupInfoTmp.windowsInfo); + { + std::unique_lock lock(displayGroupInfoMtx); + pointerDrawFlagMap_[displayGroupInfo.groupId] = pointDrawFlag; + } #endif // OHOS_BUILD_ENABLE_POINTER && OHOS_BUILD_ENABLE_POINTER_DRAWING - + #ifdef OHOS_BUILD_ENABLE_ANCO - UpdateWindowInfoExt(windowGroupInfo, displayGroupInfo); + UpdateWindowInfoExt(windowGroupInfoTmp, displayGroupInfo); #endif // OHOS_BUILD_ENABLE_ANCO - UpdateDisplayInfoExtIfNeed(displayGroupInfo, false); + UpdateDisplayInfoExtIfNeed(displayGroupInfo, false); + } } void InputWindowsManager::UpdateDisplayInfoExtIfNeed(DisplayGroupInfo &displayGroupInfo, bool needUpdateDisplayExt) @@ -1048,9 +1094,10 @@ void InputWindowsManager::UpdateWindowsInfoPerDisplay(const DisplayGroupInfo &di CheckZorderWindowChange(windowsPerDisplayMap_[groupId][displayId].windowsInfo, item.second.windowsInfo); } } - - windowsPerDisplayMap_[groupId] = windowsPerDisplay; - + { + std::unique_lock lock(displayGroupInfoMtx); + windowsPerDisplayMap_[groupId] = windowsPerDisplay; + } #if defined(OHOS_BUILD_ENABLE_TOUCH) && defined(OHOS_BUILD_ENABLE_MONITOR) for (const auto &window : displayGroupInfo.windowsInfo) { if (window.windowType == static_cast(Rosen::WindowType::WINDOW_TYPE_TRANSPARENT_VIEW)) { @@ -1072,7 +1119,10 @@ WINDOW_UPDATE_ACTION InputWindowsManager::UpdateWindowInfo(DisplayGroupInfo &dis } MMI_HILOGD("Current action is:%{public}d", action); #if defined(OHOS_BUILD_ENABLE_POINTER) && defined(OHOS_BUILD_ENABLE_POINTER_DRAWING) - pointerDrawFlagMap_[displayGroupInfo.groupId] = NeedUpdatePointDrawFlag(displayGroupInfo.windowsInfo); + { + std::unique_lock lock(displayGroupInfoMtx); + pointerDrawFlagMap_[displayGroupInfo.groupId] = NeedUpdatePointDrawFlag(displayGroupInfo.windowsInfo); + } #endif // OHOS_BUILD_ENABLE_POINTER && OHOS_BUILD_ENABLE_POINTER_DRAWING std::sort(displayGroupInfo.windowsInfo.begin(), displayGroupInfo.windowsInfo.end(), [](const WindowInfo &lwindow, const WindowInfo &rwindow) -> bool { @@ -1248,6 +1298,7 @@ void InputWindowsManager::HandleValidDisplayChange(const DisplayGroupInfo &displ CursorPosition InputWindowsManager::GetCursorPos(const DisplayGroupInfo &displayGroupInfo) { int32_t groupId = displayGroupInfo.groupId; + std::unique_lock lock(displayGroupInfoMtx); if ((cursorPosMap_[groupId].displayId < 0) && !displayGroupInfoMap_[groupId].displaysInfo.empty()) { DisplayInfo displayInfo = displayGroupInfo.displaysInfo[0]; #ifdef OHOS_BUILD_ENABLE_HARDWARE_CURSOR @@ -1260,7 +1311,6 @@ CursorPosition InputWindowsManager::GetCursorPos(const DisplayGroupInfo &display return cursorPosMap_[groupId]; } - void InputWindowsManager::ResetPointerPositionIfOutValidDisplay(const DisplayGroupInfo &displayGroupInfo) { if (displayGroupInfo.displaysInfo.empty()) { @@ -1297,11 +1347,23 @@ void InputWindowsManager::ResetPointerPositionIfOutValidDisplay(const DisplayGro double curX = validWidth * HALF_RATIO; double curY = validHeight * HALF_RATIO; UpdateAndAdjustMouseLocation(cursorDisplayId, curX, curY); - auto displayInfo = GetPhysicalDisplay(cursorPosMap_[displayGroupInfo.groupId].displayId); + int32_t displayId = -1; + double cursorPosx = 0.0; + double cursorPosy = 0.0; + { + std::unique_lock lock(displayGroupInfoMtx); + const auto iter = cursorPosMap_.find(groupId); + if (iter != cursorPosMap_.end()) { + displayId = iter->second.displayId; + cursorPosx = iter->second.cursorPos.x; + cursorPosy = iter->second.cursorPos.y; + } + } + auto displayInfo = GetPhysicalDisplay(displayId); CHKPV(displayInfo); IPointerDrawingManager::GetInstance()->SetPointerLocation( - static_cast(cursorPosMap_[groupId].cursorPos.x), - static_cast(cursorPosMap_[groupId].cursorPos.y), displayInfo->uniqueId); + static_cast(cursorPosx), + static_cast(cursorPosy), displayInfo->uniqueId); } if (isChange) { CancelMouseEvent(); @@ -1550,6 +1612,34 @@ void InputWindowsManager::HandleWindowPositionChange(const DisplayGroupInfo &dis } } +void InputWindowsManager::SendCancelEventWhenWindowChange(int32_t pointerId, int32_t groupId) +{ + MMI_HILOGI("Dispatch cancel event pointerId:%{public}d", pointerId); + std::shared_ptr lastPointerEventforWindowChangeTmp = lastPointerEventforWindowChange_; + { + std::unique_lock lock(displayGroupInfoMtx); + const auto iter = lastPointerEventforWindowChangeMap_.find(groupId); + if (iter != lastPointerEventforWindowChangeMap_.end()) { + lastPointerEventforWindowChangeTmp = iter->second; + } + } + CHKPV(lastPointerEventforWindowChangeTmp); + PointerEvent::PointerItem pointerItem; + if (!lastPointerEventforWindowChangeTmp->GetPointerItem(pointerId, pointerItem)) { + MMI_HILOGE("Can not find pointer item pointerid:%{public}d", pointerId); + return; + } + auto tmpEvent = std::make_shared(*(lastPointerEventforWindowChangeTmp)); + tmpEvent->SetPointerAction(PointerEvent::POINTER_ACTION_CANCEL); +#ifdef OHOS_BUILD_ENABLE_DFX_RADAR + DfxHisysevent::ReportPointerEventExitTimes(PointerEventStatistics::TRANSFORM_CANCEL); +#endif // OHOS_BUILD_ENABLE_DFX_RADAR + tmpEvent->SetPointerId(pointerId); + auto inputEventNormalizeHandler = InputHandler->GetEventNormalizeHandler(); + CHKPV(inputEventNormalizeHandler); + inputEventNormalizeHandler->HandleTouchEvent(tmpEvent); +} + void InputWindowsManager::PrintWindowNavbar(int32_t groupId) { auto WindowsInfo = GetWindowInfoVector(groupId); @@ -1573,8 +1663,7 @@ void InputWindowsManager::PrintWindowNavbar(int32_t groupId) bool InputWindowsManager::JudgeCaramaInFore() { - auto displayGroupInfo = GetMainDisplayGroupInfo(); - int32_t focWid = GetFocusWindowId(displayGroupInfo.groupId); + int32_t focWid = GetFocusWindowId(MAIN_GROUPID); int32_t focPid = GetPidByWindowId(focWid); if (udsServer_ == nullptr) { MMI_HILOGW("The udsServer is nullptr"); @@ -1589,22 +1678,47 @@ bool InputWindowsManager::JudgeCaramaInFore() return programName.find(".camera") != std::string::npos; } -void InputWindowsManager::UpdateDisplayInfo(DisplayGroupInfo &displayGroupInfo) +void InputWindowsManager::InitDisplayGroupInfo(DisplayGroupInfo &displayGroupInfo) { - bool isNewGroup = (displayGroupInfoMap_.find(displayGroupInfo.groupId) == displayGroupInfoMap_.end()); - if (isNewGroup) { - displayGroupInfoMap_[displayGroupInfo.groupId] = displayGroupInfo_; - captureModeInfoMap_[displayGroupInfo.groupId] = captureModeInfo_; - pointerDrawFlagMap_[displayGroupInfo.groupId] = pointerDrawFlag_; - mouseLocationMap_[displayGroupInfo.groupId] = mouseLocation_; - windowsPerDisplayMap_[displayGroupInfo.groupId] = windowsPerDisplay_; - lastPointerEventforWindowChangeMap_[displayGroupInfo.groupId] = lastPointerEventforWindowChange_; - displayModeMap_[displayGroupInfo.groupId] = displayMode_; - windowsHotAreasMap_[displayGroupInfo.groupId] = windowsHotAreas_; + std::unique_lock lock(displayGroupInfoMtx); + if (displayGroupInfoMap_.find(displayGroupInfo.groupId) != displayGroupInfoMap_.end()) { + return; } + displayGroupInfoMap_[displayGroupInfo.groupId] = displayGroupInfo; + captureModeInfoMap_[displayGroupInfo.groupId] = captureModeInfo_; + pointerDrawFlagMap_[displayGroupInfo.groupId] = pointerDrawFlag_; + mouseLocationMap_[displayGroupInfo.groupId] = mouseLocation_; + windowsPerDisplayMap_[displayGroupInfo.groupId] = windowsPerDisplay_; + windowsPerDisplayMap_[displayGroupInfo.groupId] = windowsPerDisplay_; + lastPointerEventforWindowChangeMap_[displayGroupInfo.groupId] = lastPointerEventforWindowChange_; + displayModeMap_[displayGroupInfo.groupId] = displayMode_; + lastDpiMap_[displayGroupInfo.groupId] = lastDpi_; + CursorPosition cursorPos = {}; + cursorPosMap_[displayGroupInfo.groupId] = cursorPos; +} - DisplayGroupInfo &curDisplayGroupInfo = displayGroupInfoMap_[displayGroupInfo.groupId]; - int32_t groupId = displayGroupInfo.groupId; +void InputWindowsManager::UpdateGroupInfo() +{ + std::unique_lock lock(displayGroupInfoMtx); + for (auto &curGroupInfo : displayGroupInfoMap_) { + if (!(curGroupInfo.second.isMainGroup) + && !(displayGroupInfoMapTmp_.find(curGroupInfo.first) != displayGroupInfoMapTmp_.end())) { + displayGroupInfoMap_.erase(curGroupInfo.first); + captureModeInfoMap_.erase(curGroupInfo.first); + pointerDrawFlagMap_.erase(curGroupInfo.first); + //mouseLocationMap_.erase(curGroupInfo.first); + windowsPerDisplayMap_.erase(curGroupInfo.first); + lastPointerEventforWindowChangeMap_.erase(curGroupInfo.first); + displayModeMap_.erase(curGroupInfo.first); + lastDpiMap_.erase(curGroupInfo.first); + cursorPosMap_.erase(curGroupInfo.first); + } + } +} + +void InputWindowsManager::UpdateDisplayInfo(DisplayGroupInfo &displayGroupInfo) +{ + InitDisplayGroupInfo(displayGroupInfo); if (!mainGroupExisted_ && displayGroupInfo.isMainGroup) { mainGroupExisted_ = true; } @@ -1627,36 +1741,40 @@ void InputWindowsManager::UpdateDisplayInfo(DisplayGroupInfo &displayGroupInfo) #ifdef OHOS_BUILD_ENABLE_HARDWARE_CURSOR bool isDisplayChanged = OnDisplayRemovedOrCombinationChanged(displayGroupInfo); #endif // OHOS_BUILD_ENABLE_HARDWARE_CURSOR + int32_t groupId = displayGroupInfo.groupId; + DisplayGroupInfo displayGroupInfoTemp; { - std::lock_guard lock(tmpInfoMutex_); - displayGroupInfoTmp_ = displayGroupInfo; - } - if (!Rosen::SceneBoardJudgement::IsSceneBoardEnabled() || action == WINDOW_UPDATE_ACTION::ADD_END) { - if ((currentUserId_ < 0) || (currentUserId_ == displayGroupInfo.currentUserId)) { + std::unique_lock lock(displayGroupInfoMtx); + displayGroupInfoMapTmp_[displayGroupInfo.groupId] = displayGroupInfo; + if ((!Rosen::SceneBoardJudgement::IsSceneBoardEnabled() || action == WINDOW_UPDATE_ACTION::ADD_END) + && ((currentUserId_ < 0) || (currentUserId_ == displayGroupInfo.currentUserId))) { + for (auto &displayInfo : displayGroupInfoMapTmp_) { + groupId = displayInfo.first; + displayGroupInfoTemp = displayInfo.second; #ifdef OHOS_BUILD_ENABLE_HARDWARE_CURSOR - if (isDisplayChanged) { - ResetPointerPosition(displayGroupInfo); - } + bool isDisplayUpdate = OnDisplayRemovedOrCombinationChanged(displayGroupInfoTemp); + if (isDisplayUpdate) { + ResetPointerPosition(displayGroupInfoTemp); + } #endif // OHOS_BUILD_ENABLE_HARDWARE_CURSOR - PrintChangedWindowBySync(displayGroupInfo); - CleanInvalidPiexMap(groupId); - HandleValidDisplayChange(displayGroupInfo); - { - std::unique_lock lock(displayGroupInfoMtx); - displayGroupInfoMap_[groupId] = displayGroupInfo; - } - UpdateWindowsInfoPerDisplay(displayGroupInfo); - HandleWindowPositionChange(displayGroupInfo); + PrintChangedWindowBySync(displayGroupInfoTemp); + CleanInvalidPiexMap(groupId); + HandleValidDisplayChange(displayGroupInfoTemp); + displayGroupInfoMap_[groupId] = displayGroupInfoTemp; + UpdateWindowsInfoPerDisplay(displayGroupInfoTemp); + HandleWindowPositionChange(displayGroupInfoTemp); + }; + } + const auto iter = displayGroupInfoMap_.find(groupId); + if (iter != displayGroupInfoMap_.end()) { + displayGroupInfoTemp = iter->second; } } - { - std::shared_lock lock(displayGroupInfoMtx); - PrintDisplayGroupInfo(displayGroupInfoMap_[groupId]); + PrintDisplayGroupInfo(displayGroupInfoTemp); + if (!displayGroupInfoTemp.displaysInfo.empty()) { + UpdateDisplayIdAndName(); } - - UpdateDisplayIdAndName(); UpdateDisplayMode(displayGroupInfo.groupId); - #ifdef OHOS_BUILD_ENABLE_POINTER #ifdef OHOS_BUILD_ENABLE_POINTER_DRAWING if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled() && @@ -1668,7 +1786,12 @@ void InputWindowsManager::UpdateDisplayInfo(DisplayGroupInfo &displayGroupInfo) } InitPointerStyle(displayGroupInfo.groupId); #ifdef OHOS_BUILD_ENABLE_POINTER_DRAWING - if (!displayGroupInfo.displaysInfo.empty() && pointerDrawFlagMap_[groupId]) { + bool bFlag = false; + { + std::unique_lock lock(displayGroupInfoMtx); + bFlag = (pointerDrawFlagMap_.find(groupId) != pointerDrawFlagMap_.end()) ? true : false; + } + if (!displayGroupInfo.displaysInfo.empty() && bFlag) { AdjustDisplayRotation(groupId); #ifdef OHOS_BUILD_ENABLE_HARDWARE_CURSOR PointerDrawingManagerOnDisplayInfo(displayGroupInfo, isDisplayChanged); @@ -1724,10 +1847,21 @@ void InputWindowsManager::AdjustDragPosition(int32_t groupId) { auto lastPointerEvent = GetlastPointerEvent(); CHKPV(lastPointerEvent); + int32_t displayId = -1; + int32_t physicalX = 0; + int32_t physicalY = 0; + { + std::unique_lock lock(displayGroupInfoMtx); + auto iter = mouseLocationMap_.find(groupId); + if (iter != mouseLocationMap_.end()) { + displayId = iter->second.displayId; + physicalX = iter->second.physicalX; + physicalY = iter->second.physicalY; + } + } std::shared_ptr pointerEvent = std::make_shared(*lastPointerEvent); - pointerEvent->SetTargetDisplayId(mouseLocationMap_[groupId].displayId); - auto touchWindow = SelectWindowInfo(mouseLocationMap_[groupId].physicalX, - mouseLocationMap_[groupId].physicalY, pointerEvent); + pointerEvent->SetTargetDisplayId(displayId); + auto touchWindow = SelectWindowInfo(physicalX, physicalY, pointerEvent); if (touchWindow == std::nullopt) { MMI_HILOGE("SelectWindowInfo failed"); return; @@ -1735,8 +1869,8 @@ void InputWindowsManager::AdjustDragPosition(int32_t groupId) int32_t pointerId = pointerEvent->GetPointerId(); PointerEvent::PointerItem item; pointerEvent->GetPointerItem(pointerId, item); - item.SetDisplayX(mouseLocationMap_[groupId].physicalX); - item.SetDisplayY(mouseLocationMap_[groupId].physicalY); + item.SetDisplayX(physicalX); + item.SetDisplayY(physicalY); pointerEvent->UpdatePointerItem(pointerId, item); pointerEvent->SetTargetWindowId(touchWindow->id); pointerEvent->SetAgentWindowId(touchWindow->id); @@ -1753,11 +1887,11 @@ void InputWindowsManager::AdjustDragPosition(int32_t groupId) DisplayMode InputWindowsManager::GetDisplayMode() const { - const DisplayGroupInfo &tmpGroupInfo = GetConstMainDisplayGroupInfo(); - auto it = displayModeMap_.find(tmpGroupInfo.groupId); - if (it != displayModeMap_.end()) { - return it->second; - } + std::shared_lock lock(displayGroupInfoMtx); + const auto iter = displayModeMap_.find(MAIN_GROUPID); + if (iter != displayModeMap_.end()) { + return iter->second; + } return displayMode_; } @@ -1782,9 +1916,16 @@ void InputWindowsManager::UpdateDisplayMode(int32_t groupId) mode = displayGroupInfo_.displaysInfo[0].displayMode; } } - - if (mode == displayModeMap_[groupId]) { - MMI_HILOGD("Displaymode not change, mode:%{public}d, diaplayMode_:%{public}d", mode, displayModeMap_[groupId]); + DisplayMode& displayMode = displayMode_; + { + std::unique_lock lock(displayGroupInfoMtx); + const auto iter = displayModeMap_.find(groupId); + if (iter != displayModeMap_.end()) { + displayMode = iter->second; + } + } + if (mode == displayMode) { + MMI_HILOGD("Displaymode not change, mode:%{public}d, diaplayMode_:%{public}d", mode, displayMode); return; } displayModeMap_[groupId] = mode; @@ -1793,9 +1934,9 @@ void InputWindowsManager::UpdateDisplayMode(int32_t groupId) MMI_HILOGD("Send fingersense display mode is nullptr"); return; } - MMI_HILOGI("Update fingersense display mode, displayMode:%{public}d", displayModeMap_[groupId]); + MMI_HILOGI("Update fingersense display mode, displayMode:%{public}d", displayMode); BytraceAdapter::StartUpdateDisplayMode("display mode change"); - FINGERSENSE_WRAPPER->sendFingerSenseDisplayMode_(static_cast(displayModeMap_[groupId])); + FINGERSENSE_WRAPPER->sendFingerSenseDisplayMode_(static_cast(displayMode)); BytraceAdapter::StopUpdateDisplayMode(); #endif // OHOS_BUILD_ENABLE_FINGERSENSE_WRAPPER } @@ -1835,6 +1976,9 @@ void InputWindowsManager::PointerDrawingManagerOnDisplayInfo(const DisplayGroupI } newId = displayGroupInfo_.displaysInfo[0].id; } + if (lastDpiMap_.find(groupId) == lastDpiMap_.end()) { + lastDpiMap_[groupId] = lastDpi_; + } } for (auto displayInfo : displayGroupInfo.displaysInfo) { if (displayInfo.uniqueId == currentDisplayInfo.uniqueId && displayInfo.dpi != currentDisplayInfo.dpi) { @@ -1872,10 +2016,21 @@ void InputWindowsManager::PointerDrawingManagerOnDisplayInfo(const DisplayGroupI .x = logicX, .y = logicY, }; - if (cursorPosMap_[groupId].direction != DirectionCopy && - cursorPosMap_[groupId].displayDirection == DisplayDirection) { - coord.x = cursorPosMap_[groupId].cursorPos.x; - coord.y = cursorPosMap_[groupId].cursorPos.y; + double cursorPosx = 0.0; + double cursorPosy = 0.0; + Direction direction = Direction::DIRECTION0; + Direction displayDirection = Direction::DIRECTION0; + { + std::unique_lock lock(displayGroupInfoMtx); + direction = cursorPosMap_[groupId].direction; + displayDirection = cursorPosMap_[groupId].displayDirection; + cursorPosx = cursorPosMap_[groupId].cursorPos.x;; + cursorPosy = cursorPosMap_[groupId].cursorPos.y; + } + if (direction != DirectionCopy && + displayDirection == DisplayDirection) { + coord.x = cursorPosx; + coord.y = cursorPosy; RotateDisplayScreen(*displayInfo, coord); } windowInfo = GetWindowInfo(coord.x, coord.y, groupId); @@ -2004,10 +2159,24 @@ void InputWindowsManager::UpdatePointerDrawingManagerWindowInfo() .x = logicX, .y = logicY, }; - if (cursorPosMap_[groupId].direction != DirectionCopy && - cursorPosMap_[groupId].displayDirection == DisplayDirection) { - coord.x = cursorPosMap_[groupId].cursorPos.x; - coord.y = cursorPosMap_[groupId].cursorPos.y; + Direction direction = Direction::DIRECTION0; + Direction displayDirection = Direction::DIRECTION0; + double cursorPosx = 0.0; + double cursorPosy = 0.0; + { + std::shared_lock lock(displayGroupInfoMtx); + const auto iter = cursorPosMap_.find(groupId); + if (iter != cursorPosMap_.end()) { + direction = iter->second.direction; + displayDirection = iter->second.displayDirection; + cursorPosx = iter->second.cursorPos.x; + cursorPosy = iter->second.cursorPos.y; + } + } + if (direction != DirectionCopy && + displayDirection == DisplayDirection) { + coord.x = cursorPosx; + coord.y = cursorPosy; RotateDisplayScreen(*displayInfo, coord); } windowInfo = GetWindowInfo(coord.x, coord.y, groupId); @@ -2082,8 +2251,7 @@ void InputWindowsManager::SendPointerEvent(int32_t pointerAction) lastLogicY_ = mouseLocation.physicalY + DisplayInfoY; if (pointerAction == PointerEvent::POINTER_ACTION_ENTER_WINDOW || Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) { - auto displayGroupInfo = GetMainDisplayGroupInfo(); - auto touchWindow = GetWindowInfo(lastLogicX_, lastLogicY_, displayGroupInfo.groupId); + auto touchWindow = GetWindowInfo(lastLogicX_, lastLogicY_, MAIN_GROUPID); if (!touchWindow) { MMI_HILOGE("TouchWindow is nullptr"); return; @@ -2161,8 +2329,7 @@ void InputWindowsManager::DispatchPointer(int32_t pointerAction, int32_t windowI (eventAction >= PointerEvent::POINTER_ACTION_AXIS_BEGIN && eventAction <= PointerEvent::POINTER_ACTION_AXIS_END); if (checkFlag) { - auto displayGroupInfo = GetMainDisplayGroupInfo(); - windowInfo = GetWindowInfo(lastLogicX_, lastLogicY_, displayGroupInfo.groupId); + windowInfo = GetWindowInfo(lastLogicX_, lastLogicY_, MAIN_GROUPID); } else { windowInfo = SelectWindowInfo(lastLogicX_, lastLogicY_, lastPointerEventCopy); } @@ -2178,9 +2345,21 @@ void InputWindowsManager::DispatchPointer(int32_t pointerAction, int32_t windowI currentPointerItem.SetWindowX(lastLogicX_ - lastWindowInfo_.area.x); currentPointerItem.SetWindowY(lastLogicY_ - lastWindowInfo_.area.y); if (pointerAction == PointerEvent::POINTER_ACTION_ENTER_WINDOW && windowId > 0) { - currentPointerItem.SetDisplayX(mouseLocation_.physicalX); - currentPointerItem.SetDisplayY(mouseLocation_.physicalY); - pointerEvent->SetTargetDisplayId(mouseLocation_.displayId); + int32_t displayId = 0; + double cursorPosx = 0.0; + double cursorPosy = 0.0; + { + std::shared_lock lock(displayGroupInfoMtx); + const auto iter = mouseLocationMap_.find(MAIN_GROUPID); + if (iter != mouseLocationMap_.end()) { + displayId = iter->second.displayId; + cursorPosx = iter->second.physicalX; + cursorPosy = iter->second.physicalY; + } + } + currentPointerItem.SetDisplayX(cursorPosx); + currentPointerItem.SetDisplayY(cursorPosy); + pointerEvent->SetTargetDisplayId(displayId); if (IsMouseSimulate()) { currentPointerItem.SetWindowX(lastPointerItem.GetWindowX()); currentPointerItem.SetWindowY(lastPointerItem.GetWindowY()); @@ -2477,7 +2656,8 @@ const std::shared_ptr InputWindowsManager::GetPhysicalDisplay(int32 #ifdef OHOS_BUILD_ENABLE_TOUCH const std::shared_ptr InputWindowsManager::FindPhysicalDisplayInfo(const std::string& uniq) const { - for (auto &item : displayGroupInfoMap_) { + std::unique_lock lock(displayGroupInfoMtx); + for (const auto &item : displayGroupInfoMap_) { for (const auto &it : item.second.displaysInfo) { if (it.uniq == uniq) { return std::make_shared(it); @@ -2485,9 +2665,11 @@ const std::shared_ptr InputWindowsManager::FindPhysicalDisplayInfo( } } MMI_HILOGD("Failed to search for Physical,uniq:%{public}s", uniq.c_str()); - const auto displayGroupInfo = GetConstMainDisplayGroupInfo(); - if (displayGroupInfo.displaysInfo.size() > 0) { - return std::make_shared(displayGroupInfo.displaysInfo[0]); + auto iter = displayGroupInfoMap_.find(MAIN_GROUPID); + if (iter != displayGroupInfoMap_.end()) { + if (iter->second.displaysInfo.size() > 0) { + return std::make_shared(iter->second.displaysInfo[0]); + } } return nullptr; } @@ -2526,6 +2708,21 @@ void InputWindowsManager::ScreenRotateAdjustDisplayXY(const DisplayInfo& info, P } } +void InputWindowsManager::RotateScreen90(const DisplayInfo& info, PhysicalCoordinate& coord) const +{ + double oldX = coord.x; + double oldY = coord.y; + double temp = coord.x; + if (!Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) { + coord.x = info.validHeight - coord.y; + } else { + coord.x = info.validWidth - coord.y; + } + coord.y = temp; + MMI_HILOGD("DIRECTION90, physicalXY:{%f %f}->{%f %f}", oldX, oldY, coord.x, coord.y); + return; +} + void InputWindowsManager::RotateScreen(const DisplayInfo& info, PhysicalCoordinate& coord) const { double oldX = coord.x; @@ -2533,14 +2730,24 @@ void InputWindowsManager::RotateScreen(const DisplayInfo& info, PhysicalCoordina const Direction direction = info.direction; int32_t groupId = FindDisplayGroupId(info.id); if (direction == DIRECTION0) { - auto it = cursorPosMap_.find(groupId); - CursorPosition cursorPosTmp = (it != cursorPosMap_.end()) ? it->second : cursorPos_; - if (cursorPosTmp.displayDirection != info.displayDirection && cursorPosTmp.direction != info.direction) { - if (cursorPosTmp.direction == Direction::DIRECTION90) { + int32_t groupId = FindDisplayGroupId(info.id); + Direction directiontemp = Direction::DIRECTION0 ; + Direction displaydirectiontemp = Direction::DIRECTION0 ; + { + std::unique_lock lock(displayGroupInfoMtx); + const auto iter = cursorPosMap_.find(groupId); + if (iter != cursorPosMap_.end()) { + directiontemp = iter->second.direction; + displaydirectiontemp = iter->second.displayDirection; + } + } + + if (displaydirectiontemp != info.displayDirection && directiontemp != info.direction) { + if (directiontemp == Direction::DIRECTION90) { double temp = coord.y; coord.y = info.validHeight - coord.x; coord.x = temp; - } else if (cursorPosTmp.direction == Direction::DIRECTION270) { + } else if (directiontemp == Direction::DIRECTION270) { double temp = coord.x; coord.x = info.validWidth - coord.y; coord.y = temp; @@ -2550,14 +2757,7 @@ void InputWindowsManager::RotateScreen(const DisplayInfo& info, PhysicalCoordina return; } if (direction == DIRECTION90) { - double temp = coord.x; - if (!Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) { - coord.x = info.validHeight - coord.y; - } else { - coord.x = info.validWidth - coord.y; - } - coord.y = temp; - MMI_HILOGD("DIRECTION90, physicalXY:{%f %f}->{%f %f}", oldX, oldY, coord.x, coord.y); + RotateScreen90(info, coord); return; } if (direction == DIRECTION180) { @@ -2794,46 +2994,57 @@ bool InputWindowsManager::CalculateTipPoint(struct libinput_event_tablet_tool* t #endif // OHOS_BUILD_ENABLE_TOUCH #ifdef OHOS_BUILD_ENABLE_POINTER -const DisplayGroupInfo& InputWindowsManager::GetDisplayGroupInfo(int32_t groupId) +void InputWindowsManager::GetDisplayGroupInfo(DisplayGroupInfo& displayGroupInfoCur, int32_t groupId) { + std::unique_lock lock(displayGroupInfoMtx); auto iter = displayGroupInfoMap_.find(groupId); - if (iter != displayGroupInfoMap_.end()) { - return iter->second; + if (iter == displayGroupInfoMap_.end()) { + return; } - return displayGroupInfo_; + displayGroupInfoCur = iter->second; } std::vector InputWindowsManager::GetDisplayInfoVector(int32_t groupId) const { - std::shared_lock lock(displayGroupInfoMtx); - const auto iter = displayGroupInfoMap_.find(groupId); + std::unique_lock lock(displayGroupInfoMtx); + auto iter = displayGroupInfoMap_.find(groupId); if (iter != displayGroupInfoMap_.end()) { return iter->second.displaysInfo; - } else { - return displayGroupInfo_.displaysInfo; } + iter = displayGroupInfoMap_.find(MAIN_GROUPID); + if (iter != displayGroupInfoMap_.end()) { + return iter->second.displaysInfo; + } + return displayGroupInfo_.displaysInfo; } const std::vector InputWindowsManager::GetWindowInfoVector(int32_t groupId) const { - std::shared_lock lock(displayGroupInfoMtx); - const auto iter = displayGroupInfoMap_.find(groupId); - if (iter != displayGroupInfoMap_.end()) { - return iter->second.windowsInfo; - } else { - return displayGroupInfo_.windowsInfo; - } + std::unique_lock lock(displayGroupInfoMtx); + auto iter = displayGroupInfoMap_.find(groupId); + if (iter != displayGroupInfoMap_.end()) { + return iter->second.windowsInfo; + } + iter = displayGroupInfoMap_.find(MAIN_GROUPID); + if (iter != displayGroupInfoMap_.end()) { + return iter->second.windowsInfo; + } + return displayGroupInfo_.windowsInfo; } int32_t InputWindowsManager::GetFocusWindowId(int32_t groupId) const { - std::shared_lock lock(displayGroupInfoMtx); - const auto iter = displayGroupInfoMap_.find(groupId); + std::unique_lock lock(displayGroupInfoMtx); + auto iter = displayGroupInfoMap_.find(groupId); if (iter != displayGroupInfoMap_.end()) { return iter->second.focusWindowId; - } else { - return displayGroupInfo_.focusWindowId; + } + iter = displayGroupInfoMap_.find(MAIN_GROUPID); + if (iter != displayGroupInfoMap_.end()) { + return iter->second.focusWindowId; + } + return 0; } int32_t InputWindowsManager::GetLogicalPositionX(int32_t id) @@ -3639,8 +3850,12 @@ void InputWindowsManager::UpdatePointerChangeAreas() { CALL_DEBUG_ENTER; if (Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) { - std::lock_guard lock(tmpInfoMutex_); - UpdatePointerChangeAreas(displayGroupInfoTmp_); + std::unique_lock lock(displayGroupInfoMtx); + const auto iter = displayGroupInfoMapTmp_.find(MAIN_GROUPID); + if(iter == displayGroupInfoMapTmp_.end()) { + return; + } + UpdatePointerChangeAreas(iter->second); } } @@ -4182,25 +4397,31 @@ int32_t InputWindowsManager::SetMouseCaptureMode(int32_t windowId, bool isCaptur MMI_HILOGE("Windowid(%{public}d) is invalid", windowId); return RET_ERR; } - if ((captureModeInfo_.isCaptureMode == isCaptureMode) && !isCaptureMode) { - MMI_HILOGE("Windowid:(%{public}d) is not capture mode", windowId); - return RET_OK; + MMI_HILOGI("SetMouseCaptureMode In."); + { + std::unique_lock lock(displayGroupInfoMtx); + auto itr = captureModeInfoMap_.find(MAIN_GROUPID); + if (itr != captureModeInfoMap_.end()) { + if (itr->second.isCaptureMode == isCaptureMode && !isCaptureMode) { + MMI_HILOGE("Windowid:(%{public}d) is not capture mode", windowId); + return RET_OK; + } + captureModeInfoMap_[MAIN_GROUPID].windowId = windowId; + captureModeInfoMap_[MAIN_GROUPID].isCaptureMode = isCaptureMode; + } } - captureModeInfo_.windowId = windowId; - captureModeInfo_.isCaptureMode = isCaptureMode; MMI_HILOGI("Windowid:(%{public}d) is (%{public}d)", windowId, isCaptureMode); return RET_OK; } bool InputWindowsManager::GetMouseIsCaptureMode() const { - const DisplayGroupInfo &tmpGroupInfo = GetConstMainDisplayGroupInfo(); - const auto iter = captureModeInfoMap_.find(tmpGroupInfo.groupId); - if (iter != captureModeInfoMap_.end()) { - return iter->second.isCaptureMode; - } else { - return captureModeInfo_.isCaptureMode; + std::unique_lock lock(displayGroupInfoMtx); + auto itr = captureModeInfoMap_.find(MAIN_GROUPID); + if (itr != captureModeInfoMap_.end()) { + return itr->second.isCaptureMode; } + return false; } bool InputWindowsManager::IsNeedDrawPointer(PointerEvent::PointerItem &pointerItem) const @@ -5762,36 +5983,58 @@ void InputWindowsManager::UpdateAndAdjustMouseLocation(int32_t& displayId, doubl MouseLocation InputWindowsManager::GetMouseInfo() { - DisplayGroupInfo &mainDisplayGroupInfo = GetMainDisplayGroupInfo(); - auto displaysInfoVector = mainDisplayGroupInfo.displaysInfo; - int32_t mainGroupId = mainDisplayGroupInfo.groupId; - if ((mouseLocationMap_[mainGroupId].displayId < 0) && !displaysInfoVector.empty()) { + auto displaysInfoVector = GetDisplayInfoVector(MAIN_GROUPID); + MouseLocation curMouseLocation; + { + std::unique_lock lock(displayGroupInfoMtx); + const auto iter = mouseLocationMap_.find(MAIN_GROUPID); + if (iter != mouseLocationMap_.end()) { + curMouseLocation = iter->second; + } + } + if ((curMouseLocation.displayId < 0) && !displaysInfoVector.empty()) { DisplayInfo displayInfo = displaysInfoVector[0]; #ifdef OHOS_BUILD_ENABLE_HARDWARE_CURSOR (void)GetMainScreenDisplayInfo(displaysInfoVector, displayInfo); #endif // OHOS_BUILD_ENABLE_HARDWARE_CURSOR - mouseLocationMap_[mainGroupId].displayId = displayInfo.id; - mouseLocationMap_[mainGroupId].physicalX = displayInfo.validWidth / TWOFOLD; - mouseLocationMap_[mainGroupId].physicalY = displayInfo.validHeight / TWOFOLD; + std::unique_lock lock(displayGroupInfoMtx); + mouseLocationMap_[MAIN_GROUPID].displayId = displayInfo.id; + mouseLocationMap_[MAIN_GROUPID].physicalX = displayInfo.validWidth / TWOFOLD; + mouseLocationMap_[MAIN_GROUPID].physicalY = displayInfo.validHeight / TWOFOLD; + MMI_HILOGI("Mouselocation displayinfo: displayId:%{public}d, W:%{public}d, H:%{public}d", + displayInfo.id, displayInfo.validWidth, displayInfo.validHeight); + return mouseLocationMap_[MAIN_GROUPID]; } - return mouseLocationMap_[mainGroupId]; + return curMouseLocation; } CursorPosition InputWindowsManager::GetCursorPos() { - DisplayGroupInfo &mainDisplayGroupInfo = GetMainDisplayGroupInfo(); - auto displaysInfoVector = mainDisplayGroupInfo.displaysInfo; - int32_t mainGroupId = mainDisplayGroupInfo.groupId; - if ((cursorPosMap_[mainGroupId].displayId < 0) && !displaysInfoVector.empty()) { + auto displaysInfoVector = GetDisplayInfoVector(MAIN_GROUPID); + CursorPosition cursorPos; + { + std::unique_lock lock(displayGroupInfoMtx); + const auto iter = cursorPosMap_.find(MAIN_GROUPID); + if (iter != cursorPosMap_.end()) { + cursorPos = iter->second; + } + } + if ((cursorPos.displayId < 0) && !displaysInfoVector.empty()) { DisplayInfo displayInfo = displaysInfoVector[0]; #ifdef OHOS_BUILD_ENABLE_HARDWARE_CURSOR (void)GetMainScreenDisplayInfo(displaysInfoVector, displayInfo); #endif // OHOS_BUILD_ENABLE_HARDWARE_CURSOR - cursorPosMap_[mainGroupId].displayId = displayInfo.id; - cursorPosMap_[mainGroupId].cursorPos.x = displayInfo.validWidth * HALF_RATIO; - cursorPosMap_[mainGroupId].cursorPos.y = displayInfo.validHeight * HALF_RATIO; + { + std::unique_lock lock(displayGroupInfoMtx); + const auto iter = cursorPosMap_.find(MAIN_GROUPID); + if (iter != cursorPosMap_.end()) { + cursorPosMap_[MAIN_GROUPID].displayId = displayInfo.id; + cursorPosMap_[MAIN_GROUPID].cursorPos.x = displayInfo.validWidth * HALF_RATIO; + cursorPosMap_[MAIN_GROUPID].cursorPos.y = displayInfo.validHeight * HALF_RATIO; + } + } } - return cursorPosMap_[mainGroupId]; + return cursorPos; } CursorPosition InputWindowsManager::ResetCursorPos() @@ -5920,7 +6163,7 @@ void InputWindowsManager::UpdatePointerAction(std::shared_ptr poin void InputWindowsManager::DumpDisplayInfo(int32_t fd) { mprintf(fd, "Displays information:\t"); - auto DisplaysInfo = GetMainDisplayGroupInfo().displaysInfo; + auto DisplaysInfo = GetDisplayInfoVector(MAIN_GROUPID); mprintf(fd, "displayInfos,num:%zu", DisplaysInfo.size()); for (const auto &item : DisplaysInfo) { mprintf(fd, "\t displayInfos: uniqueId:%d | screenCombination:%d id:%d | x:%d" @@ -5941,7 +6184,7 @@ void InputWindowsManager::Dump(int32_t fd, const std::vector &args) { CALL_DEBUG_ENTER; mprintf(fd, "Windows information:\t"); - auto WindowsInfo = GetMainDisplayGroupInfo().windowsInfo; + auto WindowsInfo = GetWindowInfoVector(MAIN_GROUPID); mprintf(fd, "windowsInfos,num:%zu", WindowsInfo.size()); for (const auto &item : WindowsInfo) { mprintf(fd, " windowsInfos: id:%d | pid:%d | uid:%d | area.x:%d | area.y:%d " @@ -6156,8 +6399,8 @@ int32_t InputWindowsManager::CheckWindowIdPermissionByPid(int32_t windowId, int3 #ifdef OHOS_BUILD_ENABLE_TOUCH void InputWindowsManager::ReverseXY(int32_t &x, int32_t &y) { - auto displayGroupInfo = GetMainDisplayGroupInfo(); - auto DisplaysInfo = GetDisplayInfoVector(displayGroupInfo.groupId); + MMI_HILOGI("ReverseXY In"); + auto DisplaysInfo = GetDisplayInfoVector(MAIN_GROUPID); if (DisplaysInfo.empty()) { MMI_HILOGE("DisplaysInfo is empty"); return; @@ -6459,9 +6702,19 @@ void InputWindowsManager::UpdateKeyEventDisplayId(std::shared_ptr keyE { CHKPV(keyEvent); bool hasFound = false; - for (const auto &item : windowsPerDisplayMap_[groupId]) { + int32_t displayId = -1; + std::map windowsPerDisplayTmp = windowsPerDisplay_; + { + std::unique_lock lock(displayGroupInfoMtx); + const auto iter = windowsPerDisplayMap_.find(groupId); + if (iter != windowsPerDisplayMap_.end()) { + displayId = item.second.displayId; + } + } + for (const auto &item : windowsPerDisplayTmp) { + if (item.second.focusWindowId == focusWindowId) { - keyEvent->SetTargetDisplayId(item.second.displayId); + keyEvent->SetTargetDisplayId(displayId); hasFound = true; } } @@ -6534,17 +6787,18 @@ const std::shared_ptr InputWindowsManager::GetPhysicalDisplay(int32 #if defined(OHOS_BUILD_ENABLE_POINTER) || defined(OHOS_BUILD_ENABLE_TOUCH) std::optional InputWindowsManager::GetWindowInfoById(int32_t windowId) const { - for (auto iter = windowsPerDisplay_.begin(); iter != windowsPerDisplay_.end(); ++iter) { - int32_t displayId = iter->first; - const std::vector &windowsInfo = iter->second.windowsInfo; - if (displayId < 0) { - MMI_HILOGE("windowsPerDisplay_ contain invalid displayId:%{public}d", displayId); - continue; - } - for (const auto& item : windowsInfo) { - if (item.id == windowId && - (item.flags & WindowInfo::FLAG_BIT_UNTOUCHABLE) != WindowInfo::FLAG_BIT_UNTOUCHABLE && - transparentWins_.find(item.id) == transparentWins_.end()) { + std::unique_lock lock(displayGroupInfoMtx); + for (const auto &it : windowsPerDisplayMap_) { + for (auto iter = it.second.begin(); iter != it.second.end(); ++iter) { + int32_t displayId = iter->first; + if (displayId < 0) { + MMI_HILOGE("windowsPerDisplay_ contain invalid displayId:%{public}d", displayId); + continue; + } + for (const auto& item : iter->second.windowsInfo) { + CHKCC(item.id == windowId && + (item.flags & WindowInfo::FLAG_BIT_UNTOUCHABLE) != WindowInfo::FLAG_BIT_UNTOUCHABLE && + transparentWins_.find(item.id) == transparentWins_.end()); return std::make_optional(item); } } @@ -6708,6 +6962,18 @@ std::pair InputWindowsManager::CalcDrawCoordinate(const Displa return {static_cast(physicalX), static_cast(physicalY)}; } +void InputWindowsManager::SetDragFlagByPointer(std::shared_ptr lastPointerEvent) +{ + if (lastPointerEvent->GetPointerAction() == PointerEvent::POINTER_ACTION_BUTTON_DOWN) { + dragFlag_ = true; + MMI_HILOGD("Is in drag scene"); + } + if (lastPointerEvent->GetPointerAction() == PointerEvent::POINTER_ACTION_BUTTON_UP) { + dragFlag_ = false; + isDragBorder_ = false; + } +} + #ifdef OHOS_BUILD_ENABLE_ONE_HAND_MODE void InputWindowsManager::TouchEnterLeaveEvent(int32_t logicalX, int32_t logicalY, const std::shared_ptr pointerEvent, const WindowInfo* touchWindow) diff --git a/service/window_manager/test/input_windows_manager_ex_test.cpp b/service/window_manager/test/input_windows_manager_ex_test.cpp index 2a43f316a11e10bfbe81d454ef4883bb5df4885c..a1e5fa84d152ce171acdc4091dfb31112ccc3b92 100644 --- a/service/window_manager/test/input_windows_manager_ex_test.cpp +++ b/service/window_manager/test/input_windows_manager_ex_test.cpp @@ -92,16 +92,21 @@ HWTEST_F(InputWindowsManagerTest, UpdateTarget_002, TestSize.Level1) ASSERT_NE(inputWindowsManager, nullptr); UDSServer udsServer; inputWindowsManager->udsServer_ = &udsServer; - inputWindowsManager->displayGroupInfo_.focusWindowId = 1; + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.focusWindowId = 1; WindowInfo windowInfo; windowInfo.id = 1; windowInfo.pid = 11; - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); + displayGroupInfoRef.windowsInfo.push_back(windowInfo); std::shared_ptr keyEvent = KeyEvent::Create(); ASSERT_NE(keyEvent, nullptr); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->UpdateTarget(keyEvent)); - inputWindowsManager->displayGroupInfo_.focusWindowId = -1; - inputWindowsManager->displayGroupInfo_.windowsInfo.clear(); + displayGroupInfoRef.focusWindowId = -1; + displayGroupInfoRef.windowsInfo.clear(); inputWindowsManager->udsServer_ = nullptr; } @@ -120,16 +125,21 @@ HWTEST_F(InputWindowsManagerTest, UpdateTarget_003, TestSize.Level1) ASSERT_NE(inputWindowsManager, nullptr); UDSServer udsServer; inputWindowsManager->udsServer_ = &udsServer; - inputWindowsManager->displayGroupInfo_.focusWindowId = 1; + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.focusWindowId = 1; WindowInfo windowInfo; windowInfo.id = 1; windowInfo.pid = 11; - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); + displayGroupInfoRef.windowsInfo.push_back(windowInfo); std::shared_ptr keyEvent = KeyEvent::Create(); ASSERT_NE(keyEvent, nullptr); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->UpdateTarget(keyEvent)); - inputWindowsManager->displayGroupInfo_.focusWindowId = -1; - inputWindowsManager->displayGroupInfo_.windowsInfo.clear(); + displayGroupInfoRef.focusWindowId = -1; + displayGroupInfoRef.windowsInfo.clear(); inputWindowsManager->udsServer_ = nullptr; } #endif // OHOS_BUILD_ENABLE_KEYBOARD @@ -167,13 +177,18 @@ HWTEST_F(InputWindowsManagerTest, PointerDrawingManagerOnDisplayInfo_002, TestSi ASSERT_NE(inputWindowsManager, nullptr); DisplayInfo displayInfo; displayInfo.id = 0; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); inputWindowsManager->lastPointerEvent_ = PointerEvent::Create(); ASSERT_NE(inputWindowsManager->lastPointerEvent_, nullptr); inputWindowsManager->lastPointerEvent_->SetPointerAction(PointerEvent::POINTER_ACTION_MOVE); DisplayGroupInfo displayGroupInfo; EXPECT_NO_FATAL_FAILURE(inputWindowsManager->PointerDrawingManagerOnDisplayInfo(displayGroupInfo)); - inputWindowsManager->displayGroupInfo_.displaysInfo.clear(); + displayGroupInfoRef.displaysInfo.clear(); inputWindowsManager->lastPointerEvent_.reset(); inputWindowsManager->lastPointerEvent_ = nullptr; } @@ -193,14 +208,19 @@ HWTEST_F(InputWindowsManagerTest, PointerDrawingManagerOnDisplayInfo_003, TestSi ASSERT_NE(inputWindowsManager, nullptr); DisplayInfo displayInfo; displayInfo.id = 0; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); inputWindowsManager->lastPointerEvent_ = PointerEvent::Create(); ASSERT_NE(inputWindowsManager->lastPointerEvent_, nullptr); inputWindowsManager->lastPointerEvent_->SetPointerAction(PointerEvent::POINTER_ACTION_MOVE); inputWindowsManager->lastPointerEvent_->SetButtonPressed(1); DisplayGroupInfo displayGroupInfo; EXPECT_NO_FATAL_FAILURE(inputWindowsManager->PointerDrawingManagerOnDisplayInfo(displayGroupInfo)); - inputWindowsManager->displayGroupInfo_.displaysInfo.clear(); + displayGroupInfoRef.displaysInfo.clear(); inputWindowsManager->lastPointerEvent_.reset(); inputWindowsManager->lastPointerEvent_ = nullptr; } @@ -220,13 +240,18 @@ HWTEST_F(InputWindowsManagerTest, PointerDrawingManagerOnDisplayInfo_004, TestSi ASSERT_NE(inputWindowsManager, nullptr); DisplayInfo displayInfo; displayInfo.id = 0; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); inputWindowsManager->lastPointerEvent_ = PointerEvent::Create(); ASSERT_NE(inputWindowsManager->lastPointerEvent_, nullptr); inputWindowsManager->lastPointerEvent_->SetPointerAction(PointerEvent::POINTER_ACTION_DOWN); DisplayGroupInfo displayGroupInfo; EXPECT_NO_FATAL_FAILURE(inputWindowsManager->PointerDrawingManagerOnDisplayInfo(displayGroupInfo)); - inputWindowsManager->displayGroupInfo_.displaysInfo.clear(); + displayGroupInfoRef.displaysInfo.clear(); inputWindowsManager->lastPointerEvent_.reset(); inputWindowsManager->lastPointerEvent_ = nullptr; } @@ -249,7 +274,12 @@ HWTEST_F(InputWindowsManagerTest, PointerDrawingManagerOnDisplayInfo_005, TestSi displayInfo.id = 0; displayInfo.x = 8; displayInfo.y = 8; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); WindowInfo windowInfo; windowInfo.id = 1; windowInfo.pid = 11; @@ -260,14 +290,14 @@ HWTEST_F(InputWindowsManagerTest, PointerDrawingManagerOnDisplayInfo_005, TestSi rect.width = 10; rect.height = 10; windowInfo.pointerHotAreas.push_back(rect); - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); + displayGroupInfoRef.windowsInfo.push_back(windowInfo); inputWindowsManager->lastPointerEvent_ = PointerEvent::Create(); ASSERT_NE(inputWindowsManager->lastPointerEvent_, nullptr); inputWindowsManager->lastPointerEvent_->SetPointerAction(PointerEvent::POINTER_ACTION_MOVE); DisplayGroupInfo displayGroupInfo; EXPECT_NO_FATAL_FAILURE(inputWindowsManager->PointerDrawingManagerOnDisplayInfo(displayGroupInfo)); - inputWindowsManager->displayGroupInfo_.displaysInfo.clear(); - inputWindowsManager->displayGroupInfo_.windowsInfo.clear(); + displayGroupInfoRef.windowsInfo.clear(); + displayGroupInfoRef.displaysInfo.clear(); inputWindowsManager->lastPointerEvent_.reset(); inputWindowsManager->lastPointerEvent_ = nullptr; } @@ -289,7 +319,12 @@ HWTEST_F(InputWindowsManagerTest, PointerDrawingManagerOnDisplayInfo_006, TestSi displayInfo.id = 0; displayInfo.x = 8; displayInfo.y = 8; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); WindowInfo windowInfo; windowInfo.id = 1; windowInfo.pid = 11; @@ -300,7 +335,7 @@ HWTEST_F(InputWindowsManagerTest, PointerDrawingManagerOnDisplayInfo_006, TestSi rect.width = 10; rect.height = 10; windowInfo.pointerHotAreas.push_back(rect); - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); + displayGroupInfoRef.windowsInfo.push_back(windowInfo); inputWindowsManager->lastPointerEvent_ = PointerEvent::Create(); ASSERT_NE(inputWindowsManager->lastPointerEvent_, nullptr); inputWindowsManager->lastPointerEvent_->SetPointerAction(PointerEvent::POINTER_ACTION_BUTTON_DOWN); @@ -308,8 +343,8 @@ HWTEST_F(InputWindowsManagerTest, PointerDrawingManagerOnDisplayInfo_006, TestSi inputWindowsManager->dragFlag_ = true; DisplayGroupInfo displayGroupInfo; EXPECT_NO_FATAL_FAILURE(inputWindowsManager->PointerDrawingManagerOnDisplayInfo(displayGroupInfo)); - inputWindowsManager->displayGroupInfo_.displaysInfo.clear(); - inputWindowsManager->displayGroupInfo_.windowsInfo.clear(); + displayGroupInfoRef.displaysInfo.clear(); + displayGroupInfoRef.windowsInfo.clear(); inputWindowsManager->lastPointerEvent_.reset(); inputWindowsManager->lastPointerEvent_ = nullptr; inputWindowsManager->isDragBorder_ = false; @@ -333,7 +368,12 @@ HWTEST_F(InputWindowsManagerTest, PointerDrawingManagerOnDisplayInfo_007, TestSi displayInfo.id = 0; displayInfo.x = 8; displayInfo.y = 8; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); WindowInfo windowInfo; windowInfo.id = 1; windowInfo.pid = 11; @@ -344,7 +384,7 @@ HWTEST_F(InputWindowsManagerTest, PointerDrawingManagerOnDisplayInfo_007, TestSi rect.width = 10; rect.height = 10; windowInfo.pointerHotAreas.push_back(rect); - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); + displayGroupInfoRef.windowsInfo.push_back(windowInfo); inputWindowsManager->lastPointerEvent_ = PointerEvent::Create(); ASSERT_NE(inputWindowsManager->lastPointerEvent_, nullptr); inputWindowsManager->lastPointerEvent_->SetPointerAction(PointerEvent::POINTER_ACTION_BUTTON_UP); @@ -352,8 +392,8 @@ HWTEST_F(InputWindowsManagerTest, PointerDrawingManagerOnDisplayInfo_007, TestSi inputWindowsManager->dragFlag_ = true; DisplayGroupInfo displayGroupInfo; EXPECT_NO_FATAL_FAILURE(inputWindowsManager->PointerDrawingManagerOnDisplayInfo(displayGroupInfo)); - inputWindowsManager->displayGroupInfo_.displaysInfo.clear(); - inputWindowsManager->displayGroupInfo_.windowsInfo.clear(); + displayGroupInfoRef.displaysInfo.clear(); + displayGroupInfoRef.windowsInfo.clear(); inputWindowsManager->lastPointerEvent_.reset(); inputWindowsManager->lastPointerEvent_ = nullptr; inputWindowsManager->isDragBorder_ = false; @@ -385,12 +425,17 @@ HWTEST_F(InputWindowsManagerTest, SendPointerEvent_001, TestSize.Level1) int32_t pointerAction = PointerEvent::POINTER_ACTION_UNKNOWN; DisplayInfo displayInfo; displayInfo.id = 10; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); inputWindowsManager->extraData_.appended = true; inputWindowsManager->extraData_.sourceType = PointerEvent::SOURCE_TYPE_MOUSE; EXPECT_NO_FATAL_FAILURE(inputWindowsManager->SendPointerEvent(pointerAction)); inputWindowsManager->udsServer_ = nullptr; - inputWindowsManager->displayGroupInfo_.displaysInfo.clear(); + displayGroupInfoRef.displaysInfo.clear(); inputWindowsManager->extraData_.appended = false; inputWindowsManager->extraData_.sourceType = -1; } @@ -419,12 +464,17 @@ HWTEST_F(InputWindowsManagerTest, SendPointerEvent_002, TestSize.Level1) int32_t pointerAction = PointerEvent::POINTER_ACTION_ENTER_WINDOW ; DisplayInfo displayInfo; displayInfo.id = 10; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); inputWindowsManager->extraData_.appended = false; inputWindowsManager->extraData_.sourceType = PointerEvent::SOURCE_TYPE_MOUSE; EXPECT_NO_FATAL_FAILURE(inputWindowsManager->SendPointerEvent(pointerAction)); inputWindowsManager->udsServer_ = nullptr; - inputWindowsManager->displayGroupInfo_.displaysInfo.clear(); + displayGroupInfoRef.displaysInfo.clear(); inputWindowsManager->extraData_.sourceType = -1; } @@ -452,12 +502,17 @@ HWTEST_F(InputWindowsManagerTest, SendPointerEvent_003, TestSize.Level1) int32_t pointerAction = PointerEvent::POINTER_ACTION_UNKNOWN; DisplayInfo displayInfo; displayInfo.id = 10; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); inputWindowsManager->extraData_.appended = false; inputWindowsManager->extraData_.sourceType = PointerEvent::SOURCE_TYPE_MOUSE; EXPECT_NO_FATAL_FAILURE(inputWindowsManager->SendPointerEvent(pointerAction)); inputWindowsManager->udsServer_ = nullptr; - inputWindowsManager->displayGroupInfo_.displaysInfo.clear(); + displayGroupInfoRef.displaysInfo.clear(); inputWindowsManager->extraData_.sourceType = -1; } @@ -509,13 +564,18 @@ HWTEST_F(InputWindowsManagerTest, SendPointerEvent_005, TestSize.Level1) int32_t pointerAction = PointerEvent::POINTER_ACTION_UNKNOWN; DisplayInfo displayInfo; displayInfo.id = 10; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); inputWindowsManager->extraData_.appended = true; inputWindowsManager->extraData_.sourceType = PointerEvent::SOURCE_TYPE_MOUSE; EXPECT_NO_FATAL_FAILURE(inputWindowsManager->SendPointerEvent(pointerAction)); inputWindowsManager->udsServer_ = nullptr; inputWindowsManager->extraData_.appended = false; - inputWindowsManager->displayGroupInfo_.displaysInfo.clear(); + displayGroupInfoRef.displaysInfo.clear(); inputWindowsManager->extraData_.sourceType = -1; } @@ -563,12 +623,17 @@ HWTEST_F(InputWindowsManagerTest, TransformTipPoint_001, TestSize.Level1) displayInfo.id = 0; displayInfo.uniq = "default0"; displayInfo.direction = DIRECTION90; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); libinput_event_tablet_tool event {}; PhysicalCoordinate coord; int32_t displayId; EXPECT_NO_FATAL_FAILURE(inputWindowsManager->TransformTipPoint(&event, coord, displayId)); - inputWindowsManager->displayGroupInfo_.displaysInfo.clear(); + displayGroupInfoRef.displaysInfo.clear(); } /** @@ -588,12 +653,17 @@ HWTEST_F(InputWindowsManagerTest, TransformTipPoint_002, TestSize.Level1) displayInfo.id = 0; displayInfo.uniq = "default0"; displayInfo.direction = DIRECTION270; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); libinput_event_tablet_tool event {}; PhysicalCoordinate coord; int32_t displayId; EXPECT_NO_FATAL_FAILURE(inputWindowsManager->TransformTipPoint(&event, coord, displayId)); - inputWindowsManager->displayGroupInfo_.displaysInfo.clear(); + displayGroupInfoRef.displaysInfo.clear(); } /** @@ -612,12 +682,17 @@ HWTEST_F(InputWindowsManagerTest, TransformTipPoint_003, TestSize.Level1) displayInfo.id = 0; displayInfo.uniq = "default0"; displayInfo.direction = DIRECTION0; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); libinput_event_tablet_tool event {}; PhysicalCoordinate coord; int32_t displayId; EXPECT_NO_FATAL_FAILURE(inputWindowsManager->TransformTipPoint(&event, coord, displayId)); - inputWindowsManager->displayGroupInfo_.displaysInfo.clear(); + displayGroupInfoRef.displaysInfo.clear(); } /** @@ -921,12 +996,17 @@ HWTEST_F(InputWindowsManagerTest, CalculateTipPoint_002, TestSize.Level1) displayInfo.id = 0; displayInfo.uniq = "default0"; displayInfo.direction = DIRECTION0; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); libinput_event_tablet_tool event {}; PhysicalCoordinate coord; int32_t displayId; EXPECT_NO_FATAL_FAILURE(inputWindowsManager->CalculateTipPoint(&event, displayId, coord)); - inputWindowsManager->displayGroupInfo_.displaysInfo.clear(); + displayGroupInfoRef.displaysInfo.clear(); } /** @@ -968,13 +1048,18 @@ HWTEST_F(InputWindowsManagerTest, UpdateMouseTarget_001, TestSize.Level1) DisplayInfo displayInfo; displayInfo.id = 0; displayInfo.displayDirection = DIRECTION0; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); std::shared_ptr pointerEvent = PointerEvent::Create(); ASSERT_NE(pointerEvent, nullptr); PointerEvent::PointerItem item; pointerEvent->AddPointerItem(item); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->UpdateMouseTarget(pointerEvent)); - inputWindowsManager->displayGroupInfo_.displaysInfo.clear(); + displayGroupInfoRef.displaysInfo.clear(); } /** @@ -992,14 +1077,19 @@ HWTEST_F(InputWindowsManagerTest, UpdateMouseTarget_002, TestSize.Level1) DisplayInfo displayInfo; displayInfo.id = 0; displayInfo.displayDirection = DIRECTION0; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); std::shared_ptr pointerEvent = PointerEvent::Create(); ASSERT_NE(pointerEvent, nullptr); PointerEvent::PointerItem item; pointerEvent->AddPointerItem(item); pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_BUTTON_DOWN); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->UpdateMouseTarget(pointerEvent)); - inputWindowsManager->displayGroupInfo_.displaysInfo.clear(); + displayGroupInfoRef.displaysInfo.clear(); } /** @@ -1018,14 +1108,19 @@ HWTEST_F(InputWindowsManagerTest, UpdateMouseTarget_003, TestSize.Level1) DisplayInfo displayInfo; displayInfo.id = 0; displayInfo.displayDirection = DIRECTION0; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); std::shared_ptr pointerEvent = PointerEvent::Create(); ASSERT_NE(pointerEvent, nullptr); PointerEvent::PointerItem item; pointerEvent->AddPointerItem(item); pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_BUTTON_DOWN); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->UpdateMouseTarget(pointerEvent)); - inputWindowsManager->displayGroupInfo_.displaysInfo.clear(); + displayGroupInfoRef.displaysInfo.clear(); inputWindowsManager->mouseDownInfo_.id = -1; } @@ -1049,14 +1144,19 @@ HWTEST_F(InputWindowsManagerTest, UpdateMouseTarget_004, TestSize.Level1) DisplayInfo displayInfo; displayInfo.id = 0; displayInfo.displayDirection = DIRECTION0; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); std::shared_ptr pointerEvent = PointerEvent::Create(); ASSERT_NE(pointerEvent, nullptr); PointerEvent::PointerItem item; pointerEvent->AddPointerItem(item); pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_AXIS_UPDATE); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->UpdateMouseTarget(pointerEvent)); - inputWindowsManager->displayGroupInfo_.displaysInfo.clear(); + displayGroupInfoRef.displaysInfo.clear(); inputWindowsManager->mouseDownInfo_.id = -1; inputWindowsManager->udsServer_ = nullptr; } @@ -1077,26 +1177,31 @@ HWTEST_F(InputWindowsManagerTest, UpdateMouseTarget_005, TestSize.Level1) WindowInfo windowInfo; windowInfo.id = -1; windowInfo.pid = 11; - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo); UDSServer udsServer; inputWindowsManager->udsServer_ = &udsServer; inputWindowsManager->mouseDownInfo_.id = 1; - inputWindowsManager->displayGroupInfo_.focusWindowId = 1; + displayGroupInfoRef.focusWindowId = 1; DisplayInfo displayInfo; displayInfo.id = 0; displayInfo.displayDirection = DIRECTION0; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + displayGroupInfoRef.displaysInfo.push_back(displayInfo); std::shared_ptr pointerEvent = PointerEvent::Create(); ASSERT_NE(pointerEvent, nullptr); PointerEvent::PointerItem item; pointerEvent->AddPointerItem(item); pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_AXIS_UPDATE); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->UpdateMouseTarget(pointerEvent)); - inputWindowsManager->displayGroupInfo_.displaysInfo.clear(); - inputWindowsManager->displayGroupInfo_.focusWindowId = -1; + displayGroupInfoRef.displaysInfo.clear(); + displayGroupInfoRef.focusWindowId = -1; inputWindowsManager->mouseDownInfo_.id = -1; inputWindowsManager->udsServer_ = nullptr; - inputWindowsManager->displayGroupInfo_.windowsInfo.clear(); + displayGroupInfoRef.windowsInfo.clear(); } /** @@ -1117,25 +1222,30 @@ HWTEST_F(InputWindowsManagerTest, UpdateMouseTarget_006, TestSize.Level1) WindowInfo windowInfo; windowInfo.id = -1; windowInfo.pid = 11; - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo); UDSServer udsServer; inputWindowsManager->udsServer_ = &udsServer; inputWindowsManager->mouseDownInfo_.id = 1; - inputWindowsManager->displayGroupInfo_.focusWindowId = -1; + displayGroupInfoRef.focusWindowId = -1; DisplayInfo displayInfo; displayInfo.id = 0; displayInfo.displayDirection = DIRECTION0; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + displayGroupInfoRef.displaysInfo.push_back(displayInfo); std::shared_ptr pointerEvent = PointerEvent::Create(); ASSERT_NE(pointerEvent, nullptr); PointerEvent::PointerItem item; pointerEvent->AddPointerItem(item); pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_AXIS_UPDATE); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->UpdateMouseTarget(pointerEvent)); - inputWindowsManager->displayGroupInfo_.displaysInfo.clear(); + displayGroupInfoRef.displaysInfo.clear(); inputWindowsManager->mouseDownInfo_.id = -1; inputWindowsManager->udsServer_ = nullptr; - inputWindowsManager->displayGroupInfo_.windowsInfo.clear(); + displayGroupInfoRef.windowsInfo.clear(); } /** @@ -1156,24 +1266,29 @@ HWTEST_F(InputWindowsManagerTest, UpdateMouseTarget_007, TestSize.Level1) WindowInfo windowInfo; windowInfo.id = -1; windowInfo.pid = 11; - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo); UDSServer udsServer; inputWindowsManager->udsServer_ = &udsServer; inputWindowsManager->mouseDownInfo_.id = 1; DisplayInfo displayInfo; displayInfo.id = 0; displayInfo.displayDirection = DIRECTION0; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + displayGroupInfoRef.displaysInfo.push_back(displayInfo); std::shared_ptr pointerEvent = PointerEvent::Create(); ASSERT_NE(pointerEvent, nullptr); PointerEvent::PointerItem item; pointerEvent->AddPointerItem(item); pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_AXIS_UPDATE); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->UpdateMouseTarget(pointerEvent)); - inputWindowsManager->displayGroupInfo_.displaysInfo.clear(); + displayGroupInfoRef.displaysInfo.clear(); inputWindowsManager->mouseDownInfo_.id = -1; inputWindowsManager->udsServer_ = nullptr; - inputWindowsManager->displayGroupInfo_.windowsInfo.clear(); + displayGroupInfoRef.windowsInfo.clear(); } /** @@ -1194,24 +1309,29 @@ HWTEST_F(InputWindowsManagerTest, UpdateMouseTarget_008, TestSize.Level1) WindowInfo windowInfo; windowInfo.id = -1; windowInfo.pid = 11; - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo); UDSServer udsServer; inputWindowsManager->udsServer_ = &udsServer; inputWindowsManager->mouseDownInfo_.id = 1; DisplayInfo displayInfo; displayInfo.id = 0; displayInfo.displayDirection = DIRECTION0; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + displayGroupInfoRef.displaysInfo.push_back(displayInfo); std::shared_ptr pointerEvent = PointerEvent::Create(); ASSERT_NE(pointerEvent, nullptr); PointerEvent::PointerItem item; pointerEvent->AddPointerItem(item); pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_AXIS_UPDATE); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->UpdateMouseTarget(pointerEvent)); - inputWindowsManager->displayGroupInfo_.displaysInfo.clear(); + displayGroupInfoRef.displaysInfo.clear(); inputWindowsManager->mouseDownInfo_.id = -1; inputWindowsManager->udsServer_ = nullptr; - inputWindowsManager->displayGroupInfo_.windowsInfo.clear(); + displayGroupInfoRef.windowsInfo.clear(); } /** @@ -1232,27 +1352,32 @@ HWTEST_F(InputWindowsManagerTest, UpdateMouseTarget_009, TestSize.Level1) WindowInfo windowInfo; windowInfo.id = -1; windowInfo.pid = 11; - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo); UDSServer udsServer; inputWindowsManager->udsServer_ = &udsServer; inputWindowsManager->mouseDownInfo_.id = 1; inputWindowsManager->isUiExtension_ = true; - inputWindowsManager->displayGroupInfo_.focusWindowId = -1; + displayGroupInfoRef.focusWindowId = -1; DisplayInfo displayInfo; displayInfo.id = 0; displayInfo.displayDirection = DIRECTION0; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + displayGroupInfoRef.displaysInfo.push_back(displayInfo); std::shared_ptr pointerEvent = PointerEvent::Create(); ASSERT_NE(pointerEvent, nullptr); PointerEvent::PointerItem item; pointerEvent->AddPointerItem(item); pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_AXIS_UPDATE); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->UpdateMouseTarget(pointerEvent)); - inputWindowsManager->displayGroupInfo_.displaysInfo.clear(); + displayGroupInfoRef.displaysInfo.clear(); inputWindowsManager->isUiExtension_ = false; inputWindowsManager->mouseDownInfo_.id = -1; inputWindowsManager->udsServer_ = nullptr; - inputWindowsManager->displayGroupInfo_.windowsInfo.clear(); + displayGroupInfoRef.windowsInfo.clear(); } /** @@ -1272,31 +1397,36 @@ HWTEST_F(InputWindowsManagerTest, UpdateMouseTarget_010, TestSize.Level1) WindowInfo windowInfo; windowInfo.id = -1; windowInfo.pid = 11; - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo); UDSServer udsServer; inputWindowsManager->udsServer_ = &udsServer; inputWindowsManager->mouseDownInfo_.id = 1; inputWindowsManager->dragFlag_ = true; inputWindowsManager->isDragBorder_ = true; inputWindowsManager->isUiExtension_ = true; - inputWindowsManager->displayGroupInfo_.focusWindowId = -1; + displayGroupInfoRef.focusWindowId = -1; DisplayInfo displayInfo; displayInfo.id = 0; displayInfo.displayDirection = DIRECTION0; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + displayGroupInfoRef.displaysInfo.push_back(displayInfo); std::shared_ptr pointerEvent = PointerEvent::Create(); ASSERT_NE(pointerEvent, nullptr); PointerEvent::PointerItem item; pointerEvent->AddPointerItem(item); pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_BUTTON_DOWN); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->UpdateMouseTarget(pointerEvent)); - inputWindowsManager->displayGroupInfo_.displaysInfo.clear(); + displayGroupInfoRef.displaysInfo.clear(); inputWindowsManager->dragFlag_ = false; inputWindowsManager->isDragBorder_ = false; inputWindowsManager->isUiExtension_ = false; inputWindowsManager->mouseDownInfo_.id = -1; inputWindowsManager->udsServer_ = nullptr; - inputWindowsManager->displayGroupInfo_.windowsInfo.clear(); + displayGroupInfoRef.windowsInfo.clear(); } /** @@ -1316,31 +1446,36 @@ HWTEST_F(InputWindowsManagerTest, UpdateMouseTarget_011, TestSize.Level1) WindowInfo windowInfo; windowInfo.id = -1; windowInfo.pid = 11; - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo); UDSServer udsServer; inputWindowsManager->udsServer_ = &udsServer; inputWindowsManager->mouseDownInfo_.id = 1; inputWindowsManager->dragFlag_ = true; inputWindowsManager->isDragBorder_ = true; inputWindowsManager->isUiExtension_ = false; - inputWindowsManager->displayGroupInfo_.focusWindowId = -1; + displayGroupInfoRef.focusWindowId = -1; DisplayInfo displayInfo; displayInfo.id = 0; displayInfo.displayDirection = DIRECTION90; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + displayGroupInfoRef.displaysInfo.push_back(displayInfo); std::shared_ptr pointerEvent = PointerEvent::Create(); ASSERT_NE(pointerEvent, nullptr); PointerEvent::PointerItem item; pointerEvent->AddPointerItem(item); pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_BUTTON_UP); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->UpdateMouseTarget(pointerEvent)); - inputWindowsManager->displayGroupInfo_.displaysInfo.clear(); + displayGroupInfoRef.displaysInfo.clear(); inputWindowsManager->dragFlag_ = false; inputWindowsManager->isDragBorder_ = false; inputWindowsManager->isUiExtension_ = false; inputWindowsManager->mouseDownInfo_.id = -1; inputWindowsManager->udsServer_ = nullptr; - inputWindowsManager->displayGroupInfo_.windowsInfo.clear(); + displayGroupInfoRef.windowsInfo.clear(); } /** @@ -1361,14 +1496,19 @@ HWTEST_F(InputWindowsManagerTest, UpdateMouseTarget_012, TestSize.Level1) windowInfo.id = -1; windowInfo.pid = 11; windowInfo.transform.push_back(1.1); - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo); UDSServer udsServer; inputWindowsManager->udsServer_ = &udsServer; inputWindowsManager->mouseDownInfo_.id = 1; inputWindowsManager->dragFlag_ = true; inputWindowsManager->isDragBorder_ = true; inputWindowsManager->isUiExtension_ = false; - inputWindowsManager->displayGroupInfo_.focusWindowId = -1; + displayGroupInfoRef.focusWindowId = -1; inputWindowsManager->captureModeInfo_.isCaptureMode = true; inputWindowsManager->captureModeInfo_.windowId = 1; inputWindowsManager->extraData_.appended = true; @@ -1376,14 +1516,14 @@ HWTEST_F(InputWindowsManagerTest, UpdateMouseTarget_012, TestSize.Level1) DisplayInfo displayInfo; displayInfo.id = 0; displayInfo.displayDirection = DIRECTION90; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + displayGroupInfoRef.displaysInfo.push_back(displayInfo); std::shared_ptr pointerEvent = PointerEvent::Create(); ASSERT_NE(pointerEvent, nullptr); PointerEvent::PointerItem item; pointerEvent->AddPointerItem(item); pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_BUTTON_UP); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->UpdateMouseTarget(pointerEvent)); - inputWindowsManager->displayGroupInfo_.displaysInfo.clear(); + displayGroupInfoRef.displaysInfo.clear(); inputWindowsManager->dragFlag_ = false; inputWindowsManager->isDragBorder_ = false; inputWindowsManager->isUiExtension_ = false; @@ -1391,7 +1531,7 @@ HWTEST_F(InputWindowsManagerTest, UpdateMouseTarget_012, TestSize.Level1) inputWindowsManager->captureModeInfo_.windowId = -1; inputWindowsManager->mouseDownInfo_.id = -1; inputWindowsManager->udsServer_ = nullptr; - inputWindowsManager->displayGroupInfo_.windowsInfo.clear(); + displayGroupInfoRef.windowsInfo.clear(); inputWindowsManager->extraData_.appended = false; inputWindowsManager->extraData_.sourceType = -1; } @@ -1414,14 +1554,19 @@ HWTEST_F(InputWindowsManagerTest, UpdateMouseTarget_013, TestSize.Level1) windowInfo.id = -1; windowInfo.pid = 11; windowInfo.transform.push_back(1.1); - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo); UDSServer udsServer; inputWindowsManager->udsServer_ = &udsServer; inputWindowsManager->mouseDownInfo_.id = 1; inputWindowsManager->dragFlag_ = true; inputWindowsManager->isDragBorder_ = true; inputWindowsManager->isUiExtension_ = false; - inputWindowsManager->displayGroupInfo_.focusWindowId = -1; + displayGroupInfoRef.focusWindowId = -1; inputWindowsManager->captureModeInfo_.isCaptureMode = true; inputWindowsManager->captureModeInfo_.windowId = -1; inputWindowsManager->extraData_.appended = true; @@ -1429,21 +1574,21 @@ HWTEST_F(InputWindowsManagerTest, UpdateMouseTarget_013, TestSize.Level1) DisplayInfo displayInfo; displayInfo.id = 0; displayInfo.displayDirection = DIRECTION90; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + displayGroupInfoRef.displaysInfo.push_back(displayInfo); std::shared_ptr pointerEvent = PointerEvent::Create(); ASSERT_NE(pointerEvent, nullptr); PointerEvent::PointerItem item; pointerEvent->AddPointerItem(item); pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_PULL_UP); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->UpdateMouseTarget(pointerEvent)); - inputWindowsManager->displayGroupInfo_.displaysInfo.clear(); + displayGroupInfoRef.displaysInfo.clear(); inputWindowsManager->dragFlag_ = false; inputWindowsManager->isDragBorder_ = false; inputWindowsManager->isUiExtension_ = false; inputWindowsManager->captureModeInfo_.isCaptureMode = false; inputWindowsManager->mouseDownInfo_.id = -1; inputWindowsManager->udsServer_ = nullptr; - inputWindowsManager->displayGroupInfo_.windowsInfo.clear(); + displayGroupInfoRef.windowsInfo.clear(); inputWindowsManager->extraData_.appended = false; inputWindowsManager->extraData_.sourceType = -1; } @@ -1466,14 +1611,19 @@ HWTEST_F(InputWindowsManagerTest, UpdateMouseTarget_014, TestSize.Level1) windowInfo.id = -1; windowInfo.pid = 11; windowInfo.transform.push_back(1.1); - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo); UDSServer udsServer; inputWindowsManager->udsServer_ = &udsServer; inputWindowsManager->mouseDownInfo_.id = 1; inputWindowsManager->dragFlag_ = true; inputWindowsManager->isDragBorder_ = true; inputWindowsManager->isUiExtension_ = false; - inputWindowsManager->displayGroupInfo_.focusWindowId = -1; + displayGroupInfoRef.focusWindowId = -1; inputWindowsManager->captureModeInfo_.isCaptureMode = true; inputWindowsManager->captureModeInfo_.windowId = -1; inputWindowsManager->extraData_.appended = false; @@ -1481,21 +1631,21 @@ HWTEST_F(InputWindowsManagerTest, UpdateMouseTarget_014, TestSize.Level1) DisplayInfo displayInfo; displayInfo.id = 0; displayInfo.displayDirection = DIRECTION90; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + displayGroupInfoRef.displaysInfo.push_back(displayInfo); std::shared_ptr pointerEvent = PointerEvent::Create(); ASSERT_NE(pointerEvent, nullptr); PointerEvent::PointerItem item; pointerEvent->AddPointerItem(item); pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_PULL_UP); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->UpdateMouseTarget(pointerEvent)); - inputWindowsManager->displayGroupInfo_.displaysInfo.clear(); + displayGroupInfoRef.displaysInfo.clear(); inputWindowsManager->dragFlag_ = false; inputWindowsManager->isDragBorder_ = false; inputWindowsManager->isUiExtension_ = false; inputWindowsManager->captureModeInfo_.isCaptureMode = false; inputWindowsManager->mouseDownInfo_.id = -1; inputWindowsManager->udsServer_ = nullptr; - inputWindowsManager->displayGroupInfo_.windowsInfo.clear(); + displayGroupInfoRef.windowsInfo.clear(); } /** @@ -1593,12 +1743,17 @@ HWTEST_F(InputWindowsManagerTest, DispatchTouch_001, TestSize.Level1) windowInfo.id = 1; windowInfo.pid = 11; windowInfo.flags = 1; - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo); int32_t pointerAction = PointerEvent::POINTER_ACTION_PULL_IN_WINDOW; EXPECT_NO_FATAL_FAILURE(inputWindowsManager->DispatchTouch(pointerAction)); inputWindowsManager->udsServer_ = nullptr; inputWindowsManager->lastTouchEvent_ = nullptr; - inputWindowsManager->displayGroupInfo_.windowsInfo.clear(); + displayGroupInfoRef.windowsInfo.clear(); } /** @@ -1628,14 +1783,19 @@ HWTEST_F(InputWindowsManagerTest, DispatchTouch_002, TestSize.Level1) rect.width = 10; rect.height = 10; windowInfo.defaultHotAreas.push_back(rect); - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo); inputWindowsManager->lastTouchLogicX_ = 8; inputWindowsManager->lastTouchLogicY_ = 8; int32_t pointerAction = PointerEvent::POINTER_ACTION_PULL_IN_WINDOW; EXPECT_NO_FATAL_FAILURE(inputWindowsManager->DispatchTouch(pointerAction)); inputWindowsManager->udsServer_ = nullptr; inputWindowsManager->lastTouchEvent_ = nullptr; - inputWindowsManager->displayGroupInfo_.windowsInfo.clear(); + displayGroupInfoRef.windowsInfo.clear(); inputWindowsManager->lastTouchLogicX_ = -1; inputWindowsManager->lastTouchLogicY_ = -1; inputWindowsManager->lastTouchWindowInfo_.id = -1; @@ -1680,14 +1840,19 @@ HWTEST_F(InputWindowsManagerTest, DispatchTouch_003, TestSize.Level1) rect.width = 10; rect.height = 10; windowInfo.defaultHotAreas.push_back(rect); - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo); inputWindowsManager->lastTouchLogicX_ = 8; inputWindowsManager->lastTouchLogicY_ = 8; int32_t pointerAction = PointerEvent::POINTER_ACTION_PULL_IN_WINDOW; EXPECT_NO_FATAL_FAILURE(inputWindowsManager->DispatchTouch(pointerAction)); inputWindowsManager->udsServer_ = nullptr; inputWindowsManager->lastTouchEvent_ = nullptr; - inputWindowsManager->displayGroupInfo_.windowsInfo.clear(); + displayGroupInfoRef.windowsInfo.clear(); inputWindowsManager->lastTouchLogicX_ = -1; inputWindowsManager->lastTouchLogicY_ = -1; } @@ -1727,14 +1892,19 @@ HWTEST_F(InputWindowsManagerTest, DispatchTouch_004, TestSize.Level1) rect.width = 10; rect.height = 10; windowInfo.defaultHotAreas.push_back(rect); - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo); inputWindowsManager->lastTouchLogicX_ = 8; inputWindowsManager->lastTouchLogicY_ = 8; int32_t pointerAction = PointerEvent::POINTER_ACTION_PULL_OUT_WINDOW; EXPECT_NO_FATAL_FAILURE(inputWindowsManager->DispatchTouch(pointerAction)); inputWindowsManager->udsServer_ = nullptr; inputWindowsManager->lastTouchEvent_ = nullptr; - inputWindowsManager->displayGroupInfo_.windowsInfo.clear(); + displayGroupInfoRef.windowsInfo.clear(); inputWindowsManager->lastTouchLogicX_ = -1; inputWindowsManager->lastTouchLogicY_ = -1; } @@ -1774,14 +1944,19 @@ HWTEST_F(InputWindowsManagerTest, DispatchTouch_005, TestSize.Level1) rect.width = 10; rect.height = 10; windowInfo.defaultHotAreas.push_back(rect); - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo); inputWindowsManager->lastTouchLogicX_ = 8; inputWindowsManager->lastTouchLogicY_ = 8; int32_t pointerAction = PointerEvent::POINTER_ACTION_PULL_OUT_WINDOW; EXPECT_NO_FATAL_FAILURE(inputWindowsManager->DispatchTouch(pointerAction)); inputWindowsManager->udsServer_ = nullptr; inputWindowsManager->lastTouchEvent_ = nullptr; - inputWindowsManager->displayGroupInfo_.windowsInfo.clear(); + displayGroupInfoRef.windowsInfo.clear(); inputWindowsManager->lastTouchLogicX_ = -1; inputWindowsManager->lastTouchLogicY_ = -1; } @@ -2485,7 +2660,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_IsNeedRefreshLayer_006 displayInfo.id = 2; displayInfo.x = 2; displayInfo.y = 3; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); ret = inputWindowsManager->IsNeedRefreshLayer(windowId); EXPECT_FALSE(ret); windowId = 5; @@ -2715,22 +2895,27 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_TouchPointToDisplayPoi DisplayInfo displayInfo; displayInfo.width = -1; displayInfo.height = 3; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->TouchPointToDisplayPoint (deviceId, &touch, touchInfo, physicalDisplayId)); displayInfo.width = 3; displayInfo.height = -1; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + displayGroupInfoRef.displaysInfo.push_back(displayInfo); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->TouchPointToDisplayPoint (deviceId, &touch, touchInfo, physicalDisplayId)); displayInfo.width = -5; displayInfo.height = -6; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + displayGroupInfoRef.displaysInfo.push_back(displayInfo); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->TouchPointToDisplayPoint (deviceId, &touch, touchInfo, physicalDisplayId)); displayInfo.width = 3; displayInfo.height = 2; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + displayGroupInfoRef.displaysInfo.push_back(displayInfo); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->TouchPointToDisplayPoint (deviceId, &touch, touchInfo, physicalDisplayId)); } @@ -2779,7 +2964,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_FoldScreenRotation_001 pointerEvent->SetPointerId(1); pointerEvent->SetTargetDisplayId(10); pointerEvent->SetSourceType(PointerEvent::SOURCE_TYPE_TOUCHSCREEN); - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); inputWindowsManager->touchItemDownInfos_.insert(std::make_pair(1, winInfoEx)); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->FoldScreenRotation(pointerEvent)); } @@ -2805,7 +2995,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_FoldScreenRotation_002 pointerEvent->SetPointerId(1); pointerEvent->SetTargetDisplayId(10); pointerEvent->SetSourceType(PointerEvent::SOURCE_TYPE_UNKNOWN); - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); inputWindowsManager->touchItemDownInfos_.insert(std::make_pair(1, winInfoEx)); inputWindowsManager->lastDirection_ = std::make_pair(10, static_cast(-1)); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->FoldScreenRotation(pointerEvent)); @@ -2834,7 +3029,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_FoldScreenRotation_003 pointerEvent->SetTargetDisplayId(10); pointerEvent->SetSourceType(PointerEvent::SOURCE_TYPE_MOUSE); inputWindowsManager.lastDirection_ = std::make_pair(10, DIRECTION0); - inputWindowsManager.displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); EXPECT_NO_FATAL_FAILURE(inputWindowsManager.FoldScreenRotation(pointerEvent)); } @@ -2862,7 +3062,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_FoldScreenRotation_004 pointerEvent->SetTargetDisplayId(10); pointerEvent->SetSourceType(PointerEvent::SOURCE_TYPE_MOUSE); inputWindowsManager.lastDirection_ = std::make_pair(10, DIRECTION0); - inputWindowsManager.displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); EXPECT_NO_FATAL_FAILURE(inputWindowsManager.FoldScreenRotation(pointerEvent)); } @@ -2891,7 +3096,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_FoldScreenRotation_005 pointerEvent->SetSourceType(PointerEvent::SOURCE_TYPE_MOUSE); pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_DOWN); inputWindowsManager.lastDirection_ = std::make_pair(10, DIRECTION0); - inputWindowsManager.displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); EXPECT_NO_FATAL_FAILURE(inputWindowsManager.FoldScreenRotation(pointerEvent)); } @@ -2922,7 +3132,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_FoldScreenRotation_006 pointerEvent->SetSourceType(PointerEvent::SOURCE_TYPE_TOUCHSCREEN); pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_MOVE); inputWindowsManager.lastDirection_ = std::make_pair(10, DIRECTION0); - inputWindowsManager.displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); inputWindowsManager.touchItemDownInfos_.insert(std::make_pair(1, winInfoEx)); EXPECT_NO_FATAL_FAILURE(inputWindowsManager.FoldScreenRotation(pointerEvent)); } @@ -2954,7 +3169,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_FoldScreenRotation_007 pointerEvent->SetSourceType(PointerEvent::SOURCE_TYPE_UNKNOWN); pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_MOVE); inputWindowsManager.lastDirection_ = std::make_pair(10, DIRECTION0); - inputWindowsManager.displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); inputWindowsManager.touchItemDownInfos_.insert(std::make_pair(1, winInfoEx)); EXPECT_NO_FATAL_FAILURE(inputWindowsManager.FoldScreenRotation(pointerEvent)); } @@ -2986,7 +3206,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_FoldScreenRotation_008 pointerEvent->SetSourceType(PointerEvent::SOURCE_TYPE_UNKNOWN); pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_MOVE); inputWindowsManager.lastDirection_ = std::make_pair(10, DIRECTION0); - inputWindowsManager.displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); inputWindowsManager.touchItemDownInfos_.insert(std::make_pair(1, winInfoEx)); EXPECT_NO_FATAL_FAILURE(inputWindowsManager.FoldScreenRotation(pointerEvent)); } @@ -3014,7 +3239,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_FoldScreenRotation_009 pointerEvent->SetTargetDisplayId(10); pointerEvent->SetSourceType(PointerEvent::SOURCE_TYPE_UNKNOWN); inputWindowsManager.lastDirection_ = std::make_pair(10, DIRECTION90); - inputWindowsManager.displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); EXPECT_NO_FATAL_FAILURE(inputWindowsManager.FoldScreenRotation(pointerEvent)); } @@ -3034,7 +3264,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_RotateScreen, TestSize info.height = 500; coord.x = 200; info.direction = DIRECTION0; - inputWindowsManager.cursorPos_.direction = DIRECTION90; + CursorPosition cursorPosRef; + auto it = inputWindowsManager.cursorPosMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager.cursorPosMap_.end()) { + cursorPosRef = it->second; + } + cursorPosRef.direction = DIRECTION90; EXPECT_NO_FATAL_FAILURE(inputWindowsManager.RotateScreen(info, coord)); } @@ -3054,7 +3289,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_RotateScreen_001, Test info.width = 500; coord.y = 200; info.direction = DIRECTION0; - inputWindowsManager.cursorPos_.direction = DIRECTION270; + CursorPosition cursorPosRef; + auto it = inputWindowsManager.cursorPosMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager.cursorPosMap_.end()) { + cursorPosRef = it->second; + } + cursorPosRef.direction = DIRECTION270; EXPECT_NO_FATAL_FAILURE(inputWindowsManager.RotateScreen(info, coord)); } @@ -3089,19 +3329,24 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_RotateScreen_003, Test info.direction = DIRECTION0; info.displayDirection = DIRECTION0; - inputWindowsManager.cursorPos_.displayDirection = DIRECTION270; + CursorPosition cursorPosRef; + auto it = inputWindowsManager.cursorPosMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager.cursorPosMap_.end()) { + cursorPosRef = it->second; + } + cursorPosRef.direction = DIRECTION270; EXPECT_NO_FATAL_FAILURE(inputWindowsManager.RotateScreen(info, coord)); info.displayDirection = DIRECTION0; - inputWindowsManager.cursorPos_.displayDirection = DIRECTION0; + cursorPosRef.displayDirection = DIRECTION0; info.direction = DIRECTION0; - inputWindowsManager.cursorPos_.direction = DIRECTION270; + cursorPosRef.direction = DIRECTION270; EXPECT_NO_FATAL_FAILURE(inputWindowsManager.RotateScreen(info, coord)); info.displayDirection = DIRECTION0; - inputWindowsManager.cursorPos_.displayDirection = DIRECTION0; + cursorPosRef.displayDirection = DIRECTION0; info.direction = DIRECTION0; - inputWindowsManager.cursorPos_.direction = DIRECTION0; + cursorPosRef.direction = DIRECTION0; EXPECT_NO_FATAL_FAILURE(inputWindowsManager.RotateScreen(info, coord)); } @@ -3119,9 +3364,14 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_RotateScreen_004, Test InputWindowsManager inputWindowsManager; info.displayDirection = DIRECTION0; - inputWindowsManager.cursorPos_.displayDirection = DIRECTION0; + CursorPosition cursorPosRef; + auto it = inputWindowsManager.cursorPosMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager.cursorPosMap_.end()) { + cursorPosRef = it->second; + } + cursorPosRef.displayDirection = DIRECTION0; info.direction = DIRECTION0; - inputWindowsManager.cursorPos_.direction = DIRECTION0; + cursorPosRef.direction = DIRECTION0; EXPECT_NO_FATAL_FAILURE(inputWindowsManager.RotateScreen(info, coord)); } @@ -3140,9 +3390,14 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_RotateScreen_005, Test InputWindowsManager inputWindowsManager; info.displayDirection = DIRECTION0; - inputWindowsManager.cursorPos_.displayDirection = DIRECTION0; + CursorPosition cursorPosRef; + auto it = inputWindowsManager.cursorPosMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager.cursorPosMap_.end()) { + cursorPosRef = it->second; + } + cursorPosRef.displayDirection = DIRECTION0; info.direction = DIRECTION90; - inputWindowsManager.cursorPos_.direction = DIRECTION90; + cursorPosRef.direction = DIRECTION90; EXPECT_NO_FATAL_FAILURE(inputWindowsManager.RotateScreen(info, coord)); } @@ -3161,7 +3416,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_RotateScreen_006, Test InputWindowsManager inputWindowsManager; info.displayDirection = DIRECTION0; - inputWindowsManager.cursorPos_.displayDirection = DIRECTION0; + CursorPosition cursorPosRef; + auto it = inputWindowsManager.cursorPosMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager.cursorPosMap_.end()) { + cursorPosRef = it->second; + } + cursorPosRef.displayDirection = DIRECTION0; info.direction = DIRECTION270; inputWindowsManager.cursorPos_.direction = DIRECTION270; @@ -3410,8 +3670,13 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_IsNeedRefreshLayer, Te inputWindowsManager.mouseLocation_.physicalX = 100; inputWindowsManager.mouseLocation_.physicalY = 100; winInfo.pointerHotAreas.push_back({ 100, 100, 1000, 1000 }); - inputWindowsManager.displayGroupInfo_.displaysInfo.push_back(displayInfo); - inputWindowsManager.displayGroupInfo_.windowsInfo.push_back(winInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); + displayGroupInfoRef.windowsInfo.push_back(winInfo); EXPECT_TRUE(inputWindowsManager.IsNeedRefreshLayer(windowId)); } @@ -3440,8 +3705,13 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_IsNeedRefreshLayer_007 inputWindowsManager.mouseLocation_.physicalX = 100; inputWindowsManager.mouseLocation_.physicalY = 100; winInfo.pointerHotAreas.push_back({ 100, 100, 1000, 1000 }); - inputWindowsManager.displayGroupInfo_.displaysInfo.push_back(displayInfo); - inputWindowsManager.displayGroupInfo_.windowsInfo.push_back(winInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); + displayGroupInfoRef.windowsInfo.push_back(winInfo); EXPECT_TRUE(inputWindowsManager.IsNeedRefreshLayer(windowId)); } @@ -3470,8 +3740,13 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_IsNeedRefreshLayer_008 inputWindowsManager.mouseLocation_.physicalX = 100; inputWindowsManager.mouseLocation_.physicalY = 100; winInfo.pointerHotAreas.push_back({ 100, 100, 1000, 1000 }); - inputWindowsManager.displayGroupInfo_.displaysInfo.push_back(displayInfo); - inputWindowsManager.displayGroupInfo_.windowsInfo.push_back(winInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); + displayGroupInfoRef.windowsInfo.push_back(winInfo); EXPECT_FALSE(inputWindowsManager.IsNeedRefreshLayer(windowId)); } @@ -3499,8 +3774,13 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_IsNeedRefreshLayer_009 inputWindowsManager.mouseLocation_.physicalX = 100; inputWindowsManager.mouseLocation_.physicalY = 100; winInfo.pointerHotAreas.push_back({ 100, 100, INT32_MAX, 1000 }); - inputWindowsManager.displayGroupInfo_.displaysInfo.push_back(displayInfo); - inputWindowsManager.displayGroupInfo_.windowsInfo.push_back(winInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); + displayGroupInfoRef.windowsInfo.push_back(winInfo); EXPECT_FALSE(inputWindowsManager.IsNeedRefreshLayer(windowId)); } @@ -3519,9 +3799,19 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_AdjustDisplayRotation, DisplayInfo displayInfo; displayInfo.id = 100; displayInfo.direction = DIRECTION90; - inputWindowsManager->cursorPos_.displayId = 100; - inputWindowsManager->cursorPos_.direction = DIRECTION0; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + CursorPosition cursorPosRef; + auto it = inputWindowsManager->cursorPosMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->cursorPosMap_.end()) { + cursorPosRef = it->second; + } + cursorPosRef.displayId = 100; + cursorPosRef.direction = Direction::DIRECTION0; + DisplayGroupInfo displayGroupInfoRef; + auto iter = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (iter != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = iter->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->AdjustDisplayRotation()); } @@ -3540,9 +3830,19 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_AdjustDisplayRotation_ DisplayInfo displayInfo; displayInfo.id = 100; displayInfo.direction = DIRECTION90; - inputWindowsManager->cursorPos_.displayId = 100; - inputWindowsManager->cursorPos_.direction = DIRECTION90; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + CursorPosition cursorPosRef; + auto it = inputWindowsManager->cursorPosMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->cursorPosMap_.end()) { + cursorPosRef = it->second; + } + cursorPosRef.displayId = 100; + cursorPosRef.direction = Direction::DIRECTION90; + DisplayGroupInfo displayGroupInfoRef; + auto iter = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (iter != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = iter->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->AdjustDisplayRotation()); } @@ -3580,7 +3880,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_TouchPointToDisplayPoi displayInfo.id = 100; displayInfo.uniq = "uniq"; displayInfo.width = -1; - inputWindowsManager.displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); EXPECT_FALSE(inputWindowsManager.TouchPointToDisplayPoint(deviceId, &touch, touchInfo, physicalDisplayId)); } @@ -3605,7 +3910,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_TouchPointToDisplayPoi displayInfo.uniq = "uniq"; displayInfo.width = 100; displayInfo.height = -1; - inputWindowsManager.displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); EXPECT_FALSE(inputWindowsManager.TouchPointToDisplayPoint(deviceId, &touch, touchInfo, physicalDisplayId)); } @@ -3632,7 +3942,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_TouchPointToDisplayPoi displayInfo.height = 100; displayInfo.validWidth = displayInfo.width; displayInfo.validHeight = displayInfo.height; - inputWindowsManager.displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); EXPECT_FALSE(inputWindowsManager.TouchPointToDisplayPoint(deviceId, &touch, touchInfo, physicalDisplayId)); } @@ -3972,7 +4287,12 @@ HWTEST_F(InputWindowsManagerTest, DrawTouchGraphic_004, TestSize.Level1) DisplayInfo displayInfo; displayInfo.id = 10; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); inputWindowsManager->knuckleDrawMgr_ = nullptr; inputWindowsManager->knuckleDynamicDrawingManager_ = nullptr; @@ -4036,7 +4356,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_SendUIExtentionPointer DisplayInfo displayInfo; displayInfo.id = 10; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->SendUIExtentionPointerEvent (logicalX, logicalY, windowInfo, pointerEvent)); @@ -4077,7 +4402,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_SendUIExtentionPointer DisplayInfo displayInfo; displayInfo.id = 10; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->SendUIExtentionPointerEvent (logicalX, logicalY, windowInfo, pointerEvent)); @@ -4110,7 +4440,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_SelectWindowInfo_003, windowInfo.id = 1; windowInfo.pid = 11; windowInfo.isSkipSelfWhenShowOnVirtualScreen = true; - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->SelectWindowInfo(logicalX, logicalY, pointerEvent)); } diff --git a/service/window_manager/test/input_windows_manager_one_test.cpp b/service/window_manager/test/input_windows_manager_one_test.cpp index 8aff791778940d81225917691e8895cfed665b23..14ebed343513330067a740120d4076337010a506 100644 --- a/service/window_manager/test/input_windows_manager_one_test.cpp +++ b/service/window_manager/test/input_windows_manager_one_test.cpp @@ -119,7 +119,12 @@ HWTEST_F(InputWindowsManagerOneTest, InputWindowsManagerOneTest_ScreenRotateAdju coord.x = 1; coord.y = 0; std::shared_ptr inputWindowsManager = std::make_shared(); - inputWindowsManager->cursorPos_.direction = Direction::DIRECTION0; + CursorPosition cursorPosRef; + auto it = inputWindowsManager->cursorPosMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->cursorPosMap_.end()) { + cursorPosRef = it->second; + } + cursorPosRef.direction = Direction::DIRECTION0; NiceMock mockInputWindowsManager; EXPECT_CALL(mockInputWindowsManager, IsSceneBoardEnabled) .WillOnce(Return(false)) @@ -130,13 +135,13 @@ HWTEST_F(InputWindowsManagerOneTest, InputWindowsManagerOneTest_ScreenRotateAdju coord.x = 1; coord.y = 0; info.direction = DIRECTION0; - inputWindowsManager->cursorPos_.direction = Direction::DIRECTION180; + cursorPosRef.direction = Direction::DIRECTION180; EXPECT_NO_FATAL_FAILURE(inputWindowsManager->ScreenRotateAdjustDisplayXY(info, coord)); coord.x = 1; coord.y = 0; info.direction = DIRECTION0; - inputWindowsManager->cursorPos_.direction = Direction::DIRECTION90; + cursorPosRef.direction = Direction::DIRECTION90; EXPECT_NO_FATAL_FAILURE(inputWindowsManager->ScreenRotateAdjustDisplayXY(info, coord)); } @@ -158,8 +163,13 @@ HWTEST_F(InputWindowsManagerOneTest, InputWindowsManagerOneTest_RotateScreen_001 coord.x = 1; coord.y = 0; std::shared_ptr inputWindowsManager = std::make_shared(); - inputWindowsManager->cursorPos_.direction = Direction::DIRECTION90; - inputWindowsManager->cursorPos_.displayDirection = Direction::DIRECTION90; + CursorPosition cursorPosRef; + auto it = inputWindowsManager->cursorPosMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->cursorPosMap_.end()) { + cursorPosRef = it->second; + } + cursorPosRef.direction = Direction::DIRECTION90; + cursorPosRef.displayDirection = Direction::DIRECTION90; std::shared_ptr pointerEvent = PointerEvent::Create(); ASSERT_NE(pointerEvent, nullptr); pointerEvent->SetSourceType(PointerEvent::SOURCE_TYPE_MOUSE); @@ -169,12 +179,12 @@ HWTEST_F(InputWindowsManagerOneTest, InputWindowsManagerOneTest_RotateScreen_001 coord.x = 0; coord.y = 1; - inputWindowsManager->cursorPos_.direction = Direction::DIRECTION270; + cursorPosRef.direction = Direction::DIRECTION270; EXPECT_NO_FATAL_FAILURE(inputWindowsManager->RotateScreen(info, coord)); coord.x = 0; coord.y = 1; - inputWindowsManager->cursorPos_.direction = Direction::DIRECTION180; + cursorPosRef.direction = Direction::DIRECTION180; EXPECT_NO_FATAL_FAILURE(inputWindowsManager->RotateScreen(info, coord)); } @@ -196,8 +206,13 @@ HWTEST_F(InputWindowsManagerOneTest, InputWindowsManagerOneTest_RotateScreen_002 coord.x = 1; coord.y = 0; std::shared_ptr inputWindowsManager = std::make_shared(); - inputWindowsManager->cursorPos_.direction = Direction::DIRECTION90; - inputWindowsManager->cursorPos_.displayDirection = Direction::DIRECTION90; + CursorPosition cursorPosRef; + auto it = inputWindowsManager->cursorPosMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->cursorPosMap_.end()) { + cursorPosRef = it->second; + } + cursorPosRef.direction = Direction::DIRECTION90; + cursorPosRef.displayDirection = Direction::DIRECTION90; std::shared_ptr pointerEvent = PointerEvent::Create(); ASSERT_NE(pointerEvent, nullptr); pointerEvent->SetSourceType(PointerEvent::SOURCE_TYPE_UNKNOWN); @@ -349,7 +364,12 @@ HWTEST_F(InputWindowsManagerOneTest, InputWindowsManagerOneTest_SelectWindowInfo windowInfo.id = 1; windowInfo.windowInputType = WindowInputType::TRANSMIT_ANTI_AXIS_MOVE; std::shared_ptr inputWindowsManager = std::make_shared(); - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo); inputWindowsManager->firstBtnDownWindowInfo_.first = -1; std::unique_ptr pixelMap = nullptr; inputWindowsManager->transparentWins_.insert_or_assign(windowInfo.id, std::move(pixelMap)); @@ -380,7 +400,12 @@ HWTEST_F(InputWindowsManagerOneTest, InputWindowsManagerOneTest_SelectWindowInfo windowInfo.windowInputType = WindowInputType::NORMAL; windowInfo.isSkipSelfWhenShowOnVirtualScreen = true; std::shared_ptr inputWindowsManager = std::make_shared(); - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo); inputWindowsManager->firstBtnDownWindowInfo_.first = -1; inputWindowsManager->isOpenPrivacyProtectionserver_ = true; inputWindowsManager->privacyProtection_.isOpen = true; @@ -416,7 +441,12 @@ HWTEST_F(InputWindowsManagerOneTest, InputWindowsManagerOneTest_SelectWindowInfo windowInfo.windowInputType = WindowInputType::MIX_LEFT_RIGHT_ANTI_AXIS_MOVE; windowInfo.isSkipSelfWhenShowOnVirtualScreen = true; std::shared_ptr inputWindowsManager = std::make_shared(); - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo); inputWindowsManager->firstBtnDownWindowInfo_.first = -1; inputWindowsManager->isOpenPrivacyProtectionserver_ = true; inputWindowsManager->privacyProtection_.isOpen = false; @@ -454,7 +484,12 @@ HWTEST_F(InputWindowsManagerOneTest, InputWindowsManagerOneTest_SelectWindowInfo windowInfo.windowInputType = WindowInputType::NORMAL; windowInfo.isSkipSelfWhenShowOnVirtualScreen = true; std::shared_ptr inputWindowsManager = std::make_shared(); - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo); inputWindowsManager->firstBtnDownWindowInfo_.first = -1; inputWindowsManager->isOpenPrivacyProtectionserver_ = true; inputWindowsManager->privacyProtection_.isOpen = false; @@ -493,7 +528,12 @@ HWTEST_F(InputWindowsManagerOneTest, InputWindowsManagerOneTest_SelectWindowInfo windowInfo.windowInputType = WindowInputType::MIX_LEFT_RIGHT_ANTI_AXIS_MOVE; windowInfo.isSkipSelfWhenShowOnVirtualScreen = true; std::shared_ptr inputWindowsManager = std::make_shared(); - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo); inputWindowsManager->firstBtnDownWindowInfo_.first = -1; inputWindowsManager->isOpenPrivacyProtectionserver_ = true; inputWindowsManager->privacyProtection_.isOpen = false; @@ -517,8 +557,8 @@ HWTEST_F(InputWindowsManagerOneTest, InputWindowsManagerOneTest_SelectWindowInfo winInfo.id = 50; winInfo.defaultHotAreas.push_back(rect); windowInfo.uiExtentionWindowInfo.push_back(winInfo); - inputWindowsManager->displayGroupInfo_.windowsInfo.clear(); - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); + displayGroupInfoRef.windowsInfo.clear(); + displayGroupInfoRef.windowsInfo.push_back(windowInfo); std::optional result1 = inputWindowsManager->SelectWindowInfo(logicalX, logicalY, pointerEvent); EXPECT_TRUE(result1.has_value()); } @@ -550,7 +590,12 @@ HWTEST_F(InputWindowsManagerOneTest, InputWindowsManagerOneTest_SelectWindowInfo windowInfo.isSkipSelfWhenShowOnVirtualScreen = true; windowInfo.uiExtentionWindowInfo.clear(); std::shared_ptr inputWindowsManager = std::make_shared(); - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo); inputWindowsManager->firstBtnDownWindowInfo_.first = -1; inputWindowsManager->isOpenPrivacyProtectionserver_ = true; inputWindowsManager->privacyProtection_.isOpen = false; @@ -590,7 +635,12 @@ HWTEST_F(InputWindowsManagerOneTest, InputWindowsManagerOneTest_SelectWindowInfo windowInfo.isSkipSelfWhenShowOnVirtualScreen = true; windowInfo.uiExtentionWindowInfo.clear(); std::shared_ptr inputWindowsManager = std::make_shared(); - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo); inputWindowsManager->firstBtnDownWindowInfo_.first = -1; inputWindowsManager->isOpenPrivacyProtectionserver_ = true; inputWindowsManager->privacyProtection_.isOpen = false; @@ -627,7 +677,12 @@ HWTEST_F(InputWindowsManagerOneTest, InputWindowsManagerOneTest_SelectWindowInfo windowInfo.id = 1; info.uiExtentionWindowInfo.push_back(windowInfo); std::shared_ptr inputWindowsManager = std::make_shared(); - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(info); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo); inputWindowsManager->extraData_.appended = false; inputWindowsManager->firstBtnDownWindowInfo_.first = 1; WindowInfo beginWindowInfo; @@ -661,7 +716,12 @@ HWTEST_F(InputWindowsManagerOneTest, InputWindowsManagerOneTest_SelectWindowInfo windowInfo.id = 0; info.uiExtentionWindowInfo.push_back(windowInfo); std::shared_ptr inputWindowsManager = std::make_shared(); - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(info); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo); inputWindowsManager->extraData_.appended = false; inputWindowsManager->firstBtnDownWindowInfo_.first = 1; inputWindowsManager->firstBtnDownWindowInfo_.second = -1; @@ -1079,7 +1139,12 @@ HWTEST_F(InputWindowsManagerOneTest, InputWindowsManagerOneTest_DispatchTouch_00 windowInfo.id = 1; windowInfo.flags = 0; windowInfo.windowInputType = WindowInputType::MIX_LEFT_RIGHT_ANTI_AXIS_MOVE; - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->DispatchTouch(pointerAction)); } @@ -1160,7 +1225,12 @@ HWTEST_F(InputWindowsManagerOneTest, InputWindowsManagerOneTest_FindPhysicalDisp displayInfo1.id = 0; displayInfo1.dpi = -10; displayInfo1.uniq = "default0"; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo1); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo1); displayInfo.id = 1; displayInfo.x = INT32_MAX; @@ -1341,7 +1411,12 @@ HWTEST_F(InputWindowsManagerOneTest, InputWindowsManagerOneTest_GetPidByWindowId WindowInfo winInfo; winInfo.id = id; windowInfo.uiExtentionWindowInfo.push_back(winInfo); - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo); EXPECT_EQ(inputWindowsManager->GetPidByWindowId(id), windowInfo.pid); id = -1; diff --git a/service/window_manager/test/input_windows_manager_test.cpp b/service/window_manager/test/input_windows_manager_test.cpp index 282378ff26c7a78233867a0b886691273af72bf8..161077893eac1c889d7d5d288a99cca7fd11a245 100644 --- a/service/window_manager/test/input_windows_manager_test.cpp +++ b/service/window_manager/test/input_windows_manager_test.cpp @@ -167,7 +167,11 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_GetClientFd_001, TestS auto pointerEvent = PointerEvent::Create(); UDSServer udsServer; WIN_MGR->Init(udsServer); - WIN_MGR->GetDisplayGroupInfo(); + DisplayGroupInfo displayGroupInfo; + displayGroupInfo.width = 20; + displayGroupInfo.height = 20; + displayGroupInfo.focusWindowId = 1; + WIN_MGR->GetDisplayGroupInfo(displayGroupInfo); int32_t idNames = -1; ASSERT_EQ(WIN_MGR->GetClientFd(pointerEvent), idNames); } @@ -897,7 +901,11 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_OnSessionLost_001, Tes CALL_TEST_DEBUG; SessionPtr session = std::shared_ptr(); WIN_MGR->OnSessionLost(session); - ASSERT_NO_FATAL_FAILURE(WIN_MGR->GetDisplayGroupInfo()); + DisplayGroupInfo displayGroupInfo; + displayGroupInfo.width = 20; + displayGroupInfo.height = 20; + displayGroupInfo.focusWindowId = 1; + ASSERT_NO_FATAL_FAILURE(WIN_MGR->GetDisplayGroupInfo(displayGroupInfo)); } /** @@ -4417,13 +4425,18 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_UpdateCrownTarget_001, std::shared_ptr inputEvent = InputEvent::Create(); EXPECT_NE(inputEvent, nullptr); inputEvent->targetDisplayId_ = -1; - inputWindowsManager.displayGroupInfo_.focusWindowId = -1; + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.focusWindowId = -1; int32_t ret = inputWindowsManager.UpdateCrownTarget(pointerEvent); EXPECT_NE(ret, RET_OK); inputEvent->targetDisplayId_ = 5; ret = inputWindowsManager.UpdateCrownTarget(pointerEvent); EXPECT_NE(ret, RET_OK); - inputWindowsManager.displayGroupInfo_.focusWindowId = 5; + displayGroupInfoRef.focusWindowId = 5; ret = inputWindowsManager.UpdateCrownTarget(pointerEvent); EXPECT_NE(ret, RET_OK); } @@ -5106,7 +5119,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_UpdateTouchScreenTarge inputWindowsMgr.extraData_.pointerId = 150; inputWindowsMgr.extraData_.sourceType = PointerEvent::SOURCE_TYPE_TOUCHSCREEN; pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_DOWN); - inputWindowsMgr.displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsMgr.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsMgr.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); inputWindowsMgr.windowsPerDisplay_.insert(std::make_pair(100, winGroupInfo)); EXPECT_NO_FATAL_FAILURE(inputWindowsMgr.UpdateTouchScreenTarget(pointerEvent)); } @@ -5160,7 +5178,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_UpdateTouchScreenTarge inputWindowsMgr.extraData_.appended = false; inputWindowsMgr.extraData_.sourceType = PointerEvent::SOURCE_TYPE_MOUSE; pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_UNKNOWN); - inputWindowsMgr.displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsMgr.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsMgr.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); inputWindowsMgr.windowsPerDisplay_.insert(std::make_pair(100, winGroupInfo)); EXPECT_NO_FATAL_FAILURE(inputWindowsMgr.UpdateTouchScreenTarget(pointerEvent)); } @@ -5236,7 +5259,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_UpdateTouchScreenTarge pointerEvent->SetSourceType(PointerEvent::SOURCE_TYPE_TOUCHSCREEN); inputWindowsMgr.isOpenAntiMisTakeObserver_ = false; inputWindowsMgr.antiMistake_.isOpen = true; - inputWindowsMgr.displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsMgr.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsMgr.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); inputWindowsMgr.windowsPerDisplay_.insert(std::make_pair(100, winGroupInfo)); EXPECT_NO_FATAL_FAILURE(inputWindowsMgr.UpdateTouchScreenTarget(pointerEvent)); } @@ -5283,7 +5311,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_UpdateTouchScreenTarge inputWindowsMgr.extraData_.sourceType = PointerEvent::SOURCE_TYPE_TOUCHSCREEN; inputWindowsMgr.isOpenAntiMisTakeObserver_ = true; inputWindowsMgr.antiMistake_.isOpen = false; - inputWindowsMgr.displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsMgr.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsMgr.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); inputWindowsMgr.windowsPerDisplay_.insert(std::make_pair(100, winGroupInfo)); EXPECT_NO_FATAL_FAILURE(inputWindowsMgr.UpdateTouchScreenTarget(pointerEvent)); } @@ -5326,7 +5359,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_UpdateTouchScreenTarge winGroupInfo.windowsInfo.push_back(winInfo); pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_UNKNOWN); inputWindowsMgr.extraData_.appended = false; - inputWindowsMgr.displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsMgr.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsMgr.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); inputWindowsMgr.windowsPerDisplay_.insert(std::make_pair(100, winGroupInfo)); EXPECT_NO_FATAL_FAILURE(inputWindowsMgr.UpdateTouchScreenTarget(pointerEvent)); } @@ -5371,7 +5409,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_UpdateTouchScreenTarge winGroupInfo.windowsInfo.push_back(winInfo); pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_UNKNOWN); inputWindowsMgr.extraData_.appended = false; - inputWindowsMgr.displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsMgr.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsMgr.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); inputWindowsMgr.windowsPerDisplay_.insert(std::make_pair(100, winGroupInfo)); EXPECT_NO_FATAL_FAILURE(inputWindowsMgr.UpdateTouchScreenTarget(pointerEvent)); } @@ -5414,7 +5457,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_UpdateTouchScreenTarge winGroupInfo.windowsInfo.push_back(winInfo); pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_UNKNOWN); inputWindowsMgr.extraData_.appended = false; - inputWindowsMgr.displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsMgr.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsMgr.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); inputWindowsMgr.windowsPerDisplay_.insert(std::make_pair(100, winGroupInfo)); EXPECT_NO_FATAL_FAILURE(inputWindowsMgr.UpdateTouchScreenTarget(pointerEvent)); } @@ -5460,7 +5508,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_UpdateTouchScreenTarge pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_DOWN); inputWindowsMgr.lastTouchEventOnBackGesture_->SetPointerAction(PointerEvent::POINTER_ACTION_CANCEL); inputWindowsMgr.extraData_.appended = false; - inputWindowsMgr.displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsMgr.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsMgr.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); inputWindowsMgr.windowsPerDisplay_.insert(std::make_pair(100, winGroupInfo)); EXPECT_NO_FATAL_FAILURE(inputWindowsMgr.UpdateTouchScreenTarget(pointerEvent)); } @@ -5506,7 +5559,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_UpdateTouchScreenTarge pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_UNKNOWN); inputWindowsMgr.lastTouchEventOnBackGesture_->SetPointerAction(PointerEvent::POINTER_ACTION_DOWN); inputWindowsMgr.extraData_.appended = false; - inputWindowsMgr.displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsMgr.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsMgr.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); inputWindowsMgr.windowsPerDisplay_.insert(std::make_pair(100, winGroupInfo)); EXPECT_NO_FATAL_FAILURE(inputWindowsMgr.UpdateTouchScreenTarget(pointerEvent)); } @@ -5552,7 +5610,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_UpdateTouchScreenTarge pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_UNKNOWN); inputWindowsMgr.lastTouchEventOnBackGesture_->SetPointerAction(PointerEvent::POINTER_ACTION_CANCEL); inputWindowsMgr.extraData_.appended = false; - inputWindowsMgr.displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsMgr.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsMgr.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); inputWindowsMgr.windowsPerDisplay_.insert(std::make_pair(100, winGroupInfo)); EXPECT_NO_FATAL_FAILURE(inputWindowsMgr.UpdateTouchScreenTarget(pointerEvent)); } @@ -5598,7 +5661,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_UpdateTouchScreenTarge pointerEvent->SetPointerAction(PointerEvent::POINTER_ACTION_UNKNOWN); inputWindowsMgr.lastTouchEventOnBackGesture_->SetPointerAction(PointerEvent::POINTER_ACTION_CANCEL); inputWindowsMgr.extraData_.appended = false; - inputWindowsMgr.displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsMgr.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsMgr.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); inputWindowsMgr.windowsPerDisplay_.insert(std::make_pair(100, winGroupInfo)); EXPECT_NO_FATAL_FAILURE(inputWindowsMgr.UpdateTouchScreenTarget(pointerEvent)); } @@ -5737,17 +5805,22 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_HandleKeyEventWindowId ASSERT_NE(keyEvent, nullptr); WindowInfo winInfo; keyEvent->SetTargetDisplayId(-1); - inputWindowsMgr.displayGroupInfo_.focusWindowId = 50; + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsMgr.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsMgr.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.focusWindowId = 50; winInfo.id = 50; winInfo.agentWindowId = 100; winInfo.privacyMode = SecureFlag::PRIVACY_MODE; - inputWindowsMgr.displayGroupInfo_.windowsInfo.push_back(winInfo); + displayGroupInfoRef.windowsInfo.push_back(winInfo); EXPECT_NO_FATAL_FAILURE(inputWindowsMgr.HandleKeyEventWindowId(keyEvent)); - inputWindowsMgr.displayGroupInfo_.windowsInfo[0].privacyMode = SecureFlag::DEFAULT_MODE; + displayGroupInfoRef.windowsInfo[0].privacyMode = SecureFlag::DEFAULT_MODE; EXPECT_NO_FATAL_FAILURE(inputWindowsMgr.HandleKeyEventWindowId(keyEvent)); - inputWindowsMgr.displayGroupInfo_.focusWindowId = 80; + displayGroupInfoRef.focusWindowId = 80; EXPECT_NO_FATAL_FAILURE(inputWindowsMgr.HandleKeyEventWindowId(keyEvent)); } @@ -5766,7 +5839,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_GetDisplayId, TestSize DisplayInfo displayInfo; displayInfo.id = 100; inputEvent->SetTargetDisplayId(-1); - inputWindowsMgr.displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsMgr.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsMgr.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); EXPECT_NO_FATAL_FAILURE(inputWindowsMgr.GetDisplayId(inputEvent)); } @@ -5793,7 +5871,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_GetClientFd_004, TestS winInfo.uiExtentionWindowInfo.push_back(winInfo); winInfo.pid = 50; winInfo.flags = 15; - inputWindowsMgr.displayGroupInfo_.windowsInfo.push_back(winInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsMgr.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsMgr.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(winInfo); EXPECT_NO_FATAL_FAILURE(inputWindowsMgr.GetClientFd(pointerEvent, windowId)); windowId = 100; EXPECT_NO_FATAL_FAILURE(inputWindowsMgr.GetClientFd(pointerEvent, windowId)); @@ -5819,11 +5902,16 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_GetPidAndUpdateTarget, winInfo.privacyUIFlag = true; winInfo.uiExtentionWindowInfo.push_back(winInfo); keyEvent->SetTargetDisplayId(-1); - inputWindowsMgr.displayGroupInfo_.focusWindowId = 10; - inputWindowsMgr.displayGroupInfo_.windowsInfo.push_back(winInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsMgr.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsMgr.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.focusWindowId = 10; + displayGroupInfoRef.windowsInfo.push_back(winInfo); EXPECT_NO_FATAL_FAILURE(inputWindowsMgr.GetPidAndUpdateTarget(keyEvent)); - inputWindowsMgr.displayGroupInfo_.windowsInfo[0].uiExtentionWindowInfo[0].privacyUIFlag = false; + displayGroupInfoRef.windowsInfo[0].uiExtentionWindowInfo[0].privacyUIFlag = false; EXPECT_NO_FATAL_FAILURE(inputWindowsMgr.GetPidAndUpdateTarget(keyEvent)); } @@ -5912,7 +6000,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_DispatchUIExtentionPoi winInfo.agentWindowId = 200; winInfo.uiExtentionWindowInfo.push_back(winInfo); winInfo.id = 300; - inputWindowsMgr.displayGroupInfo_.windowsInfo.push_back(winInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsMgr.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsMgr.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(winInfo); EXPECT_NO_FATAL_FAILURE(inputWindowsMgr.DispatchUIExtentionPointerEvent(logicalX, logicalY, pointerEvent)); } @@ -5959,13 +6052,18 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_UpdateCrownTarget, Tes std::shared_ptr pointerEvent = PointerEvent::Create(); ASSERT_NE(pointerEvent, nullptr); pointerEvent->SetTargetDisplayId(-1); - inputWindowsMgr.displayGroupInfo_.focusWindowId = 100; + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsMgr.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsMgr.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.focusWindowId = 100; winInfo.id = 200; - inputWindowsMgr.displayGroupInfo_.windowsInfo.push_back(winInfo); + displayGroupInfoRef.windowsInfo.push_back(winInfo); winInfo.id = 100; winInfo.agentWindowId = 500; winInfo.privacyMode = SecureFlag::DEFAULT_MODE; - inputWindowsMgr.displayGroupInfo_.windowsInfo.push_back(winInfo); + displayGroupInfoRef.windowsInfo.push_back(winInfo); EXPECT_EQ(inputWindowsMgr.UpdateCrownTarget(pointerEvent), RET_OK); } #endif // OHOS_BUILD_ENABLE_POINTER && OHOS_BUILD_ENABLE_CROWN @@ -6057,9 +6155,14 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_ReverseXY_001, TestSiz int32_t y = 100; DisplayInfo displayInfo; displayInfo.direction = static_cast(-1); - inputWindowsMgr.displayGroupInfo_.displaysInfo.push_back(displayInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsMgr.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsMgr.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); EXPECT_NO_FATAL_FAILURE(inputWindowsMgr.ReverseXY(x, y)); - inputWindowsMgr.displayGroupInfo_.displaysInfo[0].direction = static_cast(10); + displayGroupInfoRef.displaysInfo[0].direction = static_cast(10); EXPECT_NO_FATAL_FAILURE(inputWindowsMgr.ReverseXY(x, y)); } @@ -6110,11 +6213,16 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_DispatchPointerCancel, inputWindowsMgr.lastPointerEvent_ = PointerEvent::Create(); ASSERT_NE(inputWindowsMgr.lastPointerEvent_, nullptr); winInfo.id = 10; - inputWindowsMgr.displayGroupInfo_.windowsInfo.push_back(winInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsMgr.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsMgr.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(winInfo); EXPECT_NO_FATAL_FAILURE(inputWindowsMgr.DispatchPointerCancel(displayId)); - inputWindowsMgr.displayGroupInfo_.windowsInfo.clear(); + displayGroupInfoRef.windowsInfo.clear(); winInfo.id = 100; - inputWindowsMgr.displayGroupInfo_.windowsInfo.push_back(winInfo); + displayGroupInfoRef.windowsInfo.push_back(winInfo); EXPECT_NO_FATAL_FAILURE(inputWindowsMgr.DispatchPointerCancel(displayId)); } @@ -6132,7 +6240,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_GetPidByWindowId, Test WindowInfo winInfo; winInfo.id = 100; winInfo.pid = 150; - inputWindowsMgr.displayGroupInfo_.windowsInfo.push_back(winInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsMgr.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsMgr.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(winInfo); EXPECT_EQ(inputWindowsMgr.GetPidByWindowId(id), winInfo.pid); id = 300; EXPECT_EQ(inputWindowsMgr.GetPidByWindowId(id), RET_ERR); @@ -6355,7 +6468,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_UpdateKeyEventDisplayI EXPECT_EQ(keyEvent->GetTargetDisplayId(), 1); DisplayInfo info1 = {.id = 0, .x = 0, .y = 0, .width = 100, .height = 200}; - inputWindowsManager.displayGroupInfo_.displaysInfo.emplace_back(info1); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.emplace_back(info1); inputWindowsManager.UpdateKeyEventDisplayId(keyEvent, focusWindowId); EXPECT_EQ(keyEvent->GetTargetDisplayId(), 0); } @@ -6376,7 +6494,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_OnDisplayRemovedOrComb DisplayInfo info1 = {.id = 0, .x = 0, .y = 0, .width = 100, .height = 200}; DisplayInfo info2 = {.id = 1, .x = 100, .y = 0, .width = 100, .height = 200}; - inputWindowsManager.displayGroupInfo_.displaysInfo = {info1, info2}; + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo = {info1, info2}; displayGroupInfo.displaysInfo = {info2}; ret = inputWindowsManager.OnDisplayRemovedOrCombinationChanged(displayGroupInfo); EXPECT_TRUE(ret); @@ -6620,7 +6743,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_CleanInvalidPiexMap, T winInfo.id = 10; std::unique_ptr pixelMap = nullptr; inputWindowsManager.transparentWins_.insert_or_assign(windowId, std::move(pixelMap)); - inputWindowsManager.displayGroupInfo_.windowsInfo.push_back(winInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(winInfo); EXPECT_NO_FATAL_FAILURE(inputWindowsManager.CleanInvalidPiexMap()); } @@ -6639,7 +6767,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_CleanInvalidPiexMap_00 winInfo.id = 10; std::unique_ptr pixelMap = nullptr; inputWindowsManager.transparentWins_.insert_or_assign(windowId, std::move(pixelMap)); - inputWindowsManager.displayGroupInfo_.windowsInfo.push_back(winInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(winInfo); EXPECT_NO_FATAL_FAILURE(inputWindowsManager.CleanInvalidPiexMap()); } @@ -6996,8 +7129,13 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_JudgeCaramaInFore_001, WindowInfo windowInfo; windowInfo.id = 20; - inputWindowsManager.displayGroupInfo_.windowsInfo.push_back(windowInfo); - inputWindowsManager.displayGroupInfo_.focusWindowId = 20; + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo); + displayGroupInfoRef.focusWindowId = 20; EXPECT_EQ(inputWindowsManager.JudgeCaramaInFore(), false); } @@ -7269,7 +7407,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_GetClientFd_010, TestS WindowInfo windowInfo1; windowInfo1.id = 1; windowInfo1.uiExtentionWindowInfo.push_back(windowInfo1); - inputWindowsManager.displayGroupInfo_.windowsInfo.push_back(windowInfo1); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo1); EXPECT_NO_FATAL_FAILURE(inputWindowsManager.GetClientFd(pointerEvent)); } @@ -7292,7 +7435,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_GetClientFd_011, TestS WindowInfo windowInfo1; windowInfo1.id = 1; - windowInfo1.uiExtentionWindowInfo.push_back(windowInfo1); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo1); inputWindowsManager.displayGroupInfo_.windowsInfo.push_back(windowInfo1); EXPECT_NO_FATAL_FAILURE(inputWindowsManager.GetClientFd(pointerEvent)); @@ -7354,7 +7502,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_GetWindowPid_002, Test WindowInfo windowInfo2; windowInfo2.id = 1; windowInfo1.uiExtentionWindowInfo.push_back(windowInfo2); - inputWindowsManager.displayGroupInfo_.windowsInfo.push_back(windowInfo1); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo1); EXPECT_NO_FATAL_FAILURE(inputWindowsManager.GetWindowPid(windowId)); } @@ -7375,7 +7528,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_GetWindowPid_003, Test WindowInfo windowInfo2; windowInfo2.id = 3; windowInfo1.uiExtentionWindowInfo.push_back(windowInfo2); - inputWindowsManager.displayGroupInfo_.windowsInfo.push_back(windowInfo1); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager.displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager.displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo1); EXPECT_NO_FATAL_FAILURE(inputWindowsManager.GetWindowPid(windowId)); } @@ -8569,10 +8727,15 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_UpdateCaptureMode_003, DisplayGroupInfo displayGroupInfo; WindowInfo windowInfo; inputWindowsManager->captureModeInfo_.isCaptureMode = true; - inputWindowsManager->displayGroupInfo_.focusWindowId = 25; + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.focusWindowId = 25; displayGroupInfo.focusWindowId = 26; windowInfo.id = 10; - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); + displayGroupInfoRef.windowsInfo.push_back(windowInfo); displayGroupInfo.windowsInfo.push_back(windowInfo); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->UpdateCaptureMode(displayGroupInfo)); @@ -8632,7 +8795,13 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_PointerDrawingManagerO displayInfo.dpi++; displayInfo.x = 300; displayInfo.y = 300; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displayInfo); + inputWindowsManager->lastDpi_ = displayInfo.dpi + 1; + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displayInfo); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->PointerDrawingManagerOnDisplayInfo(displayGroupInfo)); } @@ -8654,7 +8823,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_UpdatePointerDrawingMa DisplayInfo displaysInfo; inputWindowsManager->lastPointerEvent_->SetPointerAction(PointerEvent::POINTER_ACTION_UNKNOWN); inputWindowsManager->lastPointerEvent_->SetButtonPressed(1); - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displaysInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displaysInfo); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->UpdatePointerDrawingManagerWindowInfo()); } @@ -8672,7 +8846,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_UpdatePointerDrawingMa EXPECT_NE(inputWindowsManager->lastPointerEvent_, nullptr); DisplayInfo displaysInfo; inputWindowsManager->lastPointerEvent_->SetPointerAction(PointerEvent::POINTER_ACTION_UNKNOWN); - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displaysInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displaysInfo); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->UpdatePointerDrawingManagerWindowInfo()); } @@ -8690,7 +8869,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_UpdatePointerDrawingMa EXPECT_NE(inputWindowsManager->lastPointerEvent_, nullptr); DisplayInfo displaysInfo; inputWindowsManager->lastPointerEvent_->SetPointerAction(PointerEvent::POINTER_ACTION_PULL_UP); - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displaysInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displaysInfo); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->UpdatePointerDrawingManagerWindowInfo()); } @@ -8708,7 +8892,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_UpdatePointerDrawingMa EXPECT_NE(inputWindowsManager->lastPointerEvent_, nullptr); DisplayInfo displaysInfo; inputWindowsManager->lastPointerEvent_->SetPointerAction(PointerEvent::POINTER_ACTION_BUTTON_UP); - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displaysInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displaysInfo); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->UpdatePointerDrawingManagerWindowInfo()); } @@ -8726,7 +8915,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_UpdatePointerDrawingMa EXPECT_NE(inputWindowsManager->lastPointerEvent_, nullptr); DisplayInfo displaysInfo; inputWindowsManager->lastPointerEvent_->SetPointerAction(PointerEvent::POINTER_ACTION_DOWN); - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displaysInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displaysInfo); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->UpdatePointerDrawingManagerWindowInfo()); } @@ -8744,9 +8938,14 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_UpdateDisplayIdAndName displaysInfo.id = 1; displaysInfo.uniqueId = 1; displaysInfo.uniq = "abc"; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displaysInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displaysInfo); displaysInfo.uniqueId = 1000; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displaysInfo); + displayGroupInfoRef.displaysInfo.push_back(displaysInfo); inputWindowsManager->bindInfo_.AddDisplay(1, "abc"); inputWindowsManager->bindInfo_.AddDisplay(1, "abc"); @@ -8765,7 +8964,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_GetCursorPos_003, Test { CALL_TEST_DEBUG; std::shared_ptr inputWindowsManager = std::make_shared(); - inputWindowsManager->cursorPos_.displayId = -1; + CursorPosition cursorPosRef; + auto it = inputWindowsManager->cursorPosMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->cursorPosMap_.end()) { + cursorPosRef = it->second; + } + cursorPosRef.displayId = -1; DisplayInfo displaysInfo; displaysInfo.id = 2; displaysInfo.width = 30; @@ -8774,9 +8978,14 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_GetCursorPos_003, Test displaysInfo.validHeight = displaysInfo.height; displaysInfo.name = "name2"; displaysInfo.uniq = "uniq2"; - inputWindowsManager->displayGroupInfo_.displaysInfo.push_back(displaysInfo); + DisplayGroupInfo displayGroupInfoRef; + auto iter = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (iter != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = iter->second; + } + displayGroupInfoRef.displaysInfo.push_back(displaysInfo); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->GetCursorPos()); - EXPECT_EQ(inputWindowsManager->cursorPos_.displayId, displaysInfo.id); + EXPECT_EQ(cursorPosRef.displayId, displaysInfo.id); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->GetCursorPos()); } @@ -8790,7 +8999,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_GetCursorPos_004, Test { CALL_TEST_DEBUG; std::shared_ptr inputWindowsManager = std::make_shared(); - inputWindowsManager->cursorPos_.displayId = -1; + CursorPosition cursorPosRef; + auto it = inputWindowsManager->cursorPosMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->cursorPosMap_.end()) { + cursorPosRef = it->second; + } + cursorPosRef.displayId = -1; EXPECT_NO_FATAL_FAILURE(inputWindowsManager->GetCursorPos()); } @@ -8814,9 +9028,14 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_ResetPointerPositionIf displaysInfo.name = "name2"; displaysInfo.uniq = "uniq2"; displayGroupInfo.displaysInfo.push_back(displaysInfo); - inputWindowsManager->cursorPos_.displayId = displaysInfo.id; - inputWindowsManager->cursorPos_.cursorPos.x = 300; - inputWindowsManager->cursorPos_.cursorPos.y = 300; + CursorPosition cursorPosRef; + auto it = inputWindowsManager->cursorPosMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->cursorPosMap_.end()) { + cursorPosRef = it->second; + } + cursorPosRef.displayId = displaysInfo.id; + cursorPosRef.cursorPos.x = 300; + cursorPosRef.cursorPos.y = 300; EXPECT_NO_FATAL_FAILURE(inputWindowsManager->ResetPointerPositionIfOutValidDisplay(displayGroupInfo)); } @@ -8842,7 +9061,12 @@ HWTEST_F( DisplayInfo displaysInfo; displaysInfo.id = 100; pointerEvent->SetTargetDisplayId(displaysInfo.id); - displayGroupInfo.displaysInfo.push_back(displaysInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.displaysInfo.push_back(displaysInfo); pointerEvent->SetSourceType(PointerEvent::SOURCE_TYPE_TOUCHSCREEN); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->CancelTouchScreenEventIfValidDisplayChange(displayGroupInfo)); } @@ -9002,7 +9226,12 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_PrintWindowNavbar_001, WindowInfo windowInfo; windowInfo.id = 20; windowInfo.windowInputType = WindowInputType::MIX_BUTTOM_ANTI_AXIS_MOVE; - inputWindowsManager->displayGroupInfo_.windowsInfo.push_back(windowInfo); + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.push_back(windowInfo); EXPECT_NO_FATAL_FAILURE(inputWindowsManager->PrintWindowNavbar()); } @@ -9193,15 +9422,20 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_CheckAppFocused_001, T windowInfo.pid = pid; windowInfo.id = pid; std::shared_ptr inputWindowsManager = std::make_shared(); - inputWindowsManager->displayGroupInfo_.windowsInfo.clear(); - inputWindowsManager->displayGroupInfo_.windowsInfo.emplace_back(windowInfo); - inputWindowsManager->displayGroupInfo_.focusWindowId = pid; + DisplayGroupInfo displayGroupInfoRef; + auto it = inputWindowsManager->displayGroupInfoMap_.find(DEFAULT_GROUP_ID); + if (it != inputWindowsManager->displayGroupInfoMap_.end()) { + displayGroupInfoRef = it->second; + } + displayGroupInfoRef.windowsInfo.clear(); + displayGroupInfoRef.windowsInfo.emplace_back(windowInfo); + displayGroupInfoRef.focusWindowId = pid; EXPECT_TRUE(inputWindowsManager->CheckAppFocused(pid)); pid++; EXPECT_FALSE(inputWindowsManager->CheckAppFocused(pid)); - inputWindowsManager->displayGroupInfo_.focusWindowId = pid + 1; + displayGroupInfoRef.focusWindowId = pid + 1; EXPECT_FALSE(inputWindowsManager->CheckAppFocused(pid)); } diff --git a/util/common/include/define_multimodal.h b/util/common/include/define_multimodal.h index 56347164b0e17141a52ddd1d9650759ba4c2d799..a7f7308a45804b3a10dc4ad48d366046e2c50571 100644 --- a/util/common/include/define_multimodal.h +++ b/util/common/include/define_multimodal.h @@ -124,6 +124,13 @@ inline constexpr int32_t INVALID_PID { -1 }; } \ } while (0) +#define CHKCC(cond) \ + { \ + if (!(cond)) { \ + continue; \ + } \ + } + #define CHK_PID_AND_TID() \ do { \ MMI_HILOGD("%{public}s, (%{public}d), pid:%{public}d threadId:%{public}" PRIu64, \ @@ -266,6 +273,13 @@ inline constexpr int32_t INVALID_PID { -1 }; } \ } while (0) +#define CHKCC(cond) \ + { \ + if (!(cond)) { \ + continue; \ + } \ + } + #define CHK_PID_AND_TID() \ do { \ MMI_HILOGD("pid:%{public}d threadId:%{public}" PRIu64, GetPid(), GetThisThreadId()); \