| OLD | NEW |
| 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 #include <algorithm> | 5 #include <algorithm> |
| 6 #include <ostream> | 6 #include <ostream> |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "mojo/public/cpp/bindings/allocation_scope.h" | 9 #include "mojo/public/cpp/bindings/allocation_scope.h" |
| 10 #include "mojo/public/cpp/environment/environment.h" | 10 #include "mojo/public/cpp/environment/environment.h" |
| (...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 259 | 259 |
| 260 if (i % 2 == 1) | 260 if (i % 2 == 1) |
| 261 std::cout << " "; | 261 std::cout << " "; |
| 262 if (i % 8 == 7) | 262 if (i % 8 == 7) |
| 263 std::cout << " "; | 263 std::cout << " "; |
| 264 } | 264 } |
| 265 } | 265 } |
| 266 | 266 |
| 267 class ServiceImpl : public Service { | 267 class ServiceImpl : public Service { |
| 268 public: | 268 public: |
| 269 virtual void Frobinate(const Foo& foo, BazOptions baz, ScopedPortHandle port) | 269 ServiceImpl() : client_(NULL) { |
| 270 } |
| 271 |
| 272 virtual void SetClient(ServiceClient* client) MOJO_OVERRIDE { |
| 273 client_ = client; |
| 274 } |
| 275 |
| 276 virtual void Frobinate(const Foo& foo, BazOptions baz, PortPtr port) |
| 270 MOJO_OVERRIDE { | 277 MOJO_OVERRIDE { |
| 271 // Users code goes here to handle the incoming Frobinate message. | 278 // Users code goes here to handle the incoming Frobinate message. |
| 272 | 279 |
| 273 // We mainly check that we're given the expected arguments. | 280 // We mainly check that we're given the expected arguments. |
| 274 CheckFoo(foo); | 281 CheckFoo(foo); |
| 275 EXPECT_EQ(BAZ_EXTRA, baz); | 282 EXPECT_EQ(BAZ_EXTRA, baz); |
| 276 | 283 |
| 277 if (g_dump_message_as_text) { | 284 if (g_dump_message_as_text) { |
| 278 // Also dump the Foo structure and all of its members. | 285 // Also dump the Foo structure and all of its members. |
| 279 std::cout << "Frobinate:" << std::endl; | 286 std::cout << "Frobinate:" << std::endl; |
| 280 int depth = 1; | 287 int depth = 1; |
| 281 Print(depth, "foo", foo); | 288 Print(depth, "foo", foo); |
| 282 Print(depth, "baz", baz); | 289 Print(depth, "baz", baz); |
| 283 Print(depth, "port", port.get()); | 290 Print(depth, "port", port.get()); |
| 284 } | 291 } |
| 285 } | 292 } |
| 293 |
| 294 private: |
| 295 ServiceClient* client_; |
| 296 }; |
| 297 |
| 298 class ServiceProxyImpl : public ServiceProxy { |
| 299 public: |
| 300 explicit ServiceProxyImpl(mojo::MessageReceiver* receiver) |
| 301 : ServiceProxy(receiver) { |
| 302 } |
| 303 |
| 304 virtual void SetClient(ServiceClient* client) MOJO_OVERRIDE { |
| 305 assert(false); |
| 306 } |
| 286 }; | 307 }; |
| 287 | 308 |
| 288 class SimpleMessageReceiver : public mojo::MessageReceiver { | 309 class SimpleMessageReceiver : public mojo::MessageReceiver { |
| 289 public: | 310 public: |
| 290 virtual bool Accept(mojo::Message* message) MOJO_OVERRIDE { | 311 virtual bool Accept(mojo::Message* message) MOJO_OVERRIDE { |
| 291 // Imagine some IPC happened here. | 312 // Imagine some IPC happened here. |
| 292 | 313 |
| 293 if (g_dump_message_as_hex) { | 314 if (g_dump_message_as_hex) { |
| 294 DumpHex(reinterpret_cast<const uint8_t*>(message->data()), | 315 DumpHex(reinterpret_cast<const uint8_t*>(message->data()), |
| 295 message->data_num_bytes()); | 316 message->data_num_bytes()); |
| 296 } | 317 } |
| 297 | 318 |
| 298 // In the receiving process, an implementation of ServiceStub is known to | 319 // In the receiving process, an implementation of ServiceStub is known to |
| 299 // the system. It receives the incoming message. | 320 // the system. It receives the incoming message. |
| 300 ServiceImpl impl; | 321 ServiceImpl impl; |
| 301 | 322 |
| 302 ServiceStub stub(&impl); | 323 ServiceStub stub; |
| 324 stub.set_sink(&impl); |
| 303 return stub.Accept(message); | 325 return stub.Accept(message); |
| 304 } | 326 } |
| 305 | 327 |
| 306 virtual bool AcceptWithResponder(mojo::Message* message, | 328 virtual bool AcceptWithResponder(mojo::Message* message, |
| 307 mojo::MessageReceiver* responder) | 329 mojo::MessageReceiver* responder) |
| 308 MOJO_OVERRIDE { | 330 MOJO_OVERRIDE { |
| 309 return false; | 331 return false; |
| 310 } | 332 } |
| 311 }; | 333 }; |
| 312 | 334 |
| 313 TEST(BindingsSampleTest, Basic) { | 335 TEST(BindingsSampleTest, Basic) { |
| 314 mojo::Environment env; | 336 mojo::Environment env; |
| 315 SimpleMessageReceiver receiver; | 337 SimpleMessageReceiver receiver; |
| 316 | 338 |
| 317 // User has a proxy to a Service somehow. | 339 // User has a proxy to a Service somehow. |
| 318 Service* service = new ServiceProxy(&receiver); | 340 Service* service = new ServiceProxyImpl(&receiver); |
| 319 | 341 |
| 320 // User constructs a message to send. | 342 // User constructs a message to send. |
| 321 | 343 |
| 322 // Notice that it doesn't matter in what order the structs / arrays are | 344 // Notice that it doesn't matter in what order the structs / arrays are |
| 323 // allocated. Here, the various members of Foo are allocated before Foo is | 345 // allocated. Here, the various members of Foo are allocated before Foo is |
| 324 // allocated. | 346 // allocated. |
| 325 | 347 |
| 326 mojo::AllocationScope scope; | 348 mojo::AllocationScope scope; |
| 327 | 349 |
| 328 Foo foo = MakeFoo(); | 350 Foo foo = MakeFoo(); |
| 329 CheckFoo(foo); | 351 CheckFoo(foo); |
| 330 | 352 |
| 331 mojo::InterfacePipe<Port, mojo::AnyInterface> pipe; | 353 PortPtr port; |
| 332 service->Frobinate(foo, Service::BAZ_EXTRA, pipe.handle_to_self.Pass()); | 354 service->Frobinate(foo, Service::BAZ_EXTRA, port.Pass()); |
| 333 } | 355 } |
| 334 | 356 |
| 335 TEST(BindingsSampleTest, DefaultValues) { | 357 TEST(BindingsSampleTest, DefaultValues) { |
| 336 mojo::Environment env; | 358 mojo::Environment env; |
| 337 SimpleMessageReceiver receiver; | 359 SimpleMessageReceiver receiver; |
| 338 mojo::AllocationScope scope; | 360 mojo::AllocationScope scope; |
| 339 | 361 |
| 340 Bar bar = Bar::Builder().Finish(); | 362 Bar bar = Bar::Builder().Finish(); |
| 341 EXPECT_EQ(255, bar.alpha()); | 363 EXPECT_EQ(255, bar.alpha()); |
| 342 | 364 |
| (...skipping 24 matching lines...) Expand all Loading... |
| 367 | 389 |
| 368 EXPECT_EQ(1u, full.shape_masks().size()); | 390 EXPECT_EQ(1u, full.shape_masks().size()); |
| 369 EXPECT_EQ(1 << imported::SHAPE_RECTANGLE, full.shape_masks()[0]); | 391 EXPECT_EQ(1 << imported::SHAPE_RECTANGLE, full.shape_masks()[0]); |
| 370 | 392 |
| 371 EXPECT_EQ(imported::SHAPE_CIRCLE, full.thing().shape()); | 393 EXPECT_EQ(imported::SHAPE_CIRCLE, full.thing().shape()); |
| 372 EXPECT_EQ(imported::COLOR_BLACK, full.thing().color()); | 394 EXPECT_EQ(imported::COLOR_BLACK, full.thing().color()); |
| 373 } | 395 } |
| 374 | 396 |
| 375 } // namespace | 397 } // namespace |
| 376 } // namespace sample | 398 } // namespace sample |
| OLD | NEW |