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

Side by Side Diff: mojo/system/channel_unittest.cc

Issue 591573002: Mojo: Remove Channel::AttachMessagePipeEndpoint(). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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
« no previous file with comments | « mojo/system/channel_endpoint.h ('k') | mojo/system/message_pipe_dispatcher.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "mojo/system/channel.h" 5 #include "mojo/system/channel.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/location.h" 8 #include "base/location.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/test/test_io_thread.h" 10 #include "base/test/test_io_thread.h"
11 #include "mojo/embedder/platform_channel_pair.h" 11 #include "mojo/embedder/platform_channel_pair.h"
12 #include "mojo/embedder/simple_platform_support.h" 12 #include "mojo/embedder/simple_platform_support.h"
13 #include "mojo/system/channel_endpoint.h"
13 #include "mojo/system/message_in_transit.h" 14 #include "mojo/system/message_in_transit.h"
14 #include "mojo/system/message_pipe.h" 15 #include "mojo/system/message_pipe.h"
15 #include "mojo/system/raw_channel.h" 16 #include "mojo/system/raw_channel.h"
16 #include "mojo/system/test_utils.h" 17 #include "mojo/system/test_utils.h"
17 #include "mojo/system/waiter.h" 18 #include "mojo/system/waiter.h"
18 #include "testing/gtest/include/gtest/gtest.h" 19 #include "testing/gtest/include/gtest/gtest.h"
19 20
20 namespace mojo { 21 namespace mojo {
21 namespace system { 22 namespace system {
22 namespace { 23 namespace {
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 base::Unretained(this))); 189 base::Unretained(this)));
189 ASSERT_TRUE(channel()); 190 ASSERT_TRUE(channel());
190 191
191 io_thread()->PostTaskAndWait( 192 io_thread()->PostTaskAndWait(
192 FROM_HERE, 193 FROM_HERE,
193 base::Bind(&ChannelTest::InitChannelOnIOThread, base::Unretained(this))); 194 base::Bind(&ChannelTest::InitChannelOnIOThread, base::Unretained(this)));
194 EXPECT_EQ(TRISTATE_TRUE, init_result()); 195 EXPECT_EQ(TRISTATE_TRUE, init_result());
195 196
196 scoped_refptr<MessagePipe> mp(MessagePipe::CreateLocalProxy()); 197 scoped_refptr<MessagePipe> mp(MessagePipe::CreateLocalProxy());
197 198
198 MessageInTransit::EndpointId local_id = 199 MessageInTransit::EndpointId local_id = channel()->AttachEndpoint(
199 channel()->AttachMessagePipeEndpoint(mp, 1); 200 make_scoped_refptr(new ChannelEndpoint(mp.get(), 1)));
200 EXPECT_EQ(Channel::kBootstrapEndpointId, local_id); 201 EXPECT_EQ(Channel::kBootstrapEndpointId, local_id);
201 202
202 mp->Close(0); 203 mp->Close(0);
203 204
204 // TODO(vtl): Currently, the |Close()| above won't detach (since it thinks 205 // TODO(vtl): Currently, the |Close()| above won't detach (since it thinks
205 // we're still expecting a "run" message from the other side), so the 206 // we're still expecting a "run" message from the other side), so the
206 // |RunMessagePipeEndpoint()| below will return true. We need to refactor 207 // |RunMessagePipeEndpoint()| below will return true. We need to refactor
207 // |AttachMessagePipeEndpoint()| to indicate whether |Run...()| will 208 // |AttachEndpoint()| to indicate whether |Run...()| will necessarily be
208 // necessarily be called or not. (Then, in the case that it may not be called, 209 // called or not. (Then, in the case that it may not be called, this will
209 // this will return false.) 210 // return false.)
210 EXPECT_TRUE(channel()->RunMessagePipeEndpoint(local_id, 211 EXPECT_TRUE(channel()->RunMessagePipeEndpoint(local_id,
211 Channel::kBootstrapEndpointId)); 212 Channel::kBootstrapEndpointId));
212 213
213 io_thread()->PostTaskAndWait( 214 io_thread()->PostTaskAndWait(
214 FROM_HERE, 215 FROM_HERE,
215 base::Bind(&ChannelTest::ShutdownChannelOnIOThread, 216 base::Bind(&ChannelTest::ShutdownChannelOnIOThread,
216 base::Unretained(this))); 217 base::Unretained(this)));
217 218
218 EXPECT_TRUE(channel()->HasOneRef()); 219 EXPECT_TRUE(channel()->HasOneRef());
219 } 220 }
220 221
221 // ChannelTest.ShutdownAfterAttachAndRun --------------------------------------- 222 // ChannelTest.ShutdownAfterAttachAndRun ---------------------------------------
222 223
223 TEST_F(ChannelTest, ShutdownAfterAttach) { 224 TEST_F(ChannelTest, ShutdownAfterAttach) {
224 io_thread()->PostTaskAndWait(FROM_HERE, 225 io_thread()->PostTaskAndWait(FROM_HERE,
225 base::Bind(&ChannelTest::CreateChannelOnIOThread, 226 base::Bind(&ChannelTest::CreateChannelOnIOThread,
226 base::Unretained(this))); 227 base::Unretained(this)));
227 ASSERT_TRUE(channel()); 228 ASSERT_TRUE(channel());
228 229
229 io_thread()->PostTaskAndWait( 230 io_thread()->PostTaskAndWait(
230 FROM_HERE, 231 FROM_HERE,
231 base::Bind(&ChannelTest::InitChannelOnIOThread, base::Unretained(this))); 232 base::Bind(&ChannelTest::InitChannelOnIOThread, base::Unretained(this)));
232 EXPECT_EQ(TRISTATE_TRUE, init_result()); 233 EXPECT_EQ(TRISTATE_TRUE, init_result());
233 234
234 scoped_refptr<MessagePipe> mp(MessagePipe::CreateLocalProxy()); 235 scoped_refptr<MessagePipe> mp(MessagePipe::CreateLocalProxy());
235 236
236 MessageInTransit::EndpointId local_id = 237 MessageInTransit::EndpointId local_id = channel()->AttachEndpoint(
237 channel()->AttachMessagePipeEndpoint(mp, 1); 238 make_scoped_refptr(new ChannelEndpoint(mp.get(), 1)));
238 EXPECT_EQ(Channel::kBootstrapEndpointId, local_id); 239 EXPECT_EQ(Channel::kBootstrapEndpointId, local_id);
239 240
240 // TODO(vtl): Currently, we always "expect" a |RunMessagePipeEndpoint()| after 241 // TODO(vtl): Currently, we always "expect" a |RunMessagePipeEndpoint()| after
241 // an |AttachMessagePipeEndpoint()| (which is actually incorrect). We need to 242 // an |AttachEndpoint()| (which is actually incorrect). We need to refactor
242 // refactor |AttachMessagePipeEndpoint()| to indicate whether |Run...()| will 243 // |AttachEndpoint()| to indicate whether |Run...()| will necessarily be
243 // necessarily be called or not. (Then, in the case that it may not be called, 244 // called or not. (Then, in the case that it may not be called, we should test
244 // we should test a |Shutdown()| without the |Run...()|.) 245 // a |Shutdown()| without the |Run...()|.)
245 EXPECT_TRUE(channel()->RunMessagePipeEndpoint(local_id, 246 EXPECT_TRUE(channel()->RunMessagePipeEndpoint(local_id,
246 Channel::kBootstrapEndpointId)); 247 Channel::kBootstrapEndpointId));
247 248
248 Waiter waiter; 249 Waiter waiter;
249 waiter.Init(); 250 waiter.Init();
250 ASSERT_EQ(MOJO_RESULT_OK, 251 ASSERT_EQ(MOJO_RESULT_OK,
251 mp->AddWaiter(0, &waiter, MOJO_HANDLE_SIGNAL_READABLE, 123, NULL)); 252 mp->AddWaiter(0, &waiter, MOJO_HANDLE_SIGNAL_READABLE, 123, NULL));
252 253
253 // Don't wait for the shutdown to run ... 254 // Don't wait for the shutdown to run ...
254 io_thread()->PostTask(FROM_HERE, 255 io_thread()->PostTask(FROM_HERE,
(...skipping 21 matching lines...) Expand all
276 base::Unretained(this))); 277 base::Unretained(this)));
277 ASSERT_TRUE(channel()); 278 ASSERT_TRUE(channel());
278 279
279 io_thread()->PostTaskAndWait( 280 io_thread()->PostTaskAndWait(
280 FROM_HERE, 281 FROM_HERE,
281 base::Bind(&ChannelTest::InitChannelOnIOThread, base::Unretained(this))); 282 base::Bind(&ChannelTest::InitChannelOnIOThread, base::Unretained(this)));
282 EXPECT_EQ(TRISTATE_TRUE, init_result()); 283 EXPECT_EQ(TRISTATE_TRUE, init_result());
283 284
284 scoped_refptr<MessagePipe> mp(MessagePipe::CreateLocalProxy()); 285 scoped_refptr<MessagePipe> mp(MessagePipe::CreateLocalProxy());
285 286
286 MessageInTransit::EndpointId local_id = 287 MessageInTransit::EndpointId local_id = channel()->AttachEndpoint(
287 channel()->AttachMessagePipeEndpoint(mp, 1); 288 make_scoped_refptr(new ChannelEndpoint(mp.get(), 1)));
288 EXPECT_EQ(Channel::kBootstrapEndpointId, local_id); 289 EXPECT_EQ(Channel::kBootstrapEndpointId, local_id);
289 290
290 EXPECT_TRUE(channel()->RunMessagePipeEndpoint(local_id, 291 EXPECT_TRUE(channel()->RunMessagePipeEndpoint(local_id,
291 Channel::kBootstrapEndpointId)); 292 Channel::kBootstrapEndpointId));
292 293
293 io_thread()->PostTaskAndWait( 294 io_thread()->PostTaskAndWait(
294 FROM_HERE, 295 FROM_HERE,
295 base::Bind(&ChannelTest::ShutdownChannelOnIOThread, 296 base::Bind(&ChannelTest::ShutdownChannelOnIOThread,
296 base::Unretained(this))); 297 base::Unretained(this)));
297 298
298 Waiter waiter; 299 Waiter waiter;
299 waiter.Init(); 300 waiter.Init();
300 HandleSignalsState hss; 301 HandleSignalsState hss;
301 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, 302 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION,
302 mp->AddWaiter(0, &waiter, MOJO_HANDLE_SIGNAL_READABLE, 123, &hss)); 303 mp->AddWaiter(0, &waiter, MOJO_HANDLE_SIGNAL_READABLE, 123, &hss));
303 EXPECT_EQ(0u, hss.satisfied_signals); 304 EXPECT_EQ(0u, hss.satisfied_signals);
304 EXPECT_EQ(0u, hss.satisfiable_signals); 305 EXPECT_EQ(0u, hss.satisfiable_signals);
305 306
306 mp->Close(0); 307 mp->Close(0);
307 308
308 EXPECT_TRUE(channel()->HasOneRef()); 309 EXPECT_TRUE(channel()->HasOneRef());
309 } 310 }
310 311
311 // TODO(vtl): More. ------------------------------------------------------------ 312 // TODO(vtl): More. ------------------------------------------------------------
312 313
313 } // namespace 314 } // namespace
314 } // namespace system 315 } // namespace system
315 } // namespace mojo 316 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/system/channel_endpoint.h ('k') | mojo/system/message_pipe_dispatcher.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698