File: webdx_feature_maps.cc

package info (click to toggle)
chromium 138.0.7204.183-1~deb12u1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm-proposed-updates
  • size: 6,080,960 kB
  • sloc: cpp: 34,937,079; ansic: 7,176,967; javascript: 4,110,704; python: 1,419,954; asm: 946,768; xml: 739,971; pascal: 187,324; sh: 89,623; perl: 88,663; objc: 79,944; sql: 50,304; cs: 41,786; fortran: 24,137; makefile: 21,811; php: 13,980; tcl: 13,166; yacc: 8,925; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (585 lines) | stat: -rw-r--r-- 34,322 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "base/no_destructor.h"
#include "components/page_load_metrics/browser/observers/use_counter_page_load_metrics_observer.h"

// This file defines a mapping of WebFeature use counters and CSS sample IDs
// to the corresponding WebDXFeature use counters.

using WebFeature = blink::mojom::WebFeature;
using WebDXFeature = blink::mojom::WebDXFeature;
using CSSSampleId = blink::mojom::CSSSampleId;
using WebDXFeature = blink::mojom::WebDXFeature;

const base::flat_map<blink::mojom::WebFeature, blink::mojom::WebDXFeature>&
UseCounterMetricsRecorder::GetWebFeatureToWebDXFeatureMap() {
  static const base::NoDestructor<
      const base::flat_map<WebFeature, WebDXFeature>>
      kMap{{
          {WebFeature::kViewTransition, WebDXFeature::kViewTransitions},
          {WebFeature::kValidPopoverAttribute, WebDXFeature::kPopover},
          {WebFeature::kCSSSubgridLayout, WebDXFeature::kSubgrid},
          {WebFeature::kCSSCascadeLayers, WebDXFeature::kCascadeLayers},
          // If the compression or decompression stream constructors were
          // invoked, WebDXFeature::count that as the CompressionStreams WebDX
          // feature being used.
          {WebFeature::kCompressionStreamConstructor,
           WebDXFeature::kCompressionStreams},
          {WebFeature::kDecompressionStreamConstructor,
           WebDXFeature::kCompressionStreams},
          {WebFeature::kAVIFImage, WebDXFeature::kAvif},
          {WebFeature::kBlockingAttributeRenderToken,
           WebDXFeature::kBlockingRender},
          {WebFeature::kV8BroadcastChannel_Constructor,
           WebDXFeature::kBroadcastChannel},
          {WebFeature::kCanvasRenderingContext2DContextLostEvent,
           WebDXFeature::kCanvasContextLost},
          {WebFeature::kCSSCascadeLayers, WebDXFeature::kCascadeLayers},
          {WebFeature::kPressureObserver_Constructor,
           WebDXFeature::kComputePressure},
          {WebFeature::kAdoptedStyleSheets,
           WebDXFeature::kConstructedStylesheets},
          {WebFeature::kCSSAtRuleContainer, WebDXFeature::kContainerQueries},
          {WebFeature::kCSSStyleContainerQuery,
           WebDXFeature::kContainerStyleQueries},
          {WebFeature::kCSSAtRuleCounterStyle, WebDXFeature::kCounterStyle},
          {WebFeature::kCreateCSSModuleScript, WebDXFeature::kCssModules},
          {WebFeature::kStreamingDeclarativeShadowDOM,
           WebDXFeature::kDeclarativeShadowDom},
          {WebFeature::kShowPickerSelect, WebDXFeature::kShowPickerSelect},
          {WebFeature::kHTMLDetailsElementNameAttribute,
           WebDXFeature::kDetailsName},
          {WebFeature::kHTMLFencedFrameElement, WebDXFeature::kFencedframe},
          {WebFeature::kHTMLUnsafeMethods, WebDXFeature::kParseHtmlUnsafe},
          {WebFeature::kCloseWatcherScriptConstructor,
           WebDXFeature::kClosewatcher},
          {WebFeature::kHTMLSearchElement, WebDXFeature::kSearch},
          {WebFeature::kDialogElement, WebDXFeature::kDialog},
          {WebFeature::kV8DocumentPictureInPicture_RequestWindow_Method,
           WebDXFeature::kDocumentPictureInPicture},
          {WebFeature::kFlexGapSpecified, WebDXFeature::kFlexboxGap},
          {WebFeature::kCSSFlexibleBox, WebDXFeature::kFlexbox},
          {WebFeature::kCSSSelectorPseudoFocusVisible,
           WebDXFeature::kFocusVisible},
          {WebFeature::kCSSGridLayout, WebDXFeature::kGrid},
          {WebFeature::kCSSSelectorPseudoHas, WebDXFeature::kHas},
          {WebFeature::kCSSSelectorPseudoHasSlotted, WebDXFeature::kHasSlotted},
          {WebFeature::kIdleDetectionStart, WebDXFeature::kIdleDetection},
          {WebFeature::kImportMap, WebDXFeature::kImportMaps},
          {WebFeature::kIntersectionObserverV2,
           WebDXFeature::kIntersectionObserverV2},
          {WebFeature::kIntersectionObserver_Constructor,
           WebDXFeature::kIntersectionObserver},
          {WebFeature::kCSSSelectorPseudoIs, WebDXFeature::kIs},
          {WebFeature::kPrepareModuleScript, WebDXFeature::kJsModules},
          {WebFeature::kInstantiateModuleScript, WebDXFeature::kJsModules},
          {WebFeature::kV8MediaSession_Metadata_AttributeSetter,
           WebDXFeature::kMediaSession},
          {WebFeature::kOffscreenCanvas, WebDXFeature::kOffscreenCanvas},
          {WebFeature::kV8StorageManager_GetDirectory_Method,
           WebDXFeature::kOriginPrivateFileSystem},
          {WebFeature::kV8Window_FetchLater_Method, WebDXFeature::kFetchlater},
          {WebFeature::kV8Window_ShowOpenFilePicker_Method,
           WebDXFeature::kFileSystemAccess},
          {WebFeature::kV8Window_ShowSaveFilePicker_Method,
           WebDXFeature::kFileSystemAccess},
          {WebFeature::kV8Window_ShowDirectoryPicker_Method,
           WebDXFeature::kFileSystemAccess},
          {WebFeature::kV8HTMLVideoElement_RequestPictureInPicture_Method,
           WebDXFeature::kPictureInPicture},
          {WebFeature::kV8HTMLVideoElement_GetVideoPlaybackQuality_Method,
           WebDXFeature::kMediaPlaybackQuality},
          {WebFeature::kV8Window_QueryLocalFonts_Method,
           WebDXFeature::kLocalFonts},
          {WebFeature::kElementRequestPointerLock, WebDXFeature::kPointerLock},
          {WebFeature::kCSSRelativeColor, WebDXFeature::kRelativeColor},
          {WebFeature::kCSSAtRuleScope, WebDXFeature::kScope},
          {WebFeature::kScrollend, WebDXFeature::kScrollend},
          {WebFeature::kTextFragmentAnchor,
           WebDXFeature::kScrollToTextFragment},
          {WebFeature::kV8HTMLInputElement_ShowPicker_Method,
           WebDXFeature::kShowPickerInput},
          {WebFeature::kHTMLSlotElement, WebDXFeature::kSlot},
          {WebFeature::kV8SpeechRecognition_Start_Method,
           WebDXFeature::kSpeechRecognition},
          {WebFeature::kV8SpeechSynthesis_Speak_Method,
           WebDXFeature::kSpeechSynthesis},
          {WebFeature::kStorageAccessAPI_HasStorageAccess_Method,
           WebDXFeature::kStorageAccess},
          {WebFeature::kStorageAccessAPI_requestStorageAccess_Method,
           WebDXFeature::kStorageAccess},
          {WebFeature::kStorageAccessAPI_requestStorageAccessFor_Method,
           WebDXFeature::kStorageAccess},
          {WebFeature::kStorageAccessAPI_requestStorageAccess_BeyondCookies,
           WebDXFeature::kNonCookieStorageAccess},
          {WebFeature::kStorageAccessAPI_hasUnpartitionedCookieAccess,
           WebDXFeature::kNonCookieStorageAccess},
          {WebFeature::kStorageBucketsOpen, WebDXFeature::kStorageBuckets},
          {WebFeature::kCSSSelectorTargetText, WebDXFeature::kTargetText},
          {WebFeature::kHTMLTemplateElement, WebDXFeature::kTemplate},
          {WebFeature::kTextWrapBalance, WebDXFeature::kTextWrapBalance},
          {WebFeature::kTextWrapPretty, WebDXFeature::kTextWrapPretty},
          {WebFeature::kCSSSelectorUserValid, WebDXFeature::kUserPseudos},
          {WebFeature::kCSSSelectorUserInvalid, WebDXFeature::kUserPseudos},
          {WebFeature::kWebCodecs, WebDXFeature::kWebcodecs},
          {WebFeature::kHidDeviceOpen, WebDXFeature::kWebhid},
          {WebFeature::kV8LockManager_Request_Method, WebDXFeature::kWebLocks},
          {WebFeature::kWebPImage, WebDXFeature::kWebp},
          {WebFeature::kWebTransport, WebDXFeature::kWebtransport},
          {WebFeature::kUsbDeviceOpen, WebDXFeature::kWebusb},
          {WebFeature::kVTTCue, WebDXFeature::kWebvtt},
          {WebFeature::kCSSSelectorPseudoWhere, WebDXFeature::kWhere},
          {WebFeature::kDataListElement, WebDXFeature::kDatalist},
          {WebFeature::kCSSSelectorPseudoDir, WebDXFeature::kDirPseudo},
          {WebFeature::kHiddenUntilFoundAttribute,
           WebDXFeature::kHiddenUntilFound},
          {WebFeature::kAbortSignalAny, WebDXFeature::kAbortsignalAny},
          {WebFeature::kAttributionReportingAPIAll,
           WebDXFeature::kAttributionReporting},
          {WebFeature::kNavigationAPI, WebDXFeature::kNavigation},
          {WebFeature::kMathMLMathElement, WebDXFeature::kMathml},
          {WebFeature::kCanvasRenderingContext2DConicGradient,
           WebDXFeature::kCanvasCreateconicgradient},
          {WebFeature::kCanvasRenderingContext2DReset,
           WebDXFeature::kCanvasReset},
          {WebFeature::kCanvasRenderingContext2DRoundRect,
           WebDXFeature::kCanvasRoundrect},
          {WebFeature::kCookieStoreAPI, WebDXFeature::kCookieStore},
          {WebFeature::kCSSColorMixFunction, WebDXFeature::kColorMix},
          {WebFeature::kImageSet, WebDXFeature::kImageSet},
          {WebFeature::kStructuredCloneMethod, WebDXFeature::kStructuredClone},
          {WebFeature::kSlotAssignNode, WebDXFeature::kSlotAssign},
          {WebFeature::kDeviceMotionSecureOrigin,
           WebDXFeature::kDeviceOrientationEvents},
          {WebFeature::kDeviceOrientationAbsoluteSecureOrigin,
           WebDXFeature::kDeviceOrientationEvents},
          {WebFeature::kDeviceOrientationSecureOrigin,
           WebDXFeature::kDeviceOrientationEvents},
          {WebFeature::kGamepadButtons, WebDXFeature::kGamepad},
          {WebFeature::kWakeLockAcquireScreenLock,
           WebDXFeature::kScreenWakeLock},
          {WebFeature::kWakeLockAcquireSystemLock,
           WebDXFeature::kScreenWakeLock},
          {WebFeature::kWebBluetoothRemoteServerConnect,
           WebDXFeature::kWebBluetooth},
          {WebFeature::kWebNfcNdefReaderScan, WebDXFeature::kWebNfc},
          {WebFeature::kWebGPURequestAdapter, WebDXFeature::kWebgpu},
          {WebFeature::kSerialPortOpen, WebDXFeature::kSerial},
          {WebFeature::kModuleDedicatedWorker, WebDXFeature::kJsModulesWorkers},
          {WebFeature::kModuleSharedWorker,
           WebDXFeature::kJsModulesSharedWorkers},
          {WebFeature::kCssDisplayPropertyMultipleValues,
           WebDXFeature::kTwoValueDisplay},
          {WebFeature::kTwoValuedOverflow, WebDXFeature::kOverflowShorthand},
          {WebFeature::kKeyboardApiGetLayoutMap, WebDXFeature::kKeyboardMap},
          {WebFeature::kSchedulerPostTask, WebDXFeature::kScheduler},
          {WebFeature::kSchedulerYield, WebDXFeature::kScheduler},
          {WebFeature::kTaskControllerConstructor, WebDXFeature::kScheduler},
          {WebFeature::kTaskControllerSetPriority, WebDXFeature::kScheduler},
          {WebFeature::kTaskSignalPriority, WebDXFeature::kScheduler},
          {WebFeature::kKeyboardApiLock, WebDXFeature::kKeyboardLock},
          {WebFeature::kAsyncClipboardAPIRead, WebDXFeature::kAsyncClipboard},
          {WebFeature::kAsyncClipboardAPIWrite, WebDXFeature::kAsyncClipboard},
          {WebFeature::kAsyncClipboardAPIReadText,
           WebDXFeature::kAsyncClipboard},
          {WebFeature::kAsyncClipboardAPIWriteText,
           WebDXFeature::kAsyncClipboard},
          {WebFeature::kHtmlClipboardApiUnsanitizedRead,
           WebDXFeature::kClipboardUnsanitizedFormats},
          {WebFeature::kClipboardCustomFormatRead,
           WebDXFeature::kClipboardCustomFormat},
          {WebFeature::kClipboardCustomFormatWrite,
           WebDXFeature::kClipboardCustomFormat},
          {WebFeature::kClipboardSvgRead, WebDXFeature::kClipboardSvg},
          {WebFeature::kClipboardSvgWrite, WebDXFeature::kClipboardSvg},
          {WebFeature::kV8ClipboardItem_Supports_Method,
           WebDXFeature::kClipboardSupports},
          {WebFeature::kV8AbortController_Constructor, WebDXFeature::kAborting},
          {WebFeature::kV8AbortSignal_Abort_Method, WebDXFeature::kAborting},
          {WebFeature::kAbortSignalTimeout, WebDXFeature::kAborting},
          {WebFeature::kEditContext, WebDXFeature::kEditContext},
          {WebFeature::kInertAttribute, WebDXFeature::kInert},
          {WebFeature::kSegmenter, WebDXFeature::kIntlSegmenter},
          {WebFeature::kEyeDropperOpen, WebDXFeature::kEyedropper},
          {WebFeature::kElementCheckVisibility, WebDXFeature::kCheckVisibility},
          {WebFeature::kElementGetHTML, WebDXFeature::kGethtml},
          {WebFeature::kHTMLCanvasElement, WebDXFeature::kCanvas},
          {WebFeature::kCanvasUseColorSpace,
           WebDXFeature::kCanvas2DColorManagement},
          {WebFeature::kCSSAtRuleStartingStyle, WebDXFeature::kStartingStyle},
          {WebFeature::kCaretPositionFromPoint,
           WebDXFeature::kDocumentCaretpositionfrompoint},
          {WebFeature::kMeasureMemory, WebDXFeature::kMeasureMemory},
          {WebFeature::kMediaQueryRangeSyntax,
           WebDXFeature::kMediaQueryRangeSyntax},
          {WebFeature::kCSSRegisterProperty,
           WebDXFeature::kRegisteredCustomProperties},
          {WebFeature::kCSSAtRuleProperty,
           WebDXFeature::kRegisteredCustomProperties},
          {WebFeature::kAccelerometerConstructor, WebDXFeature::kAccelerometer},
          {WebFeature::kLinearAccelerationSensorConstructor,
           WebDXFeature::kAccelerometer},
          {WebFeature::kGravitySensorConstructor, WebDXFeature::kAccelerometer},
          {WebFeature::kV8AudioContext_Constructor, WebDXFeature::kWebAudio},
          {WebFeature::kV8OfflineAudioContext_Constructor,
           WebDXFeature::kOfflineAudioContext},
          {WebFeature::kAudioWorkletNodeConstructor,
           WebDXFeature::kAudioWorklet},
          {WebFeature::kMIDIPortOpen, WebDXFeature::kWebMidi},
          {WebFeature::kV8HTMLVideoElement_RequestVideoFrameCallback_Method,
           WebDXFeature::kRequestVideoFrameCallback},
          {WebFeature::kSvgContextFillOrStroke,
           WebDXFeature::kContextFillStroke},
          {WebFeature::kHasCapUnits, WebDXFeature::kCap},
          {WebFeature::kHasRcapUnits, WebDXFeature::kRcap},
          {WebFeature::kHasIcUnits, WebDXFeature::kIc},
          {WebFeature::kHasRicUnits, WebDXFeature::kRic},
          {WebFeature::kHasLhUnits, WebDXFeature::kLh},
          {WebFeature::kHasRlhUnits, WebDXFeature::kRlh},
          {WebFeature::kCSSNesting, WebDXFeature::kNesting},
          {WebFeature::kCSSSelectorNthChildOfSelector,
           WebDXFeature::kNthChildOf},
          {WebFeature::kForcedColorsMediaFeature, WebDXFeature::kForcedColors},
          {WebFeature::kCSSTrigFunctions, WebDXFeature::kTrigFunctions},
          {WebFeature::kCSSColorGradientColorSpace,
           WebDXFeature::kGradientInterpolation},
          {WebFeature::kCSSCalcConstants, WebDXFeature::kCalcConstants},
          {WebFeature::kHasChUnits, WebDXFeature::kCh},
          {WebFeature::kHasRchUnits, WebDXFeature::kRch},
          {WebFeature::kHasRexUnits, WebDXFeature::kRex},
          {WebFeature::kCSSColorFunction, WebDXFeature::kColorFunction},
          {WebFeature::kCSSColor_SpaceOkLxx, WebDXFeature::kOklab},
          {WebFeature::kCSSColor_SpaceLxx, WebDXFeature::kLab},
          {WebFeature::kCSSColor_SpaceHwb, WebDXFeature::kHwb},
          {WebFeature::kCSSKeywordRevert, WebDXFeature::kRevertValue},
          {WebFeature::kPrefersContrastMediaFeature,
           WebDXFeature::kPrefersContrast},
          {WebFeature::kPrefersReducedTransparencyMediaFeature,
           WebDXFeature::kPrefersReducedTransparency},
          {WebFeature::kCSSRoundModRemFunctions, WebDXFeature::kRoundModRem},
          {WebFeature::kCSSExponentialFunctions, WebDXFeature::kExpFunctions},
          {WebFeature::kCSSLinearEasing, WebDXFeature::kLinearEasing},
          {WebFeature::kOverflowMediaQuery, WebDXFeature::kOverflow},
          {WebFeature::kHasSpellingOrGrammarErrorPseudoElement,
           WebDXFeature::kSpellingGrammarError},
          {WebFeature::kDynamicRangeMediaQuery, WebDXFeature::kDynamicRange},
          {WebFeature::kHasMarkerPseudoElement, WebDXFeature::kMarker},
          {WebFeature::kDisplayModeMediaQuery, WebDXFeature::kDisplayMode},
          {WebFeature::kCSSWordBreakAutoPhrase,
           WebDXFeature::kWordBreakAutoPhrase},
          {WebFeature::kCSSSelectorPseudoModal, WebDXFeature::kModal},
          {WebFeature::kUpdateMediaQuery, WebDXFeature::kUpdate},
          {WebFeature::kCSSSelectorPseudoFileSelectorButton,
           WebDXFeature::kFileSelectorButton},
          {WebFeature::kClipPathGeometryBox, WebDXFeature::kClipPathBoxes},
          {WebFeature::kActiveViewTransitionPseudo,
           WebDXFeature::kActiveViewTransition},
          {WebFeature::kSnapEvent, WebDXFeature::kScrollSnapEvents},
          {WebFeature::kScrollTimelineConstructor,
           WebDXFeature::kScrollDrivenAnimations},
          {WebFeature::kViewTimelineConstructor,
           WebDXFeature::kScrollDrivenAnimations},
          {WebFeature::kScrollFunctionTimeline,
           WebDXFeature::kScrollDrivenAnimations},
          {WebFeature::kViewFunctionTimeline,
           WebDXFeature::kScrollDrivenAnimations},
          {WebFeature::kHighlightAPIRegisterHighlight,
           WebDXFeature::kHighlight},
          {WebFeature::kV8Element_Animate_Method, WebDXFeature::kWebAnimations},
          {WebFeature::kV8Document_GetAnimations_Method,
           WebDXFeature::kWebAnimations},
          {WebFeature::kV8ShadowRoot_GetAnimations_Method,
           WebDXFeature::kWebAnimations},
          {WebFeature::kV8Element_GetAnimations_Method,
           WebDXFeature::kWebAnimations},
          {WebFeature::kV8Animation_Constructor, WebDXFeature::kWebAnimations},
          {WebFeature::kCSSAtRuleViewTransition,
           WebDXFeature::kCrossDocumentViewTransitions},
          {WebFeature::kCSSCalcSizeFunction, WebDXFeature::kCalcSize},
          {WebFeature::kLongAnimationFrameObserver,
           WebDXFeature::kLongAnimationFrames},
          {WebFeature::kLongAnimationFrameRequested,
           WebDXFeature::kLongAnimationFrames},
          {WebFeature::kVisibilityStateObserver,
           WebDXFeature::kPageVisibilityState},
          {WebFeature::kFedCm, WebDXFeature::kFedcm},
          {WebFeature::kWebOTP, WebDXFeature::kWebOtp},
          {WebFeature::kPreservesPitch, WebDXFeature::kPreservesPitch},
          {WebFeature::kV8HTMLMediaElement_Remote_AttributeGetter,
           WebDXFeature::kRemotePlayback},
          {WebFeature::kVerticalFormControls,
           WebDXFeature::kVerticalFormControls},
          {WebFeature::kNavigatorPdfViewerEnabled, WebDXFeature::kPdfViewer},
          {WebFeature::kReferrerPolicyHeader, WebDXFeature::kReferrerPolicy},
          {WebFeature::kHTMLAnchorElementReferrerPolicyAttribute,
           WebDXFeature::kReferrerPolicy},
          {WebFeature::kHTMLElementWritingSuggestions,
           WebDXFeature::kWritingsuggestions},
          {WebFeature::kHTMLIFrameElementReferrerPolicyAttribute,
           WebDXFeature::kReferrerPolicy},
          {WebFeature::kHTMLImageElementReferrerPolicyAttribute,
           WebDXFeature::kReferrerPolicy},
          {WebFeature::kHTMLLinkElementReferrerPolicyAttribute,
           WebDXFeature::kReferrerPolicy},
          {WebFeature::kV8Ink_RequestPresenter_Method, WebDXFeature::kInk},
          {WebFeature::kVirtualKeyboardHide, WebDXFeature::kVirtualKeyboard},
          {WebFeature::kVirtualKeyboardOverlayPolicy,
           WebDXFeature::kVirtualKeyboard},
          {WebFeature::kVirtualKeyboardShow, WebDXFeature::kVirtualKeyboard},
          {WebFeature::kDurationFormat, WebDXFeature::kIntlDurationFormat},
          {WebFeature::kWebAppWindowControlsOverlay,
           WebDXFeature::kWindowControlsOverlay},
          {WebFeature::kPriorityHints, WebDXFeature::kFetchPriority},
          {WebFeature::kBarPropLocationbar, WebDXFeature::kBarprop},
          {WebFeature::kBarPropMenubar, WebDXFeature::kBarprop},
          {WebFeature::kBarPropPersonalbar, WebDXFeature::kBarprop},
          {WebFeature::kBarPropScrollbars, WebDXFeature::kBarprop},
          {WebFeature::kBarPropStatusbar, WebDXFeature::kBarprop},
          {WebFeature::kBarPropToolbar, WebDXFeature::kBarprop},
          {WebFeature::kDocumentBeforeUnloadRegistered,
           WebDXFeature::kBeforeunload},
          {WebFeature::kLayoutShiftExplicitlyRequested,
           WebDXFeature::kLayoutInstability},
          {WebFeature::kJSSelfProfiling, WebDXFeature::kProfiler},
          {WebFeature::kZstdContentEncoding, WebDXFeature::kZstd},
          {WebFeature::kColumnPseudoElement, WebDXFeature::kColumnPseudo},
          {WebFeature::kScrollButtonPseudoElement,
           WebDXFeature::kScrollButtons},
          {WebFeature::kScrollMarkerPseudoElement,
           WebDXFeature::kScrollMarkers},
          {WebFeature::kPopoverTypeHint, WebDXFeature::kPopoverHint},
          {WebFeature::kFileHandlingLaunch, WebDXFeature::kAppFileHandlers},
          {WebFeature::kWebAppManifestProtocolHandlers,
           WebDXFeature::kAppProtocolHandlers},
          {WebFeature::kBadgeSetWithoutNotificationPermissionInBrowserWindow,
           WebDXFeature::kBadging},
          {WebFeature::kBadgeSetWithoutNotificationPermissionInAppWindow,
           WebDXFeature::kBadging},
          {WebFeature::kBadgeSetWithoutNotificationPermissionInWorker,
           WebDXFeature::kBadging},
          {WebFeature::kBeforeInstallPromptEvent,
           WebDXFeature::kBeforeinstallprompt},
          {WebFeature::kBeforeInstallPromptEventUserChoice,
           WebDXFeature::kBeforeinstallprompt},
          {WebFeature::kBeforeInstallPromptEventPreventDefault,
           WebDXFeature::kBeforeinstallprompt},
          {WebFeature::kBeforeInstallPromptEventPrompt,
           WebDXFeature::kBeforeinstallprompt},
          {WebFeature::kV8BeforeInstallPromptEvent_Platforms_AttributeGetter,
           WebDXFeature::kBeforeinstallprompt},
          {WebFeature::kWebAppManifestLaunchHandler,
           WebDXFeature::kAppLaunchHandler},
          {WebFeature::kCSSFunctions, WebDXFeature::kFunction},
          {WebFeature::kSelectionGetComposedRanges,
           WebDXFeature::kComposedRanges},
          {WebFeature::kSharedDictionaryUsed,
           WebDXFeature::kCompressionDictionaryTransport},
          {WebFeature::kHttp3, WebDXFeature::kHttp3},
          {WebFeature::kSpeculationRules, WebDXFeature::kSpeculationRules},
          {WebFeature::kElementCapture, WebDXFeature::kElementCapture},
          {WebFeature::kRegionCapture, WebDXFeature::kRegionCapture},
          {WebFeature::kUnprefixedRequestAnimationFrame,
           WebDXFeature::kRequestAnimationFrame},
          {WebFeature::kAnonymousIframe, WebDXFeature::kIframeCredentialless},
          {WebFeature::kV8URLPattern_Constructor, WebDXFeature::kUrlpattern},
          {WebFeature::kV8URLPattern_Test_Method, WebDXFeature::kUrlpattern},
          {WebFeature::kV8URLPattern_Exec_Method, WebDXFeature::kUrlpattern},
          {WebFeature::kV8URLPattern_CompareComponent_Method,
           WebDXFeature::kUrlpattern},
          {WebFeature::kV8AuthenticatorAttestationResponse_GetPublicKey_Method,
           WebDXFeature::kWebauthnPublicKeyEasy},
          {WebFeature::kDisplayNames, WebDXFeature::kIntlDisplayNames},
          {WebFeature::kCSSSelectorPseudoState, WebDXFeature::kState},
          {WebFeature::kV8Window_GetScreenDetails_Method,
           WebDXFeature::kWindowManagement},
          {WebFeature::kCSSLightDark, WebDXFeature::kLightDark},
          {WebFeature::kV8Window_RequestIdleCallback_Method,
           WebDXFeature::kRequestidlecallback},
          {WebFeature::kClearSiteData, WebDXFeature::kClearSiteData},
          {WebFeature::kClientHintsUA, WebDXFeature::kUaClientHints},
          {WebFeature::kClientHintsUABitness, WebDXFeature::kUaClientHints},
          {WebFeature::kClientHintsUAFormFactors, WebDXFeature::kUaClientHints},
          {WebFeature::kClientHintsUAFullVersion, WebDXFeature::kUaClientHints},
          {WebFeature::kClientHintsUAFullVersionList,
           WebDXFeature::kUaClientHints},
          {WebFeature::kClientHintsUAMobile, WebDXFeature::kUaClientHints},
          {WebFeature::kClientHintsUAModel, WebDXFeature::kUaClientHints},
          {WebFeature::kClientHintsUAPlatform, WebDXFeature::kUaClientHints},
          {WebFeature::kClientHintsUAPlatformVersion,
           WebDXFeature::kUaClientHints},
          {WebFeature::kClientHintsUAWoW64, WebDXFeature::kUaClientHints},
          {WebFeature::kNavigatorUAData_GetHighEntropyValues,
           WebDXFeature::kUaClientHints},
          {WebFeature::kNavigatorUAData_Mobile, WebDXFeature::kUaClientHints},
          {WebFeature::kNavigatorUAData_Platform, WebDXFeature::kUaClientHints},
          {WebFeature::kNavigatorUAData_Brands, WebDXFeature::kUaClientHints},
          {WebFeature::kNavigatorUAData_toJSON, WebDXFeature::kUaClientHints},
          {WebFeature::kSelectElementAppearanceBaseSelect,
           WebDXFeature::kCustomizableSelect},
          // Add new features above this line.
      }};

  return *kMap;
}

