From 99afc1013bba9b67c93240f3080b876c67bd502b Mon Sep 17 00:00:00 2001 From: Pablo Gamito Date: Mon, 22 May 2023 12:15:39 +0000 Subject: [PATCH] Support multiple files for a single trace Bug: 277181336 Test: npm run build:all && npm run test:all Change-Id: I7eb981367191c47d3b50b31ee66f147ff1d69431 --- .../src/app/components/app_component.ts | 19 +++--- .../src/app/components/snack_bar_opener.ts | 2 +- .../app/components/upload_traces_component.ts | 7 ++- tools/winscope/src/app/trace_info.ts | 20 +++++++ tools/winscope/src/app/trace_pipeline.ts | 29 +++++---- tools/winscope/src/app/trace_pipeline_test.ts | 3 +- tools/winscope/src/parsers/abstract_parser.ts | 6 +- tools/winscope/src/parsers/parser_factory.ts | 37 ++++++------ tools/winscope/src/test/unit/trace_builder.ts | 11 +++- tools/winscope/src/test/unit/utils.ts | 15 ++++- tools/winscope/src/trace/loaded_trace.ts | 21 +++++++ tools/winscope/src/trace/parser.ts | 4 +- tools/winscope/src/trace/parser_mock.ts | 4 ++ tools/winscope/src/trace/trace.ts | 60 ++++++++++++++----- tools/winscope/src/trace/trace_file.ts | 12 ++-- 15 files changed, 176 insertions(+), 74 deletions(-) create mode 100644 tools/winscope/src/trace/loaded_trace.ts diff --git a/tools/winscope/src/app/components/app_component.ts b/tools/winscope/src/app/components/app_component.ts index 6c1d7877b..b47d29e42 100644 --- a/tools/winscope/src/app/components/app_component.ts +++ b/tools/winscope/src/app/components/app_component.ts @@ -331,24 +331,23 @@ export class AppComponent implements TraceDataListener { private makeActiveTraceFileInfo(view: View): string { const traceFile = this.tracePipeline .getLoadedTraceFiles() - .find((file) => file.type === view.dependencies[0])?.traceFile; + .find((file) => file.type === view.dependencies[0]); if (!traceFile) { return ''; } - if (!traceFile.parentArchive) { - return traceFile.file.name; - } - - return `${traceFile.parentArchive.name} - ${traceFile.file.name}`; + return `${traceFile.type} (${traceFile.descriptors.join(', ')})`; } private async makeTraceFilesForDownload(): Promise { - return this.tracePipeline.getLoadedTraceFiles().map((trace) => { - const traceType = TRACE_INFO[trace.type].name; - const newName = traceType + '/' + FileUtils.removeDirFromFileName(trace.traceFile.file.name); - return new File([trace.traceFile.file], newName); + const loadedFiles = this.tracePipeline.getLoadedFiles(); + return [...loadedFiles.keys()].map((traceType) => { + const file = loadedFiles.get(traceType)!; + const path = TRACE_INFO[traceType].downloadArchiveDir; + + const newName = path + '/' + FileUtils.removeDirFromFileName(file.file.name); + return new File([file.file], newName); }); } } diff --git a/tools/winscope/src/app/components/snack_bar_opener.ts b/tools/winscope/src/app/components/snack_bar_opener.ts index 5b832e678..d9c35c6ee 100644 --- a/tools/winscope/src/app/components/snack_bar_opener.ts +++ b/tools/winscope/src/app/components/snack_bar_opener.ts @@ -67,7 +67,7 @@ export class SnackBarOpener implements UserNotificationListener { } private convertErrorToMessage(error: ParserError): string { - const fileName = error.trace !== undefined ? error.trace.name : ''; + const fileName = error.trace !== undefined ? error.trace : ''; const traceTypeName = error.traceType !== undefined ? TRACE_INFO[error.traceType].name : ''; diff --git a/tools/winscope/src/app/components/upload_traces_component.ts b/tools/winscope/src/app/components/upload_traces_component.ts index c9b7c1ee9..2e6da1053 100644 --- a/tools/winscope/src/app/components/upload_traces_component.ts +++ b/tools/winscope/src/app/components/upload_traces_component.ts @@ -25,7 +25,7 @@ import { import {TRACE_INFO} from 'app/trace_info'; import {TracePipeline} from 'app/trace_pipeline'; import {ProgressListener} from 'interfaces/progress_listener'; -import {LoadedTraceFile} from 'trace/trace_file'; +import {LoadedTrace} from 'trace/loaded_trace'; import {LoadProgressComponent} from './load_progress_component'; @Component({ @@ -63,7 +63,8 @@ import {LoadProgressComponent} from './load_progress_component'; {{ TRACE_INFO[trace.type].icon }} -

{{ trace.traceFile.file.name }} ({{ TRACE_INFO[trace.type].name }})

+

{{ TRACE_INFO[trace.type].name }}

+

{{ descriptor }}