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