const base::flat_map<blink::mojom::CSSSampleId, blink::mojom::WebDXFeature>&
UseCounterMetricsRecorder::GetCSSProperties2WebDXFeatureMap() {
  static constexpr WebDXFeature logical_properties =
      WebDXFeature::kLogicalProperties;
  static const base::NoDestructor<
      const base::flat_map<CSSSampleId, WebDXFeature>>
      kMap{{
          {CSSSampleId::kAccentColor, WebDXFeature::kAccentColor},
          {CSSSampleId::kAnchorName, WebDXFeature::kAnchorPositioning},
          {CSSSampleId::kAnimationComposition,
           WebDXFeature::kAnimationComposition},
          {CSSSampleId::kAppearance, WebDXFeature::kAppearance},
          {CSSSampleId::kAspectRatio, WebDXFeature::kAspectRatio},
          {CSSSampleId::kBackdropFilter, WebDXFeature::kBackdropFilter},
          {CSSSampleId::kBorderImage, WebDXFeature::kBorderImage},
          {CSSSampleId::kColorScheme, WebDXFeature::kColorScheme},
          {CSSSampleId::kContainIntrinsicSize,
           WebDXFeature::kContainIntrinsicSize},
          {CSSSampleId::kFieldSizing, WebDXFeature::kFieldSizing},
          {CSSSampleId::kFontOpticalSizing, WebDXFeature::kFontOpticalSizing},
          {CSSSampleId::kFontPalette, WebDXFeature::kFontPalette},
          {CSSSampleId::kFontSizeAdjust, WebDXFeature::kFontSizeAdjust},
          {CSSSampleId::kFontSynthesisSmallCaps,
           WebDXFeature::kFontSynthesisSmallCaps},
          {CSSSampleId::kFontSynthesisStyle, WebDXFeature::kFontSynthesisStyle},
          {CSSSampleId::kFontSynthesisWeight,
           WebDXFeature::kFontSynthesisWeight},
          {CSSSampleId::kFontSynthesis, WebDXFeature::kFontSynthesis},
          {CSSSampleId::kFontVariantAlternates,
           WebDXFeature::kFontVariantAlternates},
          {CSSSampleId::kFontVariantEmoji, WebDXFeature::kFontVariantEmoji},
          {CSSSampleId::kHyphens, WebDXFeature::kHyphens},
          {CSSSampleId::kScrollbarColor, WebDXFeature::kScrollbarColor},
          {CSSSampleId::kScrollbarGutter, WebDXFeature::kScrollbarGutter},
          {CSSSampleId::kScrollbarWidth, WebDXFeature::kScrollbarWidth},
          {CSSSampleId::kScrollSnapType, WebDXFeature::kScrollSnap},
          {CSSSampleId::kScrollInitialTarget,
           WebDXFeature::kScrollInitialTarget},
          {CSSSampleId::kTextBox, WebDXFeature::kTextBox},
          {CSSSampleId::kTextBoxEdge, WebDXFeature::kTextBox},
          {CSSSampleId::kTextBoxTrim, WebDXFeature::kTextBox},
          {CSSSampleId::kTextIndent, WebDXFeature::kTextIndent},
          {CSSSampleId::kTextSpacingTrim, WebDXFeature::kTextSpacingTrim},
          {CSSSampleId::kTextUnderlineOffset,
           WebDXFeature::kTextUnderlineOffset},
          {CSSSampleId::kTransitionBehavior, WebDXFeature::kTransitionBehavior},
          {CSSSampleId::kTranslate, WebDXFeature::kIndividualTransforms},
          {CSSSampleId::kRotate, WebDXFeature::kIndividualTransforms},
          {CSSSampleId::kScale, WebDXFeature::kIndividualTransforms},
          {CSSSampleId::kWillChange, WebDXFeature::kWillChange},
          {CSSSampleId::kMaskImage, WebDXFeature::kMasks},
          {CSSSampleId::kMaskClip, WebDXFeature::kMasks},
          {CSSSampleId::kMaskSize, WebDXFeature::kMasks},
          {CSSSampleId::kMaskOrigin, WebDXFeature::kMasks},
          {CSSSampleId::kMaskRepeat, WebDXFeature::kMasks},
          {CSSSampleId::kMaskComposite, WebDXFeature::kMasks},
          {CSSSampleId::kMaskPosition, WebDXFeature::kMasks},
          {CSSSampleId::kMaskMode, WebDXFeature::kMasks},
          {CSSSampleId::kMask, WebDXFeature::kMasks},
          {CSSSampleId::kPaintOrder, WebDXFeature::kPaintOrder},
          {CSSSampleId::kBackgroundClip, WebDXFeature::kBackgroundClipText},
          {CSSSampleId::kContainIntrinsicInlineSize,
           WebDXFeature::kContainInlineSize},
          {CSSSampleId::kOverlay, WebDXFeature::kOverlay},
          {CSSSampleId::kContentVisibility, WebDXFeature::kContentVisibility},
          {CSSSampleId::kCounterSet, WebDXFeature::kCounterSet},
          {CSSSampleId::kObjectViewBox, WebDXFeature::kObjectViewBox},
          {CSSSampleId::kForcedColorAdjust, WebDXFeature::kForcedColors},
          {CSSSampleId::kWhiteSpaceCollapse, WebDXFeature::kWhiteSpaceCollapse},
          {CSSSampleId::kImageOrientation, WebDXFeature::kImageOrientation},
          // https://drafts.csswg.org/css-logical-1/
          {CSSSampleId::kBlockSize, logical_properties},
          {CSSSampleId::kInlineSize, logical_properties},
          {CSSSampleId::kMinBlockSize, logical_properties},
          {CSSSampleId::kMaxBlockSize, logical_properties},
          {CSSSampleId::kMinInlineSize, logical_properties},
          {CSSSampleId::kMaxInlineSize, logical_properties},
          {CSSSampleId::kMarginBlockStart, logical_properties},
          {CSSSampleId::kMarginBlockEnd, logical_properties},
          {CSSSampleId::kMarginInlineStart, logical_properties},
          {CSSSampleId::kMarginInlineEnd, logical_properties},
          {CSSSampleId::kInsetBlockStart, logical_properties},
          {CSSSampleId::kInsetBlockEnd, logical_properties},
          {CSSSampleId::kInsetInlineStart, logical_properties},
          {CSSSampleId::kInsetInlineEnd, logical_properties},
          {CSSSampleId::kPaddingBlockStart, logical_properties},
          {CSSSampleId::kPaddingBlockEnd, logical_properties},
          {CSSSampleId::kPaddingInlineStart, logical_properties},
          {CSSSampleId::kPaddingInlineEnd, logical_properties},
          {CSSSampleId::kBorderBlockStartWidth, logical_properties},
          {CSSSampleId::kBorderBlockEndWidth, logical_properties},
          {CSSSampleId::kBorderInlineStartWidth, logical_properties},
          {CSSSampleId::kBorderInlineEndWidth, logical_properties},
          {CSSSampleId::kBorderBlockStartStyle, logical_properties},
          {CSSSampleId::kBorderBlockEndStyle, logical_properties},
          {CSSSampleId::kBorderInlineStartStyle, logical_properties},
          {CSSSampleId::kBorderInlineEndStyle, logical_properties},
          {CSSSampleId::kBorderBlockStartColor, logical_properties},
          {CSSSampleId::kBorderBlockEndColor, logical_properties},
          {CSSSampleId::kBorderInlineStartColor, logical_properties},
          {CSSSampleId::kBorderInlineEndColor, logical_properties},
          {CSSSampleId::kBorderStartStartRadius, logical_properties},
          {CSSSampleId::kBorderEndEndRadius, logical_properties},
          {CSSSampleId::kBorderStartEndRadius, logical_properties},
          {CSSSampleId::kBorderEndStartRadius, logical_properties},
          {CSSSampleId::kFontVariantPosition,
           WebDXFeature::kFontVariantPosition},
          {CSSSampleId::kTextEmphasis, WebDXFeature::kTextEmphasis},
          {CSSSampleId::kTextWrap, WebDXFeature::kTextWrap},
          {CSSSampleId::kTextWrapStyle, WebDXFeature::kTextWrapStyle},
          {CSSSampleId::kOffsetPath, WebDXFeature::kMotionPath},
          {CSSSampleId::kOutline, WebDXFeature::kOutline},
          {CSSSampleId::kTransformBox, WebDXFeature::kTransformBox},
          {CSSSampleId::kRubyAlign, WebDXFeature::kRubyAlign},
          {CSSSampleId::kRubyPosition, WebDXFeature::kRubyPosition},
          {CSSSampleId::kInitialLetter, WebDXFeature::kInitialLetter},
          {CSSSampleId::kHyphenateCharacter, WebDXFeature::kHyphenateCharacter},
          {CSSSampleId::kHyphenateLimitChars,
           WebDXFeature::kHyphenateLimitChars},
          {CSSSampleId::kQuotes, WebDXFeature::kQuotes},
          {CSSSampleId::kBaselineSource, WebDXFeature::kBaselineSource},
          {CSSSampleId::kClipPath, WebDXFeature::kClipPath},
          {CSSSampleId::kBoxDecorationBreak, WebDXFeature::kBoxDecorationBreak},
          {CSSSampleId::kPageOrientation, WebDXFeature::kPageOrientation},
          {CSSSampleId::kScrollTimeline, WebDXFeature::kScrollDrivenAnimations},
          {CSSSampleId::kScrollTimelineName,
           WebDXFeature::kScrollDrivenAnimations},
          {CSSSampleId::kViewTimeline, WebDXFeature::kScrollDrivenAnimations},
          {CSSSampleId::kViewTimelineName,
           WebDXFeature::kScrollDrivenAnimations},
          {CSSSampleId::kInterpolateSize, WebDXFeature::kInterpolateSize},
          {CSSSampleId::kViewTransitionClass,
           WebDXFeature::kViewTransitionClass},
          {CSSSampleId::kScrollMarkerGroup, WebDXFeature::kScrollMarkers},
          {CSSSampleId::kInteractivity, WebDXFeature::kInteractivity},
          {CSSSampleId::kReadingFlow, WebDXFeature::kReadingFlow},
          {CSSSampleId::kPrintColorAdjust, WebDXFeature::kPrintColorAdjust},
          {CSSSampleId::kLineBreak, WebDXFeature::kLineBreak},
          // Add new features above this line.
      }};

  return *kMap;
}

const base::flat_map<blink::mojom::CSSSampleId, blink::mojom::WebDXFeature>&
UseCounterMetricsRecorder::GetAnimatedCSSProperties2WebDXFeatureMap() {
  static const base::NoDestructor<
      const base::flat_map<CSSSampleId, WebDXFeature>>
      kMap{{
          // TODO(jstenback): This animated kFontPalette is being investigated.
          // Uncomment this once that's resolved, or replace this with something
          // else that matches the resolution of the investigation
          // {CSSSampleId::kFontPalette, WebDXFeature::kFontPaletteAnimation}
          {CSSSampleId::kDisplay, WebDXFeature::kDisplayAnimation},
          // Add new features above this line.
      }};

  return *kMap;
}