Commit 64a0734a authored by jsbell@chromium.org's avatar jsbell@chromium.org

Add [TreatReturnedNullStringAs] support for ScalarValueString

Copy/Paste&Find/Replace of r176370 - same thing for ByteString.

Not strictly needed by any existing IDLs, but trivial code change,
and no code size difference until used.

R=horo@chromium.org,haraken@chromium.org
BUG=379009

Review URL: https://codereview.chromium.org/344693002

git-svn-id: svn://svn.chromium.org/blink/trunk@176477 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 8885f9fa
......@@ -1078,12 +1078,28 @@ converter.testScalarValueString = "𝄞"
PASS converter.testScalarValueString is "𝄞"
converter.testScalarValueString = true
PASS converter.testScalarValueString is "true"
PASS converter.testScalarValueStringTreatReturnedNullStringAsNullAttribute is "true"
PASS converter.testScalarValueStringTreatReturnedNullStringAsUndefinedAttribute is "true"
PASS converter.getTestScalarValueStringTreatReturnedNullStringAsNullMethod() is "true"
PASS converter.getTestScalarValueStringTreatReturnedNullStringAsUndefinedMethod() is "true"
converter.testScalarValueString = 123
PASS converter.testScalarValueString is "123"
PASS converter.testScalarValueStringTreatReturnedNullStringAsNullAttribute is "123"
PASS converter.testScalarValueStringTreatReturnedNullStringAsUndefinedAttribute is "123"
PASS converter.getTestScalarValueStringTreatReturnedNullStringAsNullMethod() is "123"
PASS converter.getTestScalarValueStringTreatReturnedNullStringAsUndefinedMethod() is "123"
converter.testScalarValueString = null
PASS converter.testScalarValueString is "null"
PASS converter.testScalarValueStringTreatReturnedNullStringAsNullAttribute is "null"
PASS converter.testScalarValueStringTreatReturnedNullStringAsUndefinedAttribute is "null"
PASS converter.getTestScalarValueStringTreatReturnedNullStringAsNullMethod() is "null"
PASS converter.getTestScalarValueStringTreatReturnedNullStringAsUndefinedMethod() is "null"
converter.testScalarValueString = undefined
PASS converter.testScalarValueString is "undefined"
PASS converter.testScalarValueStringTreatReturnedNullStringAsNullAttribute is "undefined"
PASS converter.testScalarValueStringTreatReturnedNullStringAsUndefinedAttribute is "undefined"
PASS converter.getTestScalarValueStringTreatReturnedNullStringAsNullMethod() is "undefined"
PASS converter.getTestScalarValueStringTreatReturnedNullStringAsUndefinedMethod() is "undefined"
PASS converter.setTestScalarValueString('abc') did not throw exception.
PASS converter.setTestScalarValueStringDefaultNull('abc') did not throw exception.
PASS converter.setTestScalarValueString('\u0100') did not throw exception.
......@@ -1091,6 +1107,10 @@ PASS converter.setTestScalarValueStringDefaultNull('\u0100') did not throw excep
PASS converter.setTestScalarValueString() threw exception TypeError: Failed to execute 'setTestScalarValueString' on 'TypeConversions': 1 argument required, but only 0 present..
PASS converter.setTestScalarValueStringDefaultNull() did not throw exception.
PASS converter.testScalarValueString is ""
PASS converter.testScalarValueStringTreatReturnedNullStringAsNullAttribute is null
PASS converter.testScalarValueStringTreatReturnedNullStringAsUndefinedAttribute is undefined.
PASS converter.getTestScalarValueStringTreatReturnedNullStringAsNullMethod() is null
PASS converter.getTestScalarValueStringTreatReturnedNullStringAsUndefinedMethod() is undefined.
PASS successfullyParsed is true
TEST COMPLETE
......
......@@ -625,6 +625,10 @@ shouldBeEqualToString("converter.testScalarValueString", "\u0100");
["true", "123", "null", "undefined"].forEach(function(value) {
evalAndLog("converter.testScalarValueString = " + value);
shouldBeEqualToString("converter.testScalarValueString", value);
shouldBeEqualToString("converter.testScalarValueStringTreatReturnedNullStringAsNullAttribute", value);
shouldBeEqualToString("converter.testScalarValueStringTreatReturnedNullStringAsUndefinedAttribute", value);
shouldBeEqualToString("converter.getTestScalarValueStringTreatReturnedNullStringAsNullMethod()", value);
shouldBeEqualToString("converter.getTestScalarValueStringTreatReturnedNullStringAsUndefinedMethod()", value);
});
shouldNotThrow("converter.setTestScalarValueString('abc')");
shouldNotThrow("converter.setTestScalarValueStringDefaultNull('abc')");
......@@ -633,5 +637,9 @@ shouldNotThrow("converter.setTestScalarValueStringDefaultNull('\\u0100')");
shouldThrow("converter.setTestScalarValueString()");
shouldNotThrow("converter.setTestScalarValueStringDefaultNull()");
shouldBeEqualToString("converter.testScalarValueString", "");
shouldBeNull("converter.testScalarValueStringTreatReturnedNullStringAsNullAttribute");
shouldBeUndefined("converter.testScalarValueStringTreatReturnedNullStringAsUndefinedAttribute");
shouldBeNull("converter.getTestScalarValueStringTreatReturnedNullStringAsNullMethod()");
shouldBeUndefined("converter.getTestScalarValueStringTreatReturnedNullStringAsUndefinedMethod()");
</script>
......@@ -550,7 +550,7 @@ def v8_conversion_type(idl_type, extended_attributes):
return 'int'
if base_idl_type in CPP_UNSIGNED_TYPES:
return 'unsigned'
if base_idl_type in ('DOMString', 'ByteString'):
if base_idl_type in ('DOMString', 'ByteString', 'ScalarValueString'):
if 'TreatReturnedNullStringAs' not in extended_attributes:
return base_idl_type
treat_returned_null_string_as = extended_attributes['TreatReturnedNullStringAs']
......
......@@ -241,6 +241,8 @@ interface TestObject {
[TreatReturnedNullStringAs=Undefined] attribute DOMString treatReturnedNullStringAsUndefinedStringAttribute;
[TreatReturnedNullStringAs=Null] attribute ByteString treatReturnedNullStringAsNullByteStringAttribute;
[TreatReturnedNullStringAs=Undefined] attribute ByteString treatReturnedNullStringAsUndefinedByteStringAttribute;
[TreatReturnedNullStringAs=Null] attribute ScalarValueString treatReturnedNullStringAsNullScalarValueStringAttribute;
[TreatReturnedNullStringAs=Undefined] attribute ScalarValueString treatReturnedNullStringAsUndefinedScalarValueStringAttribute;
[TypeChecking=Interface|Nullable] attribute float typeCheckingInterfaceNullableStringFloatAttribute; // nop for non-interface types
[TypeChecking=Interface] attribute TestInterface typeCheckingInterfaceTestInterfaceAttribute;
[TypeChecking=Nullable] attribute TestInterface? typeCheckingNullableTestInterfaceOrNullAttribute;
......@@ -504,6 +506,8 @@ interface TestObject {
[TreatReturnedNullStringAs=Undefined] DOMString treatReturnedNullStringAsUndefinedStringMethod();
[TreatReturnedNullStringAs=Null] ByteString treatReturnedNullStringAsNullByteStringMethod();
[TreatReturnedNullStringAs=Undefined] ByteString treatReturnedNullStringAsUndefinedByteStringMethod();
[TreatReturnedNullStringAs=Null] ScalarValueString treatReturnedNullStringAsNullScalarValueStringMethod();
[TreatReturnedNullStringAs=Undefined] ScalarValueString treatReturnedNullStringAsUndefinedScalarValueStringMethod();
[TypeChecking=Interface] void typeCheckingInterfaceVoidMethodTestInterfaceEmptyArg(TestInterfaceEmpty testInterfaceEmptyArg);
[TypeChecking=Nullable] void typeCheckingNullableVoidMethodTestInterfaceEmptyOrNullArg(TestInterfaceEmpty? testInterfaceEmptyOrNullArg);
[TypeChecking=Interface|Nullable] void typeCheckingInterfaceNullableVoidMethodTestInterfaceEmptyOrNullArg(TestInterfaceEmpty? testInterfaceEmptyOrNullArg);
......
......@@ -55,6 +55,10 @@
[ImplementedAs=setTestByteString] void setTestByteStringDefaultNull(optional ByteString byteString = null);
attribute ScalarValueString testScalarValueString;
[ImplementedAs=testScalarValueString, TreatReturnedNullStringAs=Null] attribute ScalarValueString testScalarValueStringTreatReturnedNullStringAsNullAttribute;
[ImplementedAs=testScalarValueString, TreatReturnedNullStringAs=Undefined] attribute ScalarValueString testScalarValueStringTreatReturnedNullStringAsUndefinedAttribute;
[ImplementedAs=testScalarValueString, TreatReturnedNullStringAs=Null] ScalarValueString getTestScalarValueStringTreatReturnedNullStringAsNullMethod();
[ImplementedAs=testScalarValueString, TreatReturnedNullStringAs=Undefined] ScalarValueString getTestScalarValueStringTreatReturnedNullStringAsUndefinedMethod();
void setTestScalarValueString(ScalarValueString scalarValueString);
[ImplementedAs=setTestScalarValueString] void setTestScalarValueStringDefaultNull(optional ScalarValueString scalarValueString = null);
};
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment