Winscope: Use int-based enums to differentiate log field types

Using a string-based enum that doubles as the display name of the field
type means we cannot have two different types that have the same display
name with different characteristics.

Bug: 332714237
Bug: 210460522
Test: presubmit
Flag: NONE dev tool only
Change-Id: Icac1a459da6ef69734fbd8ce0d29970f64ce297d
diff --git a/tools/winscope/src/viewers/common/abstract_log_viewer_presenter.ts b/tools/winscope/src/viewers/common/abstract_log_viewer_presenter.ts
index 92f1d64..80449ce 100644
--- a/tools/winscope/src/viewers/common/abstract_log_viewer_presenter.ts
+++ b/tools/winscope/src/viewers/common/abstract_log_viewer_presenter.ts
@@ -31,7 +31,7 @@
 import {PropertiesPresenter} from 'viewers/common/properties_presenter';
 import {UserOptions} from 'viewers/common/user_options';
 import {LogPresenter} from './log_presenter';
-import {LogFieldName, UiDataLog} from './ui_data_log';
+import {LogFieldType, UiDataLog} from './ui_data_log';
 import {
   LogFilterChangeDetail,
   TimestampClickDetail,
@@ -65,7 +65,7 @@
       ViewerEvents.LogFilterChange,
       async (event) => {
         const detail: LogFilterChangeDetail = (event as CustomEvent).detail;
-        await this.onFilterChange(detail.name, detail.value);
+        await this.onFilterChange(detail.type, detail.value);
       },
     );
     htmlElement.addEventListener(ViewerEvents.LogEntryClick, async (event) => {
@@ -105,8 +105,8 @@
     );
   }
 
