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

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

Issue 1527183003: Change mojo enums to be scoped enums in the generated C++ bindings. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@mojo-binding-equals
Patch Set: Created 4 years, 11 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 // Note: This file tests both binding.h (mojo::Binding) and strong_binding.h 5 // Note: This file tests both binding.h (mojo::Binding) and strong_binding.h
6 // (mojo::StrongBinding). 6 // (mojo::StrongBinding).
7 7
8 #include "mojo/public/cpp/bindings/binding.h" 8 #include "mojo/public/cpp/bindings/binding.h"
9 9
10 #include <stdint.h> 10 #include <stdint.h>
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 bool encountered_error = false; 81 bool encountered_error = false;
82 ServiceImpl impl; 82 ServiceImpl impl;
83 sample::ServicePtr ptr; 83 sample::ServicePtr ptr;
84 auto request = GetProxy(&ptr); 84 auto request = GetProxy(&ptr);
85 ptr.set_connection_error_handler( 85 ptr.set_connection_error_handler(
86 [&encountered_error]() { encountered_error = true; }); 86 [&encountered_error]() { encountered_error = true; });
87 bool called = false; 87 bool called = false;
88 auto called_cb = [&called](int32_t result) { called = true; }; 88 auto called_cb = [&called](int32_t result) { called = true; };
89 { 89 {
90 Binding<sample::Service> binding(&impl, std::move(request)); 90 Binding<sample::Service> binding(&impl, std::move(request));
91 ptr->Frobinate(nullptr, sample::Service::BAZ_OPTIONS_REGULAR, nullptr, 91 ptr->Frobinate(nullptr, sample::Service::BazOptions::REGULAR, nullptr,
92 called_cb); 92 called_cb);
93 loop().RunUntilIdle(); 93 loop().RunUntilIdle();
94 EXPECT_TRUE(called); 94 EXPECT_TRUE(called);
95 EXPECT_FALSE(encountered_error); 95 EXPECT_FALSE(encountered_error);
96 } 96 }
97 // Now that the Binding is out of scope we should detect an error on the other 97 // Now that the Binding is out of scope we should detect an error on the other
98 // end of the pipe. 98 // end of the pipe.
99 loop().RunUntilIdle(); 99 loop().RunUntilIdle();
100 EXPECT_TRUE(encountered_error); 100 EXPECT_TRUE(encountered_error);
101 101
102 // And calls should fail. 102 // And calls should fail.
103 called = false; 103 called = false;
104 ptr->Frobinate(nullptr, sample::Service::BAZ_OPTIONS_REGULAR, nullptr, 104 ptr->Frobinate(nullptr, sample::Service::BazOptions::REGULAR, nullptr,
105 called_cb); 105 called_cb);
106 loop().RunUntilIdle(); 106 loop().RunUntilIdle();
107 EXPECT_FALSE(called); 107 EXPECT_FALSE(called);
108 } 108 }
109 109
110 // Tests that the binding's connection error handler gets called when the other 110 // Tests that the binding's connection error handler gets called when the other
111 // end is closed. 111 // end is closed.
112 TEST_F(BindingTest, ConnectionError) { 112 TEST_F(BindingTest, ConnectionError) {
113 bool called = false; 113 bool called = false;
114 { 114 {
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 } 172 }
173 173
174 // Tests that explicitly calling Unbind followed by rebinding works. 174 // Tests that explicitly calling Unbind followed by rebinding works.
175 TEST_F(BindingTest, Unbind) { 175 TEST_F(BindingTest, Unbind) {
176 ServiceImpl impl; 176 ServiceImpl impl;
177 sample::ServicePtr ptr; 177 sample::ServicePtr ptr;
178 Binding<sample::Service> binding(&impl, GetProxy(&ptr)); 178 Binding<sample::Service> binding(&impl, GetProxy(&ptr));
179 179
180 bool called = false; 180 bool called = false;
181 auto called_cb = [&called](int32_t result) { called = true; }; 181 auto called_cb = [&called](int32_t result) { called = true; };
182 ptr->Frobinate(nullptr, sample::Service::BAZ_OPTIONS_REGULAR, nullptr, 182 ptr->Frobinate(nullptr, sample::Service::BazOptions::REGULAR, nullptr,
183 called_cb); 183 called_cb);
184 loop().RunUntilIdle(); 184 loop().RunUntilIdle();
185 EXPECT_TRUE(called); 185 EXPECT_TRUE(called);
186 186
187 called = false; 187 called = false;
188 auto request = binding.Unbind(); 188 auto request = binding.Unbind();
189 EXPECT_FALSE(binding.is_bound()); 189 EXPECT_FALSE(binding.is_bound());
190 // All calls should fail when not bound... 190 // All calls should fail when not bound...
191 ptr->Frobinate(nullptr, sample::Service::BAZ_OPTIONS_REGULAR, nullptr, 191 ptr->Frobinate(nullptr, sample::Service::BazOptions::REGULAR, nullptr,
192 called_cb); 192 called_cb);
193 loop().RunUntilIdle(); 193 loop().RunUntilIdle();
194 EXPECT_FALSE(called); 194 EXPECT_FALSE(called);
195 195
196 called = false; 196 called = false;
197 binding.Bind(std::move(request)); 197 binding.Bind(std::move(request));
198 EXPECT_TRUE(binding.is_bound()); 198 EXPECT_TRUE(binding.is_bound());
199 // ...and should succeed again when the rebound. 199 // ...and should succeed again when the rebound.
200 ptr->Frobinate(nullptr, sample::Service::BAZ_OPTIONS_REGULAR, nullptr, 200 ptr->Frobinate(nullptr, sample::Service::BazOptions::REGULAR, nullptr,
201 called_cb); 201 called_cb);
202 loop().RunUntilIdle(); 202 loop().RunUntilIdle();
203 EXPECT_TRUE(called); 203 EXPECT_TRUE(called);
204 } 204 }
205 205
206 class IntegerAccessorImpl : public sample::IntegerAccessor { 206 class IntegerAccessorImpl : public sample::IntegerAccessor {
207 public: 207 public:
208 IntegerAccessorImpl() {} 208 IntegerAccessorImpl() {}
209 ~IntegerAccessorImpl() override {} 209 ~IntegerAccessorImpl() override {}
210 210
211 private: 211 private:
212 // sample::IntegerAccessor implementation. 212 // sample::IntegerAccessor implementation.
213 void GetInteger(const GetIntegerCallback& callback) override { 213 void GetInteger(const GetIntegerCallback& callback) override {
214 callback.Run(1, sample::ENUM_VALUE); 214 callback.Run(1, sample::Enum::VALUE);
215 } 215 }
216 void SetInteger(int64_t data, sample::Enum type) override {} 216 void SetInteger(int64_t data, sample::Enum type) override {}
217 217
218 MOJO_DISALLOW_COPY_AND_ASSIGN(IntegerAccessorImpl); 218 MOJO_DISALLOW_COPY_AND_ASSIGN(IntegerAccessorImpl);
219 }; 219 };
220 220
221 TEST_F(BindingTest, SetInterfacePtrVersion) { 221 TEST_F(BindingTest, SetInterfacePtrVersion) {
222 IntegerAccessorImpl impl; 222 IntegerAccessorImpl impl;
223 sample::IntegerAccessorPtr ptr; 223 sample::IntegerAccessorPtr ptr;
224 Binding<sample::IntegerAccessor> binding(&impl, &ptr); 224 Binding<sample::IntegerAccessor> binding(&impl, &ptr);
225 EXPECT_EQ(3u, ptr.version()); 225 EXPECT_EQ(3u, ptr.version());
226 } 226 }
227 227
228 TEST_F(BindingTest, PauseResume) { 228 TEST_F(BindingTest, PauseResume) {
229 bool called = false; 229 bool called = false;
230 auto called_cb = [&called](int32_t result) { called = true; }; 230 auto called_cb = [&called](int32_t result) { called = true; };
231 sample::ServicePtr ptr; 231 sample::ServicePtr ptr;
232 auto request = GetProxy(&ptr); 232 auto request = GetProxy(&ptr);
233 ServiceImpl impl; 233 ServiceImpl impl;
234 Binding<sample::Service> binding(&impl, std::move(request)); 234 Binding<sample::Service> binding(&impl, std::move(request));
235 binding.PauseIncomingMethodCallProcessing(); 235 binding.PauseIncomingMethodCallProcessing();
236 ptr->Frobinate(nullptr, sample::Service::BAZ_OPTIONS_REGULAR, nullptr, 236 ptr->Frobinate(nullptr, sample::Service::BazOptions::REGULAR, nullptr,
237 called_cb); 237 called_cb);
238 EXPECT_FALSE(called); 238 EXPECT_FALSE(called);
239 loop().RunUntilIdle(); 239 loop().RunUntilIdle();
240 // Frobinate() should not be called as the binding is paused. 240 // Frobinate() should not be called as the binding is paused.
241 EXPECT_FALSE(called); 241 EXPECT_FALSE(called);
242 242
243 // Resume the binding, which should trigger processing. 243 // Resume the binding, which should trigger processing.
244 binding.ResumeIncomingMethodCallProcessing(); 244 binding.ResumeIncomingMethodCallProcessing();
245 loop().RunUntilIdle(); 245 loop().RunUntilIdle();
246 EXPECT_TRUE(called); 246 EXPECT_TRUE(called);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
278 bool was_deleted = false; 278 bool was_deleted = false;
279 ServiceImpl impl(&was_deleted); 279 ServiceImpl impl(&was_deleted);
280 sample::ServicePtr ptr; 280 sample::ServicePtr ptr;
281 auto request = GetProxy(&ptr); 281 auto request = GetProxy(&ptr);
282 ptr.set_connection_error_handler( 282 ptr.set_connection_error_handler(
283 [&encountered_error]() { encountered_error = true; }); 283 [&encountered_error]() { encountered_error = true; });
284 bool called = false; 284 bool called = false;
285 auto called_cb = [&called](int32_t result) { called = true; }; 285 auto called_cb = [&called](int32_t result) { called = true; };
286 { 286 {
287 StrongBinding<sample::Service> binding(&impl, std::move(request)); 287 StrongBinding<sample::Service> binding(&impl, std::move(request));
288 ptr->Frobinate(nullptr, sample::Service::BAZ_OPTIONS_REGULAR, nullptr, 288 ptr->Frobinate(nullptr, sample::Service::BazOptions::REGULAR, nullptr,
289 called_cb); 289 called_cb);
290 loop().RunUntilIdle(); 290 loop().RunUntilIdle();
291 EXPECT_TRUE(called); 291 EXPECT_TRUE(called);
292 EXPECT_FALSE(encountered_error); 292 EXPECT_FALSE(encountered_error);
293 } 293 }
294 // Now that the StrongBinding is out of scope we should detect an error on the 294 // Now that the StrongBinding is out of scope we should detect an error on the
295 // other end of the pipe. 295 // other end of the pipe.
296 loop().RunUntilIdle(); 296 loop().RunUntilIdle();
297 EXPECT_TRUE(encountered_error); 297 EXPECT_TRUE(encountered_error);
298 // But destroying the StrongBinding doesn't destroy the object. 298 // But destroying the StrongBinding doesn't destroy the object.
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
359 was_deleted = false; // It shouldn't be double-deleted! 359 was_deleted = false; // It shouldn't be double-deleted!
360 loop().RunUntilIdle(); 360 loop().RunUntilIdle();
361 EXPECT_TRUE(ptr_error_handler_called); 361 EXPECT_TRUE(ptr_error_handler_called);
362 EXPECT_FALSE(was_deleted); 362 EXPECT_FALSE(was_deleted);
363 363
364 EXPECT_FALSE(binding_error_handler_called); 364 EXPECT_FALSE(binding_error_handler_called);
365 } 365 }
366 366
367 } // namespace 367 } // namespace
368 } // mojo 368 } // mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698