Skip to content

Commit 6201613

Browse files
authored
Performance: hide more unsupported features (#150)
1 parent c684970 commit 6201613

16 files changed

Lines changed: 138 additions & 16 deletions

front_end/models/timeline_model/TimelineModelFilter.test.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,14 @@
55
import {TraceLoader} from '../../testing/TraceLoader.js';
66
import * as TimelineModel from '../timeline_model/timeline_model.js';
77
import * as TraceEngine from '../trace/trace.js';
8+
import {initializeGlobalVars} from '../../testing/EnvironmentHelpers.js';
89

910
describe('TimelineModelFilter', () => {
11+
before(async () => {
12+
// [RN] This will register required REACT_NATIVE_SPECIFIC_UI experiment.
13+
await initializeGlobalVars();
14+
});
15+
1016
describe('TimelineVisibleEventsFilter', () => {
1117
it('accepts events that are set in the constructor and rejects other events', async function() {
1218
const {traceData} = await TraceLoader.traceEngine(this, 'user-timings.json.gz');
@@ -78,6 +84,11 @@ describe('TimelineModelFilter', () => {
7884
});
7985

8086
describe('ExclusiveNameFilter', () => {
87+
before(async () => {
88+
// [RN] This will register required REACT_NATIVE_SPECIFIC_UI experiment.
89+
await initializeGlobalVars();
90+
});
91+
8192
it('accepts events that do not match the provided set of names to exclude', async function() {
8293
const {traceData} = await TraceLoader.traceEngine(this, 'user-timings.json.gz');
8394
const userTimingEvent = (traceData.UserTimings.performanceMeasures).at(0);

front_end/models/trace/EntriesFilter.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
import {TraceLoader} from '../../testing/TraceLoader.js';
1010
import * as TraceEngine from '../trace/trace.js';
11+
import {initializeGlobalVars} from '../../testing/EnvironmentHelpers.js';
1112

1213
function getMainThread(traceData: TraceEngine.Handlers.ModelHandlers.Renderer.RendererHandlerData):
1314
TraceEngine.Handlers.ModelHandlers.Renderer.RendererThread {
@@ -38,6 +39,11 @@ function findFirstEntry(
3839
}
3940

4041
describe('EntriesFilter', function() {
42+
before(async () => {
43+
// [RN] This will register required REACT_NATIVE_SPECIFIC_UI experiment.
44+
await initializeGlobalVars();
45+
});
46+
4147
it('parses a stack and returns an empty list of invisible entries', async function() {
4248
const {traceData} = await TraceLoader.traceEngine(this, 'basic-stack.json.gz');
4349
const stack = new TraceEngine.EntriesFilter.EntriesFilter(traceData.Renderer.entryToNode);

front_end/models/trace/handlers/RendererHandler.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import {data as auctionWorkletsData} from './AuctionWorkletsHandler.js';
1010
import {data as metaHandlerData, type FrameProcessData} from './MetaHandler.js';
1111
import {data as samplesHandlerData} from './SamplesHandler.js';
1212
import {HandlerState, type TraceEventHandlerName} from './types.js';
13+
import * as Root from '../../../core/root/root.js';
1314

1415
/**
1516
* This handler builds the hierarchy of trace events and profile calls
@@ -23,6 +24,8 @@ import {HandlerState, type TraceEventHandlerName} from './types.js';
2324
* event type.
2425
*/
2526

27+
let isReactNative: boolean;
28+
2629
const processes = new Map<Types.TraceEvents.ProcessID, RendererProcess>();
2730

2831
// We track the compositor tile worker thread name events so that at the end we
@@ -80,6 +83,11 @@ export function initialize(): void {
8083
throw new Error('Renderer Handler was not reset');
8184
}
8285

86+
// [RN] Used to scope down available features for React Native targets
87+
isReactNative = Root.Runtime.experiments.isEnabled(
88+
Root.Runtime.ExperimentName.REACT_NATIVE_SPECIFIC_UI,
89+
);
90+
8391
handlerState = HandlerState.INITIALIZED;
8492
}
8593

@@ -245,6 +253,11 @@ export function assignThreadName(
245253
* - Deletes processes with an unkonwn origin.
246254
*/
247255
export function sanitizeProcesses(processes: Map<Types.TraceEvents.ProcessID, RendererProcess>): void {
256+
// See https://docs.google.com/document/d/1_mtLIHEd9bFQN4xWBSVDR357GaRo56khB1aOxgWDeu4/edit?tab=t.0 for context.
257+
if (isReactNative) {
258+
return;
259+
}
260+
248261
const auctionWorklets = auctionWorkletsData().worklets;
249262
const metaData = metaHandlerData();
250263
if (metaData.traceIsGeneric) {

front_end/models/trace/handlers/WarningsHandler.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,14 @@
44

55
import {TraceLoader} from '../../../testing/TraceLoader.js';
66
import * as TraceEngine from '../trace.js';
7+
import {initializeGlobalVars} from '../../../testing/EnvironmentHelpers.js';
78

89
describe('WarningsHandler', function() {
10+
before(async () => {
11+
// [RN] This will register required REACT_NATIVE_SPECIFIC_UI experiment.
12+
await initializeGlobalVars();
13+
});
14+
915
beforeEach(() => {
1016
TraceEngine.Handlers.ModelHandlers.Warnings.reset();
1117
});

front_end/models/trace/helpers/SyntheticEvents.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,14 @@
44

55
import {TraceLoader} from '../../../testing/TraceLoader.js';
66
import * as TraceModel from '../trace.js';
7+
import {initializeGlobalVars} from '../../../testing/EnvironmentHelpers.js';
78

89
describe('SyntheticEvents', function() {
10+
before(async () => {
11+
// [RN] This will register required REACT_NATIVE_SPECIFIC_UI experiment.
12+
await initializeGlobalVars();
13+
});
14+
915
beforeEach(() => {
1016
TraceModel.Helpers.SyntheticEvents.SyntheticEventsManager.reset();
1117
});

front_end/models/trace/insights/CumulativeLayoutShift.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import type * as TraceModel from '../trace.js';
88
import * as Types from '../types/types.js';
99

1010
import {InsightRunners} from './insights.js';
11+
import {initializeGlobalVars} from '../../../testing/EnvironmentHelpers.js';
1112

1213
export async function processTrace(testContext: Mocha.Suite|Mocha.Context|null, traceFile: string) {
1314
const {traceData, insights} = await TraceLoader.traceEngine(testContext, traceFile);
@@ -34,6 +35,11 @@ function getInsight(insights: TraceModel.Insights.Types.TraceInsightData, naviga
3435
const INVALIDATION_WINDOW = Helpers.Timing.secondsToMicroseconds(Types.Timing.Seconds(0.5));
3536

3637
describe('CumulativeLayoutShift', function() {
38+
before(async () => {
39+
// [RN] This will register required REACT_NATIVE_SPECIFIC_UI experiment.
40+
await initializeGlobalVars();
41+
});
42+
3743
describe('non composited animations', function() {
3844
it('gets the correct non composited animations', async function() {
3945
const {data, insights} = await processTrace(this, 'non-composited-animation.json.gz');

front_end/models/trace/insights/DocumentLatency.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import {TraceLoader} from '../../../testing/TraceLoader.js';
66
import * as TraceModel from '../trace.js';
77
import * as Types from '../types/types.js';
8+
import {initializeGlobalVars} from '../../../testing/EnvironmentHelpers.js';
89

910
export async function processTrace(testContext: Mocha.Suite|Mocha.Context|null, traceFile: string) {
1011
const {traceData, insights} = await TraceLoader.traceEngine(testContext, traceFile);
@@ -28,6 +29,11 @@ function getInsight(insights: TraceModel.Insights.Types.TraceInsightData, naviga
2829
}
2930

3031
describe('DocumentLatency', function() {
32+
before(async () => {
33+
// [RN] This will register required REACT_NATIVE_SPECIFIC_UI experiment.
34+
await initializeGlobalVars();
35+
});
36+
3137
it('reports savings for main document with redirects', async () => {
3238
const {data, insights} = await processTrace(this, 'lantern/redirect/trace.json.gz');
3339
const insight = getInsight(insights, data.Meta.navigationsByNavigationId.keys().next().value);

front_end/models/trace/insights/InteractionToNextPaint.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import {TraceLoader} from '../../../testing/TraceLoader.js';
66
import * as TraceModel from '../trace.js';
7+
import {initializeGlobalVars} from '../../../testing/EnvironmentHelpers.js';
78

89
export async function processTrace(testContext: Mocha.Suite|Mocha.Context|null, traceFile: string) {
910
const {traceData, insights} = await TraceLoader.traceEngine(testContext, traceFile);
@@ -15,6 +16,11 @@ export async function processTrace(testContext: Mocha.Suite|Mocha.Context|null,
1516
}
1617

1718
describe('InteractionToNextPaint', function() {
19+
before(async () => {
20+
// [RN] This will register required REACT_NATIVE_SPECIFIC_UI experiment.
21+
await initializeGlobalVars();
22+
});
23+
1824
const test = (traceFile: string, longest?: number, highPercentile?: number) => {
1925
if (highPercentile === undefined) {
2026
highPercentile = longest;

front_end/models/trace/insights/LargestContentfulPaint.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import {TraceLoader} from '../../../testing/TraceLoader.js';
66
import type * as TraceModel from '../trace.js';
77
import * as Types from '../types/types.js';
8+
import {initializeGlobalVars} from '../../../testing/EnvironmentHelpers.js';
89

910
export async function processTrace(testContext: Mocha.Suite|Mocha.Context|null, traceFile: string) {
1011
const {traceData, insights} = await TraceLoader.traceEngine(testContext, traceFile);
@@ -28,6 +29,11 @@ function getInsight(insights: TraceModel.Insights.Types.TraceInsightData, naviga
2829
}
2930

3031
describe('LargestContentfulPaint', function() {
32+
before(async () => {
33+
// [RN] This will register required REACT_NATIVE_SPECIFIC_UI experiment.
34+
await initializeGlobalVars();
35+
});
36+
3137
it('text lcp phases', async () => {
3238
const {data, insights} = await processTrace(this, 'lcp-web-font.json.gz');
3339
const insight = getInsight(insights, data.Meta.navigationsByNavigationId.keys().next().value);

front_end/models/trace/lantern/core/NetworkAnalyzer.test.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import * as TraceModel from '../../trace.js';
88
import * as Lantern from '../lantern.js';
99
import {loadTrace, runTraceEngine} from '../testing/testing.js';
10+
import {initializeGlobalVars} from '../../../../testing/EnvironmentHelpers.js';
1011

1112
const {NetworkAnalyzer} = Lantern.Core;
1213

@@ -19,6 +20,8 @@ describe('NetworkAnalyzer', () => {
1920
let trace: Lantern.Types.Trace;
2021
let traceWithRedirect: Lantern.Types.Trace;
2122
before(async function() {
23+
// [RN] This will register required REACT_NATIVE_SPECIFIC_UI experiment.
24+
await initializeGlobalVars();
2225
trace = await loadTrace(this, 'lantern/paul/trace.json.gz');
2326
traceWithRedirect = await loadTrace(this, 'lantern/redirect/trace.json.gz');
2427
});

0 commit comments

Comments
 (0)