Skip to content

Commit f6e0634

Browse files
authored
Start using const enum (#5879)
We can use typescript const enums for SelectedState and for resource types.
2 parents 2eba5df + a580c09 commit f6e0634

16 files changed

Lines changed: 123 additions & 127 deletions

src/components/shared/thread/ActivityGraphFills.tsx

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@ import type {
1010
IndexIntoSamplesTable,
1111
IndexIntoCategoryList,
1212
Thread,
13-
SelectedState,
1413
Milliseconds,
1514
DevicePixels,
1615
CssPixels,
1716
} from 'firefox-profiler/types';
17+
import { SelectedState } from 'firefox-profiler/types';
1818
import type { HoveredPixelState } from './ActivityGraph';
1919

2020
/**
@@ -357,13 +357,13 @@ export class ActivityGraphFillComputer {
357357
return percentageBuffers.selectedPercentageAtPixel;
358358
}
359359
switch (samplesSelectedStates[sampleIndex]) {
360-
case 'FILTERED_OUT_BY_TRANSFORM':
360+
case SelectedState.FilteredOutByTransform:
361361
return percentageBuffers.filteredOutByTransformPercentageAtPixel;
362-
case 'UNSELECTED_ORDERED_BEFORE_SELECTED':
362+
case SelectedState.UnselectedOrderedBeforeSelected:
363363
return percentageBuffers.beforeSelectedPercentageAtPixel;
364-
case 'SELECTED':
364+
case SelectedState.Selected:
365365
return percentageBuffers.selectedPercentageAtPixel;
366-
case 'UNSELECTED_ORDERED_AFTER_SELECTED':
366+
case SelectedState.UnselectedOrderedAfterSelected:
367367
return percentageBuffers.afterSelectedPercentageAtPixel;
368368
default:
369369
throw new Error('Unexpected samplesSelectedStates value');
@@ -768,10 +768,10 @@ function _createSelectedPercentageAtPixelBuffers({
768768
* For each category, create a fill style for each of 4 draw states. These fill styles
769769
* are sorted by their gravity.
770770
*
771-
* 'UNSELECTED_ORDERED_BEFORE_SELECTED',
772-
* 'SELECTED',
773-
* 'UNSELECTED_ORDERED_AFTER_SELECTED',
774-
* 'FILTERED_OUT_BY_TRANSFORM'
771+
* SelectedState.UnselectedOrderedBeforeSelected,
772+
* SelectedState.Selected,
773+
* SelectedState.UnselectedOrderedAfterSelected,
774+
* SelectedState.FilteredOutByTransform
775775
*/
776776
function _getCategoryFills(
777777
categoryDrawStyles: CategoryDrawStyles,

src/components/shared/thread/HeightGraph.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ import type {
1515
CategoryList,
1616
IndexIntoSamplesTable,
1717
Milliseconds,
18-
SelectedState,
1918
} from 'firefox-profiler/types';
19+
import { SelectedState } from 'firefox-profiler/types';
2020

2121
type Props = {
2222
readonly heightFunc: (param: IndexIntoSamplesTable) => number | null;
@@ -138,7 +138,7 @@ export class ThreadHeightGraph extends PureComponent<Props> {
138138
let samplesBucket;
139139
if (
140140
samplesSelectedStates !== null &&
141-
samplesSelectedStates[i] === 'SELECTED'
141+
samplesSelectedStates[i] === SelectedState.Selected
142142
) {
143143
samplesBucket = highlightedSamples;
144144
} else {

src/components/shared/thread/SampleGraph.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@ import type {
2424
CategoryList,
2525
IndexIntoSamplesTable,
2626
Milliseconds,
27-
SelectedState,
2827
CssPixels,
2928
TimelineType,
3029
ImplementationFilter,
3130
} from 'firefox-profiler/types';
31+
import { SelectedState } from 'firefox-profiler/types';
3232
import type { SizeProps } from 'firefox-profiler/components/shared/WithSize';
3333
import type { CpuRatioInTimeRange } from './ActivityGraphFills';
3434
import { lightDark } from 'firefox-profiler/utils/dark-mode';
@@ -197,7 +197,7 @@ class ThreadSampleGraphCanvas extends React.PureComponent<CanvasProps> {
197197
let samplesBucket;
198198
if (
199199
samplesSelectedStates !== null &&
200-
samplesSelectedStates[i] === 'SELECTED'
200+
samplesSelectedStates[i] === SelectedState.Selected
201201
) {
202202
samplesBucket = highlightedSamples;
203203
} else {

src/profile-logic/bottom-box.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* License, v. 2.0. If a copy of the MPL was not distributed with this
33
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
44

5-
import { resourceTypes } from './data-structures';
5+
import { ResourceType } from 'firefox-profiler/types';
66

77
import type {
88
Thread,
@@ -49,7 +49,7 @@ export function getBottomBoxInfoForCallNode(
4949
const sourceIndex = funcTable.source[funcIndex];
5050
const resource = funcTable.resource[funcIndex];
5151
const libIndex =
52-
resource !== -1 && resourceTable.type[resource] === resourceTypes.library
52+
resource !== -1 && resourceTable.type[resource] === ResourceType.Library
5353
? resourceTable.lib[resource]
5454
: null;
5555
const callNodeFramePerStack = getCallNodeFramePerStack(
@@ -152,7 +152,7 @@ export function getBottomBoxInfoForStackFrame(
152152
const sourceIndex = funcTable.source[funcIndex];
153153
const resource = funcTable.resource[funcIndex];
154154
const libIndex =
155-
resource !== -1 && resourceTable.type[resource] === resourceTypes.library
155+
resource !== -1 && resourceTable.type[resource] === ResourceType.Library
156156
? resourceTable.lib[resource]
157157
: null;
158158

src/profile-logic/call-tree.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import {
77
getOriginAnnotationForFunc,
88
getCategoryPairLabel,
99
} from './profile-data';
10-
import { resourceTypes } from './data-structures';
1110
import { getFunctionName } from './function-info';
1211
import type {
1312
CategoryList,
@@ -28,6 +27,7 @@ import type {
2827
SelfAndTotal,
2928
BalancedNativeAllocationsTable,
3029
} from 'firefox-profiler/types';
30+
import { ResourceType } from 'firefox-profiler/types';
3131

3232
import ExtensionIcon from '../../res/img/svg/extension.svg';
3333
import { formatCallNodeNumber, formatPercent } from '../utils/format-numbers';
@@ -511,9 +511,9 @@ export class CallTree {
511511
let iconSrc = null;
512512
let icon = null;
513513

514-
if (resourceType === resourceTypes.webhost) {
514+
if (resourceType === ResourceType.Webhost) {
515515
icon = iconSrc = extractFaviconFromLibname(libName);
516-
} else if (resourceType === resourceTypes.addon) {
516+
} else if (resourceType === ResourceType.Addon) {
517517
iconSrc = ExtensionIcon;
518518

519519
const resourceNameIndex =

src/profile-logic/data-structures.ts

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -299,15 +299,6 @@ export function shallowCloneRawMarkerTable(
299299
};
300300
}
301301

302-
export const resourceTypes = {
303-
unknown: 0,
304-
library: 1,
305-
addon: 2,
306-
webhost: 3,
307-
otherhost: 4,
308-
url: 5,
309-
};
310-
311302
export function getEmptyExtensions(): ExtensionTable {
312303
return {
313304
// Important!

src/profile-logic/global-data-collector.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import {
1010
getEmptyRawStackTable,
1111
getEmptyResourceTable,
1212
getEmptySourceTable,
13-
resourceTypes,
1413
} from './data-structures';
1514

1615
import type {
@@ -33,6 +32,7 @@ import type {
3332
Address,
3433
Bytes,
3534
} from 'firefox-profiler/types';
35+
import { ResourceType } from 'firefox-profiler/types';
3636

3737
/**
3838
* GlobalDataCollector collects data which is global in the processed profile
@@ -163,7 +163,7 @@ export class GlobalDataCollector {
163163
resourceTable.name[resourceIndex] =
164164
this._stringTable.indexForString(name);
165165
resourceTable.host[resourceIndex] = idIndex;
166-
resourceTable.type[resourceIndex] = resourceTypes.addon;
166+
resourceTable.type[resourceIndex] = ResourceType.Addon;
167167
}
168168
}
169169
}
@@ -208,15 +208,15 @@ export class GlobalDataCollector {
208208
this._stringTable.indexForString(origin);
209209
resourceTable.host[resourceIndex] =
210210
this._stringTable.indexForString(host);
211-
resourceTable.type[resourceIndex] = resourceTypes.webhost;
211+
resourceTable.type[resourceIndex] = ResourceType.Webhost;
212212
} else {
213213
// This is a URL, but it doesn't point to something on the web, e.g. a
214214
// chrome url.
215215
resourceTable.lib[resourceIndex] = null;
216216
resourceTable.name[resourceIndex] =
217217
this._stringTable.indexForString(scriptURI);
218218
resourceTable.host[resourceIndex] = null;
219-
resourceTable.type[resourceIndex] = resourceTypes.url;
219+
resourceTable.type[resourceIndex] = ResourceType.Url;
220220
}
221221
return resourceIndex;
222222
}
@@ -236,7 +236,7 @@ export class GlobalDataCollector {
236236
this._libs[libIndex].name
237237
);
238238
resourceTable.host[resourceIndex] = null;
239-
resourceTable.type[resourceIndex] = resourceTypes.library;
239+
resourceTable.type[resourceIndex] = ResourceType.Library;
240240
return resourceIndex;
241241
}
242242

@@ -255,7 +255,7 @@ export class GlobalDataCollector {
255255
resourceTable.lib[resourceIndex] = null;
256256
resourceTable.name[resourceIndex] = libNameStringIndex;
257257
resourceTable.host[resourceIndex] = null;
258-
resourceTable.type[resourceIndex] = resourceTypes.library;
258+
resourceTable.type[resourceIndex] = ResourceType.Library;
259259
return resourceIndex;
260260
}
261261

src/profile-logic/process-profile.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,7 @@ export function extractFuncsAndResourcesFromFrameLocations(
287287
* address.
288288
* We also associate the address with the library that contains it, and convert the address
289289
* into a library-relative offset. This association is established via the function's
290-
* "resource": The function points to the resource (of type resourceTypes.library), and the
290+
* "resource": The function points to the resource (of type ResourceType.Library), and the
291291
* resource has the index to the library in thread.libs.
292292
* We return the index of the newly-added function, and the address as a library-relative
293293
* offset.

src/profile-logic/processed-profile-versioning.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
*/
1515

1616
import { sortDataTable } from '../utils/data-table-utils';
17-
import { resourceTypes } from './data-structures';
17+
import { ResourceType } from 'firefox-profiler/types';
1818
import { StringTable } from '../utils/string-table';
1919
import { timeCode } from '../utils/time-code';
2020
import { PROCESSED_PROFILE_VERSION } from '../app-logic/constants';
@@ -356,19 +356,19 @@ const _upgraders: {
356356
};
357357
function addLibResource(name: number, lib: number) {
358358
const index = newResourceTable.length++;
359-
newResourceTable.type[index] = resourceTypes.library;
359+
newResourceTable.type[index] = ResourceType.Library;
360360
newResourceTable.name[index] = name;
361361
newResourceTable.lib[index] = lib;
362362
}
363363
function addWebhostResource(origin: number, host: number) {
364364
const index = newResourceTable.length++;
365-
newResourceTable.type[index] = resourceTypes.webhost;
365+
newResourceTable.type[index] = ResourceType.Webhost;
366366
newResourceTable.name[index] = origin;
367367
newResourceTable.host[index] = host;
368368
}
369369
function addUrlResource(url: number) {
370370
const index = newResourceTable.length++;
371-
newResourceTable.type[index] = resourceTypes.url;
371+
newResourceTable.type[index] = ResourceType.Url;
372372
newResourceTable.name[index] = url;
373373
}
374374
const oldResourceToNewResourceMap = new Map();
@@ -378,7 +378,7 @@ const _upgraders: {
378378
resourceIndex < resourceTable.length;
379379
resourceIndex++
380380
) {
381-
if (resourceTable.type[resourceIndex] === resourceTypes.library) {
381+
if (resourceTable.type[resourceIndex] === ResourceType.Library) {
382382
oldResourceToNewResourceMap.set(
383383
resourceIndex,
384384
newResourceTable.length
@@ -387,7 +387,7 @@ const _upgraders: {
387387
resourceTable.name[resourceIndex],
388388
resourceTable.lib[resourceIndex]
389389
);
390-
} else if (resourceTable.type[resourceIndex] === resourceTypes.url) {
390+
} else if (resourceTable.type[resourceIndex] === ResourceType.Url) {
391391
const scriptURI = stringTable.getString(
392392
resourceTable.name[resourceIndex]
393393
);
@@ -1810,7 +1810,7 @@ const _upgraders: {
18101810
continue;
18111811
}
18121812
const resourceType = resourceTable.type[resourceIndex];
1813-
if (resourceType !== resourceTypes.library) {
1813+
if (resourceType !== ResourceType.Library) {
18141814
continue;
18151815
}
18161816
const libIndex = resourceTable.lib[resourceIndex];

0 commit comments

Comments
 (0)