[CMake] Add ENABLE_RESOURCE_LOAD_STATISTICS to WebKitFeatures.cmake
[WebKit-https.git] / Tools / Scripts / webkitperl / FeatureList.pm
1 # Copyright (C) 2012 Google Inc. All rights reserved.
2 #
3 # Redistribution and use in source and binary forms, with or without
4 # modification, are permitted provided that the following conditions are
5 # met:
6 #
7 # 1.  Redistributions of source code must retain the above copyright
8 #     notice, this list of conditions and the following disclaimer.
9 # 2.  Redistributions in binary form must reproduce the above copyright
10 #     notice, this list of conditions and the following disclaimer in the
11 #     documentation and/or other materials provided with the distribution.
12 #
13 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
14 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
15 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
16 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
17 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
18 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
19 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
20 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
21 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24
25 # A module to contain all the enable/disable feature option code.
26 #
27 # For CMake ports, this module only affects development builds. The
28 # settings in this file have ZERO EFFECT for end users. Use
29 # WebKitFeatures.cmake to change settings for users. Guidelines:
30 #
31 # * A feature enabled here but not WebKitFeatures.cmake is EXPERIMENTAL.
32 # * A feature enabled in WebKitFeatures.cmake but not here is a BUG.
33
34 use strict;
35 use warnings;
36
37 use FindBin;
38 use lib $FindBin::Bin;
39 use webkitdirs;
40
41 BEGIN {
42    use Exporter   ();
43    our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
44    $VERSION     = 1.00;
45    @ISA         = qw(Exporter);
46    @EXPORT      = qw(&getFeatureOptionList);
47    %EXPORT_TAGS = ( );
48    @EXPORT_OK   = ();
49 }
50
51 my (
52     $accelerated2DCanvasSupport,
53     $acceleratedOverflowScrollingSupport,
54     $applePaySessionV3Support,
55     $applePaySessionV4Support,
56     $applePaySupport,
57     $applicationManifestSupport,
58     $asyncScrollingSupport,
59     $attachmentElementSupport,
60     $avfCaptionsSupport,
61     $bubblewrapSandboxSupport,
62     $cachePartitioningSupport,
63     $channelMessagingSupport,
64     $contentFilteringSupport,
65     $contextMenusSupport,
66     $css3TextSupport,
67     $cssBoxDecorationBreakSupport,
68     $cssCompositingSupport,
69     $cssConicGradientsSupport,
70     $cssDeviceAdaptationSupport,
71     $cssImageOrientationSupport,
72     $cssImageResolutionSupport,
73     $cssPaintingAPISupport,
74     $cssScrollSnapSupport,
75     $cssSelectorsLevel4Support,
76     $cssTrailingWordSupport,
77     $cursorVisibilitySupport,
78     $customSchemeHandlerSupport,
79     $darkModeCSSSupport,
80     $dashboardSupportSupport,
81     $dataInteractionSupport,
82     $datacueValueSupport,
83     $datalistElementSupport,
84     $deviceOrientationSupport,
85     $dfgJITSupport,
86     $downloadAttributeSupport,
87     $dragSupportSupport,
88     $encryptedMediaSupport,
89     $fastJITPermissionsSupport,
90     $fetchAPISupport,
91     $filtersLevel2Support,
92     $ftlJITSupport,
93     $ftpDirSupport,
94     $fullscreenAPISupport,
95     $gamepadSupport,
96     $geolocationSupport,
97     $gstreamerGLSupport,
98     $icondatabaseSupport,
99     $indexedDatabaseInWorkersSupport,
100     $indexedDatabaseSupport,
101     $inputTypeColorSupport,
102     $inputTypeDateSupport,
103     $inputTypeDatetimeSupport,
104     $inputTypeDatetimelocalSupport,
105     $inputTypeMonthSupport,
106     $inputTypeTimeSupport,
107     $inputTypeWeekSupport,
108     $inspectorAlternateDispatchersSupport,
109     $intersectionObserverSupport,
110     $intlSupport,
111     $iosGestureEventsSupport,
112     $iosTouchEventsSupport,
113     $jitSupport,
114     $keyboardCodeAttributeSupport,
115     $keyboardKeyAttributeSupport,
116     $layoutFormattingContextSupport,
117     $legacyCSSVendorPrefixesSupport,
118     $legacyCustomProtocolManagerSupport,
119     $legacyEncryptedMediaSupport,
120     $letterpressSupport,
121     $macGestureEventsSupport,
122     $mathmlSupport,
123     $mediaCaptureSupport,
124     $mediaControlsScriptSupport,
125     $mediaSessionSupport,
126     $mediaSourceSupport,
127     $mediaStatisticsSupport,
128     $mediaStreamSupport,
129     $memorySamplerSupport,
130     $meterElementSupport,
131     $mhtmlSupport,
132     $mouseCursorScaleSupport,
133     $netscapePluginAPISupport,
134     $notificationsSupport,
135     $orientationEventsSupport,
136     $paymentRequestSupport,
137     $pdfkitPluginSupport,
138     $pointerLockSupport,
139     $publicSuffixListSupport,
140     $quotaSupport,
141     $registerProtocolHandlerSupport,
142     $remoteInspectorSupport,
143     $resolutionMediaQuerySupport,
144     $resourceLoadStatisticsSupport,
145     $resourceUsageSupport,
146     $rubberBandingSupport,
147     $samplingProfilerSupport,
148     $serviceControlsSupport,
149     $serviceWorkerSupport,
150     $smoothScrollingSupport,
151     $speechSynthesisSupport,
152     $spellcheckSupport,
153     $streamsAPISupport,
154     $svgFontsSupport,
155     $systemMallocSupport,
156     $telephoneNumberDetectionSupport,
157     $textAutosizingSupport,
158     $threeDTransformsSupport,
159     $touchEventsSupport,
160     $touchSliderSupport,
161     $userMessageHandlersSupport,
162     $userselectAllSupport,
163     $variationFontsSupport,
164     $videoPresentationModeSupport,
165     $videoSupport,
166     $videoTrackSupport,
167     $videoUsesElementFullscreenSupport,
168     $webAssemblySupport,
169     $webAudioSupport,
170     $webAuthNSupport,
171     $webCryptoSupport,
172     $webRTCSupport,
173     $webassemblyStreamingAPISupport,
174     $webdriverSupport,
175     $webgl2Support,
176     $webglSupport,
177     $webgpuSupport,
178     $webmetalSupport,
179     $wirelessPlaybackTargetSupport,
180     $xsltSupport,
181 );
182
183 prohibitUnknownPort();
184
185 my @features = (
186     { option => "3d-rendering", desc => "Toggle 3D Rendering support",
187       define => "ENABLE_3D_TRANSFORMS", value => \$threeDTransformsSupport },
188
189     { option => "accelerated-2d-canvas", desc => "Toggle Accelerated 2D Canvas support",
190       define => "ENABLE_ACCELERATED_2D_CANVAS", value => \$accelerated2DCanvasSupport },
191
192     { option => "accelerated-overflow-scrolling", desc => "Toggle accelerated scrolling support",
193       define => "ENABLE_ACCELERATED_OVERFLOW_SCROLLING", value => \$acceleratedOverflowScrollingSupport },
194
195     { option => "apple-pay", desc => "Toggle Apply Pay support",
196       define => "ENABLE_APPLE_PAY", value => \$applePaySupport },
197
198     { option => "apple-pay-session-v3", desc => "Toggle Apple Pay Session V3 support",
199       define => "ENABLE_APPLE_PAY_SESSION_V3", value => \$applePaySessionV3Support },
200
201     { option => "apple-pay-session-v4", desc => "Toggle Apple Pay Session V4 support",
202       define => "ENABLE_APPLE_PAY_SESSION_V4", value => \$applePaySessionV4Support },
203
204     { option => "application-manifest", desc => "Toggle Application Manifest support",
205       define => "ENABLE_APPLICATION_MANIFEST", value => \$applicationManifestSupport },
206
207     { option => "async-scrolling", desc => "Enable asynchronous scrolling",
208       define => "ENABLE_ASYNC_SCROLLING", value => \$asyncScrollingSupport },
209
210     { option => "attachment-element", desc => "Toggle Attachment Element support",
211       define => "ENABLE_ATTACHMENT_ELEMENT", value => \$attachmentElementSupport },
212
213     { option => "avf-captions", desc => "Toggle AVFoundation caption support",
214       define => "ENABLE_AVF_CAPTIONS", value => \$avfCaptionsSupport },
215
216     { option => "bubblewrap-sandbox", desc => "Toggle Bubblewrap sandboxing support",
217       define => "ENABLE_BUBBLEWRAP_SANDBOX", value => \$bubblewrapSandboxSupport },
218
219     { option => "cache-partitioning", desc => "Toggle cache partitioning support",
220       define => "ENABLE_CACHE_PARTITIONING", value => \$cachePartitioningSupport },
221
222     { option => "channel-messaging", desc => "Toggle Channel Messaging support",
223       define => "ENABLE_CHANNEL_MESSAGING", value => \$channelMessagingSupport },
224
225     { option => "content-filtering", desc => "Toggle content filtering support",
226       define => "ENABLE_CONTENT_FILTERING", value => \$contentFilteringSupport },
227
228     { option => "context-menus", desc => "Toggle Context Menu support",
229       define => "ENABLE_CONTEXT_MENUS", value => \$contextMenusSupport },
230
231     { option => "css3-text", desc => "Toggle CSS3 Text support",
232       define => "ENABLE_CSS3_TEXT", value => \$css3TextSupport },
233
234     { option => "css-box-decoration-break", desc => "Toggle CSS box-decoration-break support",
235       define => "ENABLE_CSS_BOX_DECORATION_BREAK", value => \$cssBoxDecorationBreakSupport },
236
237     { option => "css-compositing", desc => "Toggle CSS Compositing support",
238       define => "ENABLE_CSS_COMPOSITING", value => \$cssCompositingSupport },
239
240     { option => "css-conic-gradients", desc => "Toggle CSS Conic Gradient support",
241       define => "ENABLE_CSS_CONIC_GRADIENTS", value => \$cssConicGradientsSupport },
242
243     { option => "css-device-adaptation", desc => "Toggle CSS Device Adaptation support",
244       define => "ENABLE_CSS_DEVICE_ADAPTATION", value => \$cssDeviceAdaptationSupport },
245
246     { option => "css-image-orientation", desc => "Toggle CSS image-orientation support",
247       define => "ENABLE_CSS_IMAGE_ORIENTATION", value => \$cssImageOrientationSupport },
248
249     { option => "css-image-resolution", desc => "Toggle CSS image-resolution support",
250       define => "ENABLE_CSS_IMAGE_RESOLUTION", value => \$cssImageResolutionSupport },
251
252     { option => "css-painting-api", desc => "Toggle CSS Painting API support",
253       define => "ENABLE_CSS_PAINTING_API", value => \$cssPaintingAPISupport },
254
255     { option => "css-scroll-snap", desc => "Toggle CSS snap scroll support",
256       define => "ENABLE_CSS_SCROLL_SNAP", value => \$cssScrollSnapSupport },
257
258     { option => "css-selectors-level4", desc => "Toggle CSS Selectors Level 4 support",
259       define => "ENABLE_CSS_SELECTORS_LEVEL4", value => \$cssSelectorsLevel4Support },
260
261     { option => "css-trailing-word", desc => "Toggle CSS trailing word support",
262       define => "ENABLE_CSS_TRAILING_WORD", value => \$cssTrailingWordSupport },
263
264     { option => "cursor-visibility", desc => "Toggle cursor visibility support",
265       define => "ENABLE_CURSOR_VISIBILITY", value => \$cursorVisibilitySupport },
266
267     { option => "custom-scheme-handler", desc => "Toggle Custom Scheme Handler support",
268       define => "ENABLE_CUSTOM_SCHEME_HANDLER", value => \$customSchemeHandlerSupport },
269
270     { option => "dark-mode-css", desc => "Toggle Dark Mode CSS support",
271       define => "ENABLE_DARK_MODE_CSS", value => \$darkModeCSSSupport },
272
273     { option => "dashboard-support", desc => "Toggle dashboard support",
274       define => "ENABLE_DASHBOARD_SUPPORT", value => \$dashboardSupportSupport },
275
276     { option => "datacue-value", desc => "Toggle datacue value support",
277       define => "ENABLE_DATACUE_VALUE", value => \$datacueValueSupport },
278
279     { option => "datalist-element", desc => "Toggle Datalist Element support",
280       define => "ENABLE_DATALIST_ELEMENT", value => \$datalistElementSupport },
281
282     { option => "data-interaction", desc => "Toggle data interaction support",
283       define => "ENABLE_DATA_INTERACTION", value => \$dataInteractionSupport },
284
285     { option => "device-orientation", desc => "Toggle Device Orientation support",
286       define => "ENABLE_DEVICE_ORIENTATION", value => \$deviceOrientationSupport },
287
288     { option => "dfg-jit", desc => "Toggle data flow graph JIT tier",
289       define => "ENABLE_DFG_JIT", value => \$dfgJITSupport },
290
291     { option => "download-attribute", desc => "Toggle Download Attribute support",
292       define => "ENABLE_DOWNLOAD_ATTRIBUTE", value => \$downloadAttributeSupport },
293
294     { option => "drag-support", desc => "Toggle support of drag actions (including selection of text with mouse)",
295       define => "ENABLE_DRAG_SUPPORT", value => \$dragSupportSupport },
296
297     { option => "encrypted-media", desc => "Toggle EME V3 support",
298       define => "ENABLE_ENCRYPTED_MEDIA", value => \$encryptedMediaSupport },
299
300     { option => "fast-jit-permissions", desc => "Toggle fast JIT permissions support",
301       define => "ENABLE_FAST_JIT_PERMISSIONS", value => \$fastJITPermissionsSupport },
302
303     { option => "fetch-api", desc => "Toggle Fetch API support",
304       define => "ENABLE_FETCH_API", value => \$fetchAPISupport },
305
306     { option => "filters-level-2", desc => "Toggle Filters Module Level 2",
307       define => "ENABLE_FILTERS_LEVEL_2", value => \$filtersLevel2Support },
308
309     { option => "ftl-jit", desc => "Toggle FTL JIT support",
310       define => "ENABLE_FTL_JIT", value => \$ftlJITSupport },
311
312     { option => "ftpdir", desc => "Toggle FTP Directory support",
313       define => "ENABLE_FTPDIR", value => \$ftpDirSupport },
314
315     { option => "fullscreen-api", desc => "Toggle Fullscreen API support",
316       define => "ENABLE_FULLSCREEN_API", value => \$fullscreenAPISupport },
317
318     { option => "gamepad", desc => "Toggle Gamepad support",
319       define => "ENABLE_GAMEPAD", value => \$gamepadSupport },
320
321     { option => "geolocation", desc => "Toggle Geolocation support",
322       define => "ENABLE_GEOLOCATION", value => \$geolocationSupport },
323
324     { option => "icon-database", desc => "Toggle Icondatabase support",
325       define => "ENABLE_ICONDATABASE", value => \$icondatabaseSupport },
326
327     { option => "indexed-database", desc => "Toggle Indexed Database support",
328       define => "ENABLE_INDEXED_DATABASE", value => \$indexedDatabaseSupport },
329
330     { option => "indexed-database-in-workers", desc => "Toggle support for Indexed Database in workers",
331       define => "ENABLE_INDEXED_DATABASE_IN_WORKERS", value => \$indexedDatabaseInWorkersSupport },
332
333     { option => "input-type-color", desc => "Toggle Input Type Color support",
334       define => "ENABLE_INPUT_TYPE_COLOR", value => \$inputTypeColorSupport },
335
336     { option => "input-type-date", desc => "Toggle Input Type Date support",
337       define => "ENABLE_INPUT_TYPE_DATE", value => \$inputTypeDateSupport },
338
339     { option => "input-type-datetimelocal", desc => "Toggle Input Type Datetimelocal support",
340       define => "ENABLE_INPUT_TYPE_DATETIMELOCAL", value => \$inputTypeDatetimelocalSupport },
341
342     { option => "input-type-datetime", desc => "Toggle broken Input Type Datetime support",
343       define => "ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE", value => \$inputTypeDatetimeSupport },
344
345     { option => "input-type-month", desc => "Toggle Input Type Month support",
346       define => "ENABLE_INPUT_TYPE_MONTH", value => \$inputTypeMonthSupport },
347
348     { option => "input-type-time", desc => "Toggle Input Type Time support",
349       define => "ENABLE_INPUT_TYPE_TIME", value => \$inputTypeTimeSupport },
350
351     { option => "input-type-week", desc => "Toggle Input Type Week support",
352       define => "ENABLE_INPUT_TYPE_WEEK", value => \$inputTypeWeekSupport },
353
354     { option => "inspector-alternate-dispatchers", desc => "Toggle inspector alternate dispatchers support",
355       define => "ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS", value => \$inspectorAlternateDispatchersSupport },
356
357     { option => "intersection-observer", desc => "Enable Intersection Observer support",
358       define => "ENABLE_INTERSECTION_OBSERVER", value => \$intersectionObserverSupport },
359
360     { option => "intl", desc => "Toggle Intl support",
361       define => "ENABLE_INTL", value => \$intlSupport },
362
363     { option => "ios-gesture-events", desc => "Toggle iOS gesture events support",
364       define => "ENABLE_IOS_GESTURE_EVENTS", value => \$iosGestureEventsSupport },
365
366     { option => "ios-touch-events", desc => "Toggle iOS touch events support",
367       define => "ENABLE_IOS_TOUCH_EVENTS", value => \$iosTouchEventsSupport },
368
369     { option => "jit", desc => "Enable JustInTime JavaScript support",
370       define => "ENABLE_JIT", value => \$jitSupport },
371
372     { option => "keyboard-code-attribute", desc => "Toggle keyboard code attribute support",
373       define => "ENABLE_KEYBOARD_CODE_ATTRIBUTE", value => \$keyboardCodeAttributeSupport },
374
375     { option => "keyboard-key-attribute", desc => "Toggle keyboard key attribute support",
376       define => "ENABLE_KEYBOARD_KEY_ATTRIBUTE", value => \$keyboardKeyAttributeSupport },
377
378     { option => "layout-formatting-context", desc => "Toggle Layout Formatting Context support",
379       define => "ENABLE_LAYOUT_FORMATTING_CONTEXT", value => \$layoutFormattingContextSupport },
380
381     { option => "legacy-css-vendor-prefixes", desc => "Toggle legacy css vendor prefix support",
382       define => "ENABLE_LEGACY_CSS_VENDOR_PREFIXES", value => \$legacyCSSVendorPrefixesSupport },
383
384     { option => "legacy-custom-protocol-manager", desc => "Toggle legacy protocol manager support",
385       define => "ENABLE_LEGACY_CUSTOM_PROTOCOL_MANAGER", value => \$legacyCustomProtocolManagerSupport },
386
387     { option => "legacy-encrypted-media", desc => "Toggle Legacy EME V2 support",
388       define => "ENABLE_LEGACY_ENCRYPTED_MEDIA", value => \$legacyEncryptedMediaSupport },
389
390     { option => "letterpress", desc => "Toggle letterpress support",
391       define => "ENABLE_LETTERPRESS", value => \$letterpressSupport },
392
393     { option => "mac-gesture-events", desc => "Toggle Mac gesture events support",
394       define => "ENABLE_MAC_GESTURE_EVENTS", value => \$macGestureEventsSupport },
395
396     { option => "mathml", desc => "Toggle MathML support",
397       define => "ENABLE_MATHML", value => \$mathmlSupport },
398
399     { option => "media-capture", desc => "Toggle Media Capture support",
400       define => "ENABLE_MEDIA_CAPTURE", value => \$mediaCaptureSupport },
401
402     { option => "media-controls-script", desc => "Toggle definition of media controls in Javascript",
403       define => "ENABLE_MEDIA_CONTROLS_SCRIPT", value => \$mediaControlsScriptSupport },
404
405     { option => "media-session", desc => "Toggle Media Session support",
406       define => "ENABLE_MEDIA_SESSION", value => \$mediaSessionSupport },
407
408     { option => "media-source", desc => "Toggle Media Source support",
409       define => "ENABLE_MEDIA_SOURCE", value => \$mediaSourceSupport },
410
411     { option => "media-statistics", desc => "Toggle Media Statistics support",
412       define => "ENABLE_MEDIA_STATISTICS", value => \$mediaStatisticsSupport },
413
414     { option => "media-stream", desc => "Toggle Media Stream support",
415       define => "ENABLE_MEDIA_STREAM", value => \$mediaStreamSupport },
416
417     { option => "memory-sampler", desc => "Toggle Memory Sampler support",
418       define => "ENABLE_MEMORY_SAMPLER", value => \$memorySamplerSupport },
419
420     { option => "meter-element", desc => "Toggle Meter Element support",
421       define => "ENABLE_METER_ELEMENT", value => \$meterElementSupport },
422
423     { option => "mhtml", desc => "Toggle MHTML support",
424       define => "ENABLE_MHTML", value => \$mhtmlSupport },
425
426     { option => "mouse-cursor-scale", desc => "Toggle Scaled mouse cursor support",
427       define => "ENABLE_MOUSE_CURSOR_SCALE", value => \$mouseCursorScaleSupport },
428
429     { option => "navigator-content-utils", desc => "Toggle Navigator Content Utils support",
430       define => "ENABLE_NAVIGATOR_CONTENT_UTILS", value => \$registerProtocolHandlerSupport },
431
432     { option => "netscape-plugin-api", desc => "Toggle Netscape Plugin API support",
433       define => "ENABLE_NETSCAPE_PLUGIN_API", value => \$netscapePluginAPISupport },
434
435     { option => "notifications", desc => "Toggle Notifications support",
436       define => "ENABLE_NOTIFICATIONS", value => \$notificationsSupport },
437
438     { option => "orientation-events", desc => "Toggle Orientation Events support",
439       define => "ENABLE_ORIENTATION_EVENTS", value => \$orientationEventsSupport },
440
441     { option => "payment-request", desc => "Toggle Payment Request support",
442       define => "ENABLE_PAYMENT_REQUEST", value => \$paymentRequestSupport },
443
444     { option => "pdfkit-plugin", desc => "Toggle PDFKit plugin support",
445       define => "ENABLE_PDFKIT_PLUGIN", value => \$pdfkitPluginSupport },
446
447     { option => "pointer-lock", desc => "Toggle pointer lock support",
448       define => "ENABLE_POINTER_LOCK", value => \$pointerLockSupport },
449
450     { option => "public-suffix-list", desc => "Toggle public suffix list support",
451       define => "ENABLE_PUBLIC_SUFFIX_LIST", value => \$publicSuffixListSupport },
452
453     { option => "quota", desc => "Toggle Quota support",
454       define => "ENABLE_QUOTA", value => \$quotaSupport },
455
456     { option => "remote-inspector", desc => "Toggle remote inspector support",
457       define => "ENABLE_REMOTE_INSPECTOR", value => \$remoteInspectorSupport },
458
459     { option => "resolution-media-query", desc => "Toggle resolution media query support",
460       define => "ENABLE_RESOLUTION_MEDIA_QUERY", value => \$resolutionMediaQuerySupport },
461
462     { option => "resource-load-statistics", desc => "Toggle resource load statistics support",
463       define => "ENABLE_RESOURCE_LOAD_STATISTICS", value => \$resourceLoadStatisticsSupport },
464
465     { option => "resource-usage", desc => "Toggle resource usage support",
466       define => "ENABLE_RESOURCE_USAGE", value => \$resourceUsageSupport },
467
468     { option => "rubber-banding", desc => "Toggle rubber banding support",
469       define => "ENABLE_RUBBER_BANDING", value => \$rubberBandingSupport },
470
471     { option => "sampling-profiler", desc => "Toggle sampling profiler support",
472       define => "ENABLE_SAMPLING_PROFILER", value => \$samplingProfilerSupport },
473
474     { option => "service-controls", desc => "Toggle service controls support",
475       define => "ENABLE_SERVICE_CONTROLS", value => \$serviceControlsSupport },
476
477     { option => "service-worker", desc => "Toggle Service Worker support",
478       define => "ENABLE_SERVICE_WORKER", value => \$serviceWorkerSupport },
479
480     { option => "smooth-scrolling", desc => "Toggle smooth scrolling",
481       define => "ENABLE_SMOOTH_SCROLLING", value => \$smoothScrollingSupport },
482
483     { option => "speech-synthesis", desc => "Toggle Speech Synthesis API support",
484       define => "ENABLE_SPEECH_SYNTHESIS", value => \$speechSynthesisSupport },
485
486     { option => "spellcheck", desc => "Toggle Spellchecking support (requires Enchant)",
487       define => "ENABLE_SPELLCHECK", value => \$spellcheckSupport },
488
489     { option => "streams-api", desc => "Toggle Streams API support",
490       define => "ENABLE_STREAMS_API", value => \$streamsAPISupport },
491
492     { option => "svg-fonts", desc => "Toggle SVG Fonts support",
493       define => "ENABLE_SVG_FONTS", value => \$svgFontsSupport },
494
495     { option => "telephone-number-detection", desc => "Toggle telephone number detection support",
496       define => "ENABLE_TELEPHONE_NUMBER_DETECTION", value => \$telephoneNumberDetectionSupport },
497
498     { option => "text-autosizing", desc => "Toggle automatic text size adjustment support",
499       define => "ENABLE_TEXT_AUTOSIZING", value => \$textAutosizingSupport },
500
501     { option => "touch-events", desc => "Toggle Touch Events support",
502       define => "ENABLE_TOUCH_EVENTS", value => \$touchEventsSupport },
503
504     { option => "touch-slider", desc => "Toggle Touch Slider support",
505       define => "ENABLE_TOUCH_SLIDER", value => \$touchSliderSupport },
506
507     { option => "userselect-all", desc => "Toggle user-select:all support",
508       define => "ENABLE_USERSELECT_ALL", value => \$userselectAllSupport },
509
510     { option => "user-message-handlers", desc => "Toggle user script message handler support",
511       define => "ENABLE_USER_MESSAGE_HANDLERS", value => \$userMessageHandlersSupport },
512
513     { option => "variation-fonts", desc => "Toggle variation fonts support",
514       define => "ENABLE_VARIATION_FONTS", value => \$variationFontsSupport },
515
516     { option => "video", desc => "Toggle Video support",
517       define => "ENABLE_VIDEO", value => \$videoSupport },
518
519     { option => "video-presentation-mode", desc => "Toggle Video presentation mode support",
520       define => "ENABLE_VIDEO_PRESENTATION_MODE", value => \$videoPresentationModeSupport },
521
522     { option => "video-track", desc => "Toggle Video Track support",
523       define => "ENABLE_VIDEO_TRACK", value => \$videoTrackSupport },
524
525     { option => "video-uses-element-fullscreen", desc => "Toggle video element fullscreen support",
526       define => "ENABLE_VIDEO_USES_ELEMENT_FULLSCREEN", value => \$videoUsesElementFullscreenSupport },
527
528     { option => "webassembly", desc => "Toggle WebAssembly support",
529       define => "ENABLE_WEBASSEMBLY", value => \$webAssemblySupport },
530
531     { option => "webassembly-streaming-api", desc => "Toggle WebAssembly streaming api support.",
532       define => "ENABLE_WEBASSEMBLY_STREAMING_API", value => \$webassemblyStreamingAPISupport },
533
534     { option => "webdriver", desc => "Whether to enable the WebDriver service process",
535       define => "ENABLE_WEBDRIVER", value => \$webdriverSupport },
536
537     { option => "webgl", desc => "Toggle WebGL support",
538       define => "ENABLE_WEBGL", value => \$webglSupport },
539
540     { option => "webgl2", desc => "Toggle WebGL2 support",
541       define => "ENABLE_WEBGL2", value => \$webgl2Support },
542
543     { option => "webgpu", desc => "Toggle WebGPU support",
544       define => "ENABLE_WEBGPU", value => \$webgpuSupport },
545
546     { option => "webmetal", desc => "Toggle WebMetal support",
547       define => "ENABLE_WEBMETAL", value => \$webmetalSupport },
548
549     { option => "web-audio", desc => "Toggle Web Audio support",
550       define => "ENABLE_WEB_AUDIO", value => \$webAudioSupport },
551
552     { option => "web-authn", desc => "Toggle Web AuthN support",
553       define => "ENABLE_WEB_AUTHN", value => \$webAuthNSupport },
554
555     { option => "web-crypto", desc => "Toggle WebCrypto Subtle-Crypto support",
556       define => "ENABLE_WEB_CRYPTO", value => \$webCryptoSupport },
557
558     { option => "web-rtc", desc => "Toggle WebRTC support",
559       define => "ENABLE_WEB_RTC", value => \$webRTCSupport },
560
561     { option => "wireless-playback-target", desc => "Enable wireless playback target support",
562       define => "ENABLE_WIRELESS_PLAYBACK_TARGET", value => \$wirelessPlaybackTargetSupport },
563
564     { option => "xslt", desc => "Toggle XSLT support",
565       define => "ENABLE_XSLT", value => \$xsltSupport },
566
567     { option => "gstreamer-gl", desc => "Toggle GStreamer GL support",
568       define => "USE_GSTREAMER_GL", value => \$gstreamerGLSupport },
569
570     { option => "system-malloc", desc => "Toggle system allocator instead of bmalloc",
571       define => "USE_SYSTEM_MALLOC", value => \$systemMallocSupport },
572 );
573
574 sub getFeatureOptionList()
575 {
576     return @features;
577 }
578
579 1;