Log H5 perf bridge events
This commit is contained in:
@@ -126,6 +126,7 @@ class _H5ShellPageState extends State<H5ShellPage> with WidgetsBindingObserver {
|
||||
int _resumeRecoveryToken = 0;
|
||||
DateTime? _backgroundedAt;
|
||||
late ShellBranding _shellBranding;
|
||||
final DateTime _shellStartedAt = DateTime.now();
|
||||
|
||||
_H5LineWebViewSlot get _currentSlot => _lineSlot;
|
||||
|
||||
@@ -426,6 +427,22 @@ class _H5ShellPageState extends State<H5ShellPage> with WidgetsBindingObserver {
|
||||
debugPrint('[H5LineDebug] $message');
|
||||
}
|
||||
|
||||
int get _elapsedSinceShellStartMs =>
|
||||
DateTime.now().difference(_shellStartedAt).inMilliseconds;
|
||||
|
||||
void _logShellPerfBridge(Map<dynamic, dynamic> decoded) {
|
||||
final label = decoded['label']?.toString() ?? 'unknown';
|
||||
final status = decoded['status']?.toString() ?? 'info';
|
||||
final duration = decoded['durationMs'];
|
||||
final detail = decoded['detail'];
|
||||
final durationText = duration == null ? '' : ' ${duration}ms';
|
||||
final detailText = detail == null ? '' : ' detail=${jsonEncode(detail)}';
|
||||
debugPrint(
|
||||
'[H5PerfBridge] +${_elapsedSinceShellStartMs}ms '
|
||||
'$label $status$durationText$detailText',
|
||||
);
|
||||
}
|
||||
|
||||
bool _isCurrentLineGeneration(int generation) {
|
||||
return generation == _lineGeneration;
|
||||
}
|
||||
@@ -475,6 +492,8 @@ class _H5ShellPageState extends State<H5ShellPage> with WidgetsBindingObserver {
|
||||
_hideShellCover(generation);
|
||||
} else if (decoded is Map && decoded['type'] == 'keyboard-bridge-ready') {
|
||||
unawaited(_syncKeyboardState());
|
||||
} else if (decoded is Map && decoded['type'] == 'perf-log') {
|
||||
_logShellPerfBridge(decoded);
|
||||
} else if (decoded is Map && decoded['type'] == 'openExternalUrl') {
|
||||
unawaited(_openExternalUrl(decoded['url']?.toString()));
|
||||
}
|
||||
@@ -514,6 +533,8 @@ class _H5ShellPageState extends State<H5ShellPage> with WidgetsBindingObserver {
|
||||
unawaited(openAppSettings());
|
||||
case 'keyboard-bridge-ready':
|
||||
unawaited(_syncKeyboardState());
|
||||
case 'perf-log':
|
||||
_logShellPerfBridge(decoded);
|
||||
case 'openExternalUrl':
|
||||
unawaited(_openExternalUrl(decoded['url']?.toString()));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user