Skip to content

Commit d63dc63

Browse files
committed
[Optimize][Event] Add the nodeIndex parameter to events in the mini-program.
description: During the adaptation process of mini-programs, the framework side needs to use nodeIndex to find the actual event callback function. Therefore, the engine side needs to add nodeIndex to the event parameters. issue: m-6577415519
1 parent 2a51be4 commit d63dc63

7 files changed

Lines changed: 25 additions & 4 deletions

File tree

core/renderer/dom/element.cc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2346,6 +2346,7 @@ lepus::Value Element::GetEventTargetInfo(bool is_core_event) {
23462346
BASE_STATIC_STRING_DECL(kId, "id");
23472347
BASE_STATIC_STRING_DECL(kDataset, "dataset");
23482348
BASE_STATIC_STRING_DECL(kUid, "uid");
2349+
BASE_STATIC_STRING_DECL(kNodeIndex, "nodeIndex");
23492350

23502351
dict.get()->SetValue(kId, data_model_->idSelector());
23512352
auto dataset = lepus::Dictionary::Create();
@@ -2354,6 +2355,7 @@ lepus::Value Element::GetEventTargetInfo(bool is_core_event) {
23542355
}
23552356
dict.get()->SetValue(kDataset, std::move(dataset));
23562357
dict.get()->SetValue(kUid, id_);
2358+
dict.get()->SetValue(kNodeIndex, node_index_);
23572359
}
23582360

23592361
// element ref needed in fiber element worklet

core/renderer/events/touch_event_handler.cc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1047,6 +1047,7 @@ lepus::Value TouchEventHandler::GetTargetInfo(int32_t impl_id,
10471047
BASE_STATIC_STRING_DECL(kId, "id");
10481048
BASE_STATIC_STRING_DECL(kDataset, "dataset");
10491049
BASE_STATIC_STRING_DECL(kUid, "uid");
1050+
BASE_STATIC_STRING_DECL(kNodeIndex, "nodeIndex");
10501051

10511052
dict.get()->SetValue(kId, holder->idSelector());
10521053
auto data_set = lepus::Dictionary::Create();
@@ -1055,6 +1056,7 @@ lepus::Value TouchEventHandler::GetTargetInfo(int32_t impl_id,
10551056
}
10561057
dict.get()->SetValue(kDataset, std::move(data_set));
10571058
dict.get()->SetValue(kUid, impl_id);
1059+
dict.get()->SetValue(kNodeIndex, element->NodeIndex());
10581060
}
10591061

10601062
// element ref needed in fiber element worklet

core/renderer/events/touch_event_handler_unittest.cc

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,10 @@ TEST_F(TouchEventHandlerTest, TestHandleTriggerComponentEvent2) {
114114
touch_event_handler_->HandleTriggerComponentEvent(tasm_.get(), "xxxx", obj);
115115
EXPECT_EQ(delegate_->DumpDelegate(),
116116
"SendPageEvent onXXXX "
117-
"{\"currentTarget\":{\"dataset\":{},\"id\":\"\"},\"detail\":null,"
118-
"\"target\":{\"dataset\":{},\"id\":\"\"},\"type\":\"xxxx\"}\n");
117+
"{\"currentTarget\":{\"dataset\":{},\"id\":\"\",\"nodeIndex\":1},"
118+
"\"detail\":null,"
119+
"\"target\":{\"dataset\":{},\"id\":\"\",\"nodeIndex\":1},\"type\":"
120+
"\"xxxx\"}\n");
119121
}
120122

121123
TEST_F(TouchEventHandlerTest, TestHandleTriggerComponentEvent3) {

core/runtime/lepus/bindings/renderer_functions.cc

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2705,6 +2705,14 @@ RENDERER_FUNCTION_CC(FiberCreateComponent) {
27052705
component_element->SetConfig(arg6->ToLepusValue());
27062706
}
27072707

2708+
if (argc >= 8) {
2709+
CONVERT_ARG(arg7, 7);
2710+
const auto& nid = arg7->GetProperty(BASE_STATIC_STRING(kNodeIndex));
2711+
if (nid.IsNumber()) {
2712+
component_element->SetNodeIndex(nid.Number());
2713+
}
2714+
}
2715+
27082716
ON_NODE_CREATE(component_element);
27092717
RETURN(lepus::Value(std::move(component_element)));
27102718
}

js_libraries/type-element-api/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# CHANGELOG
22

3+
## 0.0.8
4+
5+
### Patch Changes
6+
7+
- Add ElementInfo for `__CreateComponent` API.
8+
39
## 0.0.7
410

511
### Patch Changes

js_libraries/type-element-api/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@lynx-js/type-element-api",
3-
"version": "0.0.7",
3+
"version": "0.0.8",
44
"description": "Type definitions for all Element PAPI provided by the Lynx team, used to improve Element PAPI support in your framework.",
55
"keywords": ["element-api" , "types"],
66
"repository": {

js_libraries/type-element-api/types/element-api.d.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,8 @@ declare global {
148148
entryName: string,
149149
name: string,
150150
path: string,
151-
config?: Record<string, unknown>
151+
config?: Record<string, unknown>,
152+
info?: ElementInfo,
152153
): ComponentElementRef;
153154

154155
function __CreateView(parentComponentUniId: number, info?: ElementInfo): ViewElementRef;

0 commit comments

Comments
 (0)