import {nanos_to_string, transform} from './transform.js' function transform_ime_trace_clients(entries) { return transform({ obj: entries, kind: 'entries', name: 'entries', children: [ [entries.entry, transform_entry_clients] ] }); } function transform_entry_clients(entry) { return transform({ obj: entry, kind: 'entry', name: nanos_to_string(entry.elapsedRealtimeNanos) + " - " + entry.where, children: [ [[entry.client], transform_client_dump] ], timestamp: entry.elapsedRealtimeNanos, stableId: 'entry' }); } function transform_client_dump(entry) { return transform({ obj: transform_input_connection_call(entry), kind: 'Client', name: '\n- methodId ' + entry?.inputMethodManager?.curId + '\n- view ' + entry?.viewRootImpl?.view + '\n- packageName ' + entry?.editorInfo?.packageName, children: [], stableId: 'client' }); } function transform_ime_trace_service(entries) { return transform({ obj: entries, kind: 'entries', name: 'entries', children: [ [entries.entry, transform_entry_service] ] }); } function transform_entry_service(entry) { return transform({ obj: entry, kind: 'entry', name: nanos_to_string(entry.elapsedRealtimeNanos) + " - " + entry.where, children: [ [[entry.inputMethodService], transform_service_dump] ], timestamp: entry.elapsedRealtimeNanos, stableId: 'entry' }); } function transform_service_dump(entry) { return transform({ obj: transform_input_connection_call(entry), kind: 'InputMethodService', name: '\n- windowVisible ' + entry?.windowVisible + '\n- decorViewVisible ' + entry?.decorViewVisible + '\n- packageName ' + entry?.inputEditorInfo?.packageName, children: [], stableId: 'service' }); } function transform_ime_trace_managerservice(entries) { return transform({ obj: entries, kind: 'entries', name: 'entries', children: [ [entries.entry, transform_entry_managerservice] ] }); } function transform_entry_managerservice(entry) { return transform({ obj: entry, kind: 'entry', name: nanos_to_string(entry.elapsedRealtimeNanos) + " - " + entry.where, children: [ [[entry.inputMethodManagerService], transform_managerservice_dump] ], timestamp: entry.elapsedRealtimeNanos, stableId: 'entry' }); } function transform_managerservice_dump(entry) { return transform({ obj: entry, kind: 'InputMethodManagerService', name: '\n- methodId ' + entry?.curMethodId + '\n- curFocusedWindow ' + entry?.curFocusedWindowName + '\n- lastImeTargetWindow ' + entry?.lastImeTargetWindowName + '\n- inputShown ' + entry?.inputShown, children: [], stableId: 'managerservice' }); } function transform_input_connection_call(entry) { const obj = Object.assign({}, entry) if (obj.inputConnectionCall) { Object.getOwnPropertyNames(obj.inputConnectionCall).forEach(name => { const value = Object.getOwnPropertyDescriptor(obj.inputConnectionCall, name) if (!value.value) delete obj.inputConnectionCall[name] }) } return obj } export {transform_ime_trace_clients, transform_ime_trace_service, transform_ime_trace_managerservice};