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/bindings/lib/connector.h" | 8 #include "mojo/public/bindings/lib/connector.h" |
9 #include "mojo/public/bindings/lib/message_queue.h" | 9 #include "mojo/public/bindings/lib/message_queue.h" |
10 #include "mojo/public/environment/environment.h" | 10 #include "mojo/public/environment/environment.h" |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
76 internal::Connector connector1(handle1_.Pass()); | 76 internal::Connector connector1(handle1_.Pass()); |
77 | 77 |
78 const char kText[] = "hello world"; | 78 const char kText[] = "hello world"; |
79 | 79 |
80 Message message; | 80 Message message; |
81 AllocMessage(kText, &message); | 81 AllocMessage(kText, &message); |
82 | 82 |
83 connector0.Accept(&message); | 83 connector0.Accept(&message); |
84 | 84 |
85 MessageAccumulator accumulator; | 85 MessageAccumulator accumulator; |
86 connector1.SetIncomingReceiver(&accumulator); | 86 connector1.set_incoming_receiver(&accumulator); |
87 | 87 |
88 PumpMessages(); | 88 PumpMessages(); |
89 | 89 |
90 ASSERT_FALSE(accumulator.IsEmpty()); | 90 ASSERT_FALSE(accumulator.IsEmpty()); |
91 | 91 |
92 Message message_received; | 92 Message message_received; |
93 accumulator.Pop(&message_received); | 93 accumulator.Pop(&message_received); |
94 | 94 |
95 EXPECT_EQ(std::string(kText), | 95 EXPECT_EQ(std::string(kText), |
96 std::string( | 96 std::string( |
97 reinterpret_cast<char*>(message_received.data->payload))); | 97 reinterpret_cast<char*>(message_received.data->payload))); |
98 } | 98 } |
99 | 99 |
100 TEST_F(ConnectorTest, Basic_EarlyIncomingReceiver) { | 100 TEST_F(ConnectorTest, Basic_EarlyIncomingReceiver) { |
101 internal::Connector connector0(handle0_.Pass()); | 101 internal::Connector connector0(handle0_.Pass()); |
102 internal::Connector connector1(handle1_.Pass()); | 102 internal::Connector connector1(handle1_.Pass()); |
103 | 103 |
104 MessageAccumulator accumulator; | 104 MessageAccumulator accumulator; |
105 connector1.SetIncomingReceiver(&accumulator); | 105 connector1.set_incoming_receiver(&accumulator); |
106 | 106 |
107 const char kText[] = "hello world"; | 107 const char kText[] = "hello world"; |
108 | 108 |
109 Message message; | 109 Message message; |
110 AllocMessage(kText, &message); | 110 AllocMessage(kText, &message); |
111 | 111 |
112 connector0.Accept(&message); | 112 connector0.Accept(&message); |
113 | 113 |
114 PumpMessages(); | 114 PumpMessages(); |
115 | 115 |
(...skipping 14 matching lines...) Expand all Loading... |
130 const char* kText[] = { "hello", "world" }; | 130 const char* kText[] = { "hello", "world" }; |
131 | 131 |
132 for (size_t i = 0; i < MOJO_ARRAYSIZE(kText); ++i) { | 132 for (size_t i = 0; i < MOJO_ARRAYSIZE(kText); ++i) { |
133 Message message; | 133 Message message; |
134 AllocMessage(kText[i], &message); | 134 AllocMessage(kText[i], &message); |
135 | 135 |
136 connector0.Accept(&message); | 136 connector0.Accept(&message); |
137 } | 137 } |
138 | 138 |
139 MessageAccumulator accumulator; | 139 MessageAccumulator accumulator; |
140 connector1.SetIncomingReceiver(&accumulator); | 140 connector1.set_incoming_receiver(&accumulator); |
141 | 141 |
142 PumpMessages(); | 142 PumpMessages(); |
143 | 143 |
144 for (size_t i = 0; i < MOJO_ARRAYSIZE(kText); ++i) { | 144 for (size_t i = 0; i < MOJO_ARRAYSIZE(kText); ++i) { |
145 ASSERT_FALSE(accumulator.IsEmpty()); | 145 ASSERT_FALSE(accumulator.IsEmpty()); |
146 | 146 |
147 Message message_received; | 147 Message message_received; |
148 accumulator.Pop(&message_received); | 148 accumulator.Pop(&message_received); |
149 | 149 |
150 EXPECT_EQ(std::string(kText[i]), | 150 EXPECT_EQ(std::string(kText[i]), |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
185 ScopedMessagePipeHandle handles[2]; | 185 ScopedMessagePipeHandle handles[2]; |
186 CreateMessagePipe(&handles[0], &handles[1]); | 186 CreateMessagePipe(&handles[0], &handles[1]); |
187 message.handles.push_back(handles[0].release()); | 187 message.handles.push_back(handles[0].release()); |
188 | 188 |
189 connector0.Accept(&message); | 189 connector0.Accept(&message); |
190 | 190 |
191 // The message should have been transferred, releasing the handles. | 191 // The message should have been transferred, releasing the handles. |
192 EXPECT_TRUE(message.handles.empty()); | 192 EXPECT_TRUE(message.handles.empty()); |
193 | 193 |
194 MessageAccumulator accumulator; | 194 MessageAccumulator accumulator; |
195 connector1.SetIncomingReceiver(&accumulator); | 195 connector1.set_incoming_receiver(&accumulator); |
196 | 196 |
197 PumpMessages(); | 197 PumpMessages(); |
198 | 198 |
199 ASSERT_FALSE(accumulator.IsEmpty()); | 199 ASSERT_FALSE(accumulator.IsEmpty()); |
200 | 200 |
201 Message message_received; | 201 Message message_received; |
202 accumulator.Pop(&message_received); | 202 accumulator.Pop(&message_received); |
203 | 203 |
204 EXPECT_EQ(std::string(kText), | 204 EXPECT_EQ(std::string(kText), |
205 std::string( | 205 std::string( |
206 reinterpret_cast<char*>(message_received.data->payload))); | 206 reinterpret_cast<char*>(message_received.data->payload))); |
207 ASSERT_EQ(1U, message_received.handles.size()); | 207 ASSERT_EQ(1U, message_received.handles.size()); |
208 | 208 |
209 // Now send a message to the transferred handle and confirm it's sent through | 209 // Now send a message to the transferred handle and confirm it's sent through |
210 // to the orginal pipe. | 210 // to the orginal pipe. |
211 // TODO(vtl): Do we need a better way of "downcasting" the handle types? | 211 // TODO(vtl): Do we need a better way of "downcasting" the handle types? |
212 ScopedMessagePipeHandle smph; | 212 ScopedMessagePipeHandle smph; |
213 smph.reset(MessagePipeHandle(message_received.handles[0].value())); | 213 smph.reset(MessagePipeHandle(message_received.handles[0].value())); |
214 message_received.handles[0] = Handle(); // |smph| now owns this handle. | 214 message_received.handles[0] = Handle(); // |smph| now owns this handle. |
215 | 215 |
216 internal::Connector connector_received(smph.Pass()); | 216 internal::Connector connector_received(smph.Pass()); |
217 internal::Connector connector_original(handles[1].Pass()); | 217 internal::Connector connector_original(handles[1].Pass()); |
218 | 218 |
219 AllocMessage(kText, &message); | 219 AllocMessage(kText, &message); |
220 | 220 |
221 connector_received.Accept(&message); | 221 connector_received.Accept(&message); |
222 connector_original.SetIncomingReceiver(&accumulator); | 222 connector_original.set_incoming_receiver(&accumulator); |
223 PumpMessages(); | 223 PumpMessages(); |
224 | 224 |
225 ASSERT_FALSE(accumulator.IsEmpty()); | 225 ASSERT_FALSE(accumulator.IsEmpty()); |
226 | 226 |
227 accumulator.Pop(&message_received); | 227 accumulator.Pop(&message_received); |
228 | 228 |
229 EXPECT_EQ(std::string(kText), | 229 EXPECT_EQ(std::string(kText), |
230 std::string( | 230 std::string( |
231 reinterpret_cast<char*>(message_received.data->payload))); | 231 reinterpret_cast<char*>(message_received.data->payload))); |
232 } | 232 } |
233 | 233 |
234 } // namespace test | 234 } // namespace test |
235 } // namespace mojo | 235 } // namespace mojo |
OLD | NEW |