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

Side by Side Diff: mojo/edk/system/remote_message_pipe_unittest.cc

Issue 2075353002: Plumb the handle signals state out of Waiter::Wait(). (Closed) Base URL: https://github.com/domokit/mojo.git@work795_wait_set_4.3-x-work794_wait_set_4.2
Patch Set: Created 4 years, 6 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
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 <stdint.h> 5 #include <stdint.h>
6 #include <stdio.h> 6 #include <stdio.h>
7 #include <string.h> 7 #include <string.h>
8 8
9 #include <memory> 9 #include <memory>
10 #include <utility> 10 #include <utility>
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
199 mp1->AddAwakable(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, false, 199 mp1->AddAwakable(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, false,
200 123, nullptr)); 200 123, nullptr));
201 201
202 // Write to MP 0, port 0. 202 // Write to MP 0, port 0.
203 EXPECT_EQ( 203 EXPECT_EQ(
204 MOJO_RESULT_OK, 204 MOJO_RESULT_OK,
205 mp0->WriteMessage(0, UserPointer<const void>(kHello), sizeof(kHello), 205 mp0->WriteMessage(0, UserPointer<const void>(kHello), sizeof(kHello),
206 nullptr, MOJO_WRITE_MESSAGE_FLAG_NONE)); 206 nullptr, MOJO_WRITE_MESSAGE_FLAG_NONE));
207 207
208 // Wait. 208 // Wait.
209 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); 209 EXPECT_EQ(MOJO_RESULT_OK,
210 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr));
210 EXPECT_EQ(123u, context); 211 EXPECT_EQ(123u, context);
211 hss = HandleSignalsState(); 212 hss = HandleSignalsState();
212 mp1->RemoveAwakable(1, &waiter, &hss); 213 mp1->RemoveAwakable(1, &waiter, &hss);
213 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, 214 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE,
214 hss.satisfied_signals); 215 hss.satisfied_signals);
215 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | 216 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE |
216 MOJO_HANDLE_SIGNAL_PEER_CLOSED, 217 MOJO_HANDLE_SIGNAL_PEER_CLOSED,
217 hss.satisfiable_signals); 218 hss.satisfiable_signals);
218 219
219 // Read from MP 1, port 1. 220 // Read from MP 1, port 1.
220 EXPECT_EQ(MOJO_RESULT_OK, 221 EXPECT_EQ(MOJO_RESULT_OK,
221 mp1->ReadMessage(1, UserPointer<void>(buffer), 222 mp1->ReadMessage(1, UserPointer<void>(buffer),
222 MakeUserPointer(&buffer_size), nullptr, nullptr, 223 MakeUserPointer(&buffer_size), nullptr, nullptr,
223 MOJO_READ_MESSAGE_FLAG_NONE)); 224 MOJO_READ_MESSAGE_FLAG_NONE));
224 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(buffer_size)); 225 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(buffer_size));
225 EXPECT_STREQ(kHello, buffer); 226 EXPECT_STREQ(kHello, buffer);
226 227
227 // Write in the other direction: MP 1, port 1 -> ... -> MP 0, port 0. 228 // Write in the other direction: MP 1, port 1 -> ... -> MP 0, port 0.
228 229
229 waiter.Init(); 230 waiter.Init();
230 ASSERT_EQ(MOJO_RESULT_OK, 231 ASSERT_EQ(MOJO_RESULT_OK,
231 mp0->AddAwakable(0, &waiter, MOJO_HANDLE_SIGNAL_READABLE, false, 232 mp0->AddAwakable(0, &waiter, MOJO_HANDLE_SIGNAL_READABLE, false,
232 456, nullptr)); 233 456, nullptr));
233 234
234 EXPECT_EQ( 235 EXPECT_EQ(
235 MOJO_RESULT_OK, 236 MOJO_RESULT_OK,
236 mp1->WriteMessage(1, UserPointer<const void>(kWorld), sizeof(kWorld), 237 mp1->WriteMessage(1, UserPointer<const void>(kWorld), sizeof(kWorld),
237 nullptr, MOJO_WRITE_MESSAGE_FLAG_NONE)); 238 nullptr, MOJO_WRITE_MESSAGE_FLAG_NONE));
238 239
239 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); 240 EXPECT_EQ(MOJO_RESULT_OK,
241 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr));
240 EXPECT_EQ(456u, context); 242 EXPECT_EQ(456u, context);
241 hss = HandleSignalsState(); 243 hss = HandleSignalsState();
242 mp0->RemoveAwakable(0, &waiter, &hss); 244 mp0->RemoveAwakable(0, &waiter, &hss);
243 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, 245 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE,
244 hss.satisfied_signals); 246 hss.satisfied_signals);
245 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | 247 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE |
246 MOJO_HANDLE_SIGNAL_PEER_CLOSED, 248 MOJO_HANDLE_SIGNAL_PEER_CLOSED,
247 hss.satisfiable_signals); 249 hss.satisfiable_signals);
248 250
249 buffer_size = static_cast<uint32_t>(sizeof(buffer)); 251 buffer_size = static_cast<uint32_t>(sizeof(buffer));
250 EXPECT_EQ(MOJO_RESULT_OK, 252 EXPECT_EQ(MOJO_RESULT_OK,
251 mp0->ReadMessage(0, UserPointer<void>(buffer), 253 mp0->ReadMessage(0, UserPointer<void>(buffer),
252 MakeUserPointer(&buffer_size), nullptr, nullptr, 254 MakeUserPointer(&buffer_size), nullptr, nullptr,
253 MOJO_READ_MESSAGE_FLAG_NONE)); 255 MOJO_READ_MESSAGE_FLAG_NONE));
254 EXPECT_EQ(sizeof(kWorld), static_cast<size_t>(buffer_size)); 256 EXPECT_EQ(sizeof(kWorld), static_cast<size_t>(buffer_size));
255 EXPECT_STREQ(kWorld, buffer); 257 EXPECT_STREQ(kWorld, buffer);
256 258
257 // Close MP 0, port 0. 259 // Close MP 0, port 0.
258 mp0->Close(0); 260 mp0->Close(0);
259 261
260 // Try to wait for MP 1, port 1 to become readable. This will eventually fail 262 // Try to wait for MP 1, port 1 to become readable. This will eventually fail
261 // when it realizes that MP 0, port 0 has been closed. (It may also fail 263 // when it realizes that MP 0, port 0 has been closed. (It may also fail
262 // immediately.) 264 // immediately.)
263 waiter.Init(); 265 waiter.Init();
264 hss = HandleSignalsState(); 266 hss = HandleSignalsState();
265 MojoResult result = mp1->AddAwakable(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, 267 MojoResult result = mp1->AddAwakable(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE,
266 false, 789, &hss); 268 false, 789, &hss);
267 if (result == MOJO_RESULT_OK) { 269 if (result == MOJO_RESULT_OK) {
268 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, 270 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION,
269 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); 271 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr));
270 EXPECT_EQ(789u, context); 272 EXPECT_EQ(789u, context);
271 hss = HandleSignalsState(); 273 hss = HandleSignalsState();
272 mp1->RemoveAwakable(1, &waiter, &hss); 274 mp1->RemoveAwakable(1, &waiter, &hss);
273 } 275 }
274 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, hss.satisfied_signals); 276 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, hss.satisfied_signals);
275 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, hss.satisfiable_signals); 277 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, hss.satisfiable_signals);
276 278
277 // And MP 1, port 1. 279 // And MP 1, port 1.
278 mp1->Close(1); 280 mp1->Close(1);
279 } 281 }
(...skipping 15 matching lines...) Expand all
295 297
296 // Close MP 0, port 0. 298 // Close MP 0, port 0.
297 mp0->Close(0); 299 mp0->Close(0);
298 300
299 // Try to wait for MP 1, port 1 to be signaled with peer closed. 301 // Try to wait for MP 1, port 1 to be signaled with peer closed.
300 waiter.Init(); 302 waiter.Init();
301 hss = HandleSignalsState(); 303 hss = HandleSignalsState();
302 MojoResult result = mp1->AddAwakable( 304 MojoResult result = mp1->AddAwakable(
303 1, &waiter, MOJO_HANDLE_SIGNAL_PEER_CLOSED, false, 101, &hss); 305 1, &waiter, MOJO_HANDLE_SIGNAL_PEER_CLOSED, false, 101, &hss);
304 if (result == MOJO_RESULT_OK) { 306 if (result == MOJO_RESULT_OK) {
305 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); 307 EXPECT_EQ(MOJO_RESULT_OK,
308 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr));
306 EXPECT_EQ(101u, context); 309 EXPECT_EQ(101u, context);
307 hss = HandleSignalsState(); 310 hss = HandleSignalsState();
308 mp1->RemoveAwakable(1, &waiter, &hss); 311 mp1->RemoveAwakable(1, &waiter, &hss);
309 } 312 }
310 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, hss.satisfied_signals); 313 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, hss.satisfied_signals);
311 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, hss.satisfiable_signals); 314 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, hss.satisfiable_signals);
312 315
313 // And MP 1, port 1. 316 // And MP 1, port 1.
314 mp1->Close(1); 317 mp1->Close(1);
315 } 318 }
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
355 waiter.Init(); 358 waiter.Init();
356 ASSERT_EQ(MOJO_RESULT_OK, 359 ASSERT_EQ(MOJO_RESULT_OK,
357 mp1->AddAwakable(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, false, 360 mp1->AddAwakable(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, false,
358 123, nullptr)); 361 123, nullptr));
359 362
360 EXPECT_EQ(MOJO_RESULT_OK, 363 EXPECT_EQ(MOJO_RESULT_OK,
361 mp0->WriteMessage(0, UserPointer<const void>(endpoint_info.get()), 364 mp0->WriteMessage(0, UserPointer<const void>(endpoint_info.get()),
362 static_cast<uint32_t>(endpoint_info_size), 365 static_cast<uint32_t>(endpoint_info_size),
363 nullptr, MOJO_WRITE_MESSAGE_FLAG_NONE)); 366 nullptr, MOJO_WRITE_MESSAGE_FLAG_NONE));
364 367
365 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); 368 EXPECT_EQ(MOJO_RESULT_OK,
369 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr));
366 EXPECT_EQ(123u, context); 370 EXPECT_EQ(123u, context);
367 hss = HandleSignalsState(); 371 hss = HandleSignalsState();
368 mp1->RemoveAwakable(1, &waiter, &hss); 372 mp1->RemoveAwakable(1, &waiter, &hss);
369 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, 373 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE,
370 hss.satisfied_signals); 374 hss.satisfied_signals);
371 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | 375 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE |
372 MOJO_HANDLE_SIGNAL_PEER_CLOSED, 376 MOJO_HANDLE_SIGNAL_PEER_CLOSED,
373 hss.satisfiable_signals); 377 hss.satisfiable_signals);
374 378
375 EXPECT_EQ(endpoint_info_size, channels(1)->GetSerializedEndpointSize()); 379 EXPECT_EQ(endpoint_info_size, channels(1)->GetSerializedEndpointSize());
(...skipping 19 matching lines...) Expand all
395 waiter.Init(); 399 waiter.Init();
396 ASSERT_EQ(MOJO_RESULT_OK, 400 ASSERT_EQ(MOJO_RESULT_OK,
397 mp3->AddAwakable(0, &waiter, MOJO_HANDLE_SIGNAL_READABLE, false, 401 mp3->AddAwakable(0, &waiter, MOJO_HANDLE_SIGNAL_READABLE, false,
398 789, nullptr)); 402 789, nullptr));
399 403
400 EXPECT_EQ( 404 EXPECT_EQ(
401 MOJO_RESULT_OK, 405 MOJO_RESULT_OK,
402 mp2->WriteMessage(0, UserPointer<const void>(kHello), sizeof(kHello), 406 mp2->WriteMessage(0, UserPointer<const void>(kHello), sizeof(kHello),
403 nullptr, MOJO_WRITE_MESSAGE_FLAG_NONE)); 407 nullptr, MOJO_WRITE_MESSAGE_FLAG_NONE));
404 408
405 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); 409 EXPECT_EQ(MOJO_RESULT_OK,
410 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr));
406 EXPECT_EQ(789u, context); 411 EXPECT_EQ(789u, context);
407 hss = HandleSignalsState(); 412 hss = HandleSignalsState();
408 mp3->RemoveAwakable(0, &waiter, &hss); 413 mp3->RemoveAwakable(0, &waiter, &hss);
409 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, 414 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE,
410 hss.satisfied_signals); 415 hss.satisfied_signals);
411 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | 416 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE |
412 MOJO_HANDLE_SIGNAL_PEER_CLOSED, 417 MOJO_HANDLE_SIGNAL_PEER_CLOSED,
413 hss.satisfiable_signals); 418 hss.satisfiable_signals);
414 419
415 // Make sure there's nothing on MP 0, port 0 or MP 1, port 1 or MP 2, port 0. 420 // Make sure there's nothing on MP 0, port 0 or MP 1, port 1 or MP 2, port 0.
(...skipping 27 matching lines...) Expand all
443 waiter.Init(); 448 waiter.Init();
444 ASSERT_EQ(MOJO_RESULT_OK, 449 ASSERT_EQ(MOJO_RESULT_OK,
445 mp1->AddAwakable(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, false, 450 mp1->AddAwakable(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, false,
446 123, nullptr)); 451 123, nullptr));
447 452
448 EXPECT_EQ( 453 EXPECT_EQ(
449 MOJO_RESULT_OK, 454 MOJO_RESULT_OK,
450 mp0->WriteMessage(0, UserPointer<const void>(kWorld), sizeof(kWorld), 455 mp0->WriteMessage(0, UserPointer<const void>(kWorld), sizeof(kWorld),
451 nullptr, MOJO_WRITE_MESSAGE_FLAG_NONE)); 456 nullptr, MOJO_WRITE_MESSAGE_FLAG_NONE));
452 457
453 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); 458 EXPECT_EQ(MOJO_RESULT_OK,
459 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr));
454 EXPECT_EQ(123u, context); 460 EXPECT_EQ(123u, context);
455 hss = HandleSignalsState(); 461 hss = HandleSignalsState();
456 mp1->RemoveAwakable(1, &waiter, &hss); 462 mp1->RemoveAwakable(1, &waiter, &hss);
457 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, 463 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE,
458 hss.satisfied_signals); 464 hss.satisfied_signals);
459 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | 465 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE |
460 MOJO_HANDLE_SIGNAL_PEER_CLOSED | MOJO_HANDLE_SIGNAL_PEER_CLOSED, 466 MOJO_HANDLE_SIGNAL_PEER_CLOSED | MOJO_HANDLE_SIGNAL_PEER_CLOSED,
461 hss.satisfiable_signals); 467 hss.satisfiable_signals);
462 468
463 // Make sure there's nothing on the other ports. 469 // Make sure there's nothing on the other ports.
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
523 // Prepare to wait on MP 1, port 1. (Add the waiter now. Otherwise, if we do 529 // Prepare to wait on MP 1, port 1. (Add the waiter now. Otherwise, if we do
524 // it later, it might already be readable.) 530 // it later, it might already be readable.)
525 waiter.Init(); 531 waiter.Init();
526 ASSERT_EQ(MOJO_RESULT_OK, 532 ASSERT_EQ(MOJO_RESULT_OK,
527 mp1->AddAwakable(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, false, 533 mp1->AddAwakable(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, false,
528 123, nullptr)); 534 123, nullptr));
529 535
530 BootstrapChannelEndpointNoWait(1, std::move(ep1)); 536 BootstrapChannelEndpointNoWait(1, std::move(ep1));
531 537
532 // Wait. 538 // Wait.
533 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); 539 EXPECT_EQ(MOJO_RESULT_OK,
540 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr));
534 EXPECT_EQ(123u, context); 541 EXPECT_EQ(123u, context);
535 hss = HandleSignalsState(); 542 hss = HandleSignalsState();
536 // Note: MP 1, port 1 should definitely should be readable, but it may or may 543 // Note: MP 1, port 1 should definitely should be readable, but it may or may
537 // not appear as writable (there's a race, and it may not have noticed that 544 // not appear as writable (there's a race, and it may not have noticed that
538 // the other side was closed yet -- e.g., inserting a sleep here would make it 545 // the other side was closed yet -- e.g., inserting a sleep here would make it
539 // much more likely to notice that it's no longer writable). 546 // much more likely to notice that it's no longer writable).
540 mp1->RemoveAwakable(1, &waiter, &hss); 547 mp1->RemoveAwakable(1, &waiter, &hss);
541 EXPECT_TRUE((hss.satisfied_signals & MOJO_HANDLE_SIGNAL_READABLE)); 548 EXPECT_TRUE((hss.satisfied_signals & MOJO_HANDLE_SIGNAL_READABLE));
542 EXPECT_TRUE((hss.satisfiable_signals & MOJO_HANDLE_SIGNAL_READABLE)); 549 EXPECT_TRUE((hss.satisfiable_signals & MOJO_HANDLE_SIGNAL_READABLE));
543 550
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
585 // Prepare to wait on MP 1, port 1. (Add the waiter now. Otherwise, if we do 592 // Prepare to wait on MP 1, port 1. (Add the waiter now. Otherwise, if we do
586 // it later, it might already be readable.) 593 // it later, it might already be readable.)
587 waiter.Init(); 594 waiter.Init();
588 ASSERT_EQ(MOJO_RESULT_OK, 595 ASSERT_EQ(MOJO_RESULT_OK,
589 mp1->AddAwakable(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, false, 596 mp1->AddAwakable(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, false,
590 123, nullptr)); 597 123, nullptr));
591 598
592 BootstrapChannelEndpointNoWait(1, std::move(ep1)); 599 BootstrapChannelEndpointNoWait(1, std::move(ep1));
593 600
594 // Wait. 601 // Wait.
595 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); 602 EXPECT_EQ(MOJO_RESULT_OK,
603 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr));
596 EXPECT_EQ(123u, context); 604 EXPECT_EQ(123u, context);
597 hss = HandleSignalsState(); 605 hss = HandleSignalsState();
598 // Note: MP 1, port 1 should definitely should be readable, but it may or may 606 // Note: MP 1, port 1 should definitely should be readable, but it may or may
599 // not appear as writable (there's a race, and it may not have noticed that 607 // not appear as writable (there's a race, and it may not have noticed that
600 // the other side was closed yet -- e.g., inserting a sleep here would make it 608 // the other side was closed yet -- e.g., inserting a sleep here would make it
601 // much more likely to notice that it's no longer writable). 609 // much more likely to notice that it's no longer writable).
602 mp1->RemoveAwakable(1, &waiter, &hss); 610 mp1->RemoveAwakable(1, &waiter, &hss);
603 EXPECT_TRUE((hss.satisfied_signals & MOJO_HANDLE_SIGNAL_READABLE)); 611 EXPECT_TRUE((hss.satisfied_signals & MOJO_HANDLE_SIGNAL_READABLE));
604 EXPECT_TRUE((hss.satisfiable_signals & MOJO_HANDLE_SIGNAL_READABLE)); 612 EXPECT_TRUE((hss.satisfiable_signals & MOJO_HANDLE_SIGNAL_READABLE));
605 613
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
655 &transports, MOJO_WRITE_MESSAGE_FLAG_NONE)); 663 &transports, MOJO_WRITE_MESSAGE_FLAG_NONE));
656 transport.End(); 664 transport.End();
657 665
658 // |handle.dispatcher| should have been closed. This is |DCHECK()|ed when 666 // |handle.dispatcher| should have been closed. This is |DCHECK()|ed when
659 // the |handle.dispatcher| is destroyed. 667 // the |handle.dispatcher| is destroyed.
660 EXPECT_TRUE(handle.dispatcher->HasOneRef()); 668 EXPECT_TRUE(handle.dispatcher->HasOneRef());
661 handle.reset(); 669 handle.reset();
662 } 670 }
663 671
664 // Wait. 672 // Wait.
665 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); 673 EXPECT_EQ(MOJO_RESULT_OK,
674 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr));
666 EXPECT_EQ(123u, context); 675 EXPECT_EQ(123u, context);
667 hss = HandleSignalsState(); 676 hss = HandleSignalsState();
668 mp1->RemoveAwakable(1, &waiter, &hss); 677 mp1->RemoveAwakable(1, &waiter, &hss);
669 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, 678 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE,
670 hss.satisfied_signals); 679 hss.satisfied_signals);
671 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | 680 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE |
672 MOJO_HANDLE_SIGNAL_PEER_CLOSED, 681 MOJO_HANDLE_SIGNAL_PEER_CLOSED,
673 hss.satisfiable_signals); 682 hss.satisfiable_signals);
674 683
675 // Read from MP 1, port 1. 684 // Read from MP 1, port 1.
(...skipping 28 matching lines...) Expand all
704 // Write to "local_mp", port 1. 713 // Write to "local_mp", port 1.
705 EXPECT_EQ( 714 EXPECT_EQ(
706 MOJO_RESULT_OK, 715 MOJO_RESULT_OK,
707 local_mp->WriteMessage(1, UserPointer<const void>(kHello), sizeof(kHello), 716 local_mp->WriteMessage(1, UserPointer<const void>(kHello), sizeof(kHello),
708 nullptr, MOJO_WRITE_MESSAGE_FLAG_NONE)); 717 nullptr, MOJO_WRITE_MESSAGE_FLAG_NONE));
709 718
710 // TODO(vtl): FIXME -- We (racily) crash if I close |dispatcher| immediately 719 // TODO(vtl): FIXME -- We (racily) crash if I close |dispatcher| immediately
711 // here. (We don't crash if I sleep and then close.) 720 // here. (We don't crash if I sleep and then close.)
712 721
713 // Wait for the dispatcher to become readable. 722 // Wait for the dispatcher to become readable.
714 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); 723 EXPECT_EQ(MOJO_RESULT_OK,
724 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr));
715 EXPECT_EQ(456u, context); 725 EXPECT_EQ(456u, context);
716 hss = HandleSignalsState(); 726 hss = HandleSignalsState();
717 dispatcher->RemoveAwakable(&waiter, &hss); 727 dispatcher->RemoveAwakable(&waiter, &hss);
718 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, 728 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE,
719 hss.satisfied_signals); 729 hss.satisfied_signals);
720 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | 730 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE |
721 MOJO_HANDLE_SIGNAL_PEER_CLOSED, 731 MOJO_HANDLE_SIGNAL_PEER_CLOSED,
722 hss.satisfiable_signals); 732 hss.satisfiable_signals);
723 733
724 // Read from the dispatcher. 734 // Read from the dispatcher.
(...skipping 11 matching lines...) Expand all
736 ASSERT_EQ(MOJO_RESULT_OK, 746 ASSERT_EQ(MOJO_RESULT_OK,
737 local_mp->AddAwakable(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, 747 local_mp->AddAwakable(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE,
738 false, 789, nullptr)); 748 false, 789, nullptr));
739 749
740 // Write to the dispatcher. 750 // Write to the dispatcher.
741 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->WriteMessage( 751 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->WriteMessage(
742 UserPointer<const void>(kHello), sizeof(kHello), 752 UserPointer<const void>(kHello), sizeof(kHello),
743 nullptr, MOJO_WRITE_MESSAGE_FLAG_NONE)); 753 nullptr, MOJO_WRITE_MESSAGE_FLAG_NONE));
744 754
745 // Wait. 755 // Wait.
746 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); 756 EXPECT_EQ(MOJO_RESULT_OK,
757 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr));
747 EXPECT_EQ(789u, context); 758 EXPECT_EQ(789u, context);
748 hss = HandleSignalsState(); 759 hss = HandleSignalsState();
749 local_mp->RemoveAwakable(1, &waiter, &hss); 760 local_mp->RemoveAwakable(1, &waiter, &hss);
750 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, 761 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE,
751 hss.satisfied_signals); 762 hss.satisfied_signals);
752 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | 763 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE |
753 MOJO_HANDLE_SIGNAL_PEER_CLOSED, 764 MOJO_HANDLE_SIGNAL_PEER_CLOSED,
754 hss.satisfiable_signals); 765 hss.satisfiable_signals);
755 766
756 // Read from "local_mp", port 1. 767 // Read from "local_mp", port 1.
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
845 &transports, MOJO_WRITE_MESSAGE_FLAG_NONE)); 856 &transports, MOJO_WRITE_MESSAGE_FLAG_NONE));
846 transport.End(); 857 transport.End();
847 858
848 // |handle.dispatcher| should have been closed. This is |DCHECK()|ed when 859 // |handle.dispatcher| should have been closed. This is |DCHECK()|ed when
849 // the |handle.dispatcher| is destroyed. 860 // the |handle.dispatcher| is destroyed.
850 EXPECT_TRUE(handle.dispatcher->HasOneRef()); 861 EXPECT_TRUE(handle.dispatcher->HasOneRef());
851 handle.reset(); 862 handle.reset();
852 } 863 }
853 864
854 // Wait. 865 // Wait.
855 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); 866 EXPECT_EQ(MOJO_RESULT_OK,
867 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr));
856 EXPECT_EQ(123u, context); 868 EXPECT_EQ(123u, context);
857 hss = HandleSignalsState(); 869 hss = HandleSignalsState();
858 mp1->RemoveAwakable(1, &waiter, &hss); 870 mp1->RemoveAwakable(1, &waiter, &hss);
859 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, 871 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE,
860 hss.satisfied_signals); 872 hss.satisfied_signals);
861 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | 873 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE |
862 MOJO_HANDLE_SIGNAL_PEER_CLOSED, 874 MOJO_HANDLE_SIGNAL_PEER_CLOSED,
863 hss.satisfiable_signals); 875 hss.satisfiable_signals);
864 876
865 // Read from MP 1, port 1. 877 // Read from MP 1, port 1.
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
979 &transports, MOJO_WRITE_MESSAGE_FLAG_NONE)); 991 &transports, MOJO_WRITE_MESSAGE_FLAG_NONE));
980 transport.End(); 992 transport.End();
981 993
982 // |handle.dispatcher| should have been closed. This is |DCHECK()|ed when 994 // |handle.dispatcher| should have been closed. This is |DCHECK()|ed when
983 // the |handle.dispatcher| is destroyed. 995 // the |handle.dispatcher| is destroyed.
984 EXPECT_TRUE(handle.dispatcher->HasOneRef()); 996 EXPECT_TRUE(handle.dispatcher->HasOneRef());
985 handle.reset(); 997 handle.reset();
986 } 998 }
987 999
988 // Wait. 1000 // Wait.
989 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); 1001 EXPECT_EQ(MOJO_RESULT_OK,
1002 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr));
990 EXPECT_EQ(123u, context); 1003 EXPECT_EQ(123u, context);
991 hss = HandleSignalsState(); 1004 hss = HandleSignalsState();
992 mp1->RemoveAwakable(1, &waiter, &hss); 1005 mp1->RemoveAwakable(1, &waiter, &hss);
993 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, 1006 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE,
994 hss.satisfied_signals); 1007 hss.satisfied_signals);
995 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | 1008 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE |
996 MOJO_HANDLE_SIGNAL_PEER_CLOSED, 1009 MOJO_HANDLE_SIGNAL_PEER_CLOSED,
997 hss.satisfiable_signals); 1010 hss.satisfiable_signals);
998 1011
999 // Read from MP 1, port 1. 1012 // Read from MP 1, port 1.
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
1094 &transports, MOJO_WRITE_MESSAGE_FLAG_NONE)); 1107 &transports, MOJO_WRITE_MESSAGE_FLAG_NONE));
1095 transport.End(); 1108 transport.End();
1096 1109
1097 // |handle.dispatcher| should have been closed. This is |DCHECK()|ed when 1110 // |handle.dispatcher| should have been closed. This is |DCHECK()|ed when
1098 // the |handle.dispatcher| is destroyed. 1111 // the |handle.dispatcher| is destroyed.
1099 EXPECT_TRUE(handle.dispatcher->HasOneRef()); 1112 EXPECT_TRUE(handle.dispatcher->HasOneRef());
1100 handle.reset(); 1113 handle.reset();
1101 } 1114 }
1102 1115
1103 // Wait. 1116 // Wait.
1104 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); 1117 EXPECT_EQ(MOJO_RESULT_OK,
1118 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr));
1105 EXPECT_EQ(123u, context); 1119 EXPECT_EQ(123u, context);
1106 hss = HandleSignalsState(); 1120 hss = HandleSignalsState();
1107 mp1->RemoveAwakable(1, &waiter, &hss); 1121 mp1->RemoveAwakable(1, &waiter, &hss);
1108 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, 1122 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE,
1109 hss.satisfied_signals); 1123 hss.satisfied_signals);
1110 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | 1124 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE |
1111 MOJO_HANDLE_SIGNAL_PEER_CLOSED, 1125 MOJO_HANDLE_SIGNAL_PEER_CLOSED,
1112 hss.satisfiable_signals); 1126 hss.satisfiable_signals);
1113 1127
1114 // Read from MP 1, port 1. 1128 // Read from MP 1, port 1.
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
1234 &transports, MOJO_WRITE_MESSAGE_FLAG_NONE)); 1248 &transports, MOJO_WRITE_MESSAGE_FLAG_NONE));
1235 transport.End(); 1249 transport.End();
1236 1250
1237 // |handle.dispatcher| should have been closed. This is |DCHECK()|ed when 1251 // |handle.dispatcher| should have been closed. This is |DCHECK()|ed when
1238 // the |handle.dispatcher| is destroyed. 1252 // the |handle.dispatcher| is destroyed.
1239 EXPECT_TRUE(handle.dispatcher->HasOneRef()); 1253 EXPECT_TRUE(handle.dispatcher->HasOneRef());
1240 handle.reset(); 1254 handle.reset();
1241 } 1255 }
1242 1256
1243 // Wait. 1257 // Wait.
1244 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); 1258 EXPECT_EQ(MOJO_RESULT_OK,
1259 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr));
1245 EXPECT_EQ(123u, context); 1260 EXPECT_EQ(123u, context);
1246 hss = HandleSignalsState(); 1261 hss = HandleSignalsState();
1247 mp1->RemoveAwakable(1, &waiter, &hss); 1262 mp1->RemoveAwakable(1, &waiter, &hss);
1248 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, 1263 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE,
1249 hss.satisfied_signals); 1264 hss.satisfied_signals);
1250 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | 1265 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE |
1251 MOJO_HANDLE_SIGNAL_PEER_CLOSED, 1266 MOJO_HANDLE_SIGNAL_PEER_CLOSED,
1252 hss.satisfiable_signals); 1267 hss.satisfiable_signals);
1253 1268
1254 // Read from MP 1, port 1. 1269 // Read from MP 1, port 1.
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1296 &transports, MOJO_WRITE_MESSAGE_FLAG_NONE)); 1311 &transports, MOJO_WRITE_MESSAGE_FLAG_NONE));
1297 transport.End(); 1312 transport.End();
1298 1313
1299 // |handle.dispatcher| should have been closed. This is |DCHECK()|ed when 1314 // |handle.dispatcher| should have been closed. This is |DCHECK()|ed when
1300 // the |handle.dispatcher| is destroyed. 1315 // the |handle.dispatcher| is destroyed.
1301 EXPECT_TRUE(handle.dispatcher->HasOneRef()); 1316 EXPECT_TRUE(handle.dispatcher->HasOneRef());
1302 handle.reset(); 1317 handle.reset();
1303 } 1318 }
1304 1319
1305 // Wait. 1320 // Wait.
1306 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); 1321 EXPECT_EQ(MOJO_RESULT_OK,
1322 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr));
1307 EXPECT_EQ(456u, context); 1323 EXPECT_EQ(456u, context);
1308 hss = HandleSignalsState(); 1324 hss = HandleSignalsState();
1309 mp0->RemoveAwakable(0, &waiter, &hss); 1325 mp0->RemoveAwakable(0, &waiter, &hss);
1310 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, 1326 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE,
1311 hss.satisfied_signals); 1327 hss.satisfied_signals);
1312 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | 1328 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE |
1313 MOJO_HANDLE_SIGNAL_PEER_CLOSED, 1329 MOJO_HANDLE_SIGNAL_PEER_CLOSED,
1314 hss.satisfiable_signals); 1330 hss.satisfiable_signals);
1315 1331
1316 // Read from MP 0, port 0. 1332 // Read from MP 0, port 0.
(...skipping 24 matching lines...) Expand all
1341 dispatcher->AddAwakable(&waiter, MOJO_HANDLE_SIGNAL_READABLE, 789, 1357 dispatcher->AddAwakable(&waiter, MOJO_HANDLE_SIGNAL_READABLE, 789,
1342 nullptr)); 1358 nullptr));
1343 1359
1344 // Write to "local_mp", port 1. 1360 // Write to "local_mp", port 1.
1345 EXPECT_EQ( 1361 EXPECT_EQ(
1346 MOJO_RESULT_OK, 1362 MOJO_RESULT_OK,
1347 local_mp->WriteMessage(1, UserPointer<const void>(kHello), sizeof(kHello), 1363 local_mp->WriteMessage(1, UserPointer<const void>(kHello), sizeof(kHello),
1348 nullptr, MOJO_WRITE_MESSAGE_FLAG_NONE)); 1364 nullptr, MOJO_WRITE_MESSAGE_FLAG_NONE));
1349 1365
1350 // Wait for the dispatcher to become readable. 1366 // Wait for the dispatcher to become readable.
1351 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); 1367 EXPECT_EQ(MOJO_RESULT_OK,
1368 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr));
1352 EXPECT_EQ(789u, context); 1369 EXPECT_EQ(789u, context);
1353 hss = HandleSignalsState(); 1370 hss = HandleSignalsState();
1354 dispatcher->RemoveAwakable(&waiter, &hss); 1371 dispatcher->RemoveAwakable(&waiter, &hss);
1355 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, 1372 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE,
1356 hss.satisfied_signals); 1373 hss.satisfied_signals);
1357 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | 1374 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE |
1358 MOJO_HANDLE_SIGNAL_PEER_CLOSED, 1375 MOJO_HANDLE_SIGNAL_PEER_CLOSED,
1359 hss.satisfiable_signals); 1376 hss.satisfiable_signals);
1360 1377
1361 // Read from the dispatcher. 1378 // Read from the dispatcher.
(...skipping 11 matching lines...) Expand all
1373 ASSERT_EQ(MOJO_RESULT_OK, 1390 ASSERT_EQ(MOJO_RESULT_OK,
1374 local_mp->AddAwakable(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, 1391 local_mp->AddAwakable(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE,
1375 false, 789, nullptr)); 1392 false, 789, nullptr));
1376 1393
1377 // Write to the dispatcher. 1394 // Write to the dispatcher.
1378 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->WriteMessage( 1395 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->WriteMessage(
1379 UserPointer<const void>(kHello), sizeof(kHello), 1396 UserPointer<const void>(kHello), sizeof(kHello),
1380 nullptr, MOJO_WRITE_MESSAGE_FLAG_NONE)); 1397 nullptr, MOJO_WRITE_MESSAGE_FLAG_NONE));
1381 1398
1382 // Wait. 1399 // Wait.
1383 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); 1400 EXPECT_EQ(MOJO_RESULT_OK,
1401 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr));
1384 EXPECT_EQ(789u, context); 1402 EXPECT_EQ(789u, context);
1385 hss = HandleSignalsState(); 1403 hss = HandleSignalsState();
1386 local_mp->RemoveAwakable(1, &waiter, &hss); 1404 local_mp->RemoveAwakable(1, &waiter, &hss);
1387 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, 1405 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE,
1388 hss.satisfied_signals); 1406 hss.satisfied_signals);
1389 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | 1407 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE |
1390 MOJO_HANDLE_SIGNAL_PEER_CLOSED, 1408 MOJO_HANDLE_SIGNAL_PEER_CLOSED,
1391 hss.satisfiable_signals); 1409 hss.satisfiable_signals);
1392 1410
1393 // Read from "local_mp", port 1. 1411 // Read from "local_mp", port 1.
(...skipping 13 matching lines...) Expand all
1407 mp0->Close(0); 1425 mp0->Close(0);
1408 mp1->Close(1); 1426 mp1->Close(1);
1409 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->Close()); 1427 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->Close());
1410 // Note that |local_mp|'s port 0 belong to |dispatcher|, which was closed. 1428 // Note that |local_mp|'s port 0 belong to |dispatcher|, which was closed.
1411 local_mp->Close(1); 1429 local_mp->Close(1);
1412 } 1430 }
1413 1431
1414 } // namespace 1432 } // namespace
1415 } // namespace system 1433 } // namespace system
1416 } // namespace mojo 1434 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698