diff --git a/frameworks/bridge/declarative_frontend/jsview/js_repeat_virtual_scroll_2.cpp b/frameworks/bridge/declarative_frontend/jsview/js_repeat_virtual_scroll_2.cpp index fc2943d2efc813a2e336f9348244f9c897997e92..ff38bb3cebba1b5f3eb85708e00ec60381796762 100644 --- a/frameworks/bridge/declarative_frontend/jsview/js_repeat_virtual_scroll_2.cpp +++ b/frameworks/bridge/declarative_frontend/jsview/js_repeat_virtual_scroll_2.cpp @@ -139,8 +139,16 @@ void JSRepeatVirtualScroll2::Create(const JSCallbackInfo& info) JSRef jsVal = func->Call(JSRef(), 0, nullptr); }; + auto onUpdateDirtyFunc = handlers->GetProperty("onUpdateDirty"); + if (!onUpdateDirtyFunc->IsFunction()) { + return; + } + auto onUpdateDirty = [execCtx = info.GetExecutionContext(), func = JSRef::Cast(onUpdateDirtyFunc)]() { + JSRef jsVal = func->Call(JSRef(), 0, nullptr); + }; + RepeatVirtualScroll2Model::GetInstance()->Create( - arrLen, totalCount, onGetRid4Index, onRecycleItems, onActiveRange, onMoveFromTo, onPurge); + arrLen, totalCount, onGetRid4Index, onRecycleItems, onActiveRange, onMoveFromTo, onPurge, onUpdateDirty); } void JSRepeatVirtualScroll2::RemoveNode(const JSCallbackInfo& info) diff --git a/frameworks/bridge/declarative_frontend/state_mgmt/src/lib/partial_update/pu_foreach.d.ts b/frameworks/bridge/declarative_frontend/state_mgmt/src/lib/partial_update/pu_foreach.d.ts index e3ea6696de08c78492ecaeb1ff4bbca6310d4c9a..39aab5e0a3bd3ee06db21060bfa28802c0f6ebca 100644 --- a/frameworks/bridge/declarative_frontend/state_mgmt/src/lib/partial_update/pu_foreach.d.ts +++ b/frameworks/bridge/declarative_frontend/state_mgmt/src/lib/partial_update/pu_foreach.d.ts @@ -78,7 +78,8 @@ declare class RepeatVirtualScroll2Native { onRecycleItems: (fromIndex: number, toIndex: number) => void, onActiveRange: (fromIndex: number, toIndex: number, vStart: number, vEnd: number, isLoop: boolean) => void, onMoveFromTo: (moveFrom: number, moveTo: number) => void, - onPurge: () => void; + onPurge: () => void, + onUpdateDirty: () => void; } ): void; diff --git a/frameworks/bridge/declarative_frontend/state_mgmt/src/lib/partial_update/pu_repeat_virtual_scroll_2_impl.ts b/frameworks/bridge/declarative_frontend/state_mgmt/src/lib/partial_update/pu_repeat_virtual_scroll_2_impl.ts index 2ac71415a2924353f822440c2dafc55cb5c9b26d..36b0c758b7ef0cc2dc771a1b116d8640690a35a8 100644 --- a/frameworks/bridge/declarative_frontend/state_mgmt/src/lib/partial_update/pu_repeat_virtual_scroll_2_impl.ts +++ b/frameworks/bridge/declarative_frontend/state_mgmt/src/lib/partial_update/pu_repeat_virtual_scroll_2_impl.ts @@ -530,7 +530,8 @@ class __RepeatVirtualScroll2Impl { onRecycleItems: this.onRecycleItems.bind(this), onActiveRange: this.onActiveRange.bind(this), onMoveFromTo: this.onMoveFromTo.bind(this), - onPurge: this.onPurge.bind(this) + onPurge: this.onPurge.bind(this), + onUpdateDirty:this.onUpdateDirty.bind(this) }); // init onMove @@ -566,6 +567,10 @@ class __RepeatVirtualScroll2Impl { return undefined; } + private onUpdateDirty(): void { + ObserveV2.getObserve().updateDirty2(true); + } + // update Repeat, see overview documentation at the top of this file. private reRender(): void { stateMgmtConsole.debug(`${this.constructor.name}(${this.repeatElmtId_}) reRender() data array length: `, @@ -622,7 +627,7 @@ class __RepeatVirtualScroll2Impl { this.newItemsNeedToRender(newActiveDataItems, newL1Rid4Index); // render all data changes in one go - ObserveV2.getObserve().updateDirty2(true); + this.activeDataItems_ = newActiveDataItems; diff --git a/frameworks/core/components_ng/syntax/repeat_virtual_scroll_2_model.h b/frameworks/core/components_ng/syntax/repeat_virtual_scroll_2_model.h index a2f057ef9e798ce42eb7f20a4100e38f316e767d..bfe0193b94f0dd28d7bfb2593033e3278de1db87 100644 --- a/frameworks/core/components_ng/syntax/repeat_virtual_scroll_2_model.h +++ b/frameworks/core/components_ng/syntax/repeat_virtual_scroll_2_model.h @@ -40,7 +40,8 @@ public: const std::function(int32_t)>& onGetRid4Index, const std::function& onRecycleItems, const std::function& onActiveRange, - const std::function& onMoveFromTo, const std::function& onPurge) = 0; + const std::function& onMoveFromTo, const std::function& onPurge, + const std::function& onUpdateDirty) = 0; virtual void RemoveNode(uint32_t rid) = 0; virtual void SetInvalid(int32_t repeatElmtId, uint32_t rid) = 0; diff --git a/frameworks/core/components_ng/syntax/repeat_virtual_scroll_2_model_ng.cpp b/frameworks/core/components_ng/syntax/repeat_virtual_scroll_2_model_ng.cpp index c2c7c11b01c85c3fa79645e04329d6694a322899..bb57d36650d6554c3e901658a36940914b13a6d8 100644 --- a/frameworks/core/components_ng/syntax/repeat_virtual_scroll_2_model_ng.cpp +++ b/frameworks/core/components_ng/syntax/repeat_virtual_scroll_2_model_ng.cpp @@ -27,13 +27,15 @@ void RepeatVirtualScroll2ModelNG::Create(uint32_t arrLen, uint32_t totalCount, const std::function(int32_t)>& onGetRid4Index, const std::function& onRecycleItems, const std::function& onActiveRange, - const std::function& onMoveFromTo, const std::function& onPurge) + const std::function& onMoveFromTo, const std::function& onPurge, + const std::function& onUpdateDirty) { ACE_SCOPED_TRACE("RepeatVirtualScroll2ModelNG::Create"); auto* stack = ViewStackProcessor::GetInstance(); auto nodeId = stack->ClaimNodeId(); auto repeatNode = RepeatVirtualScroll2Node::GetOrCreateRepeatNode( - nodeId, arrLen, totalCount, onGetRid4Index, onRecycleItems, onActiveRange, onMoveFromTo, onPurge); + nodeId, arrLen, totalCount, onGetRid4Index, onRecycleItems, onActiveRange, + onMoveFromTo, onPurge, onUpdateDirty); stack->Push(repeatNode); stack->PopContainer(); diff --git a/frameworks/core/components_ng/syntax/repeat_virtual_scroll_2_model_ng.h b/frameworks/core/components_ng/syntax/repeat_virtual_scroll_2_model_ng.h index 1692c75f26c439c7417d5577754b5adf59e17eb2..2f13a1e80c20f83f5a94d75c45235c1e1531770c 100644 --- a/frameworks/core/components_ng/syntax/repeat_virtual_scroll_2_model_ng.h +++ b/frameworks/core/components_ng/syntax/repeat_virtual_scroll_2_model_ng.h @@ -33,7 +33,8 @@ public: const std::function(int32_t)>& onGetRid4Index, const std::function& onRecycleItems, const std::function& onActiveRange, - const std::function& onMoveFromTo, const std::function& onPurge) override; + const std::function& onMoveFromTo, const std::function& onPurge, + const std::function& onUpdateDirty) override; void RemoveNode(uint32_t rid) override; void SetInvalid(int32_t repeatElmtId, uint32_t rid) override; diff --git a/frameworks/core/components_ng/syntax/repeat_virtual_scroll_2_node.cpp b/frameworks/core/components_ng/syntax/repeat_virtual_scroll_2_node.cpp index d1e3bb90b63dc6c9085714df3fc0e8de3915477d..80dee91f3165cf7093673801aa7dfed6e3853f98 100644 --- a/frameworks/core/components_ng/syntax/repeat_virtual_scroll_2_node.cpp +++ b/frameworks/core/components_ng/syntax/repeat_virtual_scroll_2_node.cpp @@ -35,7 +35,8 @@ RefPtr RepeatVirtualScroll2Node::GetOrCreateRepeatNode uint32_t totalCount, const std::function(IndexType)>& onGetRid4Index, const std::function& onRecycleItems, const std::function& onActiveRange, - const std::function& onMoveFromTo, const std::function& onPurge) + const std::function& onMoveFromTo, const std::function& onPurge, + const std::function& onUpdateDirty) { auto node = ElementRegister::GetInstance()->GetSpecificItemById(nodeId); if (node) { @@ -46,7 +47,8 @@ RefPtr RepeatVirtualScroll2Node::GetOrCreateRepeatNode return node; } node = MakeRefPtr( - nodeId, arrLen, totalCount, onGetRid4Index, onRecycleItems, onActiveRange, onMoveFromTo, onPurge); + nodeId, arrLen, totalCount, onGetRid4Index, onRecycleItems, onActiveRange, + onMoveFromTo, onPurge, onUpdateDirty); ElementRegister::GetInstance()->AddUINode(node); return node; @@ -57,10 +59,11 @@ RepeatVirtualScroll2Node::RepeatVirtualScroll2Node(int32_t nodeId, uint32_t arrL const std::function& onRecycleItems, const std::function& onActiveRange, const std::function& onMoveFromTo, - const std::function& onPurge) + const std::function& onPurge, + const std::function& onUpdateDirty) : ForEachBaseNode(V2::JS_REPEAT_ETS_TAG, nodeId), arrLen_(arrLen), totalCount_(totalCount), caches_(onGetRid4Index), onRecycleItems_(onRecycleItems), onActiveRange_(onActiveRange), onMoveFromTo_(onMoveFromTo), - onPurge_(onPurge), postUpdateTaskHasBeenScheduled_(false) + onPurge_(onPurge), onUpdateDirty_(onUpdateDirty), postUpdateTaskHasBeenScheduled_(false) {} void RepeatVirtualScroll2Node::UpdateTotalCount(uint32_t totalCount) @@ -846,6 +849,12 @@ RefPtr RepeatVirtualScroll2Node::GetFrameNode(int32_t index) return AceType::DynamicCast(GetFrameChildByIndex(index, false, false)); } +void RepeatVirtualScroll2Node::fireOnUpdateDirty() +{ + NG::ScopedViewStackProcessor scopedViewStackProcessor; + onUpdateDirty_(); +} + void RepeatVirtualScroll2Node::DumpInfo() { DumpLog::GetInstance().AddDesc("VirtualScroll: true"); diff --git a/frameworks/core/components_ng/syntax/repeat_virtual_scroll_2_node.h b/frameworks/core/components_ng/syntax/repeat_virtual_scroll_2_node.h index acbccc2d02bbd4ad8dc522d6c2e1a3a6bef84a7f..0c648292387ab44f2f5f7e9039c620108bea774c 100644 --- a/frameworks/core/components_ng/syntax/repeat_virtual_scroll_2_node.h +++ b/frameworks/core/components_ng/syntax/repeat_virtual_scroll_2_node.h @@ -99,14 +99,16 @@ public: const std::function& onRecycleItems, const std::function& onActiveRange, const std::function& onMoveFromTo, - const std::function& onPurge); + const std::function& onPurge, + const std::function& onUpdateDirty); RepeatVirtualScroll2Node(int32_t nodeId, uint32_t arrLen, int32_t totalCount, const std::function(IndexType)>& onGetRid4Index, const std::function& onRecycleItems, const std::function& onActiveRange, const std::function& onMoveFromTo, - const std::function& onPurge); + const std::function& onPurge, + const std::function& onUpdateDirty); ~RepeatVirtualScroll2Node() override = default; @@ -241,6 +243,8 @@ public: isLoop_ = isLoop; } + void fireOnUpdateDirty(); + void DumpInfo() override; @@ -309,6 +313,7 @@ private: std::function onActiveRange_; std::function onMoveFromTo_; std::function onPurge_; + std::function onUpdateDirty_; // true in the time from requesting idle / predict task until exec predict tsk. bool postUpdateTaskHasBeenScheduled_; diff --git a/frameworks/core/components_ng/syntax/repeat_virtual_scroll_caches.cpp b/frameworks/core/components_ng/syntax/repeat_virtual_scroll_caches.cpp index 61d96a6fb787b1318b9b0563ae82924ff0092eab..32ce4d53fda98c6ab45e1506ca7040dd9c1cfdcb 100644 --- a/frameworks/core/components_ng/syntax/repeat_virtual_scroll_caches.cpp +++ b/frameworks/core/components_ng/syntax/repeat_virtual_scroll_caches.cpp @@ -87,9 +87,7 @@ bool RepeatVirtualScrollCaches::HasOverlapWithLastActiveRange(uint32_t from, uin */ bool RepeatVirtualScrollCaches::FetchMoreKeysTTypes(uint32_t from, uint32_t to, bool allowFetchMore) { - if (from > to) { - return false; - } + if (from > to) return false; if (allowFetchMore) { // following a key4index_/ttype4index_ purge fetch the whole range @@ -112,6 +110,7 @@ bool RepeatVirtualScrollCaches::FetchMoreKeysTTypes(uint32_t from, uint32_t to, // always request the same range for keys and ttype // optimism by merging the two calls into one + NG::ScopedViewStackProcessor scopedViewStackProcessor; const std::list keysFrom = onGetKeys4Range_(from, to); const std::list ttypesFrom = onGetTypes4Range_(from, to); if ((keysFrom.size() == 0) || (ttypesFrom.size() == 0) || (keysFrom.size() != ttypesFrom.size())) { diff --git a/test/unittest/core/pattern/list/list_common_test_ng.cpp b/test/unittest/core/pattern/list/list_common_test_ng.cpp index 542eb745f1f672f6c92a7e6116485eca12db0e30..1873db3a94ba29399e4e7980e82a2429399314a1 100644 --- a/test/unittest/core/pattern/list/list_common_test_ng.cpp +++ b/test/unittest/core/pattern/list/list_common_test_ng.cpp @@ -4119,6 +4119,7 @@ HWTEST_F(ListCommonTestNg, FireFocus002, TestSize.Level1) [](int32_t, int32_t) {}, [](int32_t, int32_t, int32_t, int32_t, bool, bool) {}, [](int32_t, int32_t) {}, + []() {}, []() {} ); @@ -4369,6 +4370,7 @@ HWTEST_F(ListCommonTestNg, LostChildFocusToSelf003, TestSize.Level1) [](int32_t, int32_t) {}, [](int32_t, int32_t, int32_t, int32_t, bool, bool) {}, [](int32_t, int32_t) {}, + []() {}, []() {} ); diff --git a/test/unittest/core/pattern/list/list_item_pattern_test_ng.cpp b/test/unittest/core/pattern/list/list_item_pattern_test_ng.cpp index 009732f0b205a49d7e65b8f7226f089700728bc9..ccfd55600e99381991428923117bddd908113351 100644 --- a/test/unittest/core/pattern/list/list_item_pattern_test_ng.cpp +++ b/test/unittest/core/pattern/list/list_item_pattern_test_ng.cpp @@ -159,8 +159,9 @@ HWTEST_F(ListItemPatternTestNg, GetParentFrameNode003, TestSize.Level1) [](int32_t start, int32_t end, int32_t vStart, int32_t vEnd, bool isCache, bool forceUpdate) {}; std::function onMoveFromTo = [](int32_t start, int32_t end) {}; std::function onPurge = []() {}; + std::function onUpdateDirty = []() {}; RefPtr node = AceType::MakeRefPtr( - 2, 2, 5, onGetRid4Index, onRecycleItems, onActiveRange, onMoveFromTo, onPurge); + 2, 2, 5, onGetRid4Index, onRecycleItems, onActiveRange, onMoveFromTo, onPurge, onUpdateDirty); ASSERT_NE(node, nullptr); auto frameNode = FrameNode::CreateFrameNode(V2::LIST_ETS_TAG, 1, listItemPattern); ASSERT_NE(frameNode, nullptr); diff --git a/test/unittest/core/pattern/list/list_position_map_test_ng.cpp b/test/unittest/core/pattern/list/list_position_map_test_ng.cpp index ed6dbdf64a73136be1d21d3bc8587b10fd72d745..e3a63ecbd6727b4894079e353cfda3229204fbe7 100644 --- a/test/unittest/core/pattern/list/list_position_map_test_ng.cpp +++ b/test/unittest/core/pattern/list/list_position_map_test_ng.cpp @@ -128,8 +128,9 @@ HWTEST_F(ListPositionMapTestNg, CalculateUINode003, TestSize.Level1) [](int32_t start, int32_t end, int32_t vStart, int32_t vEnd, bool isCache, bool forceUpdate) {}; std::function onMoveFromTo = [](int32_t start, int32_t end) {}; std::function onPurge = []() {}; + std::function onUpdateDirty = []() {}; RefPtr repeatVirtualScroll2Node = AceType::MakeRefPtr( - 2, 2, 5, onGetRid4Index, onRecycleItems, onActiveRange, onMoveFromTo, onPurge); + 2, 2, 5, onGetRid4Index, onRecycleItems, onActiveRange, onMoveFromTo, onPurge, onUpdateDirty); ASSERT_NE(repeatVirtualScroll2Node, nullptr); repeatVirtualScroll2Node->children_ = { node }; RefPtr listPositionMap = AceType::MakeRefPtr(); diff --git a/test/unittest/core/pattern/swiper/swiper_pattern_test_ng.cpp b/test/unittest/core/pattern/swiper/swiper_pattern_test_ng.cpp index 6607f8dcfed951f5d6c81ce24545b6d5faefb123..bdaa09e8d6d10a24836fb472d58d9986d5b2ec20 100644 --- a/test/unittest/core/pattern/swiper/swiper_pattern_test_ng.cpp +++ b/test/unittest/core/pattern/swiper/swiper_pattern_test_ng.cpp @@ -138,8 +138,9 @@ HWTEST_F(SwiperPatternTestNg, CalcWillScrollOffset003, TestSize.Level1) [](int32_t start, int32_t end, int32_t vStart, int32_t vEnd, bool isCache, bool forceUpdate) {}; std::function onMoveFromTo = [](int32_t start, int32_t end) {}; std::function onPurge = []() {}; + std::function onUpdateDirty = []() {}; RefPtr node = AceType::MakeRefPtr( - 2, 2, 5, onGetRid4Index, onRecycleItems, onActiveRange, onMoveFromTo, onPurge); + 2, 2, 5, onGetRid4Index, onRecycleItems, onActiveRange, onMoveFromTo, onPurge, onUpdateDirty); ASSERT_NE(node, nullptr); frameNode->children_.clear(); frameNode->children_.emplace_back(node); @@ -186,8 +187,9 @@ HWTEST_F(SwiperPatternTestNg, CalcWillScrollOffset004, TestSize.Level1) [](int32_t start, int32_t end, int32_t vStart, int32_t vEnd, bool isCache, bool forceUpdate) {}; std::function onMoveFromTo = [](int32_t start, int32_t end) {}; std::function onPurge = []() {}; + std::function onUpdateDirty = []() {}; RefPtr node = AceType::MakeRefPtr( - 2, 2, 5, onGetRid4Index, onRecycleItems, onActiveRange, onMoveFromTo, onPurge); + 2, 2, 5, onGetRid4Index, onRecycleItems, onActiveRange, onMoveFromTo, onPurge, onUpdateDirty); ASSERT_NE(node, nullptr); frameNode->children_.clear(); frameNode->children_.emplace_back(node); @@ -234,8 +236,9 @@ HWTEST_F(SwiperPatternTestNg, CalcWillScrollOffset005, TestSize.Level1) [](int32_t start, int32_t end, int32_t vStart, int32_t vEnd, bool isCache, bool forceUpdate) {}; std::function onMoveFromTo = [](int32_t start, int32_t end) {}; std::function onPurge = []() {}; + std::function onUpdateDirty = []() {}; RefPtr node = AceType::MakeRefPtr( - 2, 2, 5, onGetRid4Index, onRecycleItems, onActiveRange, onMoveFromTo, onPurge); + 2, 2, 5, onGetRid4Index, onRecycleItems, onActiveRange, onMoveFromTo, onPurge, onUpdateDirty); ASSERT_NE(node, nullptr); frameNode->children_.clear(); frameNode->children_.emplace_back(node); @@ -282,8 +285,9 @@ HWTEST_F(SwiperPatternTestNg, CalcWillScrollOffset006, TestSize.Level1) [](int32_t start, int32_t end, int32_t vStart, int32_t vEnd, bool isCache, bool forceUpdate) {}; std::function onMoveFromTo = [](int32_t start, int32_t end) {}; std::function onPurge = []() {}; + std::function onUpdateDirty = []() {}; RefPtr node = AceType::MakeRefPtr( - 2, 2, 5, onGetRid4Index, onRecycleItems, onActiveRange, onMoveFromTo, onPurge); + 2, 2, 5, onGetRid4Index, onRecycleItems, onActiveRange, onMoveFromTo, onPurge, onUpdateDirty); ASSERT_NE(node, nullptr); frameNode->children_.clear(); frameNode->children_.emplace_back(node); @@ -331,8 +335,9 @@ HWTEST_F(SwiperPatternTestNg, CalcWillScrollOffset007, TestSize.Level1) [](int32_t start, int32_t end, int32_t vStart, int32_t vEnd, bool isCache, bool forceUpdate) {}; std::function onMoveFromTo = [](int32_t start, int32_t end) {}; std::function onPurge = []() {}; + std::function onUpdateDirty = []() {}; RefPtr node = AceType::MakeRefPtr( - 2, 2, 5, onGetRid4Index, onRecycleItems, onActiveRange, onMoveFromTo, onPurge); + 2, 2, 5, onGetRid4Index, onRecycleItems, onActiveRange, onMoveFromTo, onPurge, onUpdateDirty); ASSERT_NE(node, nullptr); frameNode->children_.clear(); frameNode->children_.emplace_back(node); @@ -379,8 +384,9 @@ HWTEST_F(SwiperPatternTestNg, CalcWillScrollOffset008, TestSize.Level1) [](int32_t start, int32_t end, int32_t vStart, int32_t vEnd, bool isCache, bool forceUpdate) {}; std::function onMoveFromTo = [](int32_t start, int32_t end) {}; std::function onPurge = []() {}; + std::function onUpdateDirty = []() {}; RefPtr node = AceType::MakeRefPtr( - 2, 2, 5, onGetRid4Index, onRecycleItems, onActiveRange, onMoveFromTo, onPurge); + 2, 2, 5, onGetRid4Index, onRecycleItems, onActiveRange, onMoveFromTo, onPurge, onUpdateDirty); ASSERT_NE(node, nullptr); frameNode->children_.clear(); frameNode->children_.emplace_back(node); @@ -428,8 +434,9 @@ HWTEST_F(SwiperPatternTestNg, CalcWillScrollOffset009, TestSize.Level1) [](int32_t start, int32_t end, int32_t vStart, int32_t vEnd, bool isCache, bool forceUpdate) {}; std::function onMoveFromTo = [](int32_t start, int32_t end) {}; std::function onPurge = []() {}; + std::function onUpdateDirty = []() {}; RefPtr node = AceType::MakeRefPtr( - 2, 2, 5, onGetRid4Index, onRecycleItems, onActiveRange, onMoveFromTo, onPurge); + 2, 2, 5, onGetRid4Index, onRecycleItems, onActiveRange, onMoveFromTo, onPurge, onUpdateDirty); ASSERT_NE(node, nullptr); frameNode->children_.clear(); frameNode->children_.emplace_back(node); @@ -477,8 +484,9 @@ HWTEST_F(SwiperPatternTestNg, CalcWillScrollOffset010, TestSize.Level1) [](int32_t start, int32_t end, int32_t vStart, int32_t vEnd, bool isCache, bool forceUpdate) {}; std::function onMoveFromTo = [](int32_t start, int32_t end) {}; std::function onPurge = []() {}; + std::function onUpdateDirty = []() {}; RefPtr node = AceType::MakeRefPtr( - 2, 2, 5, onGetRid4Index, onRecycleItems, onActiveRange, onMoveFromTo, onPurge); + 2, 2, 5, onGetRid4Index, onRecycleItems, onActiveRange, onMoveFromTo, onPurge, onUpdateDirty); ASSERT_NE(node, nullptr); frameNode->children_.clear(); frameNode->children_.emplace_back(node); @@ -1068,8 +1076,9 @@ HWTEST_F(SwiperPatternTestNg, FindLazyForEachNode002, TestSize.Level1) [](int32_t start, int32_t end, int32_t vStart, int32_t vEnd, bool isCache, bool forceUpdate) {}; std::function onMoveFromTo = [](int32_t start, int32_t end) {}; std::function onPurge = []() {}; + std::function onUpdateDirty = []() {}; RefPtr node = AceType::MakeRefPtr( - 2, 2, 5, onGetRid4Index, onRecycleItems, onActiveRange, onMoveFromTo, onPurge); + 2, 2, 5, onGetRid4Index, onRecycleItems, onActiveRange, onMoveFromTo, onPurge, onUpdateDirty); ASSERT_NE(node, nullptr); auto result = swiperPattern->FindLazyForEachNode(node, true); EXPECT_EQ(result.value(), AceType::DynamicCast(node)); @@ -1121,8 +1130,9 @@ HWTEST_F(SwiperPatternTestNg, FindForEachNode002, TestSize.Level1) [](int32_t start, int32_t end, int32_t vStart, int32_t vEnd, bool isCache, bool forceUpdate) {}; std::function onMoveFromTo = [](int32_t start, int32_t end) {}; std::function onPurge = []() {}; + std::function onUpdateDirty = []() {}; RefPtr node = AceType::MakeRefPtr( - 2, 2, 5, onGetRid4Index, onRecycleItems, onActiveRange, onMoveFromTo, onPurge); + 2, 2, 5, onGetRid4Index, onRecycleItems, onActiveRange, onMoveFromTo, onPurge, onUpdateDirty); ASSERT_NE(node, nullptr); auto result = swiperPattern->FindForEachNode(node, true); EXPECT_EQ(result.value(), AceType::DynamicCast(node)); @@ -1158,8 +1168,9 @@ HWTEST_F(SwiperPatternTestNg, FindForEachNode004, TestSize.Level1) [](int32_t start, int32_t end, int32_t vStart, int32_t vEnd, bool isCache, bool forceUpdate) {}; std::function onMoveFromTo = [](int32_t start, int32_t end) {}; std::function onPurge = []() {}; + std::function onUpdateDirty = []() {}; RefPtr node = AceType::MakeRefPtr( - 2, 2, 5, onGetRid4Index, onRecycleItems, onActiveRange, onMoveFromTo, onPurge); + 2, 2, 5, onGetRid4Index, onRecycleItems, onActiveRange, onMoveFromTo, onPurge, onUpdateDirty); ASSERT_NE(node, nullptr); auto frameNode = FrameNode::CreateFrameNode(V2::SWIPER_ETS_TAG, 2, swiperPattern); ASSERT_NE(frameNode, nullptr); @@ -1203,8 +1214,9 @@ HWTEST_F(SwiperPatternTestNg, HasRepeatTotalCountDifference001, TestSize.Level1) [](int32_t start, int32_t end, int32_t vStart, int32_t vEnd, bool isCache, bool forceUpdate) {}; std::function onMoveFromTo = [](int32_t start, int32_t end) {}; std::function onPurge = []() {}; + std::function onUpdateDirty = []() {}; RefPtr node = AceType::MakeRefPtr( - 2, 2, 5, onGetRid4Index, onRecycleItems, onActiveRange, onMoveFromTo, onPurge); + 2, 2, 5, onGetRid4Index, onRecycleItems, onActiveRange, onMoveFromTo, onPurge, onUpdateDirty); ASSERT_NE(node, nullptr); frameNode->children_.clear(); frameNode->children_.emplace_back(node); @@ -1352,8 +1364,9 @@ HWTEST_F(SwiperPatternTestNg, AutoLinearIsOutOfBoundary001, TestSize.Level1) [](int32_t start, int32_t end, int32_t vStart, int32_t vEnd, bool isCache, bool forceUpdate) {}; std::function onMoveFromTo = [](int32_t start, int32_t end) {}; std::function onPurge = []() {}; + std::function onUpdateDirty = []() {}; RefPtr node = AceType::MakeRefPtr( - 2, 2, 5, onGetRid4Index, onRecycleItems, onActiveRange, onMoveFromTo, onPurge); + 2, 2, 5, onGetRid4Index, onRecycleItems, onActiveRange, onMoveFromTo, onPurge, onUpdateDirty); ASSERT_NE(node, nullptr); frameNode->children_.clear(); frameNode->children_.emplace_back(node); @@ -1445,8 +1458,9 @@ HWTEST_F(SwiperPatternTestNg, GetDistanceToEdge001, TestSize.Level1) [](int32_t start, int32_t end, int32_t vStart, int32_t vEnd, bool isCache, bool forceUpdate) {}; std::function onMoveFromTo = [](int32_t start, int32_t end) {}; std::function onPurge = []() {}; + std::function onUpdateDirty = []() {}; RefPtr node = AceType::MakeRefPtr( - 2, 2, 5, onGetRid4Index, onRecycleItems, onActiveRange, onMoveFromTo, onPurge); + 2, 2, 5, onGetRid4Index, onRecycleItems, onActiveRange, onMoveFromTo, onPurge, onUpdateDirty); ASSERT_NE(node, nullptr); frameNode->children_.clear(); frameNode->children_.emplace_back(node); diff --git a/test/unittest/core/syntax/repeat_virtual_2_test_ng.cpp b/test/unittest/core/syntax/repeat_virtual_2_test_ng.cpp index 676e0e354c0fa21dba9a015a9ddddf3eb1d76b93..9c24eda59ef5f9e45fea792d3254d3be8c83b7e4 100644 --- a/test/unittest/core/syntax/repeat_virtual_2_test_ng.cpp +++ b/test/unittest/core/syntax/repeat_virtual_2_test_ng.cpp @@ -63,8 +63,12 @@ RefPtr RepeatVirtual2TestNg::CreateRepeatVirtualNode(u onPurge_ = []() -> void { return; }; + onUpdateDirty_ = []() -> void { + return; + }; return RepeatVirtualScroll2Node::GetOrCreateRepeatNode( - GetElmtId(), totalCount, totalCount, onGetRid4Index_, onRecycleItems_, onActiveRange_, onMoveFromTo_, onPurge_); + GetElmtId(), totalCount, totalCount, onGetRid4Index_, onRecycleItems_, onActiveRange_, + onMoveFromTo_, onPurge_, onUpdateDirty_); } RefPtr RepeatVirtual2TestNg::CreateListItemNode() @@ -104,7 +108,8 @@ HWTEST_F(RepeatVirtual2TestNg, CreateRepeat001, TestSize.Level1) * @tc.expected: Object is not nullptr. */ auto repeatNode = RepeatVirtualScroll2Node::GetOrCreateRepeatNode( - nodeId, 10, 10, onGetRid4Index_, onRecycleItems_, onActiveRange_, onMoveFromTo_, onPurge_); + nodeId, 10, 10, onGetRid4Index_, onRecycleItems_, onActiveRange_, + onMoveFromTo_, onPurge_, onUpdateDirty_); EXPECT_NE(repeatNode, nullptr); } diff --git a/test/unittest/core/syntax/repeat_virtual_2_test_ng.h b/test/unittest/core/syntax/repeat_virtual_2_test_ng.h index 7298e6bab1d8d3a864e30529e80087abfedd2d79..fdcdddfee0dd6207daa941621cee096eae47f7c7 100644 --- a/test/unittest/core/syntax/repeat_virtual_2_test_ng.h +++ b/test/unittest/core/syntax/repeat_virtual_2_test_ng.h @@ -78,6 +78,7 @@ public: std::function onActiveRange_; std::function onMoveFromTo_; std::function onPurge_; + std::function onUpdateDirty_; }; } // namespace OHOS::Ace::NG #endif // FOUNDATION_ACE_TEST_UNITTEST_CORE_SYNTAX_REPEAT_VIRTUAL_2_TEST_NG_H \ No newline at end of file