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

Unified Diff: mojo/apps/js/test/js_to_cpp_unittest.cc

Issue 282063003: Fix handling of null pointers in JS bindings. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix accidental shadowing of parameter with local in JS side. Created 6 years, 7 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 | « mojo/apps/js/test/js_to_cpp.mojom ('k') | mojo/apps/js/test/js_to_cpp_unittest.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/apps/js/test/js_to_cpp_unittest.cc
diff --git a/mojo/apps/js/test/js_to_cpp_unittest.cc b/mojo/apps/js/test/js_to_cpp_unittest.cc
index 527c81b0966da08ad6fdc4d78995b326cb54632f..64259df156faaf7c2b00c4229412aa2edda00162 100644
--- a/mojo/apps/js/test/js_to_cpp_unittest.cc
+++ b/mojo/apps/js/test/js_to_cpp_unittest.cc
@@ -65,54 +65,6 @@ bool IsRunningOnIsolatedBot() {
return false;
}
-// NOTE: Callers will need to have established an AllocationScope, or you're
-// gonna have a bad time.
-js_to_cpp::EchoArgs BuildSampleEchoArgs() {
- js_to_cpp::EchoArgs::Builder builder;
- builder.set_si64(kExpectedInt64Value);
- builder.set_si32(kExpectedInt32Value);
- builder.set_si16(kExpectedInt16Value);
- builder.set_si8(kExpectedInt8Value);
- builder.set_ui64(kExpectedUInt64Value);
- builder.set_ui32(kExpectedUInt32Value);
- builder.set_ui16(kExpectedUInt16Value);
- builder.set_ui8(kExpectedUInt8Value);
- builder.set_float_val(kExpectedFloatVal);
- builder.set_float_inf(kExpectedFloatInf);
- builder.set_float_nan(kExpectedFloatNan);
- builder.set_double_val(kExpectedDoubleVal);
- builder.set_double_inf(kExpectedDoubleInf);
- builder.set_double_nan(kExpectedDoubleNan);
- builder.set_name("coming");
- mojo::Array<mojo::String>::Builder string_array(3);
- string_array[0] = "one";
- string_array[1] = "two";
- string_array[2] = "three";
- builder.set_string_array(string_array.Finish());
- return builder.Finish();
-}
-
-void CheckSampleEchoArgs(const js_to_cpp::EchoArgs& arg) {
- EXPECT_EQ(kExpectedInt64Value, arg.si64());
- EXPECT_EQ(kExpectedInt32Value, arg.si32());
- EXPECT_EQ(kExpectedInt16Value, arg.si16());
- EXPECT_EQ(kExpectedInt8Value, arg.si8());
- EXPECT_EQ(kExpectedUInt64Value, arg.ui64());
- EXPECT_EQ(kExpectedUInt32Value, arg.ui32());
- EXPECT_EQ(kExpectedUInt16Value, arg.ui16());
- EXPECT_EQ(kExpectedUInt8Value, arg.ui8());
- EXPECT_EQ(kExpectedFloatVal, arg.float_val());
- EXPECT_EQ(kExpectedFloatInf, arg.float_inf());
- EXPECT_NAN(arg.float_nan());
- EXPECT_EQ(kExpectedDoubleVal, arg.double_val());
- EXPECT_EQ(kExpectedDoubleInf, arg.double_inf());
- EXPECT_NAN(arg.double_nan());
- EXPECT_EQ(std::string("coming"), arg.name().To<std::string>());
- EXPECT_EQ(std::string("one"), arg.string_array()[0].To<std::string>());
- EXPECT_EQ(std::string("two"), arg.string_array()[1].To<std::string>());
- EXPECT_EQ(std::string("three"), arg.string_array()[2].To<std::string>());
-}
-
void CheckDataPipe(MojoHandle data_pipe_handle) {
char buffer[100];
uint32_t buffer_size = static_cast<uint32_t>(sizeof(buffer));
@@ -125,6 +77,68 @@ void CheckDataPipe(MojoHandle data_pipe_handle) {
}
}
+// NOTE: Callers will need to have established an AllocationScope, or you're
+// gonna have a bad time.
+js_to_cpp::EchoArgs BuildSampleEchoArgs() {
+ js_to_cpp::EchoArgs::Builder builder;
+ builder.set_si64(kExpectedInt64Value);
+ builder.set_si32(kExpectedInt32Value);
+ builder.set_si16(kExpectedInt16Value);
+ builder.set_si8(kExpectedInt8Value);
+ builder.set_ui64(kExpectedUInt64Value);
+ builder.set_ui32(kExpectedUInt32Value);
+ builder.set_ui16(kExpectedUInt16Value);
+ builder.set_ui8(kExpectedUInt8Value);
+ builder.set_float_val(kExpectedFloatVal);
+ builder.set_float_inf(kExpectedFloatInf);
+ builder.set_float_nan(kExpectedFloatNan);
+ builder.set_double_val(kExpectedDoubleVal);
+ builder.set_double_inf(kExpectedDoubleInf);
+ builder.set_double_nan(kExpectedDoubleNan);
+ builder.set_name("coming");
+ mojo::Array<mojo::String>::Builder string_array(3);
+ string_array[0] = "one";
+ string_array[1] = "two";
+ string_array[2] = "three";
+ builder.set_string_array(string_array.Finish());
+ return builder.Finish();
+}
+
+void CheckSampleEchoArgs(const js_to_cpp::EchoArgs& arg) {
+ EXPECT_EQ(kExpectedInt64Value, arg.si64());
+ EXPECT_EQ(kExpectedInt32Value, arg.si32());
+ EXPECT_EQ(kExpectedInt16Value, arg.si16());
+ EXPECT_EQ(kExpectedInt8Value, arg.si8());
+ EXPECT_EQ(kExpectedUInt64Value, arg.ui64());
+ EXPECT_EQ(kExpectedUInt32Value, arg.ui32());
+ EXPECT_EQ(kExpectedUInt16Value, arg.ui16());
+ EXPECT_EQ(kExpectedUInt8Value, arg.ui8());
+ EXPECT_EQ(kExpectedFloatVal, arg.float_val());
+ EXPECT_EQ(kExpectedFloatInf, arg.float_inf());
+ EXPECT_NAN(arg.float_nan());
+ EXPECT_EQ(kExpectedDoubleVal, arg.double_val());
+ EXPECT_EQ(kExpectedDoubleInf, arg.double_inf());
+ EXPECT_NAN(arg.double_nan());
+ EXPECT_EQ(std::string("coming"), arg.name().To<std::string>());
+ EXPECT_EQ(std::string("one"), arg.string_array()[0].To<std::string>());
+ EXPECT_EQ(std::string("two"), arg.string_array()[1].To<std::string>());
+ EXPECT_EQ(std::string("three"), arg.string_array()[2].To<std::string>());
+ CheckDataPipe(arg.data_handle().get().value());
+}
+
+js_to_cpp::EchoArgsList BuildSampleEchoArgsList() {
+ js_to_cpp::EchoArgsList::Builder builder;
+ builder.set_item(BuildSampleEchoArgs());
+ return builder.Finish();
+}
+
+void CheckSampleEchoArgsList(const js_to_cpp::EchoArgsList& list) {
+ if (list.is_null())
+ return;
+ CheckSampleEchoArgs(list.item());
+ CheckSampleEchoArgsList(list.next());
+}
+
void CheckCorruptedString(const mojo::String& arg) {
// The values don't matter so long as all accesses are within bounds.
if (arg.is_null())
@@ -168,8 +182,7 @@ class CppSideConnection : public js_to_cpp::CppSide {
NOTREACHED();
}
- virtual void EchoResponse(const js_to_cpp::EchoArgs& arg1,
- const js_to_cpp::EchoArgs& arg2) OVERRIDE {
+ virtual void EchoResponse(const js_to_cpp::EchoArgsList& list) OVERRIDE {
NOTREACHED();
}
@@ -222,19 +235,18 @@ class EchoCppSideConnection : public CppSideConnection {
// js_to_cpp::CppSide:
virtual void StartTest() OVERRIDE {
AllocationScope scope;
- js_side_->Echo(kExpectedMessageCount, BuildSampleEchoArgs());
+ js_side_->Echo(kExpectedMessageCount, BuildSampleEchoArgsList());
}
- virtual void EchoResponse(const js_to_cpp::EchoArgs& arg1,
- const js_to_cpp::EchoArgs& arg2) OVERRIDE {
+ virtual void EchoResponse(const js_to_cpp::EchoArgsList& list) OVERRIDE {
+ const js_to_cpp::EchoArgs& special_arg = list.item();
message_count_ += 1;
- CheckSampleEchoArgs(arg1);
- EXPECT_EQ(-1, arg2.si64());
- EXPECT_EQ(-1, arg2.si32());
- EXPECT_EQ(-1, arg2.si16());
- EXPECT_EQ(-1, arg2.si8());
- EXPECT_EQ(std::string("going"), arg2.name().To<std::string>());
- CheckDataPipe(arg2.data_handle().get().value());
+ EXPECT_EQ(-1, special_arg.si64());
+ EXPECT_EQ(-1, special_arg.si32());
+ EXPECT_EQ(-1, special_arg.si16());
+ EXPECT_EQ(-1, special_arg.si8());
+ EXPECT_EQ(std::string("going"), special_arg.name().To<std::string>());
+ CheckSampleEchoArgsList(list.next());
}
virtual void TestFinished() OVERRIDE {
« no previous file with comments | « mojo/apps/js/test/js_to_cpp.mojom ('k') | mojo/apps/js/test/js_to_cpp_unittest.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698