1 /* 2 * Copyright (c) 2025 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #include "key_event_test.h" 17 18 #include "frameworks/core/common/ace_application_info.h" 19 20 using namespace testing; 21 using namespace testing::ext; 22 namespace OHOS::Ace { 23 24 HWTEST_F(KeyEventTest, KeyEvent_Dispatch001, TestSize.Level0) 25 { 26 ArkUI_UIInputEvent* nullEvent = nullptr; 27 28 auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>( 29 OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1")); 30 auto node = nodeAPI->createNode(ARKUI_NODE_STACK); 31 ASSERT_NE(node, nullptr); 32 33 OH_ArkUI_KeyEvent_Dispatch(node, nullEvent); 34 35 EXPECT_EQ(nullEvent, nullptr); 36 37 NodeModel::DisposeNode(node); 38 } 39 40 41 HWTEST_F(KeyEventTest, OH_ArkUI_KeyEvent_Dispatch002, TestSize.Level0) 42 { 43 ArkUI_UIInputEvent event = { 44 .inputType = ARKUI_UIINPUTEVENT_TYPE_KEY, 45 .eventTypeId = C_KEY_EVENT_ID, 46 .inputEvent = nullptr, 47 }; 48 49 auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>( 50 OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1")); 51 auto node = nodeAPI->createNode(ARKUI_NODE_STACK); 52 ASSERT_NE(node, nullptr); 53 54 bool flag = false; 55 nodeAPI->registerNodeEvent(node, NODE_DISPATCH_KEY_EVENT, 0, &flag); __anonaeaca9960102(ArkUI_NodeEvent* event) 56 NodeModel::AddNodeEventReceiver(node, [](ArkUI_NodeEvent* event) { 57 auto* userData = reinterpret_cast<bool*>(event->userData); 58 *userData = true; 59 }); 60 auto* frameNode = reinterpret_cast<NG::FrameNode*>(node->uiNodeHandle); 61 frameNode->GetOrCreateFocusHub()->currentFocus_ = true; 62 63 OH_ArkUI_KeyEvent_Dispatch(node, &event); 64 65 EXPECT_FALSE(flag); 66 67 nodeAPI->unregisterNodeEvent(node, NODE_DISPATCH_KEY_EVENT); 68 NodeModel::DisposeNode(node); 69 } 70 71 HWTEST_F(KeyEventTest, OH_ArkUI_KeyEvent_Dispatch003, TestSize.Level0) 72 { 73 ArkUI_UIInputEvent event = { 74 .inputType = ARKUI_UIINPUTEVENT_TYPE_KEY, 75 .eventTypeId = AXIS_EVENT_ID, 76 .inputEvent = nullptr, 77 .isCloned = false, 78 .apiVersion = 0, 79 }; 80 auto nodeAPI = reinterpret_cast<ArkUI_NativeNodeAPI_1*>( 81 OH_ArkUI_QueryModuleInterfaceByName(ARKUI_NATIVE_NODE, "ArkUI_NativeNodeAPI_1")); 82 auto node = nodeAPI->createNode(ARKUI_NODE_STACK); 83 OH_ArkUI_KeyEvent_Dispatch(node, &event); 84 ASSERT_NE(node, nullptr); 85 } 86 } // namespace OHOS::Ace 87