OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 <stdlib.h> | 5 #include <stdlib.h> |
6 #include <string.h> | 6 #include <string.h> |
7 | 7 |
8 #include "mojo/public/cpp/bindings/lib/connector.h" | 8 #include "mojo/public/cpp/bindings/lib/connector.h" |
9 #include "mojo/public/cpp/bindings/lib/message_builder.h" | 9 #include "mojo/public/cpp/bindings/lib/message_builder.h" |
10 #include "mojo/public/cpp/bindings/lib/message_queue.h" | 10 #include "mojo/public/cpp/bindings/lib/message_queue.h" |
11 #include "mojo/public/cpp/environment/environment.h" | 11 #include "mojo/public/cpp/environment/environment.h" |
12 #include "mojo/public/cpp/system/macros.h" | 12 #include "mojo/public/cpp/system/macros.h" |
13 #include "mojo/public/cpp/utility/run_loop.h" | 13 #include "mojo/public/cpp/utility/run_loop.h" |
14 #include "testing/gtest/include/gtest/gtest.h" | 14 #include "testing/gtest/include/gtest/gtest.h" |
15 | 15 |
16 namespace mojo { | 16 namespace mojo { |
17 namespace test { | 17 namespace test { |
18 namespace { | 18 namespace { |
19 | 19 |
20 class MessageAccumulator : public MessageReceiver { | 20 class MessageAccumulator : public MessageReceiver { |
21 public: | 21 public: |
22 MessageAccumulator() {} | 22 MessageAccumulator() {} |
23 | 23 |
24 virtual bool Accept(Message* message) override { | 24 bool Accept(Message* message) override { |
25 queue_.Push(message); | 25 queue_.Push(message); |
26 return true; | 26 return true; |
27 } | 27 } |
28 | 28 |
29 bool IsEmpty() const { return queue_.IsEmpty(); } | 29 bool IsEmpty() const { return queue_.IsEmpty(); } |
30 | 30 |
31 void Pop(Message* message) { queue_.Pop(message); } | 31 void Pop(Message* message) { queue_.Pop(message); } |
32 | 32 |
33 private: | 33 private: |
34 internal::MessageQueue queue_; | 34 internal::MessageQueue queue_; |
35 }; | 35 }; |
36 | 36 |
37 class ConnectorDeletingMessageAccumulator : public MessageAccumulator { | 37 class ConnectorDeletingMessageAccumulator : public MessageAccumulator { |
38 public: | 38 public: |
39 ConnectorDeletingMessageAccumulator(internal::Connector** connector) | 39 ConnectorDeletingMessageAccumulator(internal::Connector** connector) |
40 : connector_(connector) {} | 40 : connector_(connector) {} |
41 | 41 |
42 virtual bool Accept(Message* message) override { | 42 bool Accept(Message* message) override { |
43 delete *connector_; | 43 delete *connector_; |
44 *connector_ = 0; | 44 *connector_ = 0; |
45 return MessageAccumulator::Accept(message); | 45 return MessageAccumulator::Accept(message); |
46 } | 46 } |
47 | 47 |
48 private: | 48 private: |
49 internal::Connector** connector_; | 49 internal::Connector** connector_; |
50 }; | 50 }; |
51 | 51 |
52 class ReentrantMessageAccumulator : public MessageAccumulator { | 52 class ReentrantMessageAccumulator : public MessageAccumulator { |
53 public: | 53 public: |
54 ReentrantMessageAccumulator(internal::Connector* connector) | 54 ReentrantMessageAccumulator(internal::Connector* connector) |
55 : connector_(connector), number_of_calls_(0) {} | 55 : connector_(connector), number_of_calls_(0) {} |
56 | 56 |
57 virtual bool Accept(Message* message) override { | 57 bool Accept(Message* message) override { |
58 if (!MessageAccumulator::Accept(message)) | 58 if (!MessageAccumulator::Accept(message)) |
59 return false; | 59 return false; |
60 number_of_calls_++; | 60 number_of_calls_++; |
61 if (number_of_calls_ == 1) { | 61 if (number_of_calls_ == 1) { |
62 return connector_->WaitForIncomingMessage(); | 62 return connector_->WaitForIncomingMessage(); |
63 } | 63 } |
64 return true; | 64 return true; |
65 } | 65 } |
66 | 66 |
67 int number_of_calls() { return number_of_calls_; } | 67 int number_of_calls() { return number_of_calls_; } |
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
385 std::string(kText[i]), | 385 std::string(kText[i]), |
386 std::string(reinterpret_cast<const char*>(message_received.payload()))); | 386 std::string(reinterpret_cast<const char*>(message_received.payload()))); |
387 } | 387 } |
388 | 388 |
389 ASSERT_EQ(2, accumulator.number_of_calls()); | 389 ASSERT_EQ(2, accumulator.number_of_calls()); |
390 } | 390 } |
391 | 391 |
392 } // namespace | 392 } // namespace |
393 } // namespace test | 393 } // namespace test |
394 } // namespace mojo | 394 } // namespace mojo |
OLD | NEW |