mirror of
https://gitee.com/openharmony/arkui_ace_engine
synced 2024-10-07 00:13:44 +00:00
update event tool
Signed-off-by: jiadexiang <jiadexiang@huawei.com>
This commit is contained in:
parent
4f84fd321a
commit
20694df8e6
2
.gitignore
vendored
2
.gitignore
vendored
@ -15,3 +15,5 @@ lite/maplejs/
|
||||
lite/tools/
|
||||
lite/ui/
|
||||
.clangd
|
||||
__pycache__/
|
||||
output/
|
||||
|
@ -4,7 +4,7 @@
|
||||
> 3. cmd中执行`python3 main.py -i ./resources/dumpfile/input.txt`;
|
||||
> 4. 生成的手势树 SVG 图像文件输出在制定`./output`目录中;
|
||||
> 5. 使用浏览器查看即可;
|
||||
> 6. 默认只展示简易内容,如果需要展示完整内容,请将`python main.py -m`;
|
||||
> 6. 默认只展示简易内容,如果需要展示完整内容,请将`python3 main.py -m`;
|
||||
|
||||
【Note】:如果遇到提示 dot 可执行文件无法找到,则需要本地安装 [Graphviz](https://graphviz.org/download/),
|
||||
并将其bin目录路径添加到环境变量中。
|
||||
|
9
test/tools/event_tree_to_graph/changelog.md
Normal file
9
test/tools/event_tree_to_graph/changelog.md
Normal file
@ -0,0 +1,9 @@
|
||||
#### 2024-07-13
|
||||
1. [Added] add bat script
|
||||
|
||||
#### 2024-06-30
|
||||
1. [Added] 添加 hit test result 生成 svg 图
|
||||
|
||||
|
||||
#### 2024-06-22
|
||||
1. [Added] 初始版本,支持 event dump 转为 svg 树状图
|
@ -18,45 +18,71 @@
|
||||
|
||||
|
||||
import argparse
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
from src.content_parser import ContentParser
|
||||
from src.graph.graph_converter import generate_event_trees_graph
|
||||
from src.graph.graph_converter import generate_all_graphs
|
||||
from src.pre_process import handle_file_preprocess
|
||||
from src.utils.log_wrapper import log_info, log_error
|
||||
from src.utils.log_wrapper import log_info, log_error, enable_debug
|
||||
|
||||
|
||||
def usage():
|
||||
print("python main.py -i input.txt")
|
||||
print('\n Usage: main.py <cmd> <input> <output>')
|
||||
print('python main.py -i input.txt')
|
||||
print('\n Usage: main.py <cmd> <input>')
|
||||
print(' <cmd>: TODO')
|
||||
print(' <input>: input dump file')
|
||||
print(' <output>: ouput image file\n')
|
||||
return
|
||||
|
||||
|
||||
def parse_args():
|
||||
parser = argparse.ArgumentParser(description="")
|
||||
parser.add_argument("-i", type=str, default="input.txt", help="input the dump source file")
|
||||
parser.add_argument("-o", type=str, default="dump_temp.txt", help="output the generated image")
|
||||
parser.add_argument("-m", action='store_true', default=False, help="是否生成详细信息")
|
||||
parser = argparse.ArgumentParser(description='')
|
||||
parser.add_argument('-d', action='store_true', default=False, help='enable debug info')
|
||||
parser.add_argument('-r', action='store_true', default=False, help='dump event tree with device')
|
||||
parser.add_argument('-i',
|
||||
type=str, default='./resources/dumpfile/input.txt', help='input the dump source file')
|
||||
parser.add_argument('-m', action='store_true', default=False, help='add details info')
|
||||
argument = parser.parse_args()
|
||||
argument.input_file = argument.i
|
||||
argument.output_file = argument.o
|
||||
argument.detailed = argument.m
|
||||
argument.dump_from_device = argument.r
|
||||
argument.debug = argument.d
|
||||
return argument
|
||||
|
||||
|
||||
def dump_from_device():
|
||||
bat_file_path = r'src\bats\dump_event.bat'
|
||||
try:
|
||||
subprocess.call([bat_file_path])
|
||||
print('capture event tree done.')
|
||||
except FileNotFoundError:
|
||||
print(f'file not found: {bat_file_path}')
|
||||
except Exception as e:
|
||||
print(f'exception: {e}')
|
||||
|
||||
|
||||
# python main.py -i input.txt
|
||||
if __name__ == '__main__':
|
||||
# 解析参数
|
||||
# parse the args
|
||||
args = parse_args()
|
||||
# 预处理
|
||||
handle_file_preprocess(args.input_file, args.output_file)
|
||||
# 读取文件,并解析
|
||||
dump_result = ContentParser(args.output_file).do_parse()
|
||||
# config log model
|
||||
if args.debug:
|
||||
enable_debug(True)
|
||||
# dump trace from device if needed
|
||||
if args.dump_from_device:
|
||||
if os.name == 'nt':
|
||||
dump_from_device()
|
||||
else:
|
||||
log_error('only support dump from device on windows')
|
||||
sys.exit(1)
|
||||
# pre process
|
||||
handle_file_preprocess(args.input_file, 'dump_temp.txt')
|
||||
# read the dump file and parse
|
||||
dump_result = ContentParser('dump_temp.txt').do_parse()
|
||||
if dump_result.is_succeed():
|
||||
log_info("解析成功")
|
||||
log_info('parse done')
|
||||
dump_result.dump()
|
||||
else:
|
||||
log_error("解析失败")
|
||||
generate_event_trees_graph(dump_result, args.detailed)
|
||||
log_error('parse failed')
|
||||
generate_all_graphs(dump_result, args.detailed)
|
||||
|
321
test/tools/event_tree_to_graph/resources/dumpfile/input.txt
Normal file
321
test/tools/event_tree_to_graph/resources/dumpfile/input.txt
Normal file
@ -0,0 +1,321 @@
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: WindowName: EntryView
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: DisplayId: 0
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: WinId: 8
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: Pid: 1550
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: Type: 2001
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: Mode: 1
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: Flag: 0
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: Orientation: 8
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: IsStartingWindow: false
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: FirstFrameCallbackCalled: 0
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: VisibilityState: 0
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: Focusable: true
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: DecoStatus: true
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: IsPrivacyMode: false
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: isSnapshotSkip: 0
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: WindowRect: [ 0, 0, 720, 1280 ]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: TouchHotAreas: [ 0, 0, 720, 1280 ]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: bundleName:com.ohos.launcher
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: moduleName:phone_launcher
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: 0: event tree =>
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: touch points:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: id: 0, point: Offset (392.00, 312.00), screenPoint: Offset (392.00, 312.00), type: TouchDown, timestamp: 2017-08-25 15:00:20.165, isInjected: 0
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: id: 0, point: Offset (392.00, 312.00), screenPoint: Offset (392.00, 312.00), type: TouchUp, timestamp: 2017-08-25 15:00:20.233, isInjected: 0
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: id: 1, point: Offset (200.00, 112.00), screenPoint: Offset (200.00, 112.00), type: TouchDown, timestamp: 2017-08-25 15:00:27.165, isInjected: 0
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: id: 1, point: Offset (100.00, 456.00), screenPoint: Offset (100.00, 456.00), type: TouchUp, timestamp: 2017-08-25 15:00:27.233, isInjected: 0
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: hittest:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 0, parentId: -1, tag: root, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1280.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 1, parentId: 0, tag: stage, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1280.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 4, parentId: 1, tag: page, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1280.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 7, parentId: 4, tag: Stack, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1280.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 8, parentId: 7, tag: Flex, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1280.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 11, parentId: 8, tag: Column, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (45.50, 1077.50) - [629.00 x 130.50]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 9, parentId: 8, tag: Column, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1077.50]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 14, parentId: 9, tag: __Common__, comId: PageDesktopLayout, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1077.50]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 16, parentId: 14, tag: Column, comId: GridSwiper, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1077.50]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 84, parentId: 16, tag: Swiper, comId: GridSwiper_Swiper, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1077.50]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 91, parentId: 84, tag: SwiperIndicator, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (330.00, 1029.50) - [60.00 x 48.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 88, parentId: 84, tag: Column, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 135.50) - [720.00 x 942.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 89, parentId: 88, tag: __Common__, comId: SwiperPage_00, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 825.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 92, parentId: 89, tag: Grid, comId: SwiperPage_Grid_0, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (18.00, 0.00) - [684.00 x 825.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 228, parentId: 92, tag: GridItem, comId: SwiperPage_GridItem_7, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (282.00, 141.00) - [120.00 x 120.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 231, parentId: 228, tag: __Common__, comId: SwiperPage_AppItem_7, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [120.00 x 120.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 233, parentId: 231, tag: Column, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [120.00 x 120.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 235, parentId: 233, tag: Column, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [120.00 x 120.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 236, parentId: 235, tag: Column, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [120.00 x 120.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 240, parentId: 236, tag: Column, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (40.00, 91.50) - [40.00 x 24.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 237, parentId: 236, tag: Column, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (19.50, 4.50) - [81.00 x 81.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 242, parentId: 237, tag: Column, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [81.00 x 81.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 243, parentId: 242, tag: Badge, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [81.00 x 81.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 245, parentId: 243, tag: Text, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (84.00, -3.00) - [0.00 x 0.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 244, parentId: 243, tag: Image, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [81.00 x 81.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: event procedures:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: finger:0
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: frameNodeId: 242, type: TouchEventActuator, depth: 0, id: 0xef6c5fa0, parentId: 0x0
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: stateHistory:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchDown, timestamp: 2017-08-25 15:00:20.170
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchUp, timestamp: 2017-08-25 15:00:20.235
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: frameNodeId: 233, type: TouchEventActuator, depth: 0, id: 0xf072b8a0, parentId: 0x0
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: stateHistory:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchDown, timestamp: 2017-08-25 15:00:20.170
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchUp, timestamp: 2017-08-25 15:00:20.236
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: frameNodeId: 84, type: TouchEventActuator, depth: 0, id: 0xf072b240, parentId: 0x0
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: stateHistory:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchDown, timestamp: 2017-08-25 15:00:20.174
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchUp, timestamp: 2017-08-25 15:00:20.236
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: frameNodeId: 84, type: ExclusiveRecognizer, depth: 0, id: 0xf063eed0, parentId: 0x0
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: stateHistory:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchDown, state: READY, disposal: NONE, timestamp: 2017-08-25 15:00:20.177
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchUp, state: SUCCEED, disposal: ACCEPT, timestamp: 2017-08-25 15:00:20.245
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: frameNodeId: 88, type: ExclusiveRecognizer, depth: 1, id: 0xef57cf40, parentId: 0xf063eed0
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: stateHistory:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchDown, state: READY, disposal: NONE, timestamp: 2017-08-25 15:00:20.177
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchUp, state: SUCCEED, disposal: REJECT, timestamp: 2017-08-25 15:00:20.245
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: frameNodeId: 233, type: ExclusiveRecognizer, depth: 2, id: 0xef57c6f0, parentId: 0xef57cf40
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: stateHistory:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchDown, state: READY, disposal: NONE, timestamp: 2017-08-25 15:00:20.177
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchUp, state: SUCCEED, disposal: ACCEPT, timestamp: 2017-08-25 15:00:20.245
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: frameNodeId: 235, type: ParallelRecognizer, depth: 3, id: 0xef57c350, parentId: 0xef57c6f0
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: stateHistory:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchDown, state: DETECTING, disposal: NONE, timestamp: 2017-08-25 15:00:20.176
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchUp, state: FAIL, disposal: REJECT, timestamp: 2017-08-25 15:00:20.237
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: frameNodeId: 235, type: ParallelRecognizer, depth: 4, id: 0xef57bf70, parentId: 0xef57c350
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: stateHistory:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchDown, state: DETECTING, disposal: NONE, timestamp: 2017-08-25 15:00:20.176
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchUp, state: FAIL, disposal: REJECT, timestamp: 2017-08-25 15:00:20.237
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: frameNodeId: 237, type: LongPressRecognizer, depth: 5, id: 0xeedba4f0, parentId: 0xef57bf70, customInfo: duration: 800, isForDrag: 0, repeat: 0, fingers: 1
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: stateHistory:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchDown, state: DETECTING, disposal: NONE, timestamp: 2017-08-25 15:00:20.175
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchUp, state: FAIL, disposal: REJECT, timestamp: 2017-08-25 15:00:20.236
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: frameNodeId: 237, type: SequencedRecognizer, depth: 5, id: 0xef57bb90, parentId: 0xef57bf70
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: stateHistory:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchDown, state: READY, disposal: NONE, timestamp: 2017-08-25 15:00:20.175
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchUp, state: FAIL, disposal: REJECT, timestamp: 2017-08-25 15:00:20.236
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: frameNodeId: 237, type: LongPressRecognizer, depth: 6, id: 0xf06b6f70, parentId: 0xef57bb90, customInfo: duration: 500, isForDrag: 1, repeat: 0, fingers: 1
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: stateHistory:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchDown, state: DETECTING, disposal: NONE, timestamp: 2017-08-25 15:00:20.175
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchUp, state: FAIL, disposal: REJECT, timestamp: 2017-08-25 15:00:20.236
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: frameNodeId: 237, type: PanRecognizer, depth: 6, id: 0xf0710020, parentId: 0xef57bb90, customInfo: direction: 15, isForDrag: 1, distance: 7.5, fingers: 1
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: stateHistory:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: frameNodeId: 237, type: LongPressRecognizer, depth: 5, id: 0xeedb9fb0, parentId: 0xef57bf70, customInfo: duration: 800, isForDrag: 1, repeat: 0, fingers: 1
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: stateHistory:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchDown, state: DETECTING, disposal: NONE, timestamp: 2017-08-25 15:00:20.176
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchUp, state: FAIL, disposal: REJECT, timestamp: 2017-08-25 15:00:20.237
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: frameNodeId: 235, type: LongPressRecognizer, depth: 4, id: 0xeedbaa30, parentId: 0xef57c350, customInfo: duration: 500, isForDrag: 0, repeat: 0, fingers: 1
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: stateHistory:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchDown, state: DETECTING, disposal: NONE, timestamp: 2017-08-25 15:00:20.176
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchUp, state: FAIL, disposal: REJECT, timestamp: 2017-08-25 15:00:20.237
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: frameNodeId: 233, type: ClickRecognizer, depth: 3, id: 0xf0c19f90, parentId: 0xef57c6f0, customInfo: count: 1, fingers: 1
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: stateHistory:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchDown, state: READY, disposal: NONE, timestamp: 2017-08-25 15:00:20.177
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchUp, state: SUCCEED, disposal: ACCEPT, timestamp: 2017-08-25 15:00:20.245
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: frameNodeId: 88, type: LongPressRecognizer, depth: 2, id: 0xef748aa0, parentId: 0xef57cf40, customInfo: duration: 500, isForDrag: 0, repeat: 0, fingers: 1
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: stateHistory:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchDown, state: DETECTING, disposal: NONE, timestamp: 2017-08-25 15:00:20.177
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchUp, state: FAIL, disposal: REJECT, timestamp: 2017-08-25 15:00:20.245
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: frameNodeId: 84, type: PanRecognizer, depth: 1, id: 0xf3d6bfc0, parentId: 0xf063eed0, customInfo: direction: 3, isForDrag: 0, distance: 7.5, fingers: 1
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: stateHistory:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchDown, state: DETECTING, disposal: NONE, timestamp: 2017-08-25 15:00:20.177
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchUp, state: FAIL, disposal: NONE, timestamp: 2017-08-25 15:00:20.245
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: finger:1
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: frameNodeId: 84, type: TouchEventActuator, depth: 0, id: 0xf072b240, parentId: 0x0
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: stateHistory:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchDown, timestamp: 2017-08-25 15:00:22.046
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchUp, timestamp: 2017-08-25 15:00:22.130
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: frameNodeId: 84, type: ExclusiveRecognizer, depth: 0, id: 0xf063eed0, parentId: 0x0
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: stateHistory:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchDown, state: READY, disposal: NONE, timestamp: 2017-08-25 15:00:22.046
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchUp, state: FAIL, disposal: REJECT, timestamp: 2017-08-25 15:00:22.131
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: frameNodeId: 88, type: LongPressRecognizer, depth: 1, id: 0xef748aa0, parentId: 0xf063eed0, customInfo: duration: 500, isForDrag: 0, repeat: 0, fingers: 1
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: stateHistory:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchDown, state: DETECTING, disposal: NONE, timestamp: 2017-08-25 15:00:22.046
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchUp, state: FAIL, disposal: REJECT, timestamp: 2017-08-25 15:00:22.131
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: frameNodeId: 84, type: PanRecognizer, depth: 1, id: 0xf3d6bfc0, parentId: 0xf063eed0, customInfo: direction: 3, isForDrag: 0, distance: 7.5, fingers: 1
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: stateHistory:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchDown, state: DETECTING, disposal: NONE, timestamp: 2017-08-25 15:00:22.046
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchUp, state: FAIL, disposal: REJECT, timestamp: 2017-08-25 15:00:22.131
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: 1: event tree =>
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: touch points:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: id: 0, point: Offset (288.00, 530.00), screenPoint: Offset (288.00, 530.00), type: TouchDown, timestamp: 2017-08-25 15:00:22.043, isInjected: 0
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: id: 0, point: Offset (288.00, 536.00), screenPoint: Offset (288.00, 536.00), type: TouchUp, timestamp: 2017-08-25 15:00:22.130, isInjected: 0
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: hittest:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 0, parentId: -1, tag: root, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1280.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 1, parentId: 0, tag: stage, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1280.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 4, parentId: 1, tag: page, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1280.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 7, parentId: 4, tag: Stack, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1280.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 8, parentId: 7, tag: Flex, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1280.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 11, parentId: 8, tag: Column, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (45.50, 1077.50) - [629.00 x 130.50]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 9, parentId: 8, tag: Column, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1077.50]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 14, parentId: 9, tag: __Common__, comId: PageDesktopLayout, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1077.50]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 16, parentId: 14, tag: Column, comId: GridSwiper, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1077.50]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 84, parentId: 16, tag: Swiper, comId: GridSwiper_Swiper, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1077.50]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 91, parentId: 84, tag: SwiperIndicator, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (330.00, 1029.50) - [60.00 x 48.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 88, parentId: 84, tag: Column, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 135.50) - [720.00 x 942.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 89, parentId: 88, tag: __Common__, comId: SwiperPage_00, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 825.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 92, parentId: 89, tag: Grid, comId: SwiperPage_Grid_0, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (18.00, 0.00) - [684.00 x 825.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 228, parentId: 92, tag: GridItem, comId: SwiperPage_GridItem_7, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (282.00, 141.00) - [120.00 x 120.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 131, parentId: 92, tag: GridItem, comId: SwiperPage_GridItem_6, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (141.00, 141.00) - [120.00 x 120.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 125, parentId: 92, tag: GridItem, comId: SwiperPage_GridItem_5, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (0.00, 141.00) - [120.00 x 120.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 119, parentId: 92, tag: GridItem, comId: SwiperPage_GridItem_4, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (564.00, 0.00) - [120.00 x 120.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 113, parentId: 92, tag: GridItem, comId: SwiperPage_GridItem_3, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (423.00, 0.00) - [120.00 x 120.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 107, parentId: 92, tag: GridItem, comId: SwiperPage_GridItem_2, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (282.00, 0.00) - [120.00 x 120.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 101, parentId: 92, tag: GridItem, comId: SwiperPage_GridItem_1, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (141.00, 0.00) - [120.00 x 120.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 95, parentId: 92, tag: GridItem, comId: SwiperPage_GridItem_0, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [120.00 x 120.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: event procedures:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: finger:0
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: frameNodeId: 84, type: TouchEventActuator, depth: 0, id: 0xf072b240, parentId: 0x0
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: stateHistory:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchDown, timestamp: 2017-08-25 15:00:22.046
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchUp, timestamp: 2017-08-25 15:00:22.130
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: frameNodeId: 84, type: ExclusiveRecognizer, depth: 0, id: 0xf063eed0, parentId: 0x0
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: stateHistory:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchDown, state: READY, disposal: NONE, timestamp: 2017-08-25 15:00:22.046
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchUp, state: FAIL, disposal: REJECT, timestamp: 2017-08-25 15:00:22.131
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: frameNodeId: 88, type: LongPressRecognizer, depth: 1, id: 0xef748aa0, parentId: 0xf063eed0, customInfo: duration: 500, isForDrag: 0, repeat: 0, fingers: 1
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: stateHistory:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchDown, state: DETECTING, disposal: NONE, timestamp: 2017-08-25 15:00:22.046
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchUp, state: FAIL, disposal: REJECT, timestamp: 2017-08-25 15:00:22.131
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: frameNodeId: 84, type: PanRecognizer, depth: 1, id: 0xf3d6bfc0, parentId: 0xf063eed0, customInfo: direction: 3, isForDrag: 0, distance: 7.5, fingers: 1
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: stateHistory:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchDown, state: DETECTING, disposal: NONE, timestamp: 2017-08-25 15:00:22.046
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchUp, state: FAIL, disposal: REJECT, timestamp: 2017-08-25 15:00:22.131
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: 2: event tree =>
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: touch points:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: id: 0, point: Offset (278.00, 551.00), screenPoint: Offset (278.00, 551.00), type: TouchDown, timestamp: 2017-08-25 15:00:22.244, isInjected: 0
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: id: 0, point: Offset (278.00, 551.00), screenPoint: Offset (278.00, 551.00), type: TouchUp, timestamp: 2017-08-25 15:00:22.295, isInjected: 0
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: hittest:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 0, parentId: -1, tag: root, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1280.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 1, parentId: 0, tag: stage, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1280.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 4, parentId: 1, tag: page, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1280.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 7, parentId: 4, tag: Stack, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1280.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 8, parentId: 7, tag: Flex, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1280.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 11, parentId: 8, tag: Column, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (45.50, 1077.50) - [629.00 x 130.50]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 9, parentId: 8, tag: Column, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1077.50]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 14, parentId: 9, tag: __Common__, comId: PageDesktopLayout, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1077.50]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 16, parentId: 14, tag: Column, comId: GridSwiper, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1077.50]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 84, parentId: 16, tag: Swiper, comId: GridSwiper_Swiper, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1077.50]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 91, parentId: 84, tag: SwiperIndicator, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (330.00, 1029.50) - [60.00 x 48.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 88, parentId: 84, tag: Column, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 135.50) - [720.00 x 942.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 89, parentId: 88, tag: __Common__, comId: SwiperPage_00, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 825.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 92, parentId: 89, tag: Grid, comId: SwiperPage_Grid_0, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (18.00, 0.00) - [684.00 x 825.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 228, parentId: 92, tag: GridItem, comId: SwiperPage_GridItem_7, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (282.00, 141.00) - [120.00 x 120.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 131, parentId: 92, tag: GridItem, comId: SwiperPage_GridItem_6, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (141.00, 141.00) - [120.00 x 120.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 125, parentId: 92, tag: GridItem, comId: SwiperPage_GridItem_5, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (0.00, 141.00) - [120.00 x 120.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 119, parentId: 92, tag: GridItem, comId: SwiperPage_GridItem_4, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (564.00, 0.00) - [120.00 x 120.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 113, parentId: 92, tag: GridItem, comId: SwiperPage_GridItem_3, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (423.00, 0.00) - [120.00 x 120.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 107, parentId: 92, tag: GridItem, comId: SwiperPage_GridItem_2, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (282.00, 0.00) - [120.00 x 120.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 101, parentId: 92, tag: GridItem, comId: SwiperPage_GridItem_1, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (141.00, 0.00) - [120.00 x 120.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 95, parentId: 92, tag: GridItem, comId: SwiperPage_GridItem_0, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [120.00 x 120.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: event procedures:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: finger:0
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: frameNodeId: 84, type: TouchEventActuator, depth: 0, id: 0xf072b240, parentId: 0x0
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: stateHistory:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchDown, timestamp: 2017-08-25 15:00:22.247
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchUp, timestamp: 2017-08-25 15:00:22.295
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: frameNodeId: 84, type: ExclusiveRecognizer, depth: 0, id: 0xf063eed0, parentId: 0x0
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: stateHistory:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchDown, state: READY, disposal: NONE, timestamp: 2017-08-25 15:00:22.247
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchUp, state: FAIL, disposal: REJECT, timestamp: 2017-08-25 15:00:22.295
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: frameNodeId: 88, type: LongPressRecognizer, depth: 1, id: 0xef748aa0, parentId: 0xf063eed0, customInfo: duration: 500, isForDrag: 0, repeat: 0, fingers: 1
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: stateHistory:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchDown, state: DETECTING, disposal: NONE, timestamp: 2017-08-25 15:00:22.247
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchUp, state: FAIL, disposal: REJECT, timestamp: 2017-08-25 15:00:22.295
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: frameNodeId: 84, type: PanRecognizer, depth: 1, id: 0xf3d6bfc0, parentId: 0xf063eed0, customInfo: direction: 3, isForDrag: 0, distance: 7.5, fingers: 1
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: stateHistory:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchDown, state: DETECTING, disposal: NONE, timestamp: 2017-08-25 15:00:22.247
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchUp, state: FAIL, disposal: REJECT, timestamp: 2017-08-25 15:00:22.295
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: 3: event tree =>
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: touch points:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: id: 0, point: Offset (511.00, 636.00), screenPoint: Offset (511.00, 636.00), type: TouchDown, timestamp: 2017-08-25 15:00:25.152, isInjected: 0
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: id: 0, point: Offset (122.00, 673.00), screenPoint: Offset (122.00, 673.00), type: TouchUp, timestamp: 2017-08-25 15:00:25.402, isInjected: 0
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: hittest:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 0, parentId: -1, tag: root, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1280.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 1, parentId: 0, tag: stage, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1280.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 4, parentId: 1, tag: page, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1280.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 7, parentId: 4, tag: Stack, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1280.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 8, parentId: 7, tag: Flex, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1280.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 11, parentId: 8, tag: Column, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (45.50, 1077.50) - [629.00 x 130.50]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 9, parentId: 8, tag: Column, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1077.50]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 14, parentId: 9, tag: __Common__, comId: PageDesktopLayout, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1077.50]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 16, parentId: 14, tag: Column, comId: GridSwiper, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1077.50]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 84, parentId: 16, tag: Swiper, comId: GridSwiper_Swiper, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1077.50]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 91, parentId: 84, tag: SwiperIndicator, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (330.00, 1029.50) - [60.00 x 48.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 88, parentId: 84, tag: Column, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 135.50) - [720.00 x 942.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 89, parentId: 88, tag: __Common__, comId: SwiperPage_00, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 825.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 92, parentId: 89, tag: Grid, comId: SwiperPage_Grid_0, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (18.00, 0.00) - [684.00 x 825.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 228, parentId: 92, tag: GridItem, comId: SwiperPage_GridItem_7, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (282.00, 141.00) - [120.00 x 120.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 131, parentId: 92, tag: GridItem, comId: SwiperPage_GridItem_6, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (141.00, 141.00) - [120.00 x 120.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 125, parentId: 92, tag: GridItem, comId: SwiperPage_GridItem_5, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (0.00, 141.00) - [120.00 x 120.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 119, parentId: 92, tag: GridItem, comId: SwiperPage_GridItem_4, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (564.00, 0.00) - [120.00 x 120.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 113, parentId: 92, tag: GridItem, comId: SwiperPage_GridItem_3, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (423.00, 0.00) - [120.00 x 120.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 107, parentId: 92, tag: GridItem, comId: SwiperPage_GridItem_2, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (282.00, 0.00) - [120.00 x 120.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 101, parentId: 92, tag: GridItem, comId: SwiperPage_GridItem_1, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (141.00, 0.00) - [120.00 x 120.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 95, parentId: 92, tag: GridItem, comId: SwiperPage_GridItem_0, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [120.00 x 120.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: event procedures:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: finger:0
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: frameNodeId: 84, type: TouchEventActuator, depth: 0, id: 0xf072b240, parentId: 0x0
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: stateHistory:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchDown, timestamp: 2017-08-25 15:00:25.155
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchUp, timestamp: 2017-08-25 15:00:25.404
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: frameNodeId: 84, type: ExclusiveRecognizer, depth: 0, id: 0xf063eed0, parentId: 0x0
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: stateHistory:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchDown, state: READY, disposal: NONE, timestamp: 2017-08-25 15:00:25.156
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchMove, state: SUCCEED, disposal: ACCEPT, timestamp: 2017-08-25 15:00:25.341
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchUp, state: SUCCEED, disposal: REJECT, timestamp: 2017-08-25 15:00:25.416
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: frameNodeId: 88, type: LongPressRecognizer, depth: 1, id: 0xef748aa0, parentId: 0xf063eed0, customInfo: duration: 500, isForDrag: 0, repeat: 0, fingers: 1
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: stateHistory:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchDown, state: DETECTING, disposal: NONE, timestamp: 2017-08-25 15:00:25.155
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchUp, state: FAIL, disposal: REJECT, timestamp: 2017-08-25 15:00:25.404
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: frameNodeId: 84, type: PanRecognizer, depth: 1, id: 0xf3d6bfc0, parentId: 0xf063eed0, customInfo: direction: 3, isForDrag: 0, distance: 7.5, fingers: 1
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: stateHistory:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchDown, state: DETECTING, disposal: NONE, timestamp: 2017-08-25 15:00:25.156
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchMove, state: SUCCEED, disposal: ACCEPT, timestamp: 2017-08-25 15:00:25.341
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchUp, state: READY, disposal: ACCEPT, timestamp: 2017-08-25 15:00:25.416
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: 4: event tree =>
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: touch points:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: id: 0, point: Offset (198.00, 581.00), screenPoint: Offset (198.00, 581.00), type: TouchDown, timestamp: 2017-08-25 15:00:26.348, isInjected: 0
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: id: 0, point: Offset (559.00, 562.00), screenPoint: Offset (559.00, 562.00), type: TouchUp, timestamp: 2017-08-25 15:00:26.611, isInjected: 0
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: hittest:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 0, parentId: -1, tag: root, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1280.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 1, parentId: 0, tag: stage, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1280.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 4, parentId: 1, tag: page, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1280.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 7, parentId: 4, tag: Stack, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1280.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 8, parentId: 7, tag: Flex, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1280.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 11, parentId: 8, tag: Column, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (45.50, 1077.50) - [629.00 x 130.50]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 9, parentId: 8, tag: Column, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1077.50]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 14, parentId: 9, tag: __Common__, comId: PageDesktopLayout, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1077.50]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 16, parentId: 14, tag: Column, comId: GridSwiper, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1077.50]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 84, parentId: 16, tag: Swiper, comId: GridSwiper_Swiper, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1077.50]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 91, parentId: 84, tag: SwiperIndicator, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (330.00, 1029.50) - [60.00 x 48.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 88, parentId: 84, tag: Column, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 135.50) - [720.00 x 942.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 89, parentId: 88, tag: __Common__, comId: SwiperPage_00, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 825.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 92, parentId: 89, tag: Grid, comId: SwiperPage_Grid_0, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (18.00, 0.00) - [684.00 x 825.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 228, parentId: 92, tag: GridItem, comId: SwiperPage_GridItem_7, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (282.00, 141.00) - [120.00 x 120.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 131, parentId: 92, tag: GridItem, comId: SwiperPage_GridItem_6, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (141.00, 141.00) - [120.00 x 120.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 125, parentId: 92, tag: GridItem, comId: SwiperPage_GridItem_5, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (0.00, 141.00) - [120.00 x 120.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 119, parentId: 92, tag: GridItem, comId: SwiperPage_GridItem_4, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (564.00, 0.00) - [120.00 x 120.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 113, parentId: 92, tag: GridItem, comId: SwiperPage_GridItem_3, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (423.00, 0.00) - [120.00 x 120.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 107, parentId: 92, tag: GridItem, comId: SwiperPage_GridItem_2, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (282.00, 0.00) - [120.00 x 120.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 101, parentId: 92, tag: GridItem, comId: SwiperPage_GridItem_1, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (141.00, 0.00) - [120.00 x 120.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: nodeId: 95, parentId: 92, tag: GridItem, comId: SwiperPage_GridItem_0, monopolizeEvents: 0, isHit: 0, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [120.00 x 120.00]
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: event procedures:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: finger:0
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: frameNodeId: 84, type: TouchEventActuator, depth: 0, id: 0xf072b240, parentId: 0x0
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: stateHistory:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchDown, timestamp: 2017-08-25 15:00:26.351
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchUp, timestamp: 2017-08-25 15:00:26.613
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: frameNodeId: 84, type: ExclusiveRecognizer, depth: 0, id: 0xf063eed0, parentId: 0x0
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: stateHistory:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchDown, state: READY, disposal: NONE, timestamp: 2017-08-25 15:00:26.352
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchMove, state: SUCCEED, disposal: ACCEPT, timestamp: 2017-08-25 15:00:26.414
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchUp, state: SUCCEED, disposal: REJECT, timestamp: 2017-08-25 15:00:26.617
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: frameNodeId: 88, type: LongPressRecognizer, depth: 1, id: 0xef748aa0, parentId: 0xf063eed0, customInfo: duration: 500, isForDrag: 0, repeat: 0, fingers: 1
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: stateHistory:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchDown, state: DETECTING, disposal: NONE, timestamp: 2017-08-25 15:00:26.351
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchMove, state: FAIL, disposal: REJECT, timestamp: 2017-08-25 15:00:26.411
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchUp, state: FAIL, disposal: REJECT, timestamp: 2017-08-25 15:00:26.613
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: frameNodeId: 84, type: PanRecognizer, depth: 1, id: 0xf3d6bfc0, parentId: 0xf063eed0, customInfo: direction: 3, isForDrag: 0, distance: 7.5, fingers: 1
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: stateHistory:
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchDown, state: DETECTING, disposal: NONE, timestamp: 2017-08-25 15:00:26.352
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchMove, state: SUCCEED, disposal: ACCEPT, timestamp: 2017-08-25 15:00:26.414
|
||||
xxx)-(10000:10000:scope)] EventTreeDumpInfo: procedure: HandleTouchUp, state: READY, disposal: ACCEPT, timestamp: 2017-08-25 15:00:26.617
|
50
test/tools/event_tree_to_graph/src/bats/dump_event.bat
Normal file
50
test/tools/event_tree_to_graph/src/bats/dump_event.bat
Normal file
@ -0,0 +1,50 @@
|
||||
:: Copyright (c) 2024 Huawei Device Co., Ltd.
|
||||
:: Licensed under the Apache License, Version 2.0 (the "License");
|
||||
:: you may not use this file except in compliance with the License.
|
||||
:: You may obtain a copy of the License at
|
||||
::
|
||||
:: http://www.apache.org/licenses/LICENSE-2.0
|
||||
::
|
||||
:: Unless required by applicable law or agreed to in writing, software
|
||||
:: distributed under the License is distributed on an "AS IS" BASIS,
|
||||
:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
:: See the License for the specific language governing permissions and
|
||||
:: limitations under the License.
|
||||
|
||||
@echo off
|
||||
|
||||
@rem Set local scope for the variables with windows NT shell
|
||||
if "%OS%"=="Windows_NT" setlocal
|
||||
|
||||
set DIRNAME=%~dp0
|
||||
if "%DIRNAME%" == "" set DIRNAME=.
|
||||
set APP_BASE_NAME=%~n0
|
||||
set APP_HOME=%DIRNAME%
|
||||
|
||||
goto start
|
||||
|
||||
:start
|
||||
adb devices | findstr /i "device" > nul
|
||||
if %errorlevel%==0 (
|
||||
goto execute
|
||||
) else (
|
||||
echo.
|
||||
echo Error: No device found.
|
||||
echo.
|
||||
goto fail
|
||||
)
|
||||
|
||||
:execute
|
||||
@echo off
|
||||
@rem Replace here with hdc command
|
||||
adb devices
|
||||
|
||||
echo.
|
||||
echo Please enter the window ID which is to be dumped.
|
||||
echo.
|
||||
set /p userInput="please enter the window ID:"
|
||||
|
||||
adb shell "dumpsys window windows | grep -E %userInput%" > window_id.txt
|
||||
|
||||
:fail
|
||||
exit /b 1
|
@ -33,7 +33,7 @@ class DumpResult(BaseBean):
|
||||
self.check_parse_result()
|
||||
if self.is_succeed():
|
||||
self.update_tree_info()
|
||||
print('parse result: ' + self.to_string())
|
||||
log_info('parse result: ' + self.to_string())
|
||||
|
||||
def parse_event_trees(self, input_str):
|
||||
if input_str is None or len(input_str) == 0:
|
||||
|
@ -21,15 +21,9 @@ from typing import List
|
||||
from src.beans.base_bean import BaseBean
|
||||
from src.beans.frame_node import FrameNode
|
||||
from src.beans.state_history import StateHistory
|
||||
# frameNodeId: 84, type: TouchEventActuator, depth: 0, id: 0xf072b240, parentId: 0x0
|
||||
# stateHistory:
|
||||
# procedure: HandleTouchDown, timestamp: 2017-08-25 15:00:22.247
|
||||
# procedure: HandleTouchUp, timestamp: 2017-08-25 15:00:22.295
|
||||
|
||||
from src.keywords import event_procedure_keyword, get_sample_key, get_sample_value
|
||||
from src.keywords import event_procedure_keyword, get_sample_key, get_sample_separator_count
|
||||
from src.utils.log_wrapper import log_info, log_error
|
||||
from src.utils.value_parser import get_value_as_int, get_value_as_str, get_value_as_float
|
||||
from typing import List
|
||||
|
||||
|
||||
# frameNodeId: 84, type: PanRecognizer, depth: 1, id: 0xf3d6bfc0, parentId: 0xf063eed0, customInfo: direction: 3,
|
||||
@ -68,29 +62,29 @@ class EventNode(BaseBean):
|
||||
# frameNodeId: 84, type: TouchEventActuator, depth: 0, id: 0xf072b240, parentId: 0x0
|
||||
frame_node_str = texts[0]
|
||||
self.frameNodeId = get_value_as_int(frame_node_str, get_sample_key(event_procedure_keyword, 'frameNodeId'),
|
||||
get_sample_value(event_procedure_keyword, 'frameNodeId'))
|
||||
get_sample_separator_count(event_procedure_keyword, 'frameNodeId'))
|
||||
self.type = get_value_as_str(frame_node_str, get_sample_key(event_procedure_keyword, 'type'),
|
||||
get_sample_value(event_procedure_keyword, 'type'))
|
||||
get_sample_separator_count(event_procedure_keyword, 'type'))
|
||||
self.depth = get_value_as_int(frame_node_str, get_sample_key(event_procedure_keyword, 'depth'),
|
||||
get_sample_key(event_procedure_keyword, 'depth'))
|
||||
get_sample_separator_count(event_procedure_keyword, 'depth'))
|
||||
self.address = get_value_as_str(frame_node_str, get_sample_key(event_procedure_keyword, 'id'),
|
||||
get_sample_key(event_procedure_keyword, 'id'))
|
||||
get_sample_separator_count(event_procedure_keyword, 'id'))
|
||||
self.parentId = get_value_as_str(frame_node_str, get_sample_key(event_procedure_keyword, 'parentId'),
|
||||
get_sample_key(event_procedure_keyword, 'parentId'))
|
||||
get_sample_separator_count(event_procedure_keyword, 'parentId'))
|
||||
self.duration = get_value_as_int(frame_node_str, get_sample_key(event_procedure_keyword, 'duration'),
|
||||
get_sample_key(event_procedure_keyword, 'duration'))
|
||||
get_sample_separator_count(event_procedure_keyword, 'duration'))
|
||||
self.custom_info = get_value_as_str(frame_node_str, get_sample_key(event_procedure_keyword, 'customInfo'),
|
||||
get_sample_key(event_procedure_keyword, 'customInfo'))
|
||||
get_sample_separator_count(event_procedure_keyword, 'customInfo'))
|
||||
self.direction = get_value_as_int(frame_node_str, get_sample_key(event_procedure_keyword, 'direction'),
|
||||
get_sample_key(event_procedure_keyword, 'direction'))
|
||||
get_sample_separator_count(event_procedure_keyword, 'direction'))
|
||||
self.distance = get_value_as_float(frame_node_str, get_sample_key(event_procedure_keyword, 'distance'),
|
||||
get_sample_key(event_procedure_keyword, 'distance'))
|
||||
get_sample_separator_count(event_procedure_keyword, 'distance'))
|
||||
self.isForDrag = get_value_as_int(frame_node_str, get_sample_key(event_procedure_keyword, 'isForDrag'),
|
||||
get_sample_key(event_procedure_keyword, 'isForDrag'))
|
||||
get_sample_separator_count(event_procedure_keyword, 'isForDrag'))
|
||||
self.repeat = get_value_as_int(frame_node_str, get_sample_key(event_procedure_keyword, 'repeat'),
|
||||
get_sample_key(event_procedure_keyword, 'repeat'))
|
||||
get_sample_separator_count(event_procedure_keyword, 'repeat'))
|
||||
self.fingers = get_value_as_int(frame_node_str, get_sample_key(event_procedure_keyword, 'fingers'),
|
||||
get_sample_key(event_procedure_keyword, 'fingers'))
|
||||
get_sample_separator_count(event_procedure_keyword, 'fingers'))
|
||||
# parse state history
|
||||
self.parse_state_history(texts, 1)
|
||||
self.check_parse_result()
|
||||
@ -128,7 +122,7 @@ class EventNode(BaseBean):
|
||||
|
||||
def get_detailed_summary_string(self):
|
||||
return (self.tag + '(' + str(
|
||||
self.frameNodeId) + ') ' + self.type + ' ' + self.address + '\n'
|
||||
self.frameNodeId) + ') ' + self.type + ' ' + self.address + '\n'
|
||||
+ self.state_history.get_detailed_summary_string())
|
||||
|
||||
def to_string(self):
|
||||
|
@ -21,7 +21,8 @@ from typing import List
|
||||
from src.beans.base_bean import BaseBean
|
||||
from src.beans.event_node import EventNode
|
||||
from src.beans.frame_node import FrameNode
|
||||
from src.keywords import event_procedure_keyword, keywords_dict, get_sample_key, get_sample_value, get_dict_value
|
||||
from src.keywords import event_procedure_keyword, keywords_dict, get_sample_key, get_dict_value, \
|
||||
get_sample_separator_count
|
||||
from src.utils.log_wrapper import log_info
|
||||
from src.utils.value_parser import get_value_as_int, pack_string_until_next_keyword
|
||||
|
||||
@ -39,7 +40,7 @@ class EventScope(BaseBean):
|
||||
return
|
||||
finger_str = texts[0]
|
||||
self.finger = get_value_as_int(finger_str, get_sample_key(event_procedure_keyword, 'finger'),
|
||||
get_sample_value(event_procedure_keyword, 'finger'), True)
|
||||
get_sample_separator_count(event_procedure_keyword, 'finger'), True)
|
||||
self.parse_event_nodes(texts, 1)
|
||||
self.check_parse_result()
|
||||
|
||||
@ -63,7 +64,7 @@ class EventScope(BaseBean):
|
||||
# procedure: HandleTouchDown, state: DETECTING, disposal: NONE, timestamp: 2017-08-25 15:00:22.247
|
||||
# procedure: HandleTouchUp, state: FAIL, disposal: REJECT, timestamp: 2017-08-25 15:00:22.295
|
||||
def parse_event_nodes(self, spliced_lines, start_index):
|
||||
start_keyword = get_sample_key(event_procedure_keyword, 'frameNodeId').key
|
||||
start_keyword = get_sample_key(event_procedure_keyword, 'frameNodeId')
|
||||
end_keywords = [start_keyword, get_dict_value(keywords_dict, 'event tree')]
|
||||
current_index = 0
|
||||
while current_index < len(spliced_lines):
|
||||
|
@ -21,7 +21,7 @@ from src.beans.event_procedures import EventProcedures
|
||||
from src.beans.frame_node import FrameNode
|
||||
from src.beans.touch_point import TouchPoint
|
||||
from src.utils.log_wrapper import log_info, log_error
|
||||
from src.utils.value_parser import pack_string_until_next_keyword, get_value_as_int
|
||||
from src.utils.value_parser import pack_string_until_next_keyword
|
||||
|
||||
|
||||
# includes touch points and frame nodes(hittest) and event procedures
|
||||
|
@ -17,7 +17,7 @@
|
||||
#
|
||||
|
||||
from src.beans.base_bean import BaseBean
|
||||
from src.keywords import hittest_node_keyword, get_sample_key, get_sample_value
|
||||
from src.keywords import hittest_node_keyword, get_sample_key, get_sample_separator_count
|
||||
from src.utils.log_wrapper import log_info
|
||||
from src.utils.value_parser import get_value_as_int, get_value_as_str
|
||||
|
||||
@ -40,22 +40,22 @@ class FrameNode(BaseBean):
|
||||
super().__init__()
|
||||
self.original_str = node_dump_str
|
||||
self.nodeId = get_value_as_int(node_dump_str, get_sample_key(hittest_node_keyword, 'nodeId'),
|
||||
get_sample_value(hittest_node_keyword, 'nodeId'))
|
||||
get_sample_separator_count(hittest_node_keyword, 'nodeId'))
|
||||
self.parentId = get_value_as_int(node_dump_str, get_sample_key(hittest_node_keyword, 'parentId'),
|
||||
get_sample_value(hittest_node_keyword, 'parentId'))
|
||||
get_sample_separator_count(hittest_node_keyword, 'parentId'))
|
||||
self.tag = get_value_as_str(node_dump_str, get_sample_key(hittest_node_keyword, 'tag'),
|
||||
get_sample_value(hittest_node_keyword, 'tag'))
|
||||
get_sample_separator_count(hittest_node_keyword, 'tag'))
|
||||
self.com_id = get_value_as_str(node_dump_str, get_sample_key(hittest_node_keyword, 'comId'),
|
||||
get_sample_value(hittest_node_keyword, 'comId'))
|
||||
get_sample_separator_count(hittest_node_keyword, 'comId'))
|
||||
self.monopolizeEvents = get_value_as_int(node_dump_str,
|
||||
get_sample_key(hittest_node_keyword, 'monopolizeEvents'),
|
||||
get_sample_value(hittest_node_keyword, 'monopolizeEvents'))
|
||||
get_sample_separator_count(hittest_node_keyword, 'monopolizeEvents'))
|
||||
self.isHit = get_value_as_int(node_dump_str, get_sample_key(hittest_node_keyword, 'isHit'),
|
||||
get_sample_value(hittest_node_keyword, 'isHit'))
|
||||
get_sample_separator_count(hittest_node_keyword, 'isHit'))
|
||||
self.hitTestMode = get_value_as_int(node_dump_str, get_sample_key(hittest_node_keyword, 'hitTestMode'),
|
||||
get_sample_value(hittest_node_keyword, 'hitTestMode'))
|
||||
get_sample_separator_count(hittest_node_keyword, 'hitTestMode'))
|
||||
self.responseRegion = get_value_as_str(node_dump_str, get_sample_key(hittest_node_keyword, 'responseRegion'),
|
||||
get_sample_value(hittest_node_keyword, 'responseRegion'), True)
|
||||
get_sample_separator_count(hittest_node_keyword, 'responseRegion'), True)
|
||||
self.check_parse_result()
|
||||
|
||||
def check_parse_result(self):
|
||||
@ -66,11 +66,20 @@ class FrameNode(BaseBean):
|
||||
self.parse_succeed()
|
||||
|
||||
def to_string(self):
|
||||
result_str = ' nodeId: ' + str(self.nodeId) + ', parentId: ' + str(self.parentId) + ', tag: ' + self.tag
|
||||
result_str = 'nodeId: {}, parentId: {}, tag: {}'.format(self.nodeId, self.parentId, self.tag)
|
||||
if self.com_id is not None:
|
||||
result_str += ', comId: ' + self.com_id
|
||||
result_str += ', monopolizeEvents: ' + str(self.monopolizeEvents) + ', isHit: ' + str(
|
||||
self.isHit) + ', hitTestMode: ' + str(self.hitTestMode) + ', responseRegion: ' + self.responseRegion
|
||||
result_str += ', comId: {}'.format(self.com_id)
|
||||
result_str += ', monopolizeEvents: {}, isHit: {}, hitTestMode: {}, responseRegion: {}'.format(
|
||||
self.monopolizeEvents, self.isHit, self.hitTestMode, self.responseRegion)
|
||||
return result_str
|
||||
|
||||
def get_summary_string(self):
|
||||
result_str = '{}({}) , isHit: {}'.format(self.tag, self.nodeId, self.isHit)
|
||||
return result_str
|
||||
|
||||
def get_showup_string(self):
|
||||
result_str = ("{}({})\n\nisHit: {}\nhitTestMode: {}"
|
||||
.format(self.tag, self.nodeId, self.isHit, self.hitTestMode))
|
||||
return result_str
|
||||
|
||||
def dump(self):
|
||||
|
@ -17,7 +17,7 @@
|
||||
#
|
||||
|
||||
from src.beans.base_bean import BaseBean
|
||||
from src.keywords import event_procedure_keyword, get_sample_key, get_sample_value
|
||||
from src.keywords import event_procedure_keyword, get_sample_key, get_sample_separator_count
|
||||
from src.utils.log_wrapper import log_info
|
||||
from src.utils.value_parser import get_value_as_str
|
||||
|
||||
@ -35,13 +35,13 @@ class ProcedureStep(BaseBean):
|
||||
super().__init__()
|
||||
self.original_str = input_str
|
||||
self.procedure = get_value_as_str(input_str, get_sample_key(event_procedure_keyword, 'procedure'),
|
||||
get_sample_value(event_procedure_keyword, 'procedure'))
|
||||
get_sample_separator_count(event_procedure_keyword, 'procedure'))
|
||||
self.state = get_value_as_str(input_str, get_sample_key(event_procedure_keyword, 'state'),
|
||||
get_sample_value(event_procedure_keyword, 'state'))
|
||||
get_sample_separator_count(event_procedure_keyword, 'state'))
|
||||
self.disposal = get_value_as_str(input_str, get_sample_key(event_procedure_keyword, 'disposal'),
|
||||
get_sample_value(event_procedure_keyword, 'disposal'))
|
||||
get_sample_separator_count(event_procedure_keyword, 'disposal'))
|
||||
self.timestamp = get_value_as_str(input_str, get_sample_key(event_procedure_keyword, 'timestamp'),
|
||||
get_sample_value(event_procedure_keyword, 'timestamp'), True)
|
||||
get_sample_separator_count(event_procedure_keyword, 'timestamp'), True)
|
||||
self.check_parse_result()
|
||||
|
||||
def check_parse_result(self):
|
||||
|
@ -17,10 +17,6 @@
|
||||
#
|
||||
|
||||
from src.beans.base_bean import BaseBean
|
||||
# stateHistory:
|
||||
# procedure: HandleTouchDown, timestamp: 2017-08-25 15:00:22.247
|
||||
# procedure: HandleTouchUp, timestamp: 2017-08-25 15:00:22.295
|
||||
|
||||
from src.beans.procedure_step import ProcedureStep
|
||||
from src.utils.log_wrapper import log_info
|
||||
|
||||
|
@ -17,7 +17,7 @@
|
||||
#
|
||||
|
||||
from src.beans.base_bean import BaseBean
|
||||
from src.keywords import touch_point_keyword, get_sample_key, get_sample_value
|
||||
from src.keywords import touch_point_keyword, get_sample_key, get_sample_separator_count
|
||||
from src.utils.log_wrapper import log_info
|
||||
from src.utils.value_parser import get_value_as_int, get_value_as_str
|
||||
|
||||
@ -37,17 +37,17 @@ class TouchPoint(BaseBean):
|
||||
super().__init__()
|
||||
self.original_str = input_str
|
||||
self.id = get_value_as_int(input_str, get_sample_key(touch_point_keyword, 'id'),
|
||||
get_sample_value(touch_point_keyword, 'id'))
|
||||
get_sample_separator_count(touch_point_keyword, 'id'))
|
||||
self.point = get_value_as_str(input_str, get_sample_key(touch_point_keyword, 'point'),
|
||||
get_sample_value(touch_point_keyword, 'point'))
|
||||
get_sample_separator_count(touch_point_keyword, 'point'))
|
||||
self.screenPoint = get_value_as_str(input_str, get_sample_key(touch_point_keyword, 'screenPoint'),
|
||||
get_sample_value(touch_point_keyword, 'screenPoint'))
|
||||
get_sample_separator_count(touch_point_keyword, 'screenPoint'))
|
||||
self.type = get_value_as_str(input_str, get_sample_key(touch_point_keyword, 'type'),
|
||||
get_sample_value(touch_point_keyword, 'type'))
|
||||
get_sample_separator_count(touch_point_keyword, 'type'))
|
||||
self.timestamp = get_value_as_str(input_str, get_sample_key(touch_point_keyword, 'timestamp'),
|
||||
get_sample_value(touch_point_keyword, 'timestamp'))
|
||||
get_sample_separator_count(touch_point_keyword, 'timestamp'))
|
||||
self.isInjected = get_value_as_int(input_str, get_sample_key(touch_point_keyword, 'isInjected'),
|
||||
get_sample_value(touch_point_keyword, 'isInjected'), True)
|
||||
get_sample_separator_count(touch_point_keyword, 'isInjected'), True)
|
||||
self.check_parse_result()
|
||||
|
||||
def check_parse_result(self):
|
||||
@ -58,14 +58,12 @@ class TouchPoint(BaseBean):
|
||||
self.parse_succeed()
|
||||
|
||||
def to_string(self):
|
||||
return ' id: ' + str(
|
||||
self.id) + ', point: ' + self.point + ', screenPoint: ' + self.screenPoint + ', type: ' + self.type + (
|
||||
', timestamp: ') + self.timestamp + ', isInjected: ' + str(
|
||||
self.isInjected)
|
||||
return ('id: {}, point: {}, screenPoint: {}, type: {}, timestamp: {}, isInjected: {}'
|
||||
.format(self.id, self.point, self.screenPoint, self.type, self.timestamp, self.isInjected))
|
||||
|
||||
def to_summary_string(self):
|
||||
return 'id: ' + str(self.id) + ', ' + self.point + ', ' + self.screenPoint + ', ' + self.type + (
|
||||
', ') + self.timestamp
|
||||
return ('id: {}, {}, {}, {}, {}'
|
||||
.format(str(self.id), self.point, self.screenPoint, self.type, self.timestamp))
|
||||
|
||||
def dump(self):
|
||||
log_info(self.to_string())
|
||||
|
@ -16,13 +16,12 @@
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
# 读取预处理后的文件,将内容解析为对象待用
|
||||
|
||||
import os
|
||||
|
||||
from src.beans.dump_result import DumpResult
|
||||
from src.keywords import keywords_dict, get_dict_value
|
||||
from src.utils.log_wrapper import log_error
|
||||
from src.utils.log_wrapper import log_error
|
||||
|
||||
|
||||
class ContentParser:
|
||||
@ -38,11 +37,11 @@ class ContentParser:
|
||||
def do_parse(self):
|
||||
file_content = self.load_file()
|
||||
if file_content is None or file_content == '':
|
||||
log_error('文件不存在')
|
||||
log_error('file is not exist')
|
||||
return None
|
||||
event_tree_count = self.pre_check_event_tree_count(file_content)
|
||||
if event_tree_count == 0:
|
||||
log_error('没有找到任何 event tree')
|
||||
log_error('NO event tree found')
|
||||
return None
|
||||
self.parse_result = DumpResult(file_content)
|
||||
return self.parse_result
|
||||
|
@ -1,6 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
#
|
||||
# Copyright (c) 2024 Huawei Device Co., Ltd.
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -17,18 +16,19 @@
|
||||
#
|
||||
|
||||
import os.path
|
||||
|
||||
from typing import List
|
||||
|
||||
from graphviz import Digraph
|
||||
|
||||
from src.beans.event_node import EventNode
|
||||
from src.beans.event_procedures import EventProcedures
|
||||
from src.beans.event_scope import EventScope
|
||||
from src.beans.event_tree import EventTree
|
||||
from src.beans.frame_node import FrameNode
|
||||
from src.keywords import get_dict_value
|
||||
from src.utils.log_wrapper import log_message
|
||||
|
||||
output_folder = 'output'
|
||||
# finger scope edge colors
|
||||
edge_colors = ['black', 'blue', 'brown', 'purple', 'yellow', 'pink', 'gray']
|
||||
|
||||
|
||||
def reset_output_dir():
|
||||
@ -53,9 +53,9 @@ def draw_title_and_touch_points(tree: EventTree, tree_name, dot):
|
||||
dot.subgraph(sub_graph)
|
||||
|
||||
|
||||
class ParentChildrenPair:
|
||||
class EventParentChildrenPair:
|
||||
item_self: EventNode = None # parent
|
||||
children: List['ParentChildrenPair'] = []
|
||||
children: List['EventParentChildrenPair'] = []
|
||||
|
||||
def __init__(self, item):
|
||||
self.item_self = item
|
||||
@ -74,8 +74,8 @@ def build_event_node_tree(scope: EventScope):
|
||||
flatten_frame_nodes: List[EventNode] = scope.event_nodes
|
||||
# make a mapping table
|
||||
for item in flatten_frame_nodes:
|
||||
node_map[item.address] = ParentChildrenPair(item)
|
||||
# # append child nodes to their parent's `children` attribute based on `parentId`
|
||||
node_map[item.address] = EventParentChildrenPair(item)
|
||||
# append child nodes to their parent's `children` attribute based on `parentId`
|
||||
for item in flatten_frame_nodes:
|
||||
if item.parentId is not None and item.parentId != 0 and len(item.parentId) > 6:
|
||||
parent = get_dict_value(node_map, item.parentId)
|
||||
@ -89,18 +89,21 @@ def build_event_node_tree(scope: EventScope):
|
||||
|
||||
|
||||
# draw node relationships recursively
|
||||
def draw_event_scope_tree_recursively(node_tree: List[ParentChildrenPair], parent_node_name: str, graph: Digraph,
|
||||
is_show_detail):
|
||||
def draw_event_scop_tree_recursively(node_tree: List[EventParentChildrenPair],
|
||||
parent_node_name: str,
|
||||
finger,
|
||||
graph: Digraph,
|
||||
is_show_detail):
|
||||
for item in node_tree:
|
||||
node_name = item.get_address()
|
||||
node_label = item.item_self.get_summary_string()
|
||||
if is_show_detail:
|
||||
node_label = item.item_self.get_detailed_summary_string()
|
||||
graph.node(node_name, node_label)
|
||||
graph.node(node_name, node_label, tooltip=item.item_self.to_string())
|
||||
if parent_node_name is not None:
|
||||
graph.edge(parent_node_name, node_name)
|
||||
graph.edge(parent_node_name, node_name, color=edge_colors[finger])
|
||||
if len(item.children) > 0:
|
||||
draw_event_scope_tree_recursively(item.children, node_name, graph, is_show_detail)
|
||||
draw_event_scop_tree_recursively(item.children, node_name, finger, graph, is_show_detail)
|
||||
|
||||
|
||||
def draw_event_procedures(tree: EventTree, tree_name, dot, is_show_detail):
|
||||
@ -109,6 +112,7 @@ def draw_event_procedures(tree: EventTree, tree_name, dot, is_show_detail):
|
||||
return
|
||||
tag = f'{str(tree.tree_id)} event procedures'
|
||||
sub_graph = Digraph(comment=tag)
|
||||
current_index = 0
|
||||
for scope in event_procedures.event_scopes:
|
||||
comment = f'event scope {str(scope.finger)}'
|
||||
sub_scope_graph = Digraph(comment=comment)
|
||||
@ -116,15 +120,15 @@ def draw_event_procedures(tree: EventTree, tree_name, dot, is_show_detail):
|
||||
# treat finger as root node of subgraph
|
||||
scope_root_node_name = f'finger {str(scope.finger)}'
|
||||
sub_scope_graph.node(scope_root_node_name, scope_root_node_name)
|
||||
dot.edge(tree_name, scope_root_node_name)
|
||||
draw_event_scope_tree_recursively(node_tree, scope_root_node_name, sub_scope_graph, is_show_detail)
|
||||
dot.edge(tree_name, scope_root_node_name, color=edge_colors[current_index])
|
||||
draw_event_scop_tree_recursively(node_tree, scope_root_node_name, current_index, sub_scope_graph,
|
||||
is_show_detail)
|
||||
sub_graph.subgraph(sub_scope_graph)
|
||||
current_index += 1
|
||||
dot.subgraph(sub_graph)
|
||||
|
||||
|
||||
def generate_event_trees_graph(dump_result, is_show_detail):
|
||||
# delete all history files before generate new ones
|
||||
reset_output_dir()
|
||||
current_index = 0
|
||||
# draw every event tree into file
|
||||
for tree in dump_result.event_trees:
|
||||
@ -136,10 +140,95 @@ def generate_event_trees_graph(dump_result, is_show_detail):
|
||||
draw_title_and_touch_points(tree, tree_name, dot)
|
||||
# draw event procedures
|
||||
draw_event_procedures(tree, tree_name, dot, is_show_detail)
|
||||
# save or show directly
|
||||
# dot.view()
|
||||
# or save to file
|
||||
out_graph_file_name = f'/view_tree_{str(tree.tree_id)}'
|
||||
out_graph_file_name = os.path.join(output_folder, out_graph_file_name)
|
||||
# save to file
|
||||
file_name = f'event_tree_{str(tree.tree_id)}'
|
||||
out_graph_file_name = os.path.join(output_folder, file_name)
|
||||
dot.render(out_graph_file_name, format='svg', cleanup=True, view=False)
|
||||
current_index += 1
|
||||
log_message('event trees graph generated done, count: ' + str(current_index))
|
||||
|
||||
|
||||
class FrameNodeParentChildrenPair:
|
||||
item_self: FrameNode = None # parent
|
||||
children: List['FrameNodeParentChildrenPair'] = []
|
||||
|
||||
def __init__(self, item):
|
||||
self.item_self = item
|
||||
self.children = []
|
||||
|
||||
def append_child(self, child):
|
||||
self.children.append(child)
|
||||
|
||||
def get_node_id(self):
|
||||
return self.item_self.nodeId
|
||||
|
||||
|
||||
def build_hittest_result_tree(tree: EventTree):
|
||||
result = []
|
||||
node_map = {}
|
||||
flatten_frame_nodes: List[FrameNode] = tree.frame_nodes
|
||||
# make a mapping table
|
||||
for item in flatten_frame_nodes:
|
||||
node_map[item.nodeId] = FrameNodeParentChildrenPair(item)
|
||||
# # append child nodes to their parent's `children` attribute based on `parentId`
|
||||
for item in flatten_frame_nodes:
|
||||
if item.parentId is not None and item.parentId != -1:
|
||||
parent = get_dict_value(node_map, item.parentId)
|
||||
if parent is not None:
|
||||
child = get_dict_value(node_map, item.nodeId)
|
||||
parent.append_child(child)
|
||||
else:
|
||||
child = get_dict_value(node_map, item.nodeId)
|
||||
result.append(child)
|
||||
return result
|
||||
|
||||
|
||||
def generate_hittest_label_with_highlight(item: FrameNode):
|
||||
if item.isHit == 0:
|
||||
return item.get_showup_string()
|
||||
|
||||
label = '<{}({})<br/><font color="red">isHit: {}</font><br/>hitTestMode: {} >'.format(item.tag, item.nodeId,
|
||||
item.isHit,
|
||||
item.hitTestMode)
|
||||
return label
|
||||
|
||||
|
||||
def draw_hittest_result_recursively(node_tree: List[FrameNodeParentChildrenPair], parent_node_name: str,
|
||||
graph: Digraph):
|
||||
for item in node_tree:
|
||||
node_name = 'frame node ' + str(item.get_node_id())
|
||||
node_label = generate_hittest_label_with_highlight(item.item_self)
|
||||
graph.node(node_name, node_label, tooltip=item.item_self.to_string())
|
||||
if parent_node_name is not None:
|
||||
graph.edge(parent_node_name, node_name)
|
||||
if len(item.children) > 0:
|
||||
draw_hittest_result_recursively(item.children, node_name, graph)
|
||||
|
||||
|
||||
def draw_hittest_result(tree: EventTree, tree_name, dot):
|
||||
hittest_result = build_hittest_result_tree(tree)
|
||||
draw_hittest_result_recursively(hittest_result, tree_name, dot)
|
||||
|
||||
|
||||
def generate_hittest_graph(dump_result):
|
||||
current_index = 0
|
||||
# draw every event tree into file
|
||||
for tree in dump_result.event_trees:
|
||||
# create a graph
|
||||
dot = Digraph(comment='hit test result ' + str(current_index))
|
||||
tree_name = 'hit test result ' + str(tree.tree_id)
|
||||
# draw event procedures
|
||||
draw_hittest_result(tree, tree_name, dot)
|
||||
# save to file
|
||||
file_name = f'hit_test_{str(tree.tree_id)}'
|
||||
out_graph_file_name = os.path.join(output_folder, file_name)
|
||||
dot.render(out_graph_file_name, format='svg', cleanup=True, view=False)
|
||||
current_index += 1
|
||||
log_message('hit test graph generated done, count: ' + str(current_index))
|
||||
|
||||
|
||||
def generate_all_graphs(dump_result, is_show_detail):
|
||||
# delete all history files before generate new ones
|
||||
reset_output_dir()
|
||||
generate_event_trees_graph(dump_result, is_show_detail)
|
||||
generate_hittest_graph(dump_result)
|
||||
|
@ -42,6 +42,9 @@
|
||||
# procedure: HandleTouchUp, timestamp: 2017-08-25 15:00:22.295
|
||||
|
||||
|
||||
from typing import Dict, Any
|
||||
|
||||
|
||||
class KeyValueSample:
|
||||
key = ""
|
||||
value = ""
|
||||
@ -136,23 +139,28 @@ event_procedure_keyword = {
|
||||
}
|
||||
|
||||
|
||||
def get_dict_value(input_dict, key):
|
||||
if input_dict is None or key is None or len(key) == 0:
|
||||
return None
|
||||
if key not in input_dict:
|
||||
return None
|
||||
return input_dict[key]
|
||||
def get_dict_value(input_dict: Dict[str, Any], key: str) -> Any:
|
||||
if not isinstance(input_dict, dict):
|
||||
raise ValueError("input_dict must be a dictionary")
|
||||
return input_dict.get(key)
|
||||
|
||||
|
||||
def get_sample_key(input_dict, name):
|
||||
sample = get_dict_value(input_dict, name)
|
||||
def get_sample_key(input_dict: Dict[str, KeyValueSample], name: str) -> str:
|
||||
sample: KeyValueSample = get_dict_value(input_dict, name)
|
||||
if sample is None:
|
||||
return None
|
||||
return ''
|
||||
return sample.key
|
||||
|
||||
|
||||
def get_sample_value(input_dict, name):
|
||||
sample = get_dict_value(input_dict, name)
|
||||
def get_sample_value(input_dict: Dict[str, KeyValueSample], name: str) -> str:
|
||||
sample: KeyValueSample = get_dict_value(input_dict, name)
|
||||
if sample is None:
|
||||
return None
|
||||
return ''
|
||||
return sample.value
|
||||
|
||||
|
||||
def get_sample_separator_count(input_dict: Dict[str, KeyValueSample], name: str) -> int:
|
||||
sample: KeyValueSample = get_dict_value(input_dict, name)
|
||||
if sample is None:
|
||||
return 0
|
||||
return sample.value_separator_count
|
||||
|
@ -16,7 +16,7 @@
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
# 预处理输入文件,去除多余信息,生成一个中间文件
|
||||
# Preprocess the input file, removing extraneous information, and generate an intermediate file
|
||||
import os
|
||||
import stat
|
||||
|
||||
@ -25,33 +25,25 @@ from src.utils.log_wrapper import log_info
|
||||
|
||||
|
||||
def handle_file_preprocess(input_file, output_file):
|
||||
# 检查输出文件路径的文件是否存在,存在则先删除
|
||||
# Check if the file at the output file path exists, and if it does, delete it first.
|
||||
if os.path.exists(output_file):
|
||||
try:
|
||||
os.remove(output_file)
|
||||
except Exception as e:
|
||||
# 删除文件时发生错误
|
||||
print(f"删除文件 {output_file} 时发生错误:{e}")
|
||||
print(f"delete {output_file} failed:{e}")
|
||||
|
||||
# 打开原始文件和目标文件
|
||||
with open(input_file, 'r', encoding='utf-8') as infile:
|
||||
flags = os.O_WRONLY | os.O_CREAT
|
||||
mode = stat.S_IWUSR | stat.S_IRUSR
|
||||
with os.fdopen(os.open(output_file, flags, mode), 'w') as outfile:
|
||||
event_tree_dump_info_key = get_dict_value(keywords_dict, 'EventTreeDumpInfo')
|
||||
# 遍历输入文件的每一行
|
||||
for line in infile:
|
||||
# 查找'EventTreeDumpInfo'的位置
|
||||
# find the EventTreeDumpInfo section position
|
||||
index = line.find(event_tree_dump_info_key)
|
||||
# 如果找到了'EventTreeDumpInfo: '
|
||||
if index != -1:
|
||||
new_index = index + len(event_tree_dump_info_key)
|
||||
# 从'EventTreeDumpInfo'开始截取直到行末
|
||||
newline = line[new_index:]
|
||||
# 将处理后的行写入临时文件
|
||||
outfile.write(newline)
|
||||
else:
|
||||
# 否则直接写入临时文件
|
||||
outfile.write(line)
|
||||
log_info("输入文件预处理完成:" + input_file + "->" + output_file)
|
||||
|
||||
log_info("preprocess done: " + input_file + "->" + output_file)
|
||||
|
@ -18,25 +18,6 @@
|
||||
|
||||
from src.keywords import KeyValueSample
|
||||
|
||||
|
||||
# 2: event tree =>
|
||||
# touch points:
|
||||
# id: 0, point: Offset (278.00, 551.00), screenPoint: Offset (278.00, 551.00), type: TouchDown, timestamp: 2017-08-25 15:00:22.244, isInjected: 0
|
||||
# id: 0, point: Offset (278.00, 551.00), screenPoint: Offset (278.00, 551.00), type: TouchUp, timestamp: 2017-08-25 15:00:22.295, isInjected: 0
|
||||
# hittest:
|
||||
# nodeId: 0, parentId: -1, tag: root, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1280.00]
|
||||
# nodeId: 1, parentId: 0, tag: stage, monopolizeEvents: 0, isHit: 1, hitTestMode: 0, responseRegion: RectT (0.00, 0.00) - [720.00 x 1280.00]
|
||||
# event procedures:
|
||||
# finger:0
|
||||
# frameNodeId: 84, type: TouchEventActuator, depth: 0, id: 0xf072b240, parentId: 0x0
|
||||
# stateHistory:
|
||||
# procedure: HandleTouchDown, timestamp: 2017-08-25 15:00:22.247
|
||||
# procedure: HandleTouchUp, timestamp: 2017-08-25 15:00:22.295
|
||||
# finger:1
|
||||
# frameNodeId: 84, type: TouchEventActuator, depth: 0, id: 0xf072b240, parentId: 0x0
|
||||
# stateHistory:
|
||||
# procedure: HandleTouchDown, timestamp: 2017-08-25 15:00:22.247
|
||||
# procedure: HandleTouchUp, timestamp: 2017-08-25 15:00:22.295
|
||||
if __name__ == '__main__':
|
||||
KeyValueSample("touch points:")
|
||||
KeyValueSample("id: 0")
|
||||
|
@ -38,14 +38,22 @@ class LogWrapper:
|
||||
|
||||
|
||||
logWrapper = LogWrapper()
|
||||
log_debug_enabled = False
|
||||
|
||||
|
||||
def enable_debug(flag):
|
||||
global log_debug_enabled
|
||||
log_debug_enabled = flag
|
||||
|
||||
|
||||
def log_debug(msg):
|
||||
logWrapper.logger.debug(msg)
|
||||
if log_debug_enabled:
|
||||
logWrapper.logger.debug(msg)
|
||||
|
||||
|
||||
def log_info(msg):
|
||||
logWrapper.logger.info(msg)
|
||||
if log_debug_enabled:
|
||||
logWrapper.logger.info(msg)
|
||||
|
||||
|
||||
def log_warning(msg):
|
||||
@ -58,3 +66,7 @@ def log_error(msg):
|
||||
|
||||
def log_critical(msg):
|
||||
logWrapper.logger.critical(msg)
|
||||
|
||||
|
||||
def log_message(msg):
|
||||
logWrapper.logger.info(msg)
|
Loading…
Reference in New Issue
Block a user