-  async onFilterChange(name: LogFieldName, value: string[] | string) {
-    this.logPresenter.applyFilterChange(name, value);
+  async onFilterChange(type: LogFieldType, value: string[] | string) {
+    this.logPresenter.applyFilterChange(type, value);
     await this.updatePropertiesTree();
     this.uiData.currentIndex = this.logPresenter.getCurrentIndex();
     this.uiData.selectedIndex = this.logPresenter.getSelectedIndex();
diff --git a/tools/winscope/src/viewers/common/abstract_log_viewer_presenter_test.ts b/tools/winscope/src/viewers/common/abstract_log_viewer_presenter_test.ts
index 30b4a9b..b142d05 100644
--- a/tools/winscope/src/viewers/common/abstract_log_viewer_presenter_test.ts
+++ b/tools/winscope/src/viewers/common/abstract_log_viewer_presenter_test.ts
@@ -21,7 +21,7 @@
   AbstractLogViewerPresenter,
   NotifyLogViewCallbackType,
 } from './abstract_log_viewer_presenter';
-import {LogEntry, LogFieldName, LogFieldValue, UiDataLog} from './ui_data_log';
+import {LogEntry, LogFieldType, LogFieldValue, UiDataLog} from './ui_data_log';
 
 export abstract class AbstractLogViewerPresenterTest {
   execute() {
@@ -98,11 +98,11 @@
         }
 
         if (this.shouldExecuteFilterTests) {
-          for (const [logFieldName, expectedOptions] of assertDefined(
+          for (const [logFieldType, expectedOptions] of assertDefined(
             this.expectedInitialFilterOptions,
           )) {
             const options = assertDefined(
-              uiData.filters?.find((f) => f.name === logFieldName)?.options,
+              uiData.filters?.find((f) => f.type === logFieldType)?.options,
             );
             if (Array.isArray(expectedOptions)) {
               expect(options).toEqual(expectedOptions);
@@ -141,19 +141,19 @@
 
       if (this.shouldExecuteFilterTests) {
         it('filters entries', async () => {
-          for (const [name, valuesToSet] of assertDefined(
+          for (const [type, valuesToSet] of assertDefined(
             this.filterValuesToSet,
           )) {
             const expected = assertDefined(
-              this.expectedFieldValuesAfterFilter?.get(name),
+              this.expectedFieldValuesAfterFilter?.get(type),
             );
             for (let i = 0; i < valuesToSet.length; i++) {
               const filterValues = valuesToSet[i];
               const expectedFieldValues = expected[i];
 
-              await presenter.onFilterChange(name, filterValues);
+              await presenter.onFilterChange(type, filterValues);
               const fieldValues = uiData.entries.map((entry) =>
-                assertDefined(this.getFieldValue(entry, name)),
+                assertDefined(this.getFieldValue(entry, type)),
               );
               if (Array.isArray(expectedFieldValues)) {
                 expect(new Set(fieldValues)).toEqual(
@@ -162,7 +162,7 @@
               } else {
                 expect(fieldValues.length).toEqual(expectedFieldValues);
               }
-              await presenter.onFilterChange(name, []);
+              await presenter.onFilterChange(type, []);
             }
           }
         });
@@ -289,8 +289,8 @@
     }
   }
 
-  getFieldValue(entry: LogEntry, logFieldName: LogFieldName) {
-    return entry.fields.find((f) => f.name === logFieldName)?.value;
+  getFieldValue(entry: LogEntry, logFieldType: LogFieldType) {
+    return entry.fields.find((f) => f.type === logFieldType)?.value;
   }
 
   checkSelectedEntryUiData(uiData: UiDataLog, newIndex: number | undefined) {
@@ -323,13 +323,13 @@
   abstract readonly expectedIndexOfSecondPositionUpdate: number;
   abstract readonly logEntryClickIndex: number;
 
-  readonly expectedInitialFilterOptions?: Map<LogFieldName, string[] | number>;
-  readonly filterValuesToSet?: Map<LogFieldName, Array<string[] | string>>;
+  readonly expectedInitialFilterOptions?: Map<LogFieldType, string[] | number>;
+  readonly filterValuesToSet?: Map<LogFieldType, Array<string[] | string>>;
   readonly expectedFieldValuesAfterFilter?: Map<
-    LogFieldName,
+    LogFieldType,
     Array<LogFieldValue[] | number>
   >;
-  readonly filterNameForCurrentIndexTest?: LogFieldName;
+  readonly filterNameForCurrentIndexTest?: LogFieldType;
   readonly filterChangeForCurrentIndexTest?: string[];
   readonly expectedCurrentIndexAfterFilterChange?: number;
   readonly secondFilterChangeForCurrentIndexTest?: string[];
diff --git a/tools/winscope/src/viewers/common/log_component.ts b/tools/winscope/src/viewers/common/log_component.ts
index 64ff62a..0e9cbb5 100644
--- a/tools/winscope/src/viewers/common/log_component.ts
+++ b/tools/winscope/src/viewers/common/log_component.ts
@@ -40,7 +40,8 @@
   LogEntry,
   LogField,
   LogFieldClassNames,
-  LogFieldName,
+  LogFieldNames,
+  LogFieldType,
   LogFieldValue,
   LogFilter,
 } from './ui_data_log';
@@ -50,29 +51,29 @@
   template: `
     <div class="entries">
       <div class="headers" *ngIf="headers.length > 0">
-        <div *ngFor="let header of headers" class="mat-body-2" [class]="getLogFieldClass(header)">{{header}}</div>
+        <div *ngFor="let header of headers" class="mat-body-2" [class]="getLogFieldClass(header)">{{getLogFieldName(header)}}</div>
       </div>
 
       <div class="filters" *ngIf="filters.length > 0">
         <div *ngIf="showTraceEntryTimes" class="time"></div>
 
-        <div class="filter" *ngFor="let filter of filters" [class]="getLogFieldClass(filter.name)">
+        <div class="filter" *ngFor="let filter of filters" [class]="getLogFieldClass(filter.type)">
           <select-with-filter
               *ngIf="filter.options?.length > 0"
-              [label]="filter.name"
+              [label]="getLogFieldName(filter.type)"
               [options]="filter.options"
-              [outerFilterWidth]="getOuterFilterWidth(filter.name)"
-              [innerFilterWidth]="getInnerFilterWidth(filter.name)"
-              (selectChange)="onFilterChange($event, filter.name)">
+              [outerFilterWidth]="getOuterFilterWidth(filter.type)"
+              [innerFilterWidth]="getInnerFilterWidth(filter.type)"
+              (selectChange)="onFilterChange($event, filter.type)">
           </select-with-filter>
 
           <mat-form-field *ngIf="filter.options === undefined" appearance="fill" (keydown.enter)="$event.target.blur()">
-            <mat-label>{{filter.name}}</mat-label>
+            <mat-label>{{filter.type}}</mat-label>
             <input
                 matInput
-                [name]="filter.name"
+                [name]="getLogFieldName(filter.type)"
                 [ngModel]="emptyFilterValue"
-                (ngModelChange)="onFilterChange($event, filter.name)" />
+                (ngModelChange)="onFilterChange($event, filter.type)" />
           </mat-form-field>
         </div>
 
@@ -137,7 +138,7 @@
             </button>
           </div>
 
-          <div [class]="getLogFieldClass(field.name)" *ngFor="let field of entry.fields; index as i">
+          <div [class]="getLogFieldClass(field.type)" *ngFor="let field of entry.fields; index as i">
             <span class="mat-body-1" *ngIf="!showTimestampButton(field.value)">{{ field.value }}</span>
             <button
                 *ngIf="showTimestampButton(field.value)"
@@ -170,7 +171,7 @@
   @Input() selectedIndex: number | undefined;
   @Input() scrollToIndex: number | undefined;
   @Input() currentIndex: number | undefined;
-  @Input() headers: LogFieldName[] = [];
+  @Input() headers: LogFieldType[] = [];
   @Input() filters: LogFilter[] = [];
   @Input() entries: LogEntry[] = [];
   @Input() showCurrentTimeButton = true;
@@ -186,8 +187,12 @@
     return value instanceof Timestamp;
   }
 
-  getLogFieldClass(fieldName: LogFieldName) {
-    return LogFieldClassNames.get(fieldName);
+  getLogFieldClass(fieldType: LogFieldType) {
+    return LogFieldClassNames.get(fieldType);
+  }
+
+  getLogFieldName(fieldType: LogFieldType) {
+    return LogFieldNames.get(fieldType);
   }
 
   ngOnChanges() {
@@ -200,11 +205,11 @@
     }
   }
 
-  onFilterChange(event: MatSelectChange | string, filterName: LogFieldName) {
+  onFilterChange(event: MatSelectChange | string, filterType: LogFieldType) {
     const value = event instanceof MatSelectChange ? event.value : event;
     this.emitEvent(
       ViewerEvents.LogFilterChange,
-      new LogFilterChangeDetail(filterName, value),
+      new LogFilterChangeDetail(filterType, value),
     );
   }
 
@@ -229,7 +234,7 @@
 
   onTimestampClick(event: MouseEvent, entry: LogEntry, field: LogField) {
     event.stopPropagation();
-    if (field.name === LogFieldName.DISPATCH_TIME) {
+    if (field.type === LogFieldType.DISPATCH_TIME) {
       this.onTraceEntryTimestampClick(event, entry);
     } else {
       this.onRawTimestampClick(field.value as Timestamp);
@@ -263,42 +268,42 @@
     return index === this.selectedIndex;
   }
 
-  getOuterFilterWidth(name: LogFieldName): string | undefined {
-    switch (name) {
-      case LogFieldName.TRANSACTION_ID:
+  getOuterFilterWidth(type: LogFieldType): string | undefined {
+    switch (type) {
+      case LogFieldType.TRANSACTION_ID:
         return '125';
-      case LogFieldName.VSYNC_ID:
+      case LogFieldType.VSYNC_ID:
         return '110';
-      case LogFieldName.LAYER_OR_DISPLAY_ID:
+      case LogFieldType.LAYER_OR_DISPLAY_ID:
         return '125';
-      case LogFieldName.FLAGS:
+      case LogFieldType.FLAGS:
         return '250';
-      case LogFieldName.LOG_LEVEL:
+      case LogFieldType.LOG_LEVEL:
         return '100';
-      case LogFieldName.TAG:
+      case LogFieldType.TAG:
         return '100';
-      case LogFieldName.SOURCE_FILE:
+      case LogFieldType.SOURCE_FILE:
         return '300';
       default:
         return '75';
     }
   }
 
-  getInnerFilterWidth(name: LogFieldName): string | undefined {
-    switch (name) {
-      case LogFieldName.TRANSACTION_ID:
+  getInnerFilterWidth(type: LogFieldType): string | undefined {
+    switch (type) {
+      case LogFieldType.TRANSACTION_ID:
         return '125';
-      case LogFieldName.VSYNC_ID:
+      case LogFieldType.VSYNC_ID:
         return '90';
-      case LogFieldName.TRANSACTION_TYPE:
+      case LogFieldType.TRANSACTION_TYPE:
         return '175';
-      case LogFieldName.LAYER_OR_DISPLAY_ID:
+      case LogFieldType.LAYER_OR_DISPLAY_ID:
         return '100';
-      case LogFieldName.FLAGS:
+      case LogFieldType.FLAGS:
         return '250';
-      case LogFieldName.TAG:
+      case LogFieldType.TAG:
         return '150';
-      case LogFieldName.SOURCE_FILE:
+      case LogFieldType.SOURCE_FILE:
         return '300';
       default:
         return '100';
diff --git a/tools/winscope/src/viewers/common/log_component_test.ts b/tools/winscope/src/viewers/common/log_component_test.ts
index 03d6103..92ac0de 100644
--- a/tools/winscope/src/viewers/common/log_component_test.ts
+++ b/tools/winscope/src/viewers/common/log_component_test.ts
@@ -43,7 +43,7 @@
 import {PropertiesComponent} from 'viewers/components/properties_component';
 import {SelectWithFilterComponent} from 'viewers/components/select_with_filter_component';
 import {LogComponent} from './log_component';
-import {LogEntry, LogFieldName} from './ui_data_log';
+import {LogEntry, LogFieldType} from './ui_data_log';
 
 describe('LogComponent', () => {
   describe('Main component', () => {
@@ -249,14 +249,14 @@
       const fieldTime = TimestampConverterUtils.makeElapsedTimestamp(2n);
 
       const fields1 = [
-        {name: LogFieldName.TAG, value: 'Test tag 1'},
-        {name: LogFieldName.VSYNC_ID, value: 123},
-        {name: LogFieldName.SEND_TIME, value: fieldTime},
+        {type: LogFieldType.TAG, value: 'Test tag 1'},
+        {type: LogFieldType.VSYNC_ID, value: 123},
+        {type: LogFieldType.SEND_TIME, value: fieldTime},
       ];
       const fields2 = [
-        {name: LogFieldName.TAG, value: 'Test tag 2'},
-        {name: LogFieldName.VSYNC_ID, value: 1234},
-        {name: LogFieldName.SEND_TIME, value: fieldTime},
+        {type: LogFieldType.TAG, value: 'Test tag 2'},
+        {type: LogFieldType.VSYNC_ID, value: 1234},
+        {type: LogFieldType.SEND_TIME, value: fieldTime},
       ];
 
       const trace = new TraceBuilder<PropertyTreeNode>()
@@ -275,8 +275,8 @@
       const entries = [entry1, entry2];
 
       const filters = [
-        {name: LogFieldName.TAG, options: ['Test tag 1', 'Test tag 2']},
-        {name: LogFieldName.VSYNC_ID},
+        {type: LogFieldType.TAG, options: ['Test tag 1', 'Test tag 2']},
+        {type: LogFieldType.VSYNC_ID},
       ];
 
       component.entries = entries;
@@ -294,7 +294,7 @@
         }
         component.entries = allEntries.filter((entry) => {
           const entryValue = assertDefined(
-            entry.fields.find((f) => f.name === detail.name),
+            entry.fields.find((f) => f.type === detail.type),
           ).value.toString();
           if (Array.isArray(detail.value)) {
             return detail.value.includes(entryValue);
diff --git a/tools/winscope/src/viewers/common/log_presenter.ts b/tools/winscope/src/viewers/common/log_presenter.ts
index 06bc9c5..3526371 100644
--- a/tools/winscope/src/viewers/common/log_presenter.ts
+++ b/tools/winscope/src/viewers/common/log_presenter.ts
@@ -18,14 +18,14 @@
 import {Timestamp} from 'common/time';
 import {TraceEntry} from 'trace/trace';
 import {PropertyTreeNode} from 'trace/tree_node/property_tree_node';
-import {LogEntry, LogFieldName, LogFilter} from './ui_data_log';
+import {LogEntry, LogFieldType, LogFilter} from './ui_data_log';
 
 export class LogPresenter {
   private allEntries: LogEntry[] = [];
   private filteredEntries: LogEntry[] = [];
   private filters: LogFilter[] = [];
-  private headers: LogFieldName[] = [];
-  private filterValues = new Map<LogFieldName, string | string[]>();
+  private headers: LogFieldType[] = [];
+  private filterValues = new Map<LogFieldType, string | string[]>();
   private currentEntry: TraceEntry<PropertyTreeNode> | undefined;
   private selectedIndex: number | undefined;
   private scrollToIndex: number | undefined;
@@ -39,17 +39,17 @@
     this.updateFilteredEntries();
   }
 
-  setHeaders(headers: LogFieldName[]) {
+  setHeaders(headers: LogFieldType[]) {
     this.headers = headers;
   }
 
-  getHeaders(): LogFieldName[] {
+  getHeaders(): LogFieldType[] {
     return this.headers;
   }
 
   setFilters(filters: LogFilter[]) {
     this.filters = filters;
-    this.filterValues = new Map<LogFieldName, string | string[]>();
+    this.filterValues = new Map<LogFieldType, string | string[]>();
     this.updateFilteredEntries();
     this.resetIndices();
   }
@@ -109,11 +109,11 @@
     this.resetIndices();
   }
 
-  applyFilterChange(name: LogFieldName, value: string[] | string) {
+  applyFilterChange(type: LogFieldType, value: string[] | string) {
     if (value.length > 0) {
-      this.filterValues.set(name, value);
+      this.filterValues.set(type, value);
     } else {
-      this.filterValues.delete(name);
+      this.filterValues.delete(type);
     }
     this.updateFilteredEntries();
     if (this.storeCurrentIndex) {
@@ -145,9 +145,9 @@
 
   private updateFilteredEntries() {
     this.filteredEntries = this.allEntries.filter((entry) => {
-      for (const [filterName, filterValue] of this.filterValues) {
+      for (const [filterType, filterValue] of this.filterValues) {
         const entryValue = entry.fields.find(
-          (f) => f.name === filterName,
+          (f) => f.type === filterType,
         )?.value;
 
         if (entryValue === undefined || entryValue instanceof Timestamp) {
@@ -156,7 +156,7 @@
 
         const entryValueStr = entryValue.toString();
 
-        if (Array.isArray(filterValue) && filterName === LogFieldName.FLAGS) {
+        if (Array.isArray(filterValue) && filterType === LogFieldType.FLAGS) {
           if (!filterValue.some((flag) => entryValueStr.includes(flag))) {
             return false;
           }
diff --git a/tools/winscope/src/viewers/common/ui_data_log.ts b/tools/winscope/src/viewers/common/ui_data_log.ts
index 461509a..ac59948 100644
--- a/tools/winscope/src/viewers/common/ui_data_log.ts
+++ b/tools/winscope/src/viewers/common/ui_data_log.ts
@@ -26,14 +26,14 @@
   scrollToIndex: undefined | number;
 
   filters?: LogFilter[];
-  headers?: LogFieldName[];
+  headers?: LogFieldType[];
   currentIndex?: undefined | number;
   propertiesTree?: undefined | UiPropertyTreeNode;
   propertiesUserOptions?: UserOptions;
 }
 
 export interface LogFilter {
-  name: LogFieldName;
+  type: LogFieldType;
   options?: string[];
 }
 
@@ -44,7 +44,7 @@
 }
 
 export interface LogField {
-  name: LogFieldName;
+  type: LogFieldType;
   value: LogFieldValue;
   icon?: string;
   iconColor?: string;
@@ -52,48 +52,71 @@
 
 export type LogFieldValue = string | number | Timestamp;
 
-export enum LogFieldName {
-  TRANSACTION_ID = 'TX ID',
-  VSYNC_ID = 'VSYNC ID',
-  PID = 'PID',
-  UID = 'UID',
-  TRANSACTION_TYPE = 'TYPE',
-  LAYER_OR_DISPLAY_ID = 'LAYER/DISP ID',
-  FLAGS = 'Flags',
-  LOG_LEVEL = 'Log level',
-  TAG = 'Tag',
-  SOURCE_FILE = 'Source files',
-  TEXT = 'Search text',
-  TRANSITION_ID = 'Id',
-  TRANSITION_TYPE = 'Type',
-  SEND_TIME = 'Send Time',
-  DISPATCH_TIME = 'Dispatch Time',
-  DURATION = 'Duration',
-  STATUS = 'Status',
-  CUJ_TYPE = 'Type',
-  START_TIME = 'Start Time',
-  END_TIME = 'End Time',
+export enum LogFieldType {
+  TRANSACTION_ID,
+  VSYNC_ID,
+  PID,
+  UID,
+  TRANSACTION_TYPE,
+  LAYER_OR_DISPLAY_ID,
+  FLAGS,
+  LOG_LEVEL,
+  TAG,
+  SOURCE_FILE,
+  TEXT,
+  TRANSITION_ID,
+  TRANSITION_TYPE,
+  SEND_TIME,
+  DISPATCH_TIME,
+  DURATION,
+  STATUS,
+  CUJ_TYPE,
+  START_TIME,
+  END_TIME,
 }
 
-export const LogFieldClassNames: ReadonlyMap<LogFieldName, string> = new Map([
-  [LogFieldName.TRANSACTION_ID, 'transaction-id'],
-  [LogFieldName.VSYNC_ID, 'vsyncid'],
-  [LogFieldName.PID, 'pid'],
-  [LogFieldName.UID, 'uid'],
-  [LogFieldName.TRANSACTION_TYPE, 'transaction-type'],
-  [LogFieldName.LAYER_OR_DISPLAY_ID, 'layer-or-display-id'],
-  [LogFieldName.FLAGS, 'flags'],
-  [LogFieldName.LOG_LEVEL, 'log-level'],
-  [LogFieldName.TAG, 'tag'],
-  [LogFieldName.SOURCE_FILE, 'source-file'],
-  [LogFieldName.TEXT, 'text'],
-  [LogFieldName.TRANSITION_ID, 'transition-id'],
-  [LogFieldName.TRANSITION_TYPE, 'transition-type'],
-  [LogFieldName.CUJ_TYPE, 'jank_cuj-type'],
-  [LogFieldName.SEND_TIME, 'send-time time'],
-  [LogFieldName.DISPATCH_TIME, 'dispatch-time time'],
-  [LogFieldName.START_TIME, 'start-time time'],
-  [LogFieldName.END_TIME, 'end-time time'],
-  [LogFieldName.DURATION, 'duration'],
-  [LogFieldName.STATUS, 'status'],
+export const LogFieldNames: ReadonlyMap<LogFieldType, string> = new Map([
+  [LogFieldType.TRANSACTION_ID, 'TX ID'],
+  [LogFieldType.VSYNC_ID, 'VSYNC ID'],
+  [LogFieldType.PID, 'PID'],
+  [LogFieldType.UID, 'UID'],
+  [LogFieldType.TRANSACTION_TYPE, 'TYPE'],
+  [LogFieldType.LAYER_OR_DISPLAY_ID, 'LAYER/DISP ID'],
+  [LogFieldType.FLAGS, 'Flags'],
+  [LogFieldType.LOG_LEVEL, 'Log level'],
+  [LogFieldType.TAG, 'Tag'],
+  [LogFieldType.SOURCE_FILE, 'Source files'],
+  [LogFieldType.TEXT, 'Search text'],
+  [LogFieldType.TRANSITION_ID, 'Id'],
+  [LogFieldType.TRANSITION_TYPE, 'Type'],
+  [LogFieldType.SEND_TIME, 'Send Time'],
+  [LogFieldType.DISPATCH_TIME, 'Dispatch Time'],
+  [LogFieldType.DURATION, 'Duration'],
+  [LogFieldType.STATUS, 'Status'],
+  [LogFieldType.CUJ_TYPE, 'Type'],
+  [LogFieldType.START_TIME, 'Start Time'],
+  [LogFieldType.END_TIME, 'End Time'],
+]);
+
+export const LogFieldClassNames: ReadonlyMap<LogFieldType, string> = new Map([
+  [LogFieldType.TRANSACTION_ID, 'transaction-id'],
+  [LogFieldType.VSYNC_ID, 'vsyncid'],
+  [LogFieldType.PID, 'pid'],
+  [LogFieldType.UID, 'uid'],
+  [LogFieldType.TRANSACTION_TYPE, 'transaction-type'],
+  [LogFieldType.LAYER_OR_DISPLAY_ID, 'layer-or-display-id'],
+  [LogFieldType.FLAGS, 'flags'],
+  [LogFieldType.LOG_LEVEL, 'log-level'],
+  [LogFieldType.TAG, 'tag'],
+  [LogFieldType.SOURCE_FILE, 'source-file'],
+  [LogFieldType.TEXT, 'text'],
+  [LogFieldType.TRANSITION_ID, 'transition-id'],
+  [LogFieldType.TRANSITION_TYPE, 'transition-type'],
+  [LogFieldType.CUJ_TYPE, 'jank_cuj-type'],
+  [LogFieldType.SEND_TIME, 'send-time time'],
+  [LogFieldType.DISPATCH_TIME, 'dispatch-time time'],
+  [LogFieldType.START_TIME, 'start-time time'],
+  [LogFieldType.END_TIME, 'end-time time'],
+  [LogFieldType.DURATION, 'duration'],
+  [LogFieldType.STATUS, 'status'],
 ]);
diff --git a/tools/winscope/src/viewers/common/viewer_events.ts b/tools/winscope/src/viewers/common/viewer_events.ts
index 1243207..b8f6f32 100644
--- a/tools/winscope/src/viewers/common/viewer_events.ts
+++ b/tools/winscope/src/viewers/common/viewer_events.ts
@@ -17,7 +17,7 @@
 import {Timestamp} from 'common/time';
 import {TraceEntry} from 'trace/trace';
 import {PropertyTreeNode} from 'trace/tree_node/property_tree_node';
-import {LogFieldName} from './ui_data_log';
+import {LogFieldType} from './ui_data_log';
 
 export enum ViewerEvents {
   HighlightedNodeChange = 'HighlightedNodeChange',
@@ -58,5 +58,5 @@
 }
 
 export class LogFilterChangeDetail {
-  constructor(public name: LogFieldName, public value: string[] | string) {}
+  constructor(public type: LogFieldType, public value: string[] | string) {}
 }
diff --git a/tools/winscope/src/viewers/viewer_jank_cujs/presenter.ts b/tools/winscope/src/viewers/viewer_jank_cujs/presenter.ts
index 09ab5df..1dc6882 100644
--- a/tools/winscope/src/viewers/viewer_jank_cujs/presenter.ts
+++ b/tools/winscope/src/viewers/viewer_jank_cujs/presenter.ts
@@ -24,16 +24,16 @@
 } from 'viewers/common/abstract_log_viewer_presenter';
 import {LogPresenter} from 'viewers/common/log_presenter';
 import {PropertiesPresenter} from 'viewers/common/properties_presenter';
-import {LogField, LogFieldName} from 'viewers/common/ui_data_log';
+import {LogField, LogFieldType} from 'viewers/common/ui_data_log';
 import {CujEntry, CujStatus, CujType, UiData} from './ui_data';
 
 export class Presenter extends AbstractLogViewerPresenter {
   static readonly FIELD_NAMES = [
-    LogFieldName.CUJ_TYPE,
-    LogFieldName.START_TIME,
-    LogFieldName.END_TIME,
-    LogFieldName.DURATION,
-    LogFieldName.STATUS,
+    LogFieldType.CUJ_TYPE,
+    LogFieldType.START_TIME,
+    LogFieldType.END_TIME,
+    LogFieldType.DURATION,
+    LogFieldType.STATUS,
   ];
   private static readonly VALUE_NA = 'N/A';
 
@@ -102,23 +102,23 @@
 
       const fields: LogField[] = [
         {
-          name: LogFieldName.CUJ_TYPE,
+          type: LogFieldType.CUJ_TYPE,
           value: `${CujType[cujTypeId]} (${cujTypeId})`,
         },
         {
-          name: LogFieldName.START_TIME,
+          type: LogFieldType.START_TIME,
           value: startTs ?? Presenter.VALUE_NA,
         },
         {
-          name: LogFieldName.END_TIME,
+          type: LogFieldType.END_TIME,
           value: endTs ?? Presenter.VALUE_NA,
         },
         {
-          name: LogFieldName.DURATION,
+          type: LogFieldType.DURATION,
           value: timeDiff?.format() ?? Presenter.VALUE_NA,
         },
         {
-          name: LogFieldName.STATUS,
+          type: LogFieldType.STATUS,
           value: status ?? Presenter.VALUE_NA,
           icon: statusIcon,
           iconColor: statusIconColor,
diff --git a/tools/winscope/src/viewers/viewer_jank_cujs/ui_data.ts b/tools/winscope/src/viewers/viewer_jank_cujs/ui_data.ts
index ea4aa95..5c13dcb 100644
--- a/tools/winscope/src/viewers/viewer_jank_cujs/ui_data.ts
+++ b/tools/winscope/src/viewers/viewer_jank_cujs/ui_data.ts
@@ -19,14 +19,14 @@
 import {
   LogEntry,
   LogField,
-  LogFieldName,
+  LogFieldType,
   UiDataLog,
 } from 'viewers/common/ui_data_log';
 import {UiPropertyTreeNode} from 'viewers/common/ui_property_tree_node';
 
 export class UiData implements UiDataLog {
   constructor(
-    public headers: LogFieldName[],
+    public headers: LogFieldType[],
     public entries: LogEntry[],
     public selectedIndex: undefined | number,
     public scrollToIndex: undefined | number,
diff --git a/tools/winscope/src/viewers/viewer_jank_cujs/viewer_jank_cujs_component_test.ts b/tools/winscope/src/viewers/viewer_jank_cujs/viewer_jank_cujs_component_test.ts
index 7a54ccb..fcd758c 100644
--- a/tools/winscope/src/viewers/viewer_jank_cujs/viewer_jank_cujs_component_test.ts
+++ b/tools/winscope/src/viewers/viewer_jank_cujs/viewer_jank_cujs_component_test.ts
@@ -32,7 +32,7 @@
 import {TraceType} from 'trace/trace_type';
 import {PropertyTreeNode} from 'trace/tree_node/property_tree_node';
 import {LogComponent} from 'viewers/common/log_component';
-import {LogEntry, LogField, LogFieldName} from 'viewers/common/ui_data_log';
+import {LogEntry, LogField, LogFieldType} from 'viewers/common/ui_data_log';
 import {CollapsedSectionsComponent} from 'viewers/components/collapsed_sections_component';
 import {CollapsibleSectionTitleComponent} from 'viewers/components/collapsible_section_title_component';
 import {PropertiesComponent} from 'viewers/components/properties_component';
@@ -127,25 +127,25 @@
   ): LogEntry {
     const fields: LogField[] = [
       {
-        name: LogFieldName.CUJ_TYPE,
+        type: LogFieldType.CUJ_TYPE,
         value: `${CujType[cujTypeId]} (${cujTypeId})`,
       },
       {
-        name: LogFieldName.START_TIME,
+        type: LogFieldType.START_TIME,
         value: TimestampConverterUtils.makeElapsedTimestamp(
           BigInt(startTsNanos),
         ),
       },
       {
-        name: LogFieldName.END_TIME,
+        type: LogFieldType.END_TIME,
         value: TimestampConverterUtils.makeElapsedTimestamp(BigInt(endTsNanos)),
       },
       {
-        name: LogFieldName.DURATION,
+        type: LogFieldType.DURATION,
         value: new TimeDuration(BigInt(endTsNanos - startTsNanos)).format(),
       },
       {
-        name: LogFieldName.STATUS,
+        type: LogFieldType.STATUS,
         value: status,
         icon: 'check',
         iconColor: 'green',
diff --git a/tools/winscope/src/viewers/viewer_protolog/presenter.ts b/tools/winscope/src/viewers/viewer_protolog/presenter.ts
index ba1cb5e..0ec82e1 100644
--- a/tools/winscope/src/viewers/viewer_protolog/presenter.ts
+++ b/tools/winscope/src/viewers/viewer_protolog/presenter.ts
@@ -22,15 +22,15 @@
   NotifyLogViewCallbackType,
 } from 'viewers/common/abstract_log_viewer_presenter';
 import {LogPresenter} from 'viewers/common/log_presenter';
-import {LogField, LogFieldName, LogFilter} from 'viewers/common/ui_data_log';
+import {LogField, LogFieldType, LogFilter} from 'viewers/common/ui_data_log';
 import {ProtologEntry, UiData} from './ui_data';
 
 export class Presenter extends AbstractLogViewerPresenter {
-  static readonly FIELD_NAMES = [
-    LogFieldName.LOG_LEVEL,
-    LogFieldName.TAG,
-    LogFieldName.SOURCE_FILE,
-    LogFieldName.TEXT,
+  static readonly FIELD_TYPES = [
+    LogFieldType.LOG_LEVEL,
+    LogFieldType.TAG,
+    LogFieldType.SOURCE_FILE,
+    LogFieldType.TEXT,
   ];
   private isInitialized = false;
 
@@ -50,19 +50,19 @@
     const allEntries = await this.makeAllUiDataMessages();
     const filters: LogFilter[] = [];
 
-    for (const name of Presenter.FIELD_NAMES) {
-      if (name === LogFieldName.TEXT) {
+    for (const type of Presenter.FIELD_TYPES) {
+      if (type === LogFieldType.TEXT) {
         filters.push({
-          name,
+          type,
         });
       } else {
         filters.push({
-          name,
+          type,
           options: this.getUniqueMessageValues(
             allEntries,
             (entry: ProtologEntry) =>
               assertDefined(
-                entry.fields.find((f) => f.name === name),
+                entry.fields.find((f) => f.type === type),
               ).value.toString(),
           ),
         });
@@ -87,25 +87,25 @@
       const messageNode = await entry.getValue();
       const fields: LogField[] = [
         {
-          name: LogFieldName.LOG_LEVEL,
+          type: LogFieldType.LOG_LEVEL,
           value: assertDefined(
             messageNode.getChildByName('level'),
           ).formattedValue(),
         },
         {
-          name: LogFieldName.TAG,
+          type: LogFieldType.TAG,
           value: assertDefined(
             messageNode.getChildByName('tag'),
           ).formattedValue(),
         },
         {
-          name: LogFieldName.SOURCE_FILE,
+          type: LogFieldType.SOURCE_FILE,
           value: assertDefined(
             messageNode.getChildByName('at'),
           ).formattedValue(),
         },
         {
-          name: LogFieldName.TEXT,
+          type: LogFieldType.TEXT,
           value: assertDefined(
             messageNode.getChildByName('text'),
           ).formattedValue(),
diff --git a/tools/winscope/src/viewers/viewer_protolog/presenter_test.ts b/tools/winscope/src/viewers/viewer_protolog/presenter_test.ts
index 35080dd..5dfc06a 100644
--- a/tools/winscope/src/viewers/viewer_protolog/presenter_test.ts
+++ b/tools/winscope/src/viewers/viewer_protolog/presenter_test.ts
@@ -27,7 +27,7 @@
 import {PropertyTreeNode} from 'trace/tree_node/property_tree_node';
 import {NotifyLogViewCallbackType} from 'viewers/common/abstract_log_viewer_presenter';
 import {AbstractLogViewerPresenterTest} from 'viewers/common/abstract_log_viewer_presenter_test';
-import {LogFieldName, LogFieldValue} from 'viewers/common/ui_data_log';
+import {LogFieldType, LogFieldValue} from 'viewers/common/ui_data_log';
 import {Presenter} from './presenter';
 
 class PresenterProtologTest extends AbstractLogViewerPresenterTest {
@@ -43,39 +43,39 @@
   override readonly totalOutputEntries = 3;
   override readonly expectedIndexOfSecondPositionUpdate = 1;
   override readonly expectedInitialFilterOptions = new Map<
-    LogFieldName,
+    LogFieldType,
     string[] | number
   >([
-    [LogFieldName.LOG_LEVEL, ['level0', 'level1', 'level2']],
-    [LogFieldName.TAG, ['tag0', 'tag1', 'tag2']],
-    [LogFieldName.SOURCE_FILE, ['sourcefile0', 'sourcefile1', 'sourcefile2']],
+    [LogFieldType.LOG_LEVEL, ['level0', 'level1', 'level2']],
+    [LogFieldType.TAG, ['tag0', 'tag1', 'tag2']],
+    [LogFieldType.SOURCE_FILE, ['sourcefile0', 'sourcefile1', 'sourcefile2']],
   ]);
   override readonly filterValuesToSet = new Map<
-    LogFieldName,
+    LogFieldType,
     Array<string | string[]>
   >([
-    [LogFieldName.LOG_LEVEL, [[], ['level1'], ['level0', 'level1', 'level2']]],
-    [LogFieldName.TAG, [[], ['tag1'], ['tag0', 'tag1', 'tag2']]],
+    [LogFieldType.LOG_LEVEL, [[], ['level1'], ['level0', 'level1', 'level2']]],
+    [LogFieldType.TAG, [[], ['tag1'], ['tag0', 'tag1', 'tag2']]],
     [
-      LogFieldName.SOURCE_FILE,
+      LogFieldType.SOURCE_FILE,
       [[], ['sourcefile1'], ['sourcefile0', 'sourcefile1', 'sourcefile2']],
     ],
-    [LogFieldName.TEXT, [[], 'text', 'text0', 'text1']],
+    [LogFieldType.TEXT, [[], 'text', 'text0', 'text1']],
   ]);
   override readonly expectedFieldValuesAfterFilter = new Map<
-    LogFieldName,
+    LogFieldType,
     Array<LogFieldValue[] | number>
   >([
     [
-      LogFieldName.LOG_LEVEL,
+      LogFieldType.LOG_LEVEL,
       [this.totalOutputEntries, ['level1'], ['level0', 'level1', 'level2']],
     ],
     [
-      LogFieldName.TAG,
+      LogFieldType.TAG,
       [this.totalOutputEntries, ['tag1'], ['tag0', 'tag1', 'tag2']],
     ],
     [
-      LogFieldName.SOURCE_FILE,
+      LogFieldType.SOURCE_FILE,
       [
         this.totalOutputEntries,
         ['sourcefile1'],
@@ -83,7 +83,7 @@
       ],
     ],
     [
-      LogFieldName.TEXT,
+      LogFieldType.TEXT,
       [
         this.totalOutputEntries,
         ['text0', 'text1', 'text2'],
@@ -93,7 +93,7 @@
     ],
   ]);
   override readonly logEntryClickIndex = 10;
-  override readonly filterNameForCurrentIndexTest = LogFieldName.LOG_LEVEL;
+  override readonly filterNameForCurrentIndexTest = LogFieldType.LOG_LEVEL;
   override readonly filterChangeForCurrentIndexTest = ['level1'];
   override readonly expectedCurrentIndexAfterFilterChange = 0;
   override readonly secondFilterChangeForCurrentIndexTest = [
diff --git a/tools/winscope/src/viewers/viewer_protolog/scroll_strategy/protolog_scroll_strategy.ts b/tools/winscope/src/viewers/viewer_protolog/scroll_strategy/protolog_scroll_strategy.ts
index 4a8f2ee..22d085b 100644
--- a/tools/winscope/src/viewers/viewer_protolog/scroll_strategy/protolog_scroll_strategy.ts
+++ b/tools/winscope/src/viewers/viewer_protolog/scroll_strategy/protolog_scroll_strategy.ts
@@ -15,7 +15,7 @@
  */
 
 import {assertDefined} from 'common/assert_utils';
-import {LogFieldName} from 'viewers/common/ui_data_log';
+import {LogFieldType} from 'viewers/common/ui_data_log';
 import {VariableHeightScrollStrategy} from 'viewers/common/variable_height_scroll_strategy';
 import {ProtologEntry} from 'viewers/viewer_protolog/ui_data';
 
@@ -27,7 +27,7 @@
 
   protected override predictScrollItemHeight(entry: ProtologEntry): number {
     const textHeight = this.subItemHeight(
-      assertDefined(entry.fields.find((f) => f.name === LogFieldName.TEXT))
+      assertDefined(entry.fields.find((f) => f.type === LogFieldType.TEXT))
         .value as string,
       this.textCharsPerRow,
     );
@@ -37,7 +37,7 @@
     );
     const sourceFileHeight = this.subItemHeight(
       assertDefined(
-        entry.fields.find((f) => f.name === LogFieldName.SOURCE_FILE),
+        entry.fields.find((f) => f.type === LogFieldType.SOURCE_FILE),
       ).value as string,
       this.sourceFileCharsPerRow,
     );
diff --git a/tools/winscope/src/viewers/viewer_protolog/viewer_protolog_component_test.ts b/tools/winscope/src/viewers/viewer_protolog/viewer_protolog_component_test.ts
index c3d59c7..5ccf769 100644
--- a/tools/winscope/src/viewers/viewer_protolog/viewer_protolog_component_test.ts
+++ b/tools/winscope/src/viewers/viewer_protolog/viewer_protolog_component_test.ts
@@ -36,7 +36,7 @@
 import {PropertyTreeNode} from 'trace/tree_node/property_tree_node';
 import {LogComponent} from 'viewers/common/log_component';
 import {executeScrollComponentTests} from 'viewers/common/scroll_component_test_utils';
-import {LogFieldName} from 'viewers/common/ui_data_log';
+import {LogFieldType} from 'viewers/common/ui_data_log';
 import {SelectWithFilterComponent} from 'viewers/components/select_with_filter_component';
 import {ProtologScrollDirective} from './scroll_strategy/protolog_scroll_directive';
 import {ProtologEntry, UiData} from './ui_data';
@@ -158,16 +158,16 @@
     for (let i = 0; i < 200; i++) {
       const message = new ProtologEntry(trace.getEntry(0), [
         {
-          name: LogFieldName.LOG_LEVEL,
+          type: LogFieldType.LOG_LEVEL,
           value: i % 2 === 0 ? allLogLevels[0] : allLogLevels[1],
         },
-        {name: LogFieldName.TAG, value: i % 2 === 0 ? allTags[0] : allTags[1]},
+        {type: LogFieldType.TAG, value: i % 2 === 0 ? allTags[0] : allTags[1]},
         {
-          name: LogFieldName.SOURCE_FILE,
+          type: LogFieldType.SOURCE_FILE,
           value: i % 2 === 0 ? allSourceFiles[0] : allSourceFiles[1],
         },
         {
-          name: LogFieldName.TEXT,
+          type: LogFieldType.TEXT,
           value: i % 2 === 0 ? shortMessage : longMessage,
         },
       ]);
@@ -175,10 +175,10 @@
     }
     return new UiData(
       [
-        {name: LogFieldName.LOG_LEVEL, options: allLogLevels},
-        {name: LogFieldName.TAG, options: allTags},
-        {name: LogFieldName.SOURCE_FILE, options: allSourceFiles},
-        {name: LogFieldName.TEXT},
+        {type: LogFieldType.LOG_LEVEL, options: allLogLevels},
+        {type: LogFieldType.TAG, options: allTags},
+        {type: LogFieldType.SOURCE_FILE, options: allSourceFiles},
+        {type: LogFieldType.TEXT},
       ],
       messages,
       150,
diff --git a/tools/winscope/src/viewers/viewer_transactions/presenter.ts b/tools/winscope/src/viewers/viewer_transactions/presenter.ts
index b7054bd..f057d7f 100644
--- a/tools/winscope/src/viewers/viewer_transactions/presenter.ts
+++ b/tools/winscope/src/viewers/viewer_transactions/presenter.ts
@@ -24,20 +24,20 @@
 } from 'viewers/common/abstract_log_viewer_presenter';
 import {LogPresenter} from 'viewers/common/log_presenter';
 import {PropertiesPresenter} from 'viewers/common/properties_presenter';
-import {LogField, LogFieldName, LogFilter} from 'viewers/common/ui_data_log';
+import {LogField, LogFieldType, LogFilter} from 'viewers/common/ui_data_log';
 import {UserOptions} from 'viewers/common/user_options';
 import {SetRootDisplayNames} from './operations/set_root_display_name';
 import {TransactionsEntry, TransactionsEntryType, UiData} from './ui_data';
 
 export class Presenter extends AbstractLogViewerPresenter {
-  private static readonly FIELD_NAMES = [
-    LogFieldName.TRANSACTION_ID,
-    LogFieldName.VSYNC_ID,
-    LogFieldName.PID,
-    LogFieldName.UID,
-    LogFieldName.TRANSACTION_TYPE,
-    LogFieldName.LAYER_OR_DISPLAY_ID,
-    LogFieldName.FLAGS,
+  private static readonly FIELD_TYPES = [
+    LogFieldType.TRANSACTION_ID,
+    LogFieldType.VSYNC_ID,
+    LogFieldType.PID,
+    LogFieldType.UID,
+    LogFieldType.TRANSACTION_TYPE,
+    LogFieldType.LAYER_OR_DISPLAY_ID,
+    LogFieldType.FLAGS,
   ];
   private static readonly VALUE_NA = 'N/A';
   private isInitialized = false;
@@ -80,15 +80,15 @@
     const allEntries = await this.makeUiDataEntries();
     const filters: LogFilter[] = [];
 
-    for (const name of Presenter.FIELD_NAMES) {
-      if (name === LogFieldName.FLAGS) {
+    for (const type of Presenter.FIELD_TYPES) {
+      if (type === LogFieldType.FLAGS) {
         filters.push({
-          name,
+          type,
           options: this.getUniqueUiDataEntryValues(
             allEntries,
             (entry: TransactionsEntry) =>
               assertDefined(
-                entry.fields.find((f) => f.name === name)?.value as string,
+                entry.fields.find((f) => f.type === type)?.value as string,
               )
                 .split('|')
                 .map((flag) => flag.trim()),
@@ -96,12 +96,12 @@
         });
       } else {
         filters.push({
-          name,
+          type,
           options: this.getUniqueUiDataEntryValues(
             allEntries,
             (entry: TransactionsEntry) =>
               assertDefined(
-                entry.fields.find((f) => f.name === name),
+                entry.fields.find((f) => f.type === type),
               ).value.toString(),
           ),
         });
@@ -152,22 +152,22 @@
 
         for (const layerState of layerChanges) {
           const fields: LogField[] = [
-            {name: LogFieldName.TRANSACTION_ID, value: transactionId},
-            {name: LogFieldName.VSYNC_ID, value: vsyncId},
-            {name: LogFieldName.PID, value: pid},
-            {name: LogFieldName.UID, value: uid},
+            {type: LogFieldType.TRANSACTION_ID, value: transactionId},
+            {type: LogFieldType.VSYNC_ID, value: vsyncId},
+            {type: LogFieldType.PID, value: pid},
+            {type: LogFieldType.UID, value: uid},
             {
-              name: LogFieldName.TRANSACTION_TYPE,
+              type: LogFieldType.TRANSACTION_TYPE,
               value: TransactionsEntryType.LAYER_CHANGED,
             },
             {
-              name: LogFieldName.LAYER_OR_DISPLAY_ID,
+              type: LogFieldType.LAYER_OR_DISPLAY_ID,
               value: assertDefined(
                 layerState.getChildByName('layerId'),
               ).formattedValue(),
             },
             {
-              name: LogFieldName.FLAGS,
+              type: LogFieldType.FLAGS,
               value: assertDefined(
                 layerState.getChildByName('what'),
               ).formattedValue(),
@@ -181,22 +181,22 @@
         ).getAllChildren();
         for (const displayState of displayChanges) {
           const fields: LogField[] = [
-            {name: LogFieldName.TRANSACTION_ID, value: transactionId},
-            {name: LogFieldName.VSYNC_ID, value: vsyncId},
-            {name: LogFieldName.PID, value: pid},
-            {name: LogFieldName.UID, value: uid},
+            {type: LogFieldType.TRANSACTION_ID, value: transactionId},
+            {type: LogFieldType.VSYNC_ID, value: vsyncId},
+            {type: LogFieldType.PID, value: pid},
+            {type: LogFieldType.UID, value: uid},
             {
-              name: LogFieldName.TRANSACTION_TYPE,
+              type: LogFieldType.TRANSACTION_TYPE,
               value: TransactionsEntryType.DISPLAY_CHANGED,
             },
             {
-              name: LogFieldName.LAYER_OR_DISPLAY_ID,
+              type: LogFieldType.LAYER_OR_DISPLAY_ID,
               value: assertDefined(
                 displayState.getChildByName('id'),
               ).formattedValue(),
             },
             {
-              name: LogFieldName.FLAGS,
+              type: LogFieldType.FLAGS,
               value: assertDefined(
                 displayState.getChildByName('what'),
               ).formattedValue(),
@@ -207,16 +207,16 @@
 
         if (layerChanges.length === 0 && displayChanges.length === 0) {
           const fields: LogField[] = [
-            {name: LogFieldName.TRANSACTION_ID, value: transactionId},
-            {name: LogFieldName.VSYNC_ID, value: vsyncId},
-            {name: LogFieldName.PID, value: pid},
-            {name: LogFieldName.UID, value: uid},
+            {type: LogFieldType.TRANSACTION_ID, value: transactionId},
+            {type: LogFieldType.VSYNC_ID, value: vsyncId},
+            {type: LogFieldType.PID, value: pid},
+            {type: LogFieldType.UID, value: uid},
             {
-              name: LogFieldName.TRANSACTION_TYPE,
+              type: LogFieldType.TRANSACTION_TYPE,
               value: TransactionsEntryType.NO_OP,
             },
-            {name: LogFieldName.LAYER_OR_DISPLAY_ID, value: ''},
-            {name: LogFieldName.FLAGS, value: ''},
+            {type: LogFieldType.LAYER_OR_DISPLAY_ID, value: ''},
+            {type: LogFieldType.FLAGS, value: ''},
           ];
           entries.push(new TransactionsEntry(entry, fields, undefined));
         }
@@ -226,21 +226,21 @@
         entryNode.getChildByName('addedLayers'),
       ).getAllChildren()) {
         const fields: LogField[] = [
-          {name: LogFieldName.TRANSACTION_ID, value: ''},
-          {name: LogFieldName.VSYNC_ID, value: vsyncId},
-          {name: LogFieldName.PID, value: Presenter.VALUE_NA},
-          {name: LogFieldName.UID, value: Presenter.VALUE_NA},
+          {type: LogFieldType.TRANSACTION_ID, value: ''},
+          {type: LogFieldType.VSYNC_ID, value: vsyncId},
+          {type: LogFieldType.PID, value: Presenter.VALUE_NA},
+          {type: LogFieldType.UID, value: Presenter.VALUE_NA},
           {
-            name: LogFieldName.TRANSACTION_TYPE,
+            type: LogFieldType.TRANSACTION_TYPE,
             value: TransactionsEntryType.LAYER_ADDED,
           },
           {
-            name: LogFieldName.LAYER_OR_DISPLAY_ID,
+            type: LogFieldType.LAYER_OR_DISPLAY_ID,
             value: assertDefined(
               layerCreationArgs.getChildByName('layerId'),
             ).formattedValue(),
           },
-          {name: LogFieldName.FLAGS, value: ''},
+          {type: LogFieldType.FLAGS, value: ''},
         ];
         entries.push(new TransactionsEntry(entry, fields, layerCreationArgs));
       }
@@ -249,19 +249,19 @@
         entryNode.getChildByName('destroyedLayers'),
       ).getAllChildren()) {
         const fields: LogField[] = [
-          {name: LogFieldName.TRANSACTION_ID, value: ''},
-          {name: LogFieldName.VSYNC_ID, value: vsyncId},
-          {name: LogFieldName.PID, value: Presenter.VALUE_NA},
-          {name: LogFieldName.UID, value: Presenter.VALUE_NA},
+          {type: LogFieldType.TRANSACTION_ID, value: ''},
+          {type: LogFieldType.VSYNC_ID, value: vsyncId},
+          {type: LogFieldType.PID, value: Presenter.VALUE_NA},
+          {type: LogFieldType.UID, value: Presenter.VALUE_NA},
           {
-            name: LogFieldName.TRANSACTION_TYPE,
+            type: LogFieldType.TRANSACTION_TYPE,
             value: TransactionsEntryType.LAYER_DESTROYED,
           },
           {
-            name: LogFieldName.LAYER_OR_DISPLAY_ID,
+            type: LogFieldType.LAYER_OR_DISPLAY_ID,
             value: destroyedLayerId.formattedValue(),
           },
-          {name: LogFieldName.FLAGS, value: ''},
+          {type: LogFieldType.FLAGS, value: ''},
         ];
         entries.push(new TransactionsEntry(entry, fields, destroyedLayerId));
       }
@@ -270,22 +270,22 @@
         entryNode.getChildByName('addedDisplays'),
       ).getAllChildren()) {
         const fields: LogField[] = [
-          {name: LogFieldName.TRANSACTION_ID, value: ''},
-          {name: LogFieldName.VSYNC_ID, value: vsyncId},
-          {name: LogFieldName.PID, value: Presenter.VALUE_NA},
-          {name: LogFieldName.UID, value: Presenter.VALUE_NA},
+          {type: LogFieldType.TRANSACTION_ID, value: ''},
+          {type: LogFieldType.VSYNC_ID, value: vsyncId},
+          {type: LogFieldType.PID, value: Presenter.VALUE_NA},
+          {type: LogFieldType.UID, value: Presenter.VALUE_NA},
           {
-            name: LogFieldName.TRANSACTION_TYPE,
+            type: LogFieldType.TRANSACTION_TYPE,
             value: TransactionsEntryType.DISPLAY_ADDED,
           },
           {
-            name: LogFieldName.LAYER_OR_DISPLAY_ID,
+            type: LogFieldType.LAYER_OR_DISPLAY_ID,
             value: assertDefined(
               displayState.getChildByName('id'),
             ).formattedValue(),
           },
           {
-            name: LogFieldName.FLAGS,
+            type: LogFieldType.FLAGS,
             value: assertDefined(
               displayState.getChildByName('what'),
             ).formattedValue(),
@@ -298,19 +298,19 @@
         entryNode.getChildByName('removedDisplays'),
       ).getAllChildren()) {
         const fields: LogField[] = [
-          {name: LogFieldName.TRANSACTION_ID, value: ''},
-          {name: LogFieldName.VSYNC_ID, value: vsyncId},
-          {name: LogFieldName.PID, value: Presenter.VALUE_NA},
-          {name: LogFieldName.UID, value: Presenter.VALUE_NA},
+          {type: LogFieldType.TRANSACTION_ID, value: ''},
+          {type: LogFieldType.VSYNC_ID, value: vsyncId},
+          {type: LogFieldType.PID, value: Presenter.VALUE_NA},
+          {type: LogFieldType.UID, value: Presenter.VALUE_NA},
           {
-            name: LogFieldName.TRANSACTION_TYPE,
+            type: LogFieldType.TRANSACTION_TYPE,
             value: TransactionsEntryType.DISPLAY_REMOVED,
           },
           {
-            name: LogFieldName.LAYER_OR_DISPLAY_ID,
+            type: LogFieldType.LAYER_OR_DISPLAY_ID,
             value: removedDisplayId.formattedValue(),
           },
-          {name: LogFieldName.FLAGS, value: ''},
+          {type: LogFieldType.FLAGS, value: ''},
         ];
         entries.push(new TransactionsEntry(entry, fields, removedDisplayId));
       }
@@ -319,19 +319,19 @@
         entryNode.getChildByName('destroyedLayerHandles'),
       ).getAllChildren()) {
         const fields: LogField[] = [
-          {name: LogFieldName.TRANSACTION_ID, value: ''},
-          {name: LogFieldName.VSYNC_ID, value: vsyncId},
-          {name: LogFieldName.PID, value: Presenter.VALUE_NA},
-          {name: LogFieldName.UID, value: Presenter.VALUE_NA},
+          {type: LogFieldType.TRANSACTION_ID, value: ''},
+          {type: LogFieldType.VSYNC_ID, value: vsyncId},
+          {type: LogFieldType.PID, value: Presenter.VALUE_NA},
+          {type: LogFieldType.UID, value: Presenter.VALUE_NA},
           {
-            name: LogFieldName.TRANSACTION_TYPE,
+            type: LogFieldType.TRANSACTION_TYPE,
             value: TransactionsEntryType.LAYER_HANDLE_DESTROYED,
           },
           {
-            name: LogFieldName.LAYER_OR_DISPLAY_ID,
+            type: LogFieldType.LAYER_OR_DISPLAY_ID,
             value: destroyedLayerHandleId.formattedValue(),
           },
-          {name: LogFieldName.FLAGS, value: ''},
+          {type: LogFieldType.FLAGS, value: ''},
         ];
         entries.push(
           new TransactionsEntry(entry, fields, destroyedLayerHandleId),
diff --git a/tools/winscope/src/viewers/viewer_transactions/presenter_test.ts b/tools/winscope/src/viewers/viewer_transactions/presenter_test.ts
index 68bedb0..2baad40 100644
--- a/tools/winscope/src/viewers/viewer_transactions/presenter_test.ts
+++ b/tools/winscope/src/viewers/viewer_transactions/presenter_test.ts
@@ -26,7 +26,7 @@
 import {AbstractLogViewerPresenterTest} from 'viewers/common/abstract_log_viewer_presenter_test';
 import {
   LogEntry,
-  LogFieldName,
+  LogFieldType,
   LogFieldValue,
 } from 'viewers/common/ui_data_log';
 import {Presenter} from './presenter';
@@ -45,16 +45,16 @@
   override readonly totalOutputEntries = 1647;
   override readonly expectedIndexOfSecondPositionUpdate = 13;
   override readonly expectedInitialFilterOptions = new Map<
-    LogFieldName,
+    LogFieldType,
     string[] | number
   >([
     [
-      LogFieldName.PID,
+      LogFieldType.PID,
       ['N/A', '0', '515', '1593', '2022', '2322', '2463', '3300'],
     ],
-    [LogFieldName.UID, ['N/A', '1000', '1003', '10169', '10235', '10239']],
+    [LogFieldType.UID, ['N/A', '1000', '1003', '10169', '10235', '10239']],
     [
-      LogFieldName.TRANSACTION_TYPE,
+      LogFieldType.TRANSACTION_TYPE,
       [
         'DISPLAY_CHANGED',
         'LAYER_ADDED',
@@ -64,16 +64,16 @@
         'NO_OP',
       ],
     ],
-    [LogFieldName.TRANSACTION_ID, 1295],
-    [LogFieldName.LAYER_OR_DISPLAY_ID, 117],
+    [LogFieldType.TRANSACTION_ID, 1295],
+    [LogFieldType.LAYER_OR_DISPLAY_ID, 117],
   ]);
-  override readonly filterValuesToSet = new Map<LogFieldName, string[][]>([
-    [LogFieldName.TRANSACTION_ID, [[], ['2211908157465']]],
-    [LogFieldName.VSYNC_ID, [[], ['1'], ['1', '3', '10']]],
-    [LogFieldName.PID, [[], ['0'], ['0', '515']]],
-    [LogFieldName.UID, [[], ['1000'], ['1000', '1003']]],
+  override readonly filterValuesToSet = new Map<LogFieldType, string[][]>([
+    [LogFieldType.TRANSACTION_ID, [[], ['2211908157465']]],
+    [LogFieldType.VSYNC_ID, [[], ['1'], ['1', '3', '10']]],
+    [LogFieldType.PID, [[], ['0'], ['0', '515']]],
+    [LogFieldType.UID, [[], ['1000'], ['1000', '1003']]],
     [
-      LogFieldName.TRANSACTION_TYPE,
+      LogFieldType.TRANSACTION_TYPE,
       [
         [],
         [TransactionsEntryType.LAYER_ADDED],
@@ -83,17 +83,17 @@
         ],
       ],
     ],
-    [LogFieldName.LAYER_OR_DISPLAY_ID, [[], ['1'], ['1', '3']]],
-    [LogFieldName.FLAGS, [[], ['Crop'], ['STRING_WITH_NO_MATCHES']]],
+    [LogFieldType.LAYER_OR_DISPLAY_ID, [[], ['1'], ['1', '3']]],
+    [LogFieldType.FLAGS, [[], ['Crop'], ['STRING_WITH_NO_MATCHES']]],
   ]);
   override readonly expectedFieldValuesAfterFilter = new Map<
-    LogFieldName,
+    LogFieldType,
     Array<LogFieldValue[] | number>
   >([
-    [LogFieldName.TRANSACTION_ID, [this.totalOutputEntries, ['2211908157465']]],
-    [LogFieldName.VSYNC_ID, [this.totalOutputEntries, [1], [1, 3, 10]]],
+    [LogFieldType.TRANSACTION_ID, [this.totalOutputEntries, ['2211908157465']]],
+    [LogFieldType.VSYNC_ID, [this.totalOutputEntries, [1], [1, 3, 10]]],
     [
-      LogFieldName.PID,
+      LogFieldType.PID,
       [
         ['N/A', '0', '515', '1593', '2022', '2322', '2463', '3300'],
         ['0'],
@@ -101,7 +101,7 @@
       ],
     ],
     [
-      LogFieldName.UID,
+      LogFieldType.UID,
       [
         ['N/A', '1000', '1003', '10169', '10235', '10239'],
         ['1000'],
@@ -109,7 +109,7 @@
       ],
     ],
     [
-      LogFieldName.TRANSACTION_TYPE,
+      LogFieldType.TRANSACTION_TYPE,
       [
         [
           TransactionsEntryType.DISPLAY_CHANGED,
@@ -127,13 +127,13 @@
       ],
     ],
     [
-      LogFieldName.LAYER_OR_DISPLAY_ID,
+      LogFieldType.LAYER_OR_DISPLAY_ID,
       [this.totalOutputEntries, ['1'], ['1', '3']],
     ],
-    [LogFieldName.FLAGS, [this.totalOutputEntries, 980, 0]],
+    [LogFieldType.FLAGS, [this.totalOutputEntries, 980, 0]],
   ]);
   override readonly logEntryClickIndex = 10;
-  override readonly filterNameForCurrentIndexTest = LogFieldName.PID;
+  override readonly filterNameForCurrentIndexTest = LogFieldType.PID;
   override readonly filterChangeForCurrentIndexTest = ['0'];
   override readonly secondFilterChangeForCurrentIndexTest = ['0', '515'];
   override readonly expectedCurrentIndexAfterFilterChange = 10;
@@ -158,11 +158,11 @@
       });
 
       it('includes no op transitions', async () => {
-        await presenter.onFilterChange(LogFieldName.TRANSACTION_TYPE, [
+        await presenter.onFilterChange(LogFieldType.TRANSACTION_TYPE, [
           TransactionsEntryType.NO_OP,
         ]);
         const fieldValues = assertDefined(uiData).entries.map((entry) =>
-          getFieldValue(entry, LogFieldName.TRANSACTION_TYPE),
+          getFieldValue(entry, LogFieldType.TRANSACTION_TYPE),
         );
         expect(new Set(fieldValues)).toEqual(
           new Set([TransactionsEntryType.NO_OP]),
@@ -170,15 +170,15 @@
 
         for (const entry of assertDefined(uiData).entries) {
           expect(
-            getFieldValue(entry, LogFieldName.LAYER_OR_DISPLAY_ID),
+            getFieldValue(entry, LogFieldType.LAYER_OR_DISPLAY_ID),
           ).toEqual('');
-          expect(getFieldValue(entry, LogFieldName.FLAGS)).toEqual('');
+          expect(getFieldValue(entry, LogFieldType.FLAGS)).toEqual('');
           expect(entry.propertiesTree).toEqual(undefined);
         }
       });
 
-      function getFieldValue(entry: LogEntry, logFieldName: LogFieldName) {
-        return entry.fields.find((f) => f.name === logFieldName)?.value;
+      function getFieldValue(entry: LogEntry, logFieldName: LogFieldType) {
+        return entry.fields.find((f) => f.type === logFieldName)?.value;
       }
     });
   }
diff --git a/tools/winscope/src/viewers/viewer_transactions/scroll_strategy/transactions_scroll_strategy.ts b/tools/winscope/src/viewers/viewer_transactions/scroll_strategy/transactions_scroll_strategy.ts
index 585b9ce..98b4664 100644
--- a/tools/winscope/src/viewers/viewer_transactions/scroll_strategy/transactions_scroll_strategy.ts
+++ b/tools/winscope/src/viewers/viewer_transactions/scroll_strategy/transactions_scroll_strategy.ts
@@ -15,7 +15,7 @@
  */
 
 import {assertDefined} from 'common/assert_utils';
-import {LogFieldName} from 'viewers/common/ui_data_log';
+import {LogFieldType} from 'viewers/common/ui_data_log';
 import {VariableHeightScrollStrategy} from 'viewers/common/variable_height_scroll_strategy';
 import {TransactionsEntry} from 'viewers/viewer_transactions/ui_data';
 
@@ -26,7 +26,7 @@
 
   protected override predictScrollItemHeight(entry: TransactionsEntry): number {
     const flagsHeight = this.subItemHeight(
-      assertDefined(entry.fields.find((f) => f.name === LogFieldName.FLAGS))
+      assertDefined(entry.fields.find((f) => f.type === LogFieldType.FLAGS))
         .value as string,
       this.flagCharsPerRow,
     );
diff --git a/tools/winscope/src/viewers/viewer_transactions/viewer_transactions_component_test.ts b/tools/winscope/src/viewers/viewer_transactions/viewer_transactions_component_test.ts
index 5bcd7d1..565e55f 100644
--- a/tools/winscope/src/viewers/viewer_transactions/viewer_transactions_component_test.ts
+++ b/tools/winscope/src/viewers/viewer_transactions/viewer_transactions_component_test.ts
@@ -38,7 +38,7 @@
 import {PropertyTreeNode} from 'trace/tree_node/property_tree_node';
 import {LogComponent} from 'viewers/common/log_component';
 import {executeScrollComponentTests} from 'viewers/common/scroll_component_test_utils';
-import {LogFieldName} from 'viewers/common/ui_data_log';
+import {LogFieldType} from 'viewers/common/ui_data_log';
 import {UiPropertyTreeNode} from 'viewers/common/ui_property_tree_node';
 import {CollapsedSectionsComponent} from 'viewers/components/collapsed_sections_component';
 import {CollapsibleSectionTitleComponent} from 'viewers/components/collapsible_section_title_component';
@@ -152,16 +152,16 @@
       const entry1 = new TransactionsEntry(
         trace.getEntry(0),
         [
-          {name: LogFieldName.VSYNC_ID, value: -111},
-          {name: LogFieldName.PID, value: 'PID_VALUE'},
-          {name: LogFieldName.UID, value: 'UID_VALUE'},
-          {name: LogFieldName.TRANSACTION_TYPE, value: 'TYPE_VALUE'},
+          {type: LogFieldType.VSYNC_ID, value: -111},
+          {type: LogFieldType.PID, value: 'PID_VALUE'},
+          {type: LogFieldType.UID, value: 'UID_VALUE'},
+          {type: LogFieldType.TRANSACTION_TYPE, value: 'TYPE_VALUE'},
           {
-            name: LogFieldName.LAYER_OR_DISPLAY_ID,
+            type: LogFieldType.LAYER_OR_DISPLAY_ID,
             value: 'LAYER_OR_DISPLAY_ID_VALUE',
           },
-          {name: LogFieldName.TRANSACTION_ID, value: 'TRANSACTION_ID_VALUE'},
-          {name: LogFieldName.FLAGS, value: 'flag1 | flag2'},
+          {type: LogFieldType.TRANSACTION_ID, value: 'TRANSACTION_ID_VALUE'},
+          {type: LogFieldType.FLAGS, value: 'flag1 | flag2'},
         ],
         propertiesTree,
       );
@@ -169,42 +169,42 @@
       const entry2 = new TransactionsEntry(
         trace.getEntry(1),
         [
-          {name: LogFieldName.VSYNC_ID, value: -222},
-          {name: LogFieldName.PID, value: 'PID_VALUE_2'},
-          {name: LogFieldName.UID, value: 'UID_VALUE_2'},
-          {name: LogFieldName.TRANSACTION_TYPE, value: 'TYPE_VALUE_2'},
+          {type: LogFieldType.VSYNC_ID, value: -222},
+          {type: LogFieldType.PID, value: 'PID_VALUE_2'},
+          {type: LogFieldType.UID, value: 'UID_VALUE_2'},
+          {type: LogFieldType.TRANSACTION_TYPE, value: 'TYPE_VALUE_2'},
           {
-            name: LogFieldName.LAYER_OR_DISPLAY_ID,
+            type: LogFieldType.LAYER_OR_DISPLAY_ID,
             value: 'LAYER_OR_DISPLAY_ID_VALUE_2',
           },
-          {name: LogFieldName.TRANSACTION_ID, value: 'TRANSACTION_ID_VALUE_2'},
-          {name: LogFieldName.FLAGS, value: 'flag3 | flag4'},
+          {type: LogFieldType.TRANSACTION_ID, value: 'TRANSACTION_ID_VALUE_2'},
+          {type: LogFieldType.FLAGS, value: 'flag3 | flag4'},
         ],
         propertiesTree,
       );
 
       return new UiData(
         [
-          {name: LogFieldName.VSYNC_ID, options: ['-111', '-222']},
-          {name: LogFieldName.PID, options: ['PID_VALUE', 'PID_VALUE_2']},
-          {name: LogFieldName.UID, options: ['UID_VALUE', 'UID_VALUE_2']},
+          {type: LogFieldType.VSYNC_ID, options: ['-111', '-222']},
+          {type: LogFieldType.PID, options: ['PID_VALUE', 'PID_VALUE_2']},
+          {type: LogFieldType.UID, options: ['UID_VALUE', 'UID_VALUE_2']},
           {
-            name: LogFieldName.TRANSACTION_TYPE,
+            type: LogFieldType.TRANSACTION_TYPE,
             options: ['TYPE_VALUE', 'TYPE_VALUE_2'],
           },
           {
-            name: LogFieldName.LAYER_OR_DISPLAY_ID,
+            type: LogFieldType.LAYER_OR_DISPLAY_ID,
             options: [
               'LAYER_OR_DISPLAY_ID_VALUE',
               'LAYER_OR_DISPLAY_ID_VALUE_2',
             ],
           },
           {
-            name: LogFieldName.TRANSACTION_ID,
+            type: LogFieldType.TRANSACTION_ID,
             options: ['TRANSACTION_ID_VALUE', 'TRANSACTION_ID_VALUE_2'],
           },
           {
-            name: LogFieldName.FLAGS,
+            type: LogFieldType.FLAGS,
             options: ['flag1', 'flag2', 'flag3', 'flag4'],
           },
         ],
@@ -250,20 +250,20 @@
         const entry = new TransactionsEntry(
           trace.getEntry(0),
           [
-            {name: LogFieldName.VSYNC_ID, value: -111},
-            {name: LogFieldName.PID, value: 'PID_VALUE'},
-            {name: LogFieldName.UID, value: 'UID_VALUE'},
-            {name: LogFieldName.TRANSACTION_TYPE, value: 'TYPE_VALUE'},
+            {type: LogFieldType.VSYNC_ID, value: -111},
+            {type: LogFieldType.PID, value: 'PID_VALUE'},
+            {type: LogFieldType.UID, value: 'UID_VALUE'},
+            {type: LogFieldType.TRANSACTION_TYPE, value: 'TYPE_VALUE'},
             {
-              name: LogFieldName.LAYER_OR_DISPLAY_ID,
+              type: LogFieldType.LAYER_OR_DISPLAY_ID,
               value: 'LAYER_OR_DISPLAY_ID_VALUE',
             },
             {
-              name: LogFieldName.TRANSACTION_ID,
+              type: LogFieldType.TRANSACTION_ID,
               value: 'TRANSACTION_ID_VALUE',
             },
             {
-              name: LogFieldName.FLAGS,
+              type: LogFieldType.FLAGS,
               value: i % 2 === 0 ? shortMessage : longMessage,
             },
           ],
diff --git a/tools/winscope/src/viewers/viewer_transitions/presenter.ts b/tools/winscope/src/viewers/viewer_transitions/presenter.ts
index 7019af1..57fbbb2 100644
--- a/tools/winscope/src/viewers/viewer_transitions/presenter.ts
+++ b/tools/winscope/src/viewers/viewer_transitions/presenter.ts
@@ -27,18 +27,18 @@
 } from 'viewers/common/abstract_log_viewer_presenter';
 import {LogPresenter} from 'viewers/common/log_presenter';
 import {PropertiesPresenter} from 'viewers/common/properties_presenter';
-import {LogField, LogFieldName} from 'viewers/common/ui_data_log';
+import {LogField, LogFieldType} from 'viewers/common/ui_data_log';
 import {UpdateTransitionChangesNames} from './operations/update_transition_changes_names';
 import {TransitionsEntry, TransitionStatus, UiData} from './ui_data';
 
 export class Presenter extends AbstractLogViewerPresenter {
-  static readonly FIELD_NAMES = [
-    LogFieldName.TRANSITION_ID,
-    LogFieldName.TRANSITION_TYPE,
-    LogFieldName.SEND_TIME,
-    LogFieldName.DISPATCH_TIME,
-    LogFieldName.DURATION,
-    LogFieldName.STATUS,
+  static readonly FIELD_TYPES = [
+    LogFieldType.TRANSITION_ID,
+    LogFieldType.TRANSITION_TYPE,
+    LogFieldType.SEND_TIME,
+    LogFieldType.DISPATCH_TIME,
+    LogFieldType.DURATION,
+    LogFieldType.STATUS,
   ];
   private static readonly VALUE_NA = 'N/A';
 
@@ -99,7 +99,7 @@
     const allEntries = await this.makeUiDataEntries();
 
     this.logPresenter.setAllEntries(allEntries);
-    this.logPresenter.setHeaders(Presenter.FIELD_NAMES);
+    this.logPresenter.setHeaders(Presenter.FIELD_TYPES);
     this.refreshUIData(UiData.EMPTY);
     this.isInitialized = true;
   }
@@ -114,7 +114,7 @@
 
   private sortTransitions(transitions: TransitionsEntry[]) {
     const getId = (a: TransitionsEntry) =>
-      assertDefined(a.fields.find((f) => f.name === LogFieldName.TRANSITION_ID))
+      assertDefined(a.fields.find((f) => f.type === LogFieldType.TRANSITION_ID))
         .value;
     transitions.sort((a: TransitionsEntry, b: TransitionsEntry) => {
       return getId(a) <= getId(b) ? -1 : 1;
@@ -158,33 +158,33 @@
 
       const fields: LogField[] = [
         {
-          name: LogFieldName.TRANSITION_ID,
+          type: LogFieldType.TRANSITION_ID,
           value: assertDefined(transitionNode.getChildByName('id')).getValue(),
         },
         {
-          name: LogFieldName.TRANSITION_TYPE,
+          type: LogFieldType.TRANSITION_TYPE,
           value: wmDataNode.getChildByName('type')?.formattedValue() ?? 'NONE',
         },
         {
-          name: LogFieldName.SEND_TIME,
+          type: LogFieldType.SEND_TIME,
           value:
             wmDataNode.getChildByName('sendTimeNs')?.getValue() ??
             Presenter.VALUE_NA,
         },
         {
-          name: LogFieldName.DISPATCH_TIME,
+          type: LogFieldType.DISPATCH_TIME,
           value:
             shellDataNode.getChildByName('dispatchTimeNs')?.getValue() ??
             Presenter.VALUE_NA,
         },
         {
-          name: LogFieldName.DURATION,
+          type: LogFieldType.DURATION,
           value:
             transitionNode.getChildByName('duration')?.formattedValue() ??
             Presenter.VALUE_NA,
         },
         {
-          name: LogFieldName.STATUS,
+          type: LogFieldType.STATUS,
           value: status ?? Presenter.VALUE_NA,
           icon: statusIcon,
           iconColor: statusIconColor,
diff --git a/tools/winscope/src/viewers/viewer_transitions/ui_data.ts b/tools/winscope/src/viewers/viewer_transitions/ui_data.ts
index e2d6a83..03226e4 100644
--- a/tools/winscope/src/viewers/viewer_transitions/ui_data.ts
+++ b/tools/winscope/src/viewers/viewer_transitions/ui_data.ts
@@ -19,14 +19,14 @@
 import {
   LogEntry,
   LogField,
-  LogFieldName,
+  LogFieldType,
   UiDataLog,
 } from 'viewers/common/ui_data_log';
 import {UiPropertyTreeNode} from 'viewers/common/ui_property_tree_node';
 
 export class UiData implements UiDataLog {
   constructor(
-    public headers: LogFieldName[],
+    public headers: LogFieldType[],
     public entries: LogEntry[],
     public selectedIndex: undefined | number,
     public scrollToIndex: undefined | number,
diff --git a/tools/winscope/src/viewers/viewer_transitions/viewer_transitions_component_test.ts b/tools/winscope/src/viewers/viewer_transitions/viewer_transitions_component_test.ts
index 42bf348..765f25e 100644
--- a/tools/winscope/src/viewers/viewer_transitions/viewer_transitions_component_test.ts
+++ b/tools/winscope/src/viewers/viewer_transitions/viewer_transitions_component_test.ts
@@ -30,7 +30,7 @@
 import {Trace, TraceEntry} from 'trace/trace';
 import {PropertyTreeNode} from 'trace/tree_node/property_tree_node';
 import {LogComponent} from 'viewers/common/log_component';
-import {LogField, LogFieldName} from 'viewers/common/ui_data_log';
+import {LogField, LogFieldType} from 'viewers/common/ui_data_log';
 import {CollapsedSectionsComponent} from 'viewers/components/collapsed_sections_component';
 import {CollapsibleSectionTitleComponent} from 'viewers/components/collapsible_section_title_component';
 import {PropertiesComponent} from 'viewers/components/properties_component';
@@ -147,7 +147,7 @@
     const uiData = UiData.EMPTY;
     uiData.entries = transitions;
     uiData.selectedIndex = 0;
-    uiData.headers = Presenter.FIELD_NAMES;
+    uiData.headers = Presenter.FIELD_TYPES;
     return uiData;
   }
 
@@ -160,31 +160,31 @@
   ): TransitionsEntry {
     const fields: LogField[] = [
       {
-        name: LogFieldName.TRANSITION_ID,
+        type: LogFieldType.TRANSITION_ID,
         value: id,
       },
       {
-        name: LogFieldName.TRANSITION_TYPE,
+        type: LogFieldType.TRANSITION_TYPE,
         value: 'TO_FRONT',
       },
       {
-        name: LogFieldName.SEND_TIME,
+        type: LogFieldType.SEND_TIME,
         value: TimestampConverterUtils.makeElapsedTimestamp(
           BigInt(sendTimeNanos),
         ),
       },
       {
-        name: LogFieldName.DISPATCH_TIME,
+        type: LogFieldType.DISPATCH_TIME,
         value: TimestampConverterUtils.makeElapsedTimestamp(
           BigInt(sendTimeNanos) + 5n,
         ),
       },
       {
-        name: LogFieldName.DURATION,
+        type: LogFieldType.DURATION,
         value: (finishTimeNanos - sendTimeNanos).toString() + 'ns',
       },
       {
-        name: LogFieldName.STATUS,
+        type: LogFieldType.STATUS,
         value: status,
         icon: 'check',
         iconColor: 'green',