| Index: extensions/renderer/bindings/api_signature_unittest.cc
|
| diff --git a/extensions/renderer/bindings/api_signature_unittest.cc b/extensions/renderer/bindings/api_signature_unittest.cc
|
| index 03b152e013f8e47652f8656668e0d0c4060c92b0..eaa71806e8af1df40780f071a54ce592b155433e 100644
|
| --- a/extensions/renderer/bindings/api_signature_unittest.cc
|
| +++ b/extensions/renderer/bindings/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) {
|
|
|