diff --git a/intention/cooperate/plugin/src/input_event_transmission/input_event_serialization.cpp b/intention/cooperate/plugin/src/input_event_transmission/input_event_serialization.cpp index 40ef8feccb1d16363f40d2472d21ea069cb285f5..e74ad6a6d63d59ac73a35f1c1feef6bf0a2b5aca 100644 --- a/intention/cooperate/plugin/src/input_event_transmission/input_event_serialization.cpp +++ b/intention/cooperate/plugin/src/input_event_transmission/input_event_serialization.cpp @@ -35,7 +35,7 @@ constexpr int32_t MAX_KEY_SIZE { 395 }; const std::string HEART_BEAT_PACKET { "heart_beat_packet" }; constexpr size_t MAX_N_PRESSED_BUTTONS { 10 }; constexpr size_t MAX_N_PRESSED_KEYS { 10 }; -constexpr size_t MAX_BUFFER_SIZE { 1024 }; +constexpr size_t MAX_N_POINTER_ITEMS { 10 }; } // namespace int32_t InputEventSerialization::KeyEventToNetPacket( @@ -287,7 +287,7 @@ int32_t InputEventSerialization::SerializePressedButtons(std::shared_ptr pressedBtns = event->GetPressedButtons(); std::set::size_type nPressed = pressedBtns.size(); - if (nPressed >= MAX_N_PRESSED_BUTTONS) { + if (nPressed > MAX_N_PRESSED_BUTTONS) { FI_HILOGE("Exceed maximum allowed number of pressed buttons"); return RET_ERR; } @@ -308,7 +308,7 @@ int32_t InputEventSerialization::DeserializePressedButtons(NetPacket &pkt, std:: int32_t btnId {}; pkt >> nPressed; - if (nPressed >= MAX_N_PRESSED_BUTTONS) { + if (nPressed > MAX_N_PRESSED_BUTTONS) { FI_HILOGE("Exceed maximum allowed number of pressed buttons"); return RET_ERR; } @@ -351,10 +351,6 @@ int32_t InputEventSerialization::SerializePointers(std::shared_ptr pointerIds = event->GetPointerIds(); std::vector::size_type nPointers = pointerIds.size(); - if (nPointers >= MAX_N_PRESSED_BUTTONS) { - FI_HILOGE("Exceed maximum allowed number of nPointers"); - return RET_ERR; - } pkt << nPointers; for (const auto &pointerId : pointerIds) { @@ -380,7 +376,7 @@ int32_t InputEventSerialization::DeserializePointers(NetPacket &pkt, std::shared { std::vector::size_type nPointers; pkt >> nPointers; - if (nPointers >= MAX_N_PRESSED_BUTTONS) { + if (nPointers > MAX_N_POINTER_ITEMS) { FI_HILOGE("Exceed maximum allowed number of nPointers"); return RET_ERR; } @@ -422,7 +418,7 @@ int32_t InputEventSerialization::DeserializePressedKeys(NetPacket &pkt, std::sha { std::vector::size_type nPressed {}; pkt >> nPressed; - if (nPressed >= MAX_N_PRESSED_KEYS) { + if (nPressed > MAX_N_PRESSED_KEYS) { FI_HILOGE("Exceed maximum allowed number of nPressed"); return RET_ERR; } @@ -478,7 +474,7 @@ int32_t InputEventSerialization::DeserializeBuffer(NetPacket &pkt, std::shared_p { std::vector::size_type bufSize {}; pkt >> bufSize; - if (bufSize >= MAX_BUFFER_SIZE) { + if (bufSize > MMI::ExtraData::MAX_BUFFER_SIZE) { FI_HILOGE("Exceed maximum allowed number of bufSize"); return RET_ERR; } diff --git a/test/unittest/intention/cooperate/BUILD.gn b/test/unittest/intention/cooperate/BUILD.gn index de17ada2463bf46aae774d477a3e6117dc4c49ff..16cc8da36563627ed78548863f326acf4a8bdf0b 100644 --- a/test/unittest/intention/cooperate/BUILD.gn +++ b/test/unittest/intention/cooperate/BUILD.gn @@ -172,7 +172,10 @@ ohos_unittest("InputEventSerializationTest") { defines = [] - sources = [ "src/input_event_serialization_test.cpp" ] + sources = [ + "src/input_event_serialization_test.cpp", + "${device_status_root_path}/intention/cooperate/plugin/src/input_event_transmission/input_event_serialization.cpp", + ] cflags = [ "-Dprivate=public" ] diff --git a/test/unittest/intention/cooperate/src/input_event_serialization_test.cpp b/test/unittest/intention/cooperate/src/input_event_serialization_test.cpp index 06b8eb212d4b5eb8f44ca44ac567bf7af612a467..241421ef4fc2c4bf87e4760be529a558d217ef57 100644 --- a/test/unittest/intention/cooperate/src/input_event_serialization_test.cpp +++ b/test/unittest/intention/cooperate/src/input_event_serialization_test.cpp @@ -35,8 +35,8 @@ using namespace testing::ext; namespace { NetPacket pkt(MessageId::INVALID); constexpr size_t MAX_N_PRESSED_BUTTONS { 10 }; -std::set::size_type PRESSED_BUTTONS = { 10 }; -constexpr int32_t BUTTONSID { 10 }; +constexpr size_t MAX_N_PRESSED_KEYS { 10 }; +constexpr size_t MAX_N_POINTER_ITEMS { 10 }; } // namespace class InputEventSerializationTest : public testing::Test { @@ -525,13 +525,67 @@ HWTEST_F(InputEventSerializationTest, TestSerializePressedButtons_02, TestSize.L CALL_TEST_DEBUG; std::shared_ptr pointerEvent = MMI::PointerEvent::Create(); ASSERT_NE(pointerEvent, nullptr); - NetPacket packet(MessageId::DSOFTBUS_INPUT_KEY_EVENT); - pointerEvent->pressedButtons_.insert(BUTTONSID); - EXPECT_FALSE(pointerEvent->pressedButtons_.size() >= MAX_N_PRESSED_BUTTONS); - int32_t ret = Cooperate::InputEventSerialization::SerializePressedButtons(pointerEvent, pkt); + NetPacket packet(MessageId::DSOFTBUS_INPUT_POINTER_EVENT); + for (int32_t i = 0; i <= MAX_N_PRESSED_BUTTONS; i++) { + pointerEvent->pressedButtons_.insert(i); + } + EXPECT_TRUE(pointerEvent->pressedButtons_.size() > MAX_N_PRESSED_BUTTONS); + int32_t ret = Cooperate::InputEventSerialization::SerializePressedButtons(pointerEvent, packet); ASSERT_EQ(ret, RET_ERR); - packet << PRESSED_BUTTONS; - ret = Cooperate::InputEventSerialization::DeserializePressedButtons(pkt, pointerEvent); + packet << MAX_N_PRESSED_BUTTONS + 1; + ret = Cooperate::InputEventSerialization::DeserializePressedButtons(packet, pointerEvent); + ASSERT_EQ(ret, RET_ERR); +} + +/** + * @tc.name: TestDeserializePointers_01 + * @tc.desc: Test SerializePointers + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(InputEventSerializationTest, TestDeserializePointers_01, TestSize.Level1) +{ + CALL_TEST_DEBUG; + std::shared_ptr pointerEvent = MMI::PointerEvent::Create(); + ASSERT_NE(pointerEvent, nullptr); + NetPacket packet(MessageId::DSOFTBUS_INPUT_POINTER_EVENT); + packet << MAX_N_POINTER_ITEMS + 1; + int32_t ret = Cooperate::InputEventSerialization::DeserializePointers(packet, pointerEvent); + ASSERT_EQ(ret, RET_ERR); +} + +/** + * @tc.name: TestDeserializePressedKeys_01 + * @tc.desc: Test DeserializePressedKeys + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(InputEventSerializationTest, TestDeserializePressedKeys_01, TestSize.Level1) +{ + CALL_TEST_DEBUG; + std::shared_ptr pointerEvent = MMI::PointerEvent::Create(); + ASSERT_NE(pointerEvent, nullptr); + NetPacket packet(MessageId::DSOFTBUS_INPUT_POINTER_EVENT); + packet << MAX_N_PRESSED_KEYS + 1; + int32_t ret = Cooperate::InputEventSerialization::DeserializePressedKeys(packet, pointerEvent); + ASSERT_EQ(ret, RET_ERR); +} + +/** + * @tc.name: TestSerializeBuffer_01 + * @tc.desc: Test DeserializeBuffer + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(InputEventSerializationTest, TestDeserializeBuffer_01, TestSize.Level1) +{ + CALL_TEST_DEBUG; + std::shared_ptr pointerEvent = MMI::PointerEvent::Create(); + ASSERT_NE(pointerEvent, nullptr); + NetPacket packet(MessageId::DSOFTBUS_INPUT_POINTER_EVENT); + size_t bufsize = MMI::ExtraData::MAX_BUFFER_SIZE + 1; + packet << bufsize; + int32_t ret = Cooperate::InputEventSerialization::DeserializeBuffer(packet, pointerEvent); ASSERT_EQ(ret, RET_ERR); } } // namespace DeviceStatus