From 2d68ad74b9ce4145b5f3973992c8bae42104a4d6 Mon Sep 17 00:00:00 2001 From: wangchensu Date: Tue, 19 Aug 2025 18:56:57 +0800 Subject: [PATCH] change the ref __parentViewOfBuildNode in buildernot to weakRef Signed-off-by: wangchensu Change-Id: I59d5d7432cf27dd2717991b07cc4e59e69550785 --- .../declarative_frontend/ark_node/src/builder_node.ts | 8 ++++---- .../bridge/declarative_frontend/ark_node/src/common.ts | 2 +- .../declarative_frontend/ark_node/src/render_node.ts | 1 - frameworks/bridge/declarative_frontend/engine/jsXNode.js | 8 ++++---- 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/frameworks/bridge/declarative_frontend/ark_node/src/builder_node.ts b/frameworks/bridge/declarative_frontend/ark_node/src/builder_node.ts index 3c1a926d670..5943882d06a 100644 --- a/frameworks/bridge/declarative_frontend/ark_node/src/builder_node.ts +++ b/frameworks/bridge/declarative_frontend/ark_node/src/builder_node.ts @@ -95,7 +95,7 @@ class JSBuilderNode extends BaseNode implements IDisposable { private allowFreezeWhenInactive: boolean; private parentallowFreeze: boolean; private isFreeze: boolean; - public __parentViewOfBuildNode?: ViewBuildNodeBase; + public __parentViewOfBuildNode?: WeakRef; private updateParams_: Object; private activeCount_: number; constructor(uiContext: UIContext, options?: RenderOptions) { @@ -114,7 +114,7 @@ class JSBuilderNode extends BaseNode implements IDisposable { } public findProvidePU__(providePropName: string): ObservedPropertyAbstractPU | undefined { if (this.__enableBuilderNodeConsume__ && this.__parentViewOfBuildNode) { - return this.__parentViewOfBuildNode.findProvidePU__(providePropName); + return this.__parentViewOfBuildNode?.deref()?.findProvidePU__(providePropName); } return undefined; } @@ -244,10 +244,10 @@ class JSBuilderNode extends BaseNode implements IDisposable { this.frameNode_.setBuilderNode(this); let id = this.frameNode_.getUniqueId(); if (this.id_ && this.id_ !== id) { - this.__parentViewOfBuildNode?.removeChildBuilderNode(this.id_); + this.__parentViewOfBuildNode?.deref()?.removeChildBuilderNode(this.id_); } this.id_ = id; - this.__parentViewOfBuildNode?.addChildBuilderNode(this); + this.__parentViewOfBuildNode?.deref()?.addChildBuilderNode(this); FrameNodeFinalizationRegisterProxy.rootFrameNodeIdToBuilderNode_.set(this.frameNode_.getUniqueId(), new WeakRef(this.frameNode_)); __JSScopeUtil__.restoreInstanceId(); } diff --git a/frameworks/bridge/declarative_frontend/ark_node/src/common.ts b/frameworks/bridge/declarative_frontend/ark_node/src/common.ts index d45089877f7..9999bd45fe7 100644 --- a/frameworks/bridge/declarative_frontend/ark_node/src/common.ts +++ b/frameworks/bridge/declarative_frontend/ark_node/src/common.ts @@ -27,7 +27,7 @@ function __establishConnection__(allow: boolean, parentView: ViewBuildNodeBase | if (builderNode.getInheritFreeze()) { builderNode.setAllowFreezeWhenInactive(allow); } - builderNode.__parentViewOfBuildNode = parentView; + builderNode.__parentViewOfBuildNode = new WeakRef(parentView); parentView?.addChildBuilderNode(builderNode); }); return true; diff --git a/frameworks/bridge/declarative_frontend/ark_node/src/render_node.ts b/frameworks/bridge/declarative_frontend/ark_node/src/render_node.ts index 94393c843d7..b8d4c654e8c 100644 --- a/frameworks/bridge/declarative_frontend/ark_node/src/render_node.ts +++ b/frameworks/bridge/declarative_frontend/ark_node/src/render_node.ts @@ -166,7 +166,6 @@ class LengthMetrics { } declare interface Resource {} -declare type BusinessError = any declare enum Color { White, diff --git a/frameworks/bridge/declarative_frontend/engine/jsXNode.js b/frameworks/bridge/declarative_frontend/engine/jsXNode.js index 6ccca88eb88..450f7c32eb0 100644 --- a/frameworks/bridge/declarative_frontend/engine/jsXNode.js +++ b/frameworks/bridge/declarative_frontend/engine/jsXNode.js @@ -184,7 +184,7 @@ class JSBuilderNode extends BaseNode { } findProvidePU__(providePropName) { if (this.__enableBuilderNodeConsume__ && this.__parentViewOfBuildNode) { - return this.__parentViewOfBuildNode.findProvidePU__(providePropName); + return this.__parentViewOfBuildNode?.deref()?.findProvidePU__(providePropName); } return undefined; } @@ -315,10 +315,10 @@ class JSBuilderNode extends BaseNode { this.frameNode_.setBuilderNode(this); let id = this.frameNode_.getUniqueId(); if (this.id_ && this.id_ !== id) { - this.__parentViewOfBuildNode?.removeChildBuilderNode(this.id_); + this.__parentViewOfBuildNode?.deref()?.removeChildBuilderNode(this.id_); } this.id_ = id; - this.__parentViewOfBuildNode?.addChildBuilderNode(this); + this.__parentViewOfBuildNode?.deref()?.addChildBuilderNode(this); FrameNodeFinalizationRegisterProxy.rootFrameNodeIdToBuilderNode_.set(this.frameNode_.getUniqueId(), new WeakRef(this.frameNode_)); __JSScopeUtil__.restoreInstanceId(); } @@ -3288,7 +3288,7 @@ function __establishConnection__(allow, parentView, builderIds) { if (builderNode.getInheritFreeze()) { builderNode.setAllowFreezeWhenInactive(allow); } - builderNode.__parentViewOfBuildNode = parentView; + builderNode.__parentViewOfBuildNode = new WeakRef(parentView); parentView?.addChildBuilderNode(builderNode); }); return true; -- Gitee