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

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

Issue 273233002: Mojo cpp bindings: add support for validating incoming messages. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: sync and rebase Created 6 years, 7 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 | Annotate | Revision Log
OLDNEW
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698