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 <stdlib.h> | 5 #include <stdlib.h> |
6 #include <string.h> | 6 #include <string.h> |
7 | 7 |
8 #include "mojo/public/cpp/bindings/lib/message_builder.h" | 8 #include "mojo/public/cpp/bindings/lib/message_builder.h" |
9 #include "mojo/public/cpp/bindings/lib/message_queue.h" | 9 #include "mojo/public/cpp/bindings/lib/message_queue.h" |
10 #include "mojo/public/cpp/bindings/lib/router.h" | 10 #include "mojo/public/cpp/bindings/lib/router.h" |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
127 protected: | 127 protected: |
128 ScopedMessagePipeHandle handle0_; | 128 ScopedMessagePipeHandle handle0_; |
129 ScopedMessagePipeHandle handle1_; | 129 ScopedMessagePipeHandle handle1_; |
130 | 130 |
131 private: | 131 private: |
132 Environment env_; | 132 Environment env_; |
133 RunLoop loop_; | 133 RunLoop loop_; |
134 }; | 134 }; |
135 | 135 |
136 TEST_F(RouterTest, BasicRequestResponse) { | 136 TEST_F(RouterTest, BasicRequestResponse) { |
137 internal::Router router0(handle0_.Pass()); | 137 internal::Router router0(handle0_.Pass(), internal::FilterChain()); |
138 internal::Router router1(handle1_.Pass()); | 138 internal::Router router1(handle1_.Pass(), internal::FilterChain()); |
139 | 139 |
140 ResponseGenerator generator; | 140 ResponseGenerator generator; |
141 router1.set_incoming_receiver(&generator); | 141 router1.set_incoming_receiver(&generator); |
142 | 142 |
143 Message request; | 143 Message request; |
144 AllocRequestMessage(1, "hello", &request); | 144 AllocRequestMessage(1, "hello", &request); |
145 | 145 |
146 internal::MessageQueue message_queue; | 146 internal::MessageQueue message_queue; |
147 router0.AcceptWithResponder(&request, new MessageAccumulator(&message_queue)); | 147 router0.AcceptWithResponder(&request, new MessageAccumulator(&message_queue)); |
148 | 148 |
149 PumpMessages(); | 149 PumpMessages(); |
150 | 150 |
151 EXPECT_FALSE(message_queue.IsEmpty()); | 151 EXPECT_FALSE(message_queue.IsEmpty()); |
152 | 152 |
153 Message response; | 153 Message response; |
154 message_queue.Pop(&response); | 154 message_queue.Pop(&response); |
155 | 155 |
156 EXPECT_EQ(std::string("world"), | 156 EXPECT_EQ(std::string("world"), |
157 std::string(reinterpret_cast<const char*>(response.payload()))); | 157 std::string(reinterpret_cast<const char*>(response.payload()))); |
158 } | 158 } |
159 | 159 |
160 TEST_F(RouterTest, RequestWithNoReceiver) { | 160 TEST_F(RouterTest, RequestWithNoReceiver) { |
161 internal::Router router0(handle0_.Pass()); | 161 internal::Router router0(handle0_.Pass(), internal::FilterChain()); |
162 internal::Router router1(handle1_.Pass()); | 162 internal::Router router1(handle1_.Pass(), internal::FilterChain()); |
163 | 163 |
164 // Without an incoming receiver set on router1, we expect router0 to observe | 164 // Without an incoming receiver set on router1, we expect router0 to observe |
165 // an error as a result of sending a message. | 165 // an error as a result of sending a message. |
166 | 166 |
167 Message request; | 167 Message request; |
168 AllocRequestMessage(1, "hello", &request); | 168 AllocRequestMessage(1, "hello", &request); |
169 | 169 |
170 internal::MessageQueue message_queue; | 170 internal::MessageQueue message_queue; |
171 router0.AcceptWithResponder(&request, new MessageAccumulator(&message_queue)); | 171 router0.AcceptWithResponder(&request, new MessageAccumulator(&message_queue)); |
172 | 172 |
173 PumpMessages(); | 173 PumpMessages(); |
174 | 174 |
175 EXPECT_TRUE(router0.encountered_error()); | 175 EXPECT_TRUE(router0.encountered_error()); |
176 EXPECT_TRUE(router1.encountered_error()); | 176 EXPECT_TRUE(router1.encountered_error()); |
177 EXPECT_TRUE(message_queue.IsEmpty()); | 177 EXPECT_TRUE(message_queue.IsEmpty()); |
178 } | 178 } |
179 | 179 |
180 TEST_F(RouterTest, LateResponse) { | 180 TEST_F(RouterTest, LateResponse) { |
181 // Test that things won't blow up if we try to send a message to a | 181 // Test that things won't blow up if we try to send a message to a |
182 // MessageReceiver, which was given to us via AcceptWithResponder, | 182 // MessageReceiver, which was given to us via AcceptWithResponder, |
183 // after the router has gone away. | 183 // after the router has gone away. |
184 | 184 |
185 LazyResponseGenerator generator; | 185 LazyResponseGenerator generator; |
186 { | 186 { |
187 internal::Router router0(handle0_.Pass()); | 187 internal::Router router0(handle0_.Pass(), internal::FilterChain()); |
188 internal::Router router1(handle1_.Pass()); | 188 internal::Router router1(handle1_.Pass(), internal::FilterChain()); |
189 | 189 |
190 router1.set_incoming_receiver(&generator); | 190 router1.set_incoming_receiver(&generator); |
191 | 191 |
192 Message request; | 192 Message request; |
193 AllocRequestMessage(1, "hello", &request); | 193 AllocRequestMessage(1, "hello", &request); |
194 | 194 |
195 internal::MessageQueue message_queue; | 195 internal::MessageQueue message_queue; |
196 router0.AcceptWithResponder(&request, | 196 router0.AcceptWithResponder(&request, |
197 new MessageAccumulator(&message_queue)); | 197 new MessageAccumulator(&message_queue)); |
198 | 198 |
199 PumpMessages(); | 199 PumpMessages(); |
200 | 200 |
201 EXPECT_TRUE(generator.has_responder()); | 201 EXPECT_TRUE(generator.has_responder()); |
202 | 202 |
203 } | 203 } |
204 | 204 |
205 generator.Complete(); // This should end up doing nothing. | 205 generator.Complete(); // This should end up doing nothing. |
206 } | 206 } |
207 | 207 |
208 } // namespace | 208 } // namespace |
209 } // namespace test | 209 } // namespace test |
210 } // namespace mojo | 210 } // namespace mojo |
OLD | NEW |