From b5d5096ac60659cbc05218f975da8897b6b60f11 Mon Sep 17 00:00:00 2001 From: Pozdeev Pavel Date: Fri, 28 Nov 2025 13:13:38 +0300 Subject: [PATCH 1/2] rebase --- arkoala-arkts/arkui/src/ArkUIEntry.ets | 20 +++++++++++++++++++ arkoala-arkts/arkui/src/PeerNode.ets | 3 +++ arkoala-arkts/loader/src/loader.ts | 6 ++++++ .../tools/peer-generator/package.json | 2 +- 4 files changed, 30 insertions(+), 1 deletion(-) diff --git a/arkoala-arkts/arkui/src/ArkUIEntry.ets b/arkoala-arkts/arkui/src/ArkUIEntry.ets index 4873e20fc..f56937fcd 100644 --- a/arkoala-arkts/arkui/src/ArkUIEntry.ets +++ b/arkoala-arkts/arkui/src/ArkUIEntry.ets @@ -141,6 +141,23 @@ function dumpTree(node: IncrementalNode, indent: int32 = 0): void { child = child!.nextSibling } } +function dumpDescriptionTree(node: PeerNode, indent: int32 = 0): void { + const indentToString = (indent: number) => { + let str = "" + for (let i = 0; i <= indent; i++) str += " " + return str + } + + if (indent == 0) InteropNativeModule._NativeLog("> Dump tree:") + + let child = node.firstChild + InteropNativeModule._NativeLog("> " + indentToString(indent++) + "| " + node.getDescription().join(",")) + + while (child) { + dumpDescriptionTree(child! as PeerNode, indent + 1) + child = child!.nextSibling + } +} function registerSyncCallbackProcessor(): void { wrapSystemApiHandlerCallback() @@ -208,6 +225,7 @@ export class Application implements UserApplicationControl { private timer: MutableState | undefined = undefined private currentCrash: string | undefined = undefined private enableDumpTree = false + private enableDumpDescription = true private exitApp: boolean = false private userView: UserView | undefined = undefined @@ -344,6 +362,7 @@ export class Application implements UserApplicationControl { } start(foreignContext: pointer, loopIterations: int32): pointer { + console.log("=========start(foreignContext: pointer============") enterForeignContext(foreignContext) const ptr: pointer = this.start() leaveForeignContext() @@ -594,6 +613,7 @@ export class Application implements UserApplicationControl { // Call callbacks and sync. if (!this.parallelUI) callScheduledCallbacks() if (this.enableDumpTree) dumpTree(this.rootState!.value) + if (this.enableDumpDescription) dumpDescriptionTree(this.rootState!.value) while (this.vsyncWaiters.length > 0) { let resolve = this.vsyncWaiters.shift()! resolve(this) diff --git a/arkoala-arkts/arkui/src/PeerNode.ets b/arkoala-arkts/arkui/src/PeerNode.ets index 93a3179dc..ed968861f 100644 --- a/arkoala-arkts/arkui/src/PeerNode.ets +++ b/arkoala-arkts/arkui/src/PeerNode.ets @@ -31,6 +31,9 @@ export const LazyForEachType = 13 const INITIAL_ID = 1000 export class PeerNode extends IncrementalNode { + getDescription(): Array { + return ['aaa'] + } static generateRootPeer() { return ArkRootPeer.create() } diff --git a/arkoala-arkts/loader/src/loader.ts b/arkoala-arkts/loader/src/loader.ts index e270ed0e1..3372164b6 100644 --- a/arkoala-arkts/loader/src/loader.ts +++ b/arkoala-arkts/loader/src/loader.ts @@ -202,6 +202,11 @@ class AppControl { return this } + getUIDescription(): AppControl { + console.log("============getUIDescription=============") + return this + } + exit(): AppControl { nativeModule()._EmitEvent(EventType.ExitApp, -1, 0, 0) return this @@ -350,6 +355,7 @@ loadVM( } default: { if (!app.startsWith('tests')) { + control.getUIDescription() console.log("Checker is unassigned! app: " + app) setTimeout(() => { // Request app to exit in 10 secs. diff --git a/arkoala-arkts/tools/peer-generator/package.json b/arkoala-arkts/tools/peer-generator/package.json index 92d89163b..d7913c007 100644 --- a/arkoala-arkts/tools/peer-generator/package.json +++ b/arkoala-arkts/tools/peer-generator/package.json @@ -31,6 +31,6 @@ "@idlizer/etsgen": "file:./bundle/idlizer-etsgen-0.0.0-iJ68bGDXtW_LMpvobp61KAsM6SU.tgz", "@idlizer/libohos": "file:./bundle/idlizer-libohos-0.0.0-bx2bDVtbqDzIhcEudLk86-K1H98.tgz", "@idlizer/interfaces": "file:./bundle/idlizer-interfaces-0.0.0-IzIrSk5srHKhdDrOAX1XbW1w45k.tgz", - "@idlizer/runner": "file:./bundle/idlizer-runner-0.0.0-uSzmjQApQS-zbaatMsZwgSKFadE.tgz" + "@idlizer/runner": "file:../../../../runner" } } \ No newline at end of file -- Gitee From 434bfbaa663d29256415e6add424c9f135d629a4 Mon Sep 17 00:00:00 2001 From: Pozdeev Pavel Date: Thu, 27 Nov 2025 17:05:46 +0300 Subject: [PATCH 2/2] getDesc method in Control interface --- .../arkui/non-public-sdk/overrides/UserView.d.ets | 1 + arkoala-arkts/arkui/src/ArkUIEntry.ets | 13 ++++++++----- arkoala-arkts/arkui/src/PeerNode.ets | 2 +- arkoala-arkts/arkui/src/UserView.ets | 1 + ui2abc/ets-tests/ets/TestHarness.ets | 5 +++++ ui2abc/ets-tests/src/AppControl.ts | 1 + 6 files changed, 17 insertions(+), 6 deletions(-) diff --git a/arkoala-arkts/arkui/non-public-sdk/overrides/UserView.d.ets b/arkoala-arkts/arkui/non-public-sdk/overrides/UserView.d.ets index 3a703cb8a..ef275d7ee 100644 --- a/arkoala-arkts/arkui/non-public-sdk/overrides/UserView.d.ets +++ b/arkoala-arkts/arkui/non-public-sdk/overrides/UserView.d.ets @@ -28,6 +28,7 @@ export interface UserApplicationControl { nextFrame(): Promise reloadView(): UserApplicationControl requestStopApp(crash?: string): void + getDescription(): UserApplicationControl } diff --git a/arkoala-arkts/arkui/src/ArkUIEntry.ets b/arkoala-arkts/arkui/src/ArkUIEntry.ets index f56937fcd..a2a2aa672 100644 --- a/arkoala-arkts/arkui/src/ArkUIEntry.ets +++ b/arkoala-arkts/arkui/src/ArkUIEntry.ets @@ -148,10 +148,12 @@ function dumpDescriptionTree(node: PeerNode, indent: int32 = 0): void { return str } - if (indent == 0) InteropNativeModule._NativeLog("> Dump tree:") + if (indent == 0) + console.log("Dump description tree:") let child = node.firstChild - InteropNativeModule._NativeLog("> " + indentToString(indent++) + "| " + node.getDescription().join(",")) + console.log(indentToString(indent++) + "\"node ID\": " + node.getId() + ",") + console.log(indentToString(indent++) + "\"node description\": \"" + node.getDescription().join('\n' + indentToString(indent++)) + "\"") while (child) { dumpDescriptionTree(child! as PeerNode, indent + 1) @@ -322,6 +324,10 @@ export class Application implements UserApplicationControl { this.unblockCallbackWait() return this } + getDescription(): UserApplicationControl { + dumpDescriptionTree(this.rootState!.value) + return this + } private vsyncWaiters = new Array<(value: UserApplicationControl) => void>() nextFrame(): Promise { this.unblockVsync() @@ -362,7 +368,6 @@ export class Application implements UserApplicationControl { } start(foreignContext: pointer, loopIterations: int32): pointer { - console.log("=========start(foreignContext: pointer============") enterForeignContext(foreignContext) const ptr: pointer = this.start() leaveForeignContext() @@ -613,7 +618,6 @@ export class Application implements UserApplicationControl { // Call callbacks and sync. if (!this.parallelUI) callScheduledCallbacks() if (this.enableDumpTree) dumpTree(this.rootState!.value) - if (this.enableDumpDescription) dumpDescriptionTree(this.rootState!.value) while (this.vsyncWaiters.length > 0) { let resolve = this.vsyncWaiters.shift()! resolve(this) @@ -621,7 +625,6 @@ export class Application implements UserApplicationControl { scheduleCoroutine() } - loadView(className: string, params: string): string { if (this.manager === undefined) { return "Manager is not inited" diff --git a/arkoala-arkts/arkui/src/PeerNode.ets b/arkoala-arkts/arkui/src/PeerNode.ets index ed968861f..e728dceae 100644 --- a/arkoala-arkts/arkui/src/PeerNode.ets +++ b/arkoala-arkts/arkui/src/PeerNode.ets @@ -32,7 +32,7 @@ const INITIAL_ID = 1000 export class PeerNode extends IncrementalNode { getDescription(): Array { - return ['aaa'] + return ['dummy description'] } static generateRootPeer() { return ArkRootPeer.create() diff --git a/arkoala-arkts/arkui/src/UserView.ets b/arkoala-arkts/arkui/src/UserView.ets index bba1960c0..fafe38cb8 100644 --- a/arkoala-arkts/arkui/src/UserView.ets +++ b/arkoala-arkts/arkui/src/UserView.ets @@ -27,6 +27,7 @@ export interface UserApplicationControl { nextFrame(): Promise reloadView(): UserApplicationControl requestStopApp(crash?: string): void + getDescription(): UserApplicationControl } diff --git a/ui2abc/ets-tests/ets/TestHarness.ets b/ui2abc/ets-tests/ets/TestHarness.ets index 4a48df3d9..26f05ebd4 100644 --- a/ui2abc/ets-tests/ets/TestHarness.ets +++ b/ui2abc/ets-tests/ets/TestHarness.ets @@ -76,6 +76,7 @@ export interface TestController { notifyChange(id: string): TestController notifyClick(id: string): TestController snapshot(target: string, name: string): boolean + getDescription(): TestController } export class TestHarness extends UserView implements TestController { @@ -94,6 +95,10 @@ export class TestHarness extends UserView implements TestController { this.control!.emitTask(type, "" + target, arg1, arg2) return this } + getDescription(): TestController { + this.control!.getDescription() + return this + } start(): TestController { this.control!.startLog() return this diff --git a/ui2abc/ets-tests/src/AppControl.ts b/ui2abc/ets-tests/src/AppControl.ts index e3f337447..8f9088a3a 100644 --- a/ui2abc/ets-tests/src/AppControl.ts +++ b/ui2abc/ets-tests/src/AppControl.ts @@ -32,6 +32,7 @@ export interface AppControl { nextFrame(): AppControl skipFrames(count: int32): AppControl loadPage(page: string): AppControl + getDescription(): AppControl } export function testPageOnChange( -- Gitee