| 24 | const eventFactory = new TraceEventFactory('timeline', 'pid0'); |
| 25 | |
| 26 | function createMetric( |
| 27 | perfLogs: PerfLogEvent[], |
| 28 | perfLogFeatures: PerfLogFeatures, |
| 29 | { |
| 30 | microMetrics, |
| 31 | forceGc, |
| 32 | captureFrames, |
| 33 | receivedData, |
| 34 | requestCount, |
| 35 | ignoreNavigation, |
| 36 | }: { |
| 37 | microMetrics?: {[key: string]: string}; |
| 38 | forceGc?: boolean; |
| 39 | captureFrames?: boolean; |
| 40 | receivedData?: boolean; |
| 41 | requestCount?: boolean; |
| 42 | ignoreNavigation?: boolean; |
| 43 | } = {}, |
| 44 | ): Metric { |
| 45 | commandLog = []; |
| 46 | if (!perfLogFeatures) { |
| 47 | perfLogFeatures = new PerfLogFeatures({ |
| 48 | render: true, |
| 49 | gc: true, |
| 50 | frameCapture: true, |
| 51 | userTiming: true, |
| 52 | }); |
| 53 | } |
| 54 | if (!microMetrics) { |
| 55 | microMetrics = {}; |
| 56 | } |
| 57 | const providers: StaticProvider[] = [ |
| 58 | Options.DEFAULT_PROVIDERS, |
| 59 | PerflogMetric.PROVIDERS, |
| 60 | {provide: Options.MICRO_METRICS, useValue: microMetrics}, |
| 61 | { |
| 62 | provide: PerflogMetric.SET_TIMEOUT, |
| 63 | useValue: (fn: Function, millis: number) => { |
| 64 | commandLog.push(['setTimeout', millis]); |
| 65 | fn(); |
| 66 | }, |
| 67 | }, |
| 68 | { |
| 69 | provide: WebDriverExtension, |
| 70 | useValue: new MockDriverExtension(perfLogs, commandLog, perfLogFeatures), |
| 71 | }, |
| 72 | ]; |
| 73 | if (forceGc != null) { |
| 74 | providers.push({provide: Options.FORCE_GC, useValue: forceGc}); |
| 75 | } |
| 76 | if (captureFrames != null) { |
| 77 | providers.push({provide: Options.CAPTURE_FRAMES, useValue: captureFrames}); |
| 78 | } |
| 79 | if (receivedData != null) { |
| 80 | providers.push({provide: Options.RECEIVED_DATA, useValue: receivedData}); |
| 81 | } |
| 82 | if (requestCount != null) { |
| 83 | providers.push({provide: Options.REQUEST_COUNT, useValue: requestCount}); |