LibWeb: Remove the initialize_strings methods

We added these methods to propagate OOM errors at process startup, but
we longer fret about these tiny OOM failures. Requiring that these init
methods be called prohibits using these strings in processes that have
not set up a MainThreadVM. So let's just remove them and initialize the
strings in a sane manner.

In doing so, this also standardizes how we initialize strings whose C++
variable name differs from their string value. Instead of special-casing
these strings, we just include their string value in the x-macro list.
This commit is contained in:
Timothy Flynn 2025-01-11 14:07:41 -05:00 committed by Jelle Raaijmakers
commit a4324ee6e9
Notes: github-actions[bot] 2025-01-11 23:37:04 +00:00
38 changed files with 710 additions and 1038 deletions

View file

@ -8,27 +8,9 @@
namespace Web::SVG::AttributeNames {
#define __ENUMERATE_SVG_ATTRIBUTE(name) FlyString name;
ENUMERATE_SVG_ATTRIBUTES(__ENUMERATE_SVG_ATTRIBUTE)
#define __ENUMERATE_SVG_ATTRIBUTE(name, attribute) \
FlyString name = attribute##_fly_string;
ENUMERATE_SVG_ATTRIBUTES
#undef __ENUMERATE_SVG_ATTRIBUTE
void initialize_strings()
{
static bool s_initialized = false;
VERIFY(!s_initialized);
#define __ENUMERATE_SVG_ATTRIBUTE(name) \
name = #name##_fly_string;
ENUMERATE_SVG_ATTRIBUTES(__ENUMERATE_SVG_ATTRIBUTE)
#undef __ENUMERATE_SVG_ATTRIBUTE
// NOTE: Special cases for C++ keywords.
class_ = "class"_fly_string;
// NOTE: Special case for attributes with ':' in them.
xlink_href = "xlink:href"_fly_string;
s_initialized = true;
}
}

View file

@ -6,102 +6,99 @@
#pragma once
#include <AK/Error.h>
#include <AK/FlyString.h>
namespace Web::SVG::AttributeNames {
#define ENUMERATE_SVG_ATTRIBUTES(E) \
E(attributeName) \
E(attributeType) \
E(baseFrequency) \
E(baseProfile) \
E(calcMode) \
E(class_) \
E(clipPathUnits) \
E(contentScriptType) \
E(contentStyleType) \
E(cx) \
E(cy) \
E(dx) \
E(dy) \
E(diffuseConstant) \
E(edgeMode) \
E(filterUnits) \
E(fr) \
E(fx) \
E(fy) \
E(glyphRef) \
E(gradientTransform) \
E(gradientUnits) \
E(height) \
E(href) \
E(kernelMatrix) \
E(kernelUnitLength) \
E(keyPoints) \
E(keySplines) \
E(keyTimes) \
E(lengthAdjust) \
E(limitingConeAngle) \
E(markerHeight) \
E(markerUnits) \
E(markerWidth) \
E(maskContentUnits) \
E(maskUnits) \
E(numOctaves) \
E(offset) \
E(opacity) \
E(pathLength) \
E(patternContentUnits) \
E(patternTransform) \
E(patternUnits) \
E(points) \
E(pointsAtX) \
E(pointsAtY) \
E(pointsAtZ) \
E(preserveAlpha) \
E(preserveAspectRatio) \
E(primitiveUnits) \
E(r) \
E(refX) \
E(refY) \
E(repeatCount) \
E(repeatDur) \
E(requiredExtensions) \
E(requiredFeatures) \
E(rx) \
E(ry) \
E(specularConstant) \
E(specularExponent) \
E(spreadMethod) \
E(startOffset) \
E(stdDeviation) \
E(stitchTiles) \
E(surfaceScale) \
E(systemLanguage) \
E(tableValues) \
E(targetX) \
E(targetY) \
E(textLength) \
E(version) \
E(viewBox) \
E(viewTarget) \
E(width) \
E(x) \
E(x1) \
E(x2) \
E(xChannelSelector) \
E(xlink_href) \
E(y) \
E(y1) \
E(y2) \
E(yChannelSelector) \
E(zoomAndPan)
#define ENUMERATE_SVG_ATTRIBUTES \
__ENUMERATE_SVG_ATTRIBUTE(attributeName, "attributeName") \
__ENUMERATE_SVG_ATTRIBUTE(attributeType, "attributeType") \
__ENUMERATE_SVG_ATTRIBUTE(baseFrequency, "baseFrequency") \
__ENUMERATE_SVG_ATTRIBUTE(baseProfile, "baseProfile") \
__ENUMERATE_SVG_ATTRIBUTE(calcMode, "calcMode") \
__ENUMERATE_SVG_ATTRIBUTE(class_, "class") \
__ENUMERATE_SVG_ATTRIBUTE(clipPathUnits, "clipPathUnits") \
__ENUMERATE_SVG_ATTRIBUTE(contentScriptType, "contentScriptType") \
__ENUMERATE_SVG_ATTRIBUTE(contentStyleType, "contentStyleType") \
__ENUMERATE_SVG_ATTRIBUTE(cx, "cx") \
__ENUMERATE_SVG_ATTRIBUTE(cy, "cy") \
__ENUMERATE_SVG_ATTRIBUTE(diffuseConstant, "diffuseConstant") \
__ENUMERATE_SVG_ATTRIBUTE(dx, "dx") \
__ENUMERATE_SVG_ATTRIBUTE(dy, "dy") \
__ENUMERATE_SVG_ATTRIBUTE(edgeMode, "edgeMode") \
__ENUMERATE_SVG_ATTRIBUTE(filterUnits, "filterUnits") \
__ENUMERATE_SVG_ATTRIBUTE(fr, "fr") \
__ENUMERATE_SVG_ATTRIBUTE(fx, "fx") \
__ENUMERATE_SVG_ATTRIBUTE(fy, "fy") \
__ENUMERATE_SVG_ATTRIBUTE(glyphRef, "glyphRef") \
__ENUMERATE_SVG_ATTRIBUTE(gradientTransform, "gradientTransform") \
__ENUMERATE_SVG_ATTRIBUTE(gradientUnits, "gradientUnits") \
__ENUMERATE_SVG_ATTRIBUTE(height, "height") \
__ENUMERATE_SVG_ATTRIBUTE(href, "href") \
__ENUMERATE_SVG_ATTRIBUTE(kernelMatrix, "kernelMatrix") \
__ENUMERATE_SVG_ATTRIBUTE(kernelUnitLength, "kernelUnitLength") \
__ENUMERATE_SVG_ATTRIBUTE(keyPoints, "keyPoints") \
__ENUMERATE_SVG_ATTRIBUTE(keySplines, "keySplines") \
__ENUMERATE_SVG_ATTRIBUTE(keyTimes, "keyTimes") \
__ENUMERATE_SVG_ATTRIBUTE(lengthAdjust, "lengthAdjust") \
__ENUMERATE_SVG_ATTRIBUTE(limitingConeAngle, "limitingConeAngle") \
__ENUMERATE_SVG_ATTRIBUTE(markerHeight, "markerHeight") \
__ENUMERATE_SVG_ATTRIBUTE(markerUnits, "markerUnits") \
__ENUMERATE_SVG_ATTRIBUTE(markerWidth, "markerWidth") \
__ENUMERATE_SVG_ATTRIBUTE(maskContentUnits, "maskContentUnits") \
__ENUMERATE_SVG_ATTRIBUTE(maskUnits, "maskUnits") \
__ENUMERATE_SVG_ATTRIBUTE(numOctaves, "numOctaves") \
__ENUMERATE_SVG_ATTRIBUTE(offset, "offset") \
__ENUMERATE_SVG_ATTRIBUTE(opacity, "opacity") \
__ENUMERATE_SVG_ATTRIBUTE(pathLength, "pathLength") \
__ENUMERATE_SVG_ATTRIBUTE(patternContentUnits, "patternContentUnits") \
__ENUMERATE_SVG_ATTRIBUTE(patternTransform, "patternTransform") \
__ENUMERATE_SVG_ATTRIBUTE(patternUnits, "patternUnits") \
__ENUMERATE_SVG_ATTRIBUTE(points, "points") \
__ENUMERATE_SVG_ATTRIBUTE(pointsAtX, "pointsAtX") \
__ENUMERATE_SVG_ATTRIBUTE(pointsAtY, "pointsAtY") \
__ENUMERATE_SVG_ATTRIBUTE(pointsAtZ, "pointsAtZ") \
__ENUMERATE_SVG_ATTRIBUTE(preserveAlpha, "preserveAlpha") \
__ENUMERATE_SVG_ATTRIBUTE(preserveAspectRatio, "preserveAspectRatio") \
__ENUMERATE_SVG_ATTRIBUTE(primitiveUnits, "primitiveUnits") \
__ENUMERATE_SVG_ATTRIBUTE(r, "r") \
__ENUMERATE_SVG_ATTRIBUTE(refX, "refX") \
__ENUMERATE_SVG_ATTRIBUTE(refY, "refY") \
__ENUMERATE_SVG_ATTRIBUTE(repeatCount, "repeatCount") \
__ENUMERATE_SVG_ATTRIBUTE(repeatDur, "repeatDur") \
__ENUMERATE_SVG_ATTRIBUTE(requiredExtensions, "requiredExtensions") \
__ENUMERATE_SVG_ATTRIBUTE(requiredFeatures, "requiredFeatures") \
__ENUMERATE_SVG_ATTRIBUTE(rx, "rx") \
__ENUMERATE_SVG_ATTRIBUTE(ry, "ry") \
__ENUMERATE_SVG_ATTRIBUTE(specularConstant, "specularConstant") \
__ENUMERATE_SVG_ATTRIBUTE(specularExponent, "specularExponent") \
__ENUMERATE_SVG_ATTRIBUTE(spreadMethod, "spreadMethod") \
__ENUMERATE_SVG_ATTRIBUTE(startOffset, "startOffset") \
__ENUMERATE_SVG_ATTRIBUTE(stdDeviation, "stdDeviation") \
__ENUMERATE_SVG_ATTRIBUTE(stitchTiles, "stitchTiles") \
__ENUMERATE_SVG_ATTRIBUTE(surfaceScale, "surfaceScale") \
__ENUMERATE_SVG_ATTRIBUTE(systemLanguage, "systemLanguage") \
__ENUMERATE_SVG_ATTRIBUTE(tableValues, "tableValues") \
__ENUMERATE_SVG_ATTRIBUTE(targetX, "targetX") \
__ENUMERATE_SVG_ATTRIBUTE(targetY, "targetY") \
__ENUMERATE_SVG_ATTRIBUTE(textLength, "textLength") \
__ENUMERATE_SVG_ATTRIBUTE(version, "version") \
__ENUMERATE_SVG_ATTRIBUTE(viewBox, "viewBox") \
__ENUMERATE_SVG_ATTRIBUTE(viewTarget, "viewTarget") \
__ENUMERATE_SVG_ATTRIBUTE(width, "width") \
__ENUMERATE_SVG_ATTRIBUTE(x, "x") \
__ENUMERATE_SVG_ATTRIBUTE(x1, "x1") \
__ENUMERATE_SVG_ATTRIBUTE(x2, "x2") \
__ENUMERATE_SVG_ATTRIBUTE(xChannelSelector, "xChannelSelector") \
__ENUMERATE_SVG_ATTRIBUTE(xlink_href, "xlink:href") \
__ENUMERATE_SVG_ATTRIBUTE(y, "y") \
__ENUMERATE_SVG_ATTRIBUTE(y1, "y1") \
__ENUMERATE_SVG_ATTRIBUTE(y2, "y2") \
__ENUMERATE_SVG_ATTRIBUTE(yChannelSelector, "yChannelSelector") \
__ENUMERATE_SVG_ATTRIBUTE(zoomAndPan, "zoomAndPan")
#define __ENUMERATE_SVG_ATTRIBUTE(name) extern FlyString name;
ENUMERATE_SVG_ATTRIBUTES(__ENUMERATE_SVG_ATTRIBUTE)
#define __ENUMERATE_SVG_ATTRIBUTE(name, attribute) extern FlyString name;
ENUMERATE_SVG_ATTRIBUTES
#undef __ENUMERATE_SVG_ATTRIBUTE
void initialize_strings();
}

View file

@ -8,20 +8,9 @@
namespace Web::SVG::TagNames {
#define __ENUMERATE_SVG_TAG(name) FlyString name;
#define __ENUMERATE_SVG_TAG(name) \
FlyString name = #name##_fly_string;
ENUMERATE_SVG_TAGS
#undef __ENUMERATE_SVG_TAG
void initialize_strings()
{
static bool s_initialized = false;
VERIFY(!s_initialized);
#define __ENUMERATE_SVG_TAG(name) name = #name##_fly_string;
ENUMERATE_SVG_TAGS
#undef __ENUMERATE_SVG_TAG
s_initialized = true;
}
}

View file

@ -6,7 +6,6 @@
#pragma once
#include <AK/Error.h>
#include <AK/FlyString.h>
namespace Web::SVG::TagNames {
@ -48,6 +47,4 @@ namespace Web::SVG::TagNames {
ENUMERATE_SVG_TAGS
#undef __ENUMERATE_SVG_TAG
void initialize_strings();
}