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

Unified Diff: extensions/renderer/bindings/api_signature_unittest.cc

Issue 2947223003: [Extensions Bindings] Consider argument type more in signature parsing (Closed)
Patch Set: rebase 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
« no previous file with comments | « extensions/renderer/bindings/api_signature.cc ('k') | extensions/renderer/bindings/argument_spec.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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) {
« no previous file with comments | « extensions/renderer/bindings/api_signature.cc ('k') | extensions/renderer/bindings/argument_spec.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698