Modified: trunk/Source/WebCore/dom/make_names.pl (267587 => 267588)
--- trunk/Source/WebCore/dom/make_names.pl 2020-09-25 19:03:37 UTC (rev 267587)
+++ trunk/Source/WebCore/dom/make_names.pl 2020-09-25 19:49:23 UTC (rev 267588)
@@ -42,8 +42,8 @@
use IO::File;
use InFilesParser;
-sub readTags($$);
-sub readAttrs($$);
+sub readTags($);
+sub readAttrs($);
my $printFactory = 0;
my $printWrapperFactory = 0;
@@ -53,13 +53,10 @@
my $outputDir = ".";
my %parsedTags = ();
my %parsedAttrs = ();
-my %enabledTags = ();
-my %enabledAttrs = ();
my %allTags = ();
my %allAttrs = ();
my %allStrings = ();
my %parameters = ();
-my $extraDefines = 0;
my $initDefaults = 1;
my %extensionAttrs = ();
@@ -74,20 +71,11 @@
$ccLocation = "/usr/bin/cc";
}
-my $preprocessor = "";
-if ($Config::Config{"osname"} eq "MSWin32") {
- $preprocessor = "\"$ccLocation\" /EP";
-} else {
- $preprocessor = $ccLocation . " -E -x c++";
-}
-
GetOptions(
'tags=s' => \$tagsFile,
'attrs=s' => \$attrsFile,
'factory' => \$printFactory,
'outputDir=s' => \$outputDir,
- 'extraDefines=s' => \$extraDefines,
- 'preprocessor=s' => \$preprocessor,
'wrapperFactory' => \$printWrapperFactory,
'fonts=s' => \$fontNamesIn
);
@@ -148,14 +136,12 @@
die "You must specify at least one of --tags <file> or --attrs <file>" unless (length($tagsFile) || length($attrsFile));
if (length($tagsFile)) {
- %allTags = %{readTags($tagsFile, 0)};
- %enabledTags = %{readTags($tagsFile, 1)};
+ %allTags = %{readTags($tagsFile)};
namesToStrings(\%allTags, \%allStrings);
}
if (length($attrsFile)) {
- %allAttrs = %{readAttrs($attrsFile, 0)};
- %enabledAttrs = %{readAttrs($attrsFile, 1)};
+ %allAttrs = %{readAttrs($attrsFile)};
namesToStrings(\%allAttrs, \%allStrings);
}
@@ -307,22 +293,12 @@
## Support routines
-sub preprocessorCommand()
+sub readNames($$$)
{
- return $preprocessor if $extraDefines eq 0;
- return $preprocessor . " -D" . join(" -D", split(" ", $extraDefines));
-}
+ my ($namesFile, $hashToFillRef, $handler) = @_;
-sub readNames($$$$)
-{
- my ($namesFile, $hashToFillRef, $handler, $usePreprocessor) = @_;
-
my $names = new IO::File;
- if ($usePreprocessor) {
- open($names, preprocessorCommand() . " " . $namesFile . "|") or die "Failed to open file: $namesFile";
- } else {
- open($names, $namesFile) or die "Failed to open file: $namesFile";
- }
+ open($names, $namesFile) or die "Failed to open file: $namesFile";
my $InParser = InFilesParser->new();
$InParser->parse($names, \¶metersHandler, $handler);
@@ -332,18 +308,18 @@
return $hashToFillRef;
}
-sub readAttrs($$)
+sub readAttrs($)
{
- my ($namesFile, $usePreprocessor) = @_;
+ my ($namesFile) = @_;
%parsedAttrs = ();
- return readNames($namesFile, \%parsedAttrs, \&attrsHandler, $usePreprocessor);
+ return readNames($namesFile, \%parsedAttrs, \&attrsHandler);
}
-sub readTags($$)
+sub readTags($)
{
- my ($namesFile, $usePreprocessor) = @_;
+ my ($namesFile) = @_;
%parsedTags = ();
- return readNames($namesFile, \%parsedTags, \&tagsHandler, $usePreprocessor);
+ return readNames($namesFile, \%parsedTags, \&tagsHandler);
}
sub printMacros
@@ -366,12 +342,12 @@
sub buildConstructorMap
{
my %tagConstructorMap = ();
- for my $tagName (keys %enabledTags) {
- my $interfaceName = $enabledTags{$tagName}{interfaceName};
+ for my $tagName (keys %allTags) {
+ my $interfaceName = $allTags{$tagName}{interfaceName};
- if ($enabledTags{$tagName}{mapToTagName}) {
- die "Cannot handle multiple mapToTagName for $tagName\n" if $enabledTags{$enabledTags{$tagName}{mapToTagName}}{mapToTagName};
- $interfaceName = $enabledTags{ $enabledTags{$tagName}{mapToTagName} }{interfaceName};
+ if ($allTags{$tagName}{mapToTagName}) {
+ die "Cannot handle multiple mapToTagName for $tagName\n" if $allTags{$allTags{$tagName}{mapToTagName}}{mapToTagName};
+ $interfaceName = $allTags{ $allTags{$tagName}{mapToTagName} }{interfaceName};
}
# Chop the string to keep the interesting part.
@@ -391,10 +367,10 @@
print F "static Ref<$parameters{namespace}Element> ${constructorName}Constructor(const QualifiedName& $constructorTagName, Document& document";
if ($parameters{namespace} eq "HTML") {
print F ", HTMLFormElement*";
- print F " formElement" if $enabledTags{$tagName}{constructorNeedsFormElement};
+ print F " formElement" if $allTags{$tagName}{constructorNeedsFormElement};
}
print F ", bool";
- print F " createdByParser" if $enabledTags{$tagName}{constructorNeedsCreatedByParser};
+ print F " createdByParser" if $allTags{$tagName}{constructorNeedsCreatedByParser};
print F ")\n{\n";
}
@@ -410,7 +386,7 @@
# does not just control the wrapper; it controls the element object that is created.
# FIXME: Could we instead do this entirely in the wrapper, and use custom wrappers
# instead of having all the support for this here in this script?
- if ($enabledTags{$tagName}{wrapperOnlyIfMediaIsAvailable}) {
+ if ($allTags{$tagName}{wrapperOnlyIfMediaIsAvailable}) {
print F <<END
if (!document.settings().mediaEnabled())
return $parameters{fallbackInterfaceName}::create($constructorTagName, document);
@@ -420,8 +396,8 @@
}
my $runtimeCondition;
- my $settingsConditional = $enabledTags{$tagName}{settingsConditional};
- my $runtimeEnabled = $enabledTags{$tagName}{runtimeEnabled};
+ my $settingsConditional = $allTags{$tagName}{settingsConditional};
+ my $runtimeEnabled = $allTags{$tagName}{runtimeEnabled};
if ($settingsConditional) {
$runtimeCondition = "document.settings().${settingsConditional}()";
} elsif ($runtimeEnabled) {
@@ -438,8 +414,8 @@
# Call the constructor with the right parameters.
print F " return ${interfaceName}::create($constructorTagName, document";
- print F ", formElement" if $enabledTags{$tagName}{constructorNeedsFormElement};
- print F ", createdByParser" if $enabledTags{$tagName}{constructorNeedsCreatedByParser};
+ print F ", formElement" if $allTags{$tagName}{constructorNeedsFormElement};
+ print F ", createdByParser" if $allTags{$tagName}{constructorNeedsCreatedByParser};
print F ");\n}\n";
}
@@ -451,19 +427,19 @@
# This is to avoid generating the same constructor several times.
my %uniqueTags = ();
for my $tagName (sort keys %tagConstructorMap) {
- my $interfaceName = $enabledTags{$tagName}{interfaceName};
+ my $interfaceName = $allTags{$tagName}{interfaceName};
# Ignore the mapped tag
# FIXME: It could be moved inside this loop but was split for readibility.
- next if (defined($uniqueTags{$interfaceName}) || $enabledTags{$tagName}{mapToTagName});
+ next if (defined($uniqueTags{$interfaceName}) || $allTags{$tagName}{mapToTagName});
# Tags can have wrappers without constructors.
# This is useful to make user-agent shadow elements internally testable
# while keeping them from being avaialble in the HTML markup.
- next if $enabledTags{$tagName}{noConstructor};
+ next if $allTags{$tagName}{noConstructor};
$uniqueTags{$interfaceName} = '1';
- my $conditional = $enabledTags{$tagName}{conditional};
+ my $conditional = $allTags{$tagName}{conditional};
if ($conditional) {
my $conditionalString = "ENABLE(" . join(") && ENABLE(", split(/&/, $conditional)) . ")";
print F "#if ${conditionalString}\n";
@@ -481,10 +457,10 @@
# Mapped tag name uses a special wrapper to keep their prefix and namespaceURI while using the mapped localname.
for my $tagName (sort keys %tagConstructorMap) {
- if ($enabledTags{$tagName}{mapToTagName}) {
- my $mappedName = $enabledTags{$tagName}{mapToTagName};
+ if ($allTags{$tagName}{mapToTagName}) {
+ my $mappedName = $allTags{$tagName}{mapToTagName};
printConstructorSignature($F, $mappedName, $mappedName . "To" . $tagName, "tagName");
- printConstructorInterior($F, $mappedName, $enabledTags{$mappedName}{interfaceName}, "QualifiedName(tagName.prefix(), ${mappedName}Tag->localName(), tagName.namespaceURI())");
+ printConstructorInterior($F, $mappedName, $allTags{$mappedName}{interfaceName}, "QualifiedName(tagName.prefix(), ${mappedName}Tag->localName(), tagName.namespaceURI())");
}
}
}
@@ -495,16 +471,16 @@
my %tagConstructorMap = %$tagConstructorMap;
for my $tagName (sort keys %tagConstructorMap) {
- next if $enabledTags{$tagName}{noConstructor};
+ next if $allTags{$tagName}{noConstructor};
- my $conditional = $enabledTags{$tagName}{conditional};
+ my $conditional = $allTags{$tagName}{conditional};
if ($conditional) {
my $conditionalString = "ENABLE(" . join(") && ENABLE(", split(/&/, $conditional)) . ")";
print F "#if ${conditionalString}\n";
}
- if ($enabledTags{$tagName}{mapToTagName}) {
- print F " { $parameters{namespace}Names::${tagName}Tag, $enabledTags{$tagName}{mapToTagName}To${tagName}Constructor },\n";
+ if ($allTags{$tagName}{mapToTagName}) {
+ print F " { $parameters{namespace}Names::${tagName}Tag, $allTags{$tagName}{mapToTagName}To${tagName}Constructor },\n";
} else {
print F " { $parameters{namespace}Names::${tagName}Tag, $tagConstructorMap{$tagName}Constructor },\n";
}
@@ -816,10 +792,10 @@
my $F = shift;
my %tagsSeen;
- for my $tagName (sort keys %enabledTags) {
- my $JSInterfaceName = $enabledTags{$tagName}{JSInterfaceName};
+ for my $tagName (sort keys %allTags) {
+ my $JSInterfaceName = $allTags{$tagName}{JSInterfaceName};
next if defined($tagsSeen{$JSInterfaceName}) || usesDefaultJSWrapper($tagName);
- if ($enabledTags{$tagName}{conditional}) {
+ if ($allTags{$tagName}{conditional}) {
# We skip feature-define-specific #includes here since we handle them separately.
next;
}
@@ -835,10 +811,10 @@
my $F = shift;
my %tagsSeen;
- for my $tagName (sort keys %enabledTags) {
- my $interfaceName = $enabledTags{$tagName}{interfaceName};
+ for my $tagName (sort keys %allTags) {
+ my $interfaceName = $allTags{$tagName}{interfaceName};
next if defined($tagsSeen{$interfaceName});
- if ($enabledTags{$tagName}{conditional}) {
+ if ($allTags{$tagName}{conditional}) {
# We skip feature-define-specific #includes here since we handle them separately.
next;
}
@@ -857,10 +833,10 @@
my %unconditionalElementIncludes;
my %unconditionalJSElementIncludes;
- for my $tagName (keys %enabledTags) {
- my $conditional = $enabledTags{$tagName}{conditional};
- my $interfaceName = $enabledTags{$tagName}{interfaceName};
- my $JSInterfaceName = $enabledTags{$tagName}{JSInterfaceName};
+ for my $tagName (keys %allTags) {
+ my $conditional = $allTags{$tagName}{conditional};
+ my $interfaceName = $allTags{$tagName}{interfaceName};
+ my $JSInterfaceName = $allTags{$tagName}{JSInterfaceName};
if ($conditional) {
$conditionals{$conditional}{interfaceNames}{$interfaceName} = 1;
@@ -1132,7 +1108,7 @@
my $name = shift;
# A tag reuses the default wrapper if its JSInterfaceName matches the default namespace Element.
- return $enabledTags{$name}{JSInterfaceName} eq $parameters{namespace} . "Element";
+ return $allTags{$name}{JSInterfaceName} eq $parameters{namespace} . "Element";
}
sub printWrapperFunctions
@@ -1140,19 +1116,19 @@
my $F = shift;
my %tagsSeen;
- for my $tagName (sort keys %enabledTags) {
+ for my $tagName (sort keys %allTags) {
# Avoid defining the same wrapper method twice.
- my $JSInterfaceName = $enabledTags{$tagName}{JSInterfaceName};
- next if (defined($tagsSeen{$JSInterfaceName}) || (usesDefaultJSWrapper($tagName) && ($parameters{fallbackJSInterfaceName} eq $parameters{namespace} . "Element"))) && !$enabledTags{$tagName}{settingsConditional};
+ my $JSInterfaceName = $allTags{$tagName}{JSInterfaceName};
+ next if (defined($tagsSeen{$JSInterfaceName}) || (usesDefaultJSWrapper($tagName) && ($parameters{fallbackJSInterfaceName} eq $parameters{namespace} . "Element"))) && !$allTags{$tagName}{settingsConditional};
$tagsSeen{$JSInterfaceName} = 1;
- my $conditional = $enabledTags{$tagName}{conditional};
+ my $conditional = $allTags{$tagName}{conditional};
if ($conditional) {
my $conditionalString = "ENABLE(" . join(") && ENABLE(", split(/&/, $conditional)) . ")";
print F "#if ${conditionalString}\n\n";
}
- if ($enabledTags{$tagName}{wrapperOnlyIfMediaIsAvailable}) {
+ if ($allTags{$tagName}{wrapperOnlyIfMediaIsAvailable}) {
print F <<END
static JSDOMObject* create${JSInterfaceName}Wrapper(JSDOMGlobalObject* globalObject, Ref<$parameters{namespace}Element>&& element)
{
@@ -1163,9 +1139,9 @@
END
;
- } elsif ($enabledTags{$tagName}{settingsConditional}) {
+ } elsif ($allTags{$tagName}{settingsConditional}) {
print F <<END
-static JSDOMObject* create$enabledTags{$tagName}{interfaceName}Wrapper(JSDOMGlobalObject* globalObject, Ref<$parameters{namespace}Element>&& element)
+static JSDOMObject* create$allTags{$tagName}{interfaceName}Wrapper(JSDOMGlobalObject* globalObject, Ref<$parameters{namespace}Element>&& element)
{
if (element->is$parameters{fallbackInterfaceName}())
return createWrapper<$parameters{fallbackInterfaceName}>(globalObject, WTFMove(element));
@@ -1174,8 +1150,8 @@
END
;
- } elsif ($enabledTags{$tagName}{runtimeEnabled}) {
- my $runtimeEnabled = $enabledTags{$tagName}{runtimeEnabled};
+ } elsif ($allTags{$tagName}{runtimeEnabled}) {
+ my $runtimeEnabled = $allTags{$tagName}{runtimeEnabled};
print F <<END
static JSDOMObject* create${JSInterfaceName}Wrapper(JSDOMGlobalObject* globalObject, Ref<$parameters{namespace}Element>&& element)
{
@@ -1258,11 +1234,11 @@
END
;
- for my $tag (sort keys %enabledTags) {
+ for my $tag (sort keys %allTags) {
# Do not add the name to the map if it does not have a JS wrapper constructor or uses the default wrapper.
- next if (usesDefaultJSWrapper($tag, \%enabledTags) && ($parameters{fallbackJSInterfaceName} eq $parameters{namespace} . "Element"));
+ next if (usesDefaultJSWrapper($tag, \%allTags) && ($parameters{fallbackJSInterfaceName} eq $parameters{namespace} . "Element"));
- my $conditional = $enabledTags{$tag}{conditional};
+ my $conditional = $allTags{$tag}{conditional};
if ($conditional) {
my $conditionalString = "ENABLE(" . join(") && ENABLE(", split(/&/, $conditional)) . ")";
print F "#if ${conditionalString}\n";
@@ -1269,10 +1245,10 @@
}
my $ucTag;
- if ($enabledTags{$tag}{settingsConditional}) {
- $ucTag = $enabledTags{$tag}{interfaceName};
+ if ($allTags{$tag}{settingsConditional}) {
+ $ucTag = $allTags{$tag}{interfaceName};
} else {
- $ucTag = $enabledTags{$tag}{JSInterfaceName};
+ $ucTag = $allTags{$tag}{JSInterfaceName};
}
print F " { $parameters{namespace}Names::${tag}Tag, create${ucTag}Wrapper },\n";