1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-30 23:08:11 +00:00
serenity/Meta/Lagom/Tools/CodeGenerators/LibWeb
Luke Wilde c0f22065ab LibWeb: Add an extended attribute that makes interfaces use AK::String
Adding the [UseNewAKString] extended attribute to an interface will
cause all IDL string types to use String instead of DeprecatedString.
This is done on an per interface level instead of per type/parameter
because:

- It's much simpler to implement, as the generators can already access
  the interface's extended attributes. Doing it per type/parameter
  would mean parsing and piping extended attributes for each type that
  doesn't already take extended attributes, such as unions.

- Allows more incremental adoption of AK::String. For example, adding
  [UseNewAKString] to BodyInit would require refactoring Request,
  Response and XMLHttpRequest to AK::String in one swoop. Doing it on
  the interface allows you to convert just XHR and its dependencies at
  once, for example.

- Simple string return types (i.e. not parameterised or not in a union)
  already accept any of the string types JS::PrimitiveString::create
  accepts. For example, you can add [UseNewAKString] to DOMStringMap to
  convert Element attributes to AK::String and still return AK::String
  from get_attribute, without adding [UseNewAKString] to Element.

- Adding [UseNewAKString] to one function typically means adding it to
  a bunch of other functions, if not the rest of them. For example,
  adding [UseNewAKString] to the parameters FormData.append would
  either mean converting AK::String to AK::DeprecatedString or storing
  the AK::String as-is, making the other functions of FormData have to
  convert back from AK::String or also support AK::String.
2023-02-18 01:23:36 +01:00
..
BindingsGenerator LibWeb: Add an extended attribute that makes interfaces use AK::String 2023-02-18 01:23:36 +01:00
CMakeLists.txt LibWeb: Add new code generator for creating exposed interface helpers 2022-10-09 10:14:57 +02:00
GenerateCSSEnums.cpp LibCore: Move Stream-based file into the Core namespace 2023-02-13 00:50:07 +00:00
GenerateCSSMediaFeatureID.cpp LibCore: Move Stream-based file into the Core namespace 2023-02-13 00:50:07 +00:00
GenerateCSSPropertyID.cpp LibCore: Move Stream-based file into the Core namespace 2023-02-13 00:50:07 +00:00
GenerateCSSTransformFunctions.cpp LibCore: Move Stream-based file into the Core namespace 2023-02-13 00:50:07 +00:00
GenerateCSSValueID.cpp LibCore: Move Stream-based file into the Core namespace 2023-02-13 00:50:07 +00:00
GenerateWindowOrWorkerInterfaces.cpp LibCore: Remove Stream.h 2023-02-13 00:50:07 +00:00
GeneratorUtil.h LibCore: Remove Stream.h 2023-02-13 00:50:07 +00:00