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

Side by Side Diff: mojo/public/cpp/bindings/tests/serialization_warning_unittest.cc

Issue 2259283003: Mojo C++ bindings: share DataView class between chromium and blink variants. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@92_change_traits_param
Patch Set: . Created 4 years, 3 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Serialization warnings are only recorded when DLOG is enabled. 5 // Serialization warnings are only recorded when DLOG is enabled.
6 #if !defined(NDEBUG) || defined(DCHECK_ALWAYS_ON) 6 #if !defined(NDEBUG) || defined(DCHECK_ALWAYS_ON)
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 29 matching lines...) Expand all
40 return array; 40 return array;
41 } 41 }
42 42
43 class SerializationWarningTest : public testing::Test { 43 class SerializationWarningTest : public testing::Test {
44 public: 44 public:
45 ~SerializationWarningTest() override {} 45 ~SerializationWarningTest() override {}
46 46
47 protected: 47 protected:
48 template <typename T> 48 template <typename T>
49 void TestWarning(T obj, mojo::internal::ValidationError expected_warning) { 49 void TestWarning(T obj, mojo::internal::ValidationError expected_warning) {
50 using MojomType = typename T::Struct::DataView;
51
50 warning_observer_.set_last_warning(mojo::internal::VALIDATION_ERROR_NONE); 52 warning_observer_.set_last_warning(mojo::internal::VALIDATION_ERROR_NONE);
51 53
52 mojo::internal::SerializationContext context; 54 mojo::internal::SerializationContext context;
53 mojo::internal::FixedBufferForTesting buf( 55 mojo::internal::FixedBufferForTesting buf(
54 mojo::internal::PrepareToSerialize<T>(obj, &context)); 56 mojo::internal::PrepareToSerialize<MojomType>(obj, &context));
55 typename mojo::internal::MojomTypeTraits<T>::Data* data; 57 typename mojo::internal::MojomTypeTraits<MojomType>::Data* data;
56 mojo::internal::Serialize<T>(obj, &buf, &data, &context); 58 mojo::internal::Serialize<MojomType>(obj, &buf, &data, &context);
57 59
58 EXPECT_EQ(expected_warning, warning_observer_.last_warning()); 60 EXPECT_EQ(expected_warning, warning_observer_.last_warning());
59 } 61 }
60 62
61 template <typename T> 63 template <typename MojomType, typename T>
62 void TestArrayWarning(T obj, 64 void TestArrayWarning(T obj,
63 mojo::internal::ValidationError expected_warning, 65 mojo::internal::ValidationError expected_warning,
64 const ContainerValidateParams* validate_params) { 66 const ContainerValidateParams* validate_params) {
65 warning_observer_.set_last_warning(mojo::internal::VALIDATION_ERROR_NONE); 67 warning_observer_.set_last_warning(mojo::internal::VALIDATION_ERROR_NONE);
66 68
67 mojo::internal::SerializationContext context; 69 mojo::internal::SerializationContext context;
68 mojo::internal::FixedBufferForTesting buf( 70 mojo::internal::FixedBufferForTesting buf(
69 mojo::internal::PrepareToSerialize<T>(obj, &context)); 71 mojo::internal::PrepareToSerialize<MojomType>(obj, &context));
70 typename mojo::internal::MojomTypeTraits<T>::Data* data; 72 typename mojo::internal::MojomTypeTraits<MojomType>::Data* data;
71 mojo::internal::Serialize<T>(obj, &buf, &data, validate_params, &context); 73 mojo::internal::Serialize<MojomType>(obj, &buf, &data, validate_params,
74 &context);
72 75
73 EXPECT_EQ(expected_warning, warning_observer_.last_warning()); 76 EXPECT_EQ(expected_warning, warning_observer_.last_warning());
74 } 77 }
75 78
76 template <typename T> 79 template <typename T>
77 void TestUnionWarning(T obj, 80 void TestUnionWarning(T obj,
78 mojo::internal::ValidationError expected_warning) { 81 mojo::internal::ValidationError expected_warning) {
82 using MojomType = typename T::Struct::DataView;
83
79 warning_observer_.set_last_warning(mojo::internal::VALIDATION_ERROR_NONE); 84 warning_observer_.set_last_warning(mojo::internal::VALIDATION_ERROR_NONE);
80 85
81 mojo::internal::SerializationContext context; 86 mojo::internal::SerializationContext context;
82 mojo::internal::FixedBufferForTesting buf( 87 mojo::internal::FixedBufferForTesting buf(
83 mojo::internal::PrepareToSerialize<T>(obj, false, &context)); 88 mojo::internal::PrepareToSerialize<MojomType>(obj, false, &context));
84 typename mojo::internal::MojomTypeTraits<T>::Data* data; 89 typename mojo::internal::MojomTypeTraits<MojomType>::Data* data;
85 mojo::internal::Serialize<T>(obj, &buf, &data, false, &context); 90 mojo::internal::Serialize<MojomType>(obj, &buf, &data, false, &context);
86 91
87 EXPECT_EQ(expected_warning, warning_observer_.last_warning()); 92 EXPECT_EQ(expected_warning, warning_observer_.last_warning());
88 } 93 }
89 94
90 mojo::internal::SerializationWarningObserverForTesting warning_observer_; 95 mojo::internal::SerializationWarningObserverForTesting warning_observer_;
91 }; 96 };
92 97
93 TEST_F(SerializationWarningTest, HandleInStruct) { 98 TEST_F(SerializationWarningTest, HandleInStruct) {
94 Struct2Ptr test_struct(Struct2::New()); 99 Struct2Ptr test_struct(Struct2::New());
95 EXPECT_FALSE(test_struct->hdl.is_valid()); 100 EXPECT_FALSE(test_struct->hdl.is_valid());
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 151
147 test_struct = Struct5::New(); 152 test_struct = Struct5::New();
148 test_struct->pair.resize(2); 153 test_struct->pair.resize(2);
149 test_struct->pair[0] = Struct1::New(); 154 test_struct->pair[0] = Struct1::New();
150 test_struct->pair[1] = Struct1::New(); 155 test_struct->pair[1] = Struct1::New();
151 156
152 TestWarning(std::move(test_struct), mojo::internal::VALIDATION_ERROR_NONE); 157 TestWarning(std::move(test_struct), mojo::internal::VALIDATION_ERROR_NONE);
153 } 158 }
154 159
155 TEST_F(SerializationWarningTest, ArrayOfArraysOfHandles) { 160 TEST_F(SerializationWarningTest, ArrayOfArraysOfHandles) {
161 using MojomType = ArrayDataView<ArrayDataView<ScopedHandle>>;
156 Array<Array<ScopedHandle>> test_array = CreateTestNestedHandleArray(); 162 Array<Array<ScopedHandle>> test_array = CreateTestNestedHandleArray();
157 test_array[0] = nullptr; 163 test_array[0] = nullptr;
158 test_array[1][0] = ScopedHandle(); 164 test_array[1][0] = ScopedHandle();
159 165
160 ContainerValidateParams validate_params_0( 166 ContainerValidateParams validate_params_0(
161 0, true, new ContainerValidateParams(0, true, nullptr)); 167 0, true, new ContainerValidateParams(0, true, nullptr));
162 TestArrayWarning(std::move(test_array), mojo::internal::VALIDATION_ERROR_NONE, 168 TestArrayWarning<MojomType>(std::move(test_array),
163 &validate_params_0); 169 mojo::internal::VALIDATION_ERROR_NONE,
170 &validate_params_0);
164 171
165 test_array = CreateTestNestedHandleArray(); 172 test_array = CreateTestNestedHandleArray();
166 test_array[0] = nullptr; 173 test_array[0] = nullptr;
167 ContainerValidateParams validate_params_1( 174 ContainerValidateParams validate_params_1(
168 0, false, new ContainerValidateParams(0, true, nullptr)); 175 0, false, new ContainerValidateParams(0, true, nullptr));
169 TestArrayWarning(std::move(test_array), 176 TestArrayWarning<MojomType>(
170 mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, 177 std::move(test_array),
171 &validate_params_1); 178 mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
179 &validate_params_1);
172 180
173 test_array = CreateTestNestedHandleArray(); 181 test_array = CreateTestNestedHandleArray();
174 test_array[1][0] = ScopedHandle(); 182 test_array[1][0] = ScopedHandle();
175 ContainerValidateParams validate_params_2( 183 ContainerValidateParams validate_params_2(
176 0, true, new ContainerValidateParams(0, false, nullptr)); 184 0, true, new ContainerValidateParams(0, false, nullptr));
177 TestArrayWarning(std::move(test_array), 185 TestArrayWarning<MojomType>(
178 mojo::internal::VALIDATION_ERROR_UNEXPECTED_INVALID_HANDLE, 186 std::move(test_array),
179 &validate_params_2); 187 mojo::internal::VALIDATION_ERROR_UNEXPECTED_INVALID_HANDLE,
188 &validate_params_2);
180 } 189 }
181 190
182 TEST_F(SerializationWarningTest, ArrayOfStrings) { 191 TEST_F(SerializationWarningTest, ArrayOfStrings) {
192 using MojomType = ArrayDataView<StringDataView>;
193
183 Array<String> test_array(3); 194 Array<String> test_array(3);
184 for (size_t i = 0; i < test_array.size(); ++i) 195 for (size_t i = 0; i < test_array.size(); ++i)
185 test_array[i] = "hello"; 196 test_array[i] = "hello";
186 197
187 ContainerValidateParams validate_params_0( 198 ContainerValidateParams validate_params_0(
188 0, true, new ContainerValidateParams(0, false, nullptr)); 199 0, true, new ContainerValidateParams(0, false, nullptr));
189 TestArrayWarning(std::move(test_array), mojo::internal::VALIDATION_ERROR_NONE, 200 TestArrayWarning<MojomType>(std::move(test_array),
190 &validate_params_0); 201 mojo::internal::VALIDATION_ERROR_NONE,
202 &validate_params_0);
191 203
192 test_array = Array<String>(3); 204 test_array = Array<String>(3);
193 for (size_t i = 0; i < test_array.size(); ++i) 205 for (size_t i = 0; i < test_array.size(); ++i)
194 test_array[i] = nullptr; 206 test_array[i] = nullptr;
195 ContainerValidateParams validate_params_1( 207 ContainerValidateParams validate_params_1(
196 0, false, new ContainerValidateParams(0, false, nullptr)); 208 0, false, new ContainerValidateParams(0, false, nullptr));
197 TestArrayWarning(std::move(test_array), 209 TestArrayWarning<MojomType>(
198 mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, 210 std::move(test_array),
199 &validate_params_1); 211 mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER,
212 &validate_params_1);
200 213
201 test_array = Array<String>(2); 214 test_array = Array<String>(2);
202 ContainerValidateParams validate_params_2( 215 ContainerValidateParams validate_params_2(
203 3, true, new ContainerValidateParams(0, false, nullptr)); 216 3, true, new ContainerValidateParams(0, false, nullptr));
204 TestArrayWarning(std::move(test_array), 217 TestArrayWarning<MojomType>(
205 mojo::internal::VALIDATION_ERROR_UNEXPECTED_ARRAY_HEADER, 218 std::move(test_array),
206 &validate_params_2); 219 mojo::internal::VALIDATION_ERROR_UNEXPECTED_ARRAY_HEADER,
220 &validate_params_2);
207 } 221 }
208 222
209 TEST_F(SerializationWarningTest, StructInUnion) { 223 TEST_F(SerializationWarningTest, StructInUnion) {
210 DummyStructPtr dummy(nullptr); 224 DummyStructPtr dummy(nullptr);
211 ObjectUnionPtr obj(ObjectUnion::New()); 225 ObjectUnionPtr obj(ObjectUnion::New());
212 obj->set_f_dummy(std::move(dummy)); 226 obj->set_f_dummy(std::move(dummy));
213 227
214 TestUnionWarning(std::move(obj), 228 TestUnionWarning(std::move(obj),
215 mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER); 229 mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER);
216 } 230 }
(...skipping 14 matching lines...) Expand all
231 245
232 TestUnionWarning(std::move(handle), 246 TestUnionWarning(std::move(handle),
233 mojo::internal::VALIDATION_ERROR_UNEXPECTED_INVALID_HANDLE); 247 mojo::internal::VALIDATION_ERROR_UNEXPECTED_INVALID_HANDLE);
234 } 248 }
235 249
236 } // namespace 250 } // namespace
237 } // namespace test 251 } // namespace test
238 } // namespace mojo 252 } // namespace mojo
239 253
240 #endif 254 #endif
OLDNEW
« no previous file with comments | « mojo/public/cpp/bindings/tests/rect_chromium.typemap ('k') | mojo/public/cpp/bindings/tests/shared_rect.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698