Index: Source/bindings/scripts/code_generator_v8.pm |
diff --git a/Source/bindings/scripts/code_generator_v8.pm b/Source/bindings/scripts/code_generator_v8.pm |
index 1e976f8246b656e81c06282074317af31902030b..62f8c38f903b12a123a922664d27dbf6387eabd8 100644 |
--- a/Source/bindings/scripts/code_generator_v8.pm |
+++ b/Source/bindings/scripts/code_generator_v8.pm |
@@ -6275,8 +6275,7 @@ sub GenerateReflectOnlyCheck |
my $extendedAttributes = shift; |
my $indent = shift; |
- my $knownValueString = $extendedAttributes->{"ReflectOnly"}; |
- my @knownValues = split(quotemeta("|"), $knownValueString); |
+ my @knownValues = split(quotemeta("|"), $extendedAttributes->{"ReflectOnly"}); |
my $missingValueDefault = $extendedAttributes->{"ReflectMissing"}; |
if ($missingValueDefault) { |
@@ -6293,28 +6292,39 @@ sub GenerateReflectOnlyCheck |
if (!grep { $_ eq $invalidValueDefault } @knownValues) { |
die "Invalid attribute value is not a known value " . $invalidValueDefault; |
} |
- $invalidValueDefault = "\"${invalidValueDefault}\""; |
+ $invalidValueDefault = "resultValue = \"${invalidValueDefault}\""; |
} else { |
- $invalidValueDefault = "\"\""; |
+ $invalidValueDefault = "resultValue = \"\""; |
+ } |
+ |
+ my @normalizeAttributeCode = (); |
+ |
+ # Attributes without a value (div empty-attribute>) can be |
+ # separately reflected to some value. |
+ |
+ my $isAttributeValueMissing = "resultValue.isEmpty()"; |
+ my $emptyValueDefault = $extendedAttributes->{"ReflectEmpty"}; |
+ if ($emptyValueDefault) { |
+ $isAttributeValueMissing = "resultValue.isNull()"; |
+ push(@normalizeAttributeCode, "${indent}} else if (resultValue.isEmpty()) {"); |
+ push(@normalizeAttributeCode, "${indent} resultValue = \"$emptyValueDefault\";"); |
} |
# Attribute is limited to only known values: check that the attribute |
# value is one of those..and if not, set it to the empty string. |
# ( http://www.whatwg.org/specs/web-apps/current-work/#limited-to-only-known-values ) |
# |
- my @normalizeAttributeCode = (); |
- my $code = ""; |
foreach my $knownValue (@knownValues) { |
push(@normalizeAttributeCode, "${indent}} else if (equalIgnoringCase(resultValue, \"$knownValue\")) {"); |
push(@normalizeAttributeCode, "${indent} resultValue = \"$knownValue\";"); |
} |
my $normalizeAttributeValue = join("\n", @normalizeAttributeCode); |
- $code .= <<END; |
-${indent}if (resultValue.isEmpty()) { |
+ my $code .= <<END; |
+${indent}if ($isAttributeValueMissing) { |
${indent} $missingValueDefault; |
${normalizeAttributeValue} |
${indent}} else { |
-${indent} resultValue = $invalidValueDefault; |
+${indent} $invalidValueDefault; |
${indent}} |
END |
return "${code}"; |