Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(546)

Unified Diff: extensions/renderer/api_signature_unittest.cc

Issue 2947223003: [Extensions Bindings] Consider argument type more in signature parsing (Closed)
Patch Set: . Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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) {

Powered by Google App Engine
This is Rietveld 408576698