diff --git a/Libraries/LibWeb/EncryptedMediaExtensions/EncryptedMediaExtensions.h b/Libraries/LibWeb/EncryptedMediaExtensions/EncryptedMediaExtensions.h index c3b5f4cb954..b3b300f4500 100644 --- a/Libraries/LibWeb/EncryptedMediaExtensions/EncryptedMediaExtensions.h +++ b/Libraries/LibWeb/EncryptedMediaExtensions/EncryptedMediaExtensions.h @@ -6,10 +6,12 @@ #pragma once +#include + namespace Web::Bindings { // https://w3c.github.io/encrypted-media/#dom-mediakeysrequirement -enum class MediaKeysRequirement { +enum class MediaKeysRequirement : u8 { Required, Optional, NotAllowed diff --git a/Libraries/LibWeb/Forward.h b/Libraries/LibWeb/Forward.h index e1e665bd470..a3546223bf7 100644 --- a/Libraries/LibWeb/Forward.h +++ b/Libraries/LibWeb/Forward.h @@ -59,33 +59,33 @@ namespace Web::Bindings { class Intrinsics; class OptionConstructor; -enum class AudioContextLatencyCategory; -enum class CanPlayTypeResult; -enum class CanvasFillRule; -enum class CanvasTextAlign; -enum class CanvasTextBaseline; -enum class ColorGamut; -enum class DOMParserSupportedType; -enum class EndingType; -enum class HdrMetadataType; -enum class ImageSmoothingQuality; -enum class MediaDecodingType; -enum class MediaEncodingType; -enum class MediaKeysRequirement; -enum class ReadableStreamReaderMode; -enum class ReferrerPolicy; -enum class RequestCache; -enum class RequestCredentials; -enum class RequestDestination; -enum class RequestDuplex; -enum class RequestMode; -enum class RequestPriority; -enum class RequestRedirect; -enum class ResizeObserverBoxOptions; -enum class ResponseType; -enum class TextTrackKind; -enum class TransferFunction; -enum class XMLHttpRequestResponseType; +enum class AudioContextLatencyCategory : u8; +enum class CanPlayTypeResult : u8; +enum class CanvasFillRule : u8; +enum class CanvasTextAlign : u8; +enum class CanvasTextBaseline : u8; +enum class ColorGamut : u8; +enum class DOMParserSupportedType : u8; +enum class EndingType : u8; +enum class HdrMetadataType : u8; +enum class ImageSmoothingQuality : u8; +enum class MediaDecodingType : u8; +enum class MediaEncodingType : u8; +enum class MediaKeysRequirement : u8; +enum class ReadableStreamReaderMode : u8; +enum class ReferrerPolicy : u8; +enum class RequestCache : u8; +enum class RequestCredentials : u8; +enum class RequestDestination : u8; +enum class RequestDuplex : u8; +enum class RequestMode : u8; +enum class RequestPriority : u8; +enum class RequestRedirect : u8; +enum class ResizeObserverBoxOptions : u8; +enum class ResponseType : u8; +enum class TextTrackKind : u8; +enum class TransferFunction : u8; +enum class XMLHttpRequestResponseType : u8; } namespace Web::Clipboard { diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp index 5e049492374..e3a34c670c3 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator/IDLGenerators.cpp @@ -14,6 +14,7 @@ #include "Namespaces.h" #include #include +#include #include #include #include @@ -2856,6 +2857,18 @@ JS::ThrowCompletionOr> @constructor_class@::construct([[mayb } } +static ByteString get_best_value_for_underlying_enum_type(size_t size) +{ + + if (size < NumericLimits::max()) { + return "u8"; + } else if (size < NumericLimits::max()) { + return "u16"; + } + + VERIFY_NOT_REACHED(); +} + static void generate_enumerations(HashMap const& enumerations, StringBuilder& builder) { SourceGenerator generator { builder }; @@ -2865,8 +2878,9 @@ static void generate_enumerations(HashMap const& enumer continue; auto enum_generator = generator.fork(); enum_generator.set("enum.type.name", it.key); + enum_generator.set("enum.underlying_type", get_best_value_for_underlying_enum_type(it.value.translated_cpp_names.size())); enum_generator.append(R"~~~( -enum class @enum.type.name@ { +enum class @enum.type.name@ : @enum.underlying_type@ { )~~~"); for (auto const& entry : it.value.translated_cpp_names) { enum_generator.set("enum.entry", entry.value);