| Index: extensions/renderer/api_signature_unittest.cc
|
| diff --git a/extensions/renderer/api_signature_unittest.cc b/extensions/renderer/api_signature_unittest.cc
|
| index 34ac719d3d16f851f1293ef545708f021c28243d..986e887603fde1e1556750be905fd3b01e78194d 100644
|
| --- a/extensions/renderer/api_signature_unittest.cc
|
| +++ b/extensions/renderer/api_signature_unittest.cc
|
| @@ -123,6 +123,21 @@ std::unique_ptr<APISignature> RefEnum() {
|
| return base::MakeUnique<APISignature>(std::move(specs));
|
| }
|
|
|
| +std::unique_ptr<APISignature> OptionalObjectAndCallback() {
|
| + SpecVector specs;
|
| + specs.push_back(
|
| + ArgumentSpecBuilder(ArgumentType::OBJECT, "obj")
|
| + .AddProperty(
|
| + "prop1",
|
| + ArgumentSpecBuilder(ArgumentType::INTEGER).MakeOptional().Build())
|
| + .MakeOptional()
|
| + .Build());
|
| + specs.push_back(ArgumentSpecBuilder(ArgumentType::FUNCTION, "callback")
|
| + .MakeOptional()
|
| + .Build());
|
| + return base::MakeUnique<APISignature>(std::move(specs));
|
| +}
|
| +
|
| } // namespace
|
|
|
| class APISignatureTest : public APIBindingTest {
|
| @@ -302,6 +317,21 @@ TEST_F(APISignatureTest, BasicSignatureParsing) {
|
| ArgumentError("any", UnserializableValue()));
|
| ExpectFailure(*signature, "[4]", MissingRequiredArgument("any"));
|
| }
|
| +
|
| + {
|
| + auto signature = OptionalObjectAndCallback();
|
| + ExpectPass(*signature, "[{prop1: 1}]", "[{'prop1':1}]", false);
|
| + ExpectPass(*signature, "[]", "[null]", false);
|
| + ExpectPass(*signature, "[null]", "[null]", false);
|
| + ExpectFailure(
|
| + *signature, "[{prop1: 'str'}]",
|
| + ArgumentError("obj", PropertyError("prop1", InvalidType(kTypeInteger,
|
| + kTypeString))));
|
| + ExpectFailure(
|
| + *signature, "[{prop1: 'str'}, function() {}]",
|
| + ArgumentError("obj", PropertyError("prop1", InvalidType(kTypeInteger,
|
| + kTypeString))));
|
| + }
|
| }
|
|
|
| TEST_F(APISignatureTest, TypeRefsTest) {
|
|
|