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 "mojo/edk/system/channel.h" | 5 #include "mojo/edk/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" |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
97 base::Bind(&ChannelTest::CreateChannelOnIOThread, | 97 base::Bind(&ChannelTest::CreateChannelOnIOThread, |
98 base::Unretained(this))); | 98 base::Unretained(this))); |
99 ASSERT_TRUE(channel()); | 99 ASSERT_TRUE(channel()); |
100 | 100 |
101 io_thread()->PostTaskAndWait( | 101 io_thread()->PostTaskAndWait( |
102 FROM_HERE, | 102 FROM_HERE, |
103 base::Bind(&ChannelTest::InitChannelOnIOThread, base::Unretained(this))); | 103 base::Bind(&ChannelTest::InitChannelOnIOThread, base::Unretained(this))); |
104 EXPECT_EQ(TRISTATE_TRUE, init_result()); | 104 EXPECT_EQ(TRISTATE_TRUE, init_result()); |
105 | 105 |
106 io_thread()->PostTaskAndWait( | 106 io_thread()->PostTaskAndWait( |
107 FROM_HERE, | 107 FROM_HERE, base::Bind(&ChannelTest::ShutdownChannelOnIOThread, |
108 base::Bind(&ChannelTest::ShutdownChannelOnIOThread, | 108 base::Unretained(this))); |
109 base::Unretained(this))); | |
110 | 109 |
111 // Okay to destroy |Channel| on not-the-I/O-thread. | 110 // Okay to destroy |Channel| on not-the-I/O-thread. |
112 EXPECT_TRUE(channel()->HasOneRef()); | 111 EXPECT_TRUE(channel()->HasOneRef()); |
113 *mutable_channel() = nullptr; | 112 *mutable_channel() = nullptr; |
114 } | 113 } |
115 | 114 |
116 // ChannelTest.InitFails ------------------------------------------------------- | 115 // ChannelTest.InitFails ------------------------------------------------------- |
117 | 116 |
118 class MockRawChannelOnInitFails : public RawChannel { | 117 class MockRawChannelOnInitFails : public RawChannel { |
119 public: | 118 public: |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
196 | 195 |
197 scoped_refptr<ChannelEndpoint> channel_endpoint; | 196 scoped_refptr<ChannelEndpoint> channel_endpoint; |
198 scoped_refptr<MessagePipe> mp( | 197 scoped_refptr<MessagePipe> mp( |
199 MessagePipe::CreateLocalProxy(&channel_endpoint)); | 198 MessagePipe::CreateLocalProxy(&channel_endpoint)); |
200 | 199 |
201 mp->Close(0); | 200 mp->Close(0); |
202 | 201 |
203 channel()->AttachAndRunEndpoint(channel_endpoint, true); | 202 channel()->AttachAndRunEndpoint(channel_endpoint, true); |
204 | 203 |
205 io_thread()->PostTaskAndWait( | 204 io_thread()->PostTaskAndWait( |
206 FROM_HERE, | 205 FROM_HERE, base::Bind(&ChannelTest::ShutdownChannelOnIOThread, |
207 base::Bind(&ChannelTest::ShutdownChannelOnIOThread, | 206 base::Unretained(this))); |
208 base::Unretained(this))); | |
209 | 207 |
210 EXPECT_TRUE(channel()->HasOneRef()); | 208 EXPECT_TRUE(channel()->HasOneRef()); |
211 } | 209 } |
212 | 210 |
213 // ChannelTest.ShutdownAfterAttachAndRun --------------------------------------- | 211 // ChannelTest.ShutdownAfterAttachAndRun --------------------------------------- |
214 | 212 |
215 TEST_F(ChannelTest, ShutdownAfterAttach) { | 213 TEST_F(ChannelTest, ShutdownAfterAttach) { |
216 io_thread()->PostTaskAndWait(FROM_HERE, | 214 io_thread()->PostTaskAndWait(FROM_HERE, |
217 base::Bind(&ChannelTest::CreateChannelOnIOThread, | 215 base::Bind(&ChannelTest::CreateChannelOnIOThread, |
218 base::Unretained(this))); | 216 base::Unretained(this))); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
266 base::Bind(&ChannelTest::InitChannelOnIOThread, base::Unretained(this))); | 264 base::Bind(&ChannelTest::InitChannelOnIOThread, base::Unretained(this))); |
267 EXPECT_EQ(TRISTATE_TRUE, init_result()); | 265 EXPECT_EQ(TRISTATE_TRUE, init_result()); |
268 | 266 |
269 scoped_refptr<ChannelEndpoint> channel_endpoint; | 267 scoped_refptr<ChannelEndpoint> channel_endpoint; |
270 scoped_refptr<MessagePipe> mp( | 268 scoped_refptr<MessagePipe> mp( |
271 MessagePipe::CreateLocalProxy(&channel_endpoint)); | 269 MessagePipe::CreateLocalProxy(&channel_endpoint)); |
272 | 270 |
273 channel()->AttachAndRunEndpoint(channel_endpoint, true); | 271 channel()->AttachAndRunEndpoint(channel_endpoint, true); |
274 | 272 |
275 io_thread()->PostTaskAndWait( | 273 io_thread()->PostTaskAndWait( |
276 FROM_HERE, | 274 FROM_HERE, base::Bind(&ChannelTest::ShutdownChannelOnIOThread, |
277 base::Bind(&ChannelTest::ShutdownChannelOnIOThread, | 275 base::Unretained(this))); |
278 base::Unretained(this))); | |
279 | 276 |
280 Waiter waiter; | 277 Waiter waiter; |
281 waiter.Init(); | 278 waiter.Init(); |
282 HandleSignalsState hss; | 279 HandleSignalsState hss; |
283 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, | 280 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, |
284 mp->AddWaiter(0, &waiter, MOJO_HANDLE_SIGNAL_READABLE, 123, &hss)); | 281 mp->AddWaiter(0, &waiter, MOJO_HANDLE_SIGNAL_READABLE, 123, &hss)); |
285 EXPECT_EQ(0u, hss.satisfied_signals); | 282 EXPECT_EQ(0u, hss.satisfied_signals); |
286 EXPECT_EQ(0u, hss.satisfiable_signals); | 283 EXPECT_EQ(0u, hss.satisfiable_signals); |
287 | 284 |
288 mp->Close(0); | 285 mp->Close(0); |
289 | 286 |
290 EXPECT_TRUE(channel()->HasOneRef()); | 287 EXPECT_TRUE(channel()->HasOneRef()); |
291 } | 288 } |
292 | 289 |
293 // TODO(vtl): More. ------------------------------------------------------------ | 290 // TODO(vtl): More. ------------------------------------------------------------ |
294 | 291 |
295 } // namespace | 292 } // namespace |
296 } // namespace system | 293 } // namespace system |
297 } // namespace mojo | 294 } // namespace mojo |
OLD | NEW |