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

Side by Side Diff: mojo/embedder/embedder_unittest.cc

Issue 336313007: Mojo: Rename MOJO_WAIT_FLAG_... -> MOJO_HANDLE_SIGNAL_.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased Created 6 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 | Annotate | Revision Log
« no previous file with comments | « mojo/common/message_pump_mojo.cc ('k') | mojo/examples/html_viewer/html_viewer.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/embedder/embedder.h" 5 #include "mojo/embedder/embedder.h"
6 6
7 #include <string.h> 7 #include <string.h>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/location.h" 10 #include "base/location.h"
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 126
127 // We can write to a message pipe handle immediately. 127 // We can write to a message pipe handle immediately.
128 const char kHello[] = "hello"; 128 const char kHello[] = "hello";
129 EXPECT_EQ(MOJO_RESULT_OK, 129 EXPECT_EQ(MOJO_RESULT_OK,
130 MojoWriteMessage(server_mp, kHello, 130 MojoWriteMessage(server_mp, kHello,
131 static_cast<uint32_t>(sizeof(kHello)), NULL, 0, 131 static_cast<uint32_t>(sizeof(kHello)), NULL, 0,
132 MOJO_WRITE_MESSAGE_FLAG_NONE)); 132 MOJO_WRITE_MESSAGE_FLAG_NONE));
133 133
134 // Now wait for the other side to become readable. 134 // Now wait for the other side to become readable.
135 EXPECT_EQ(MOJO_RESULT_OK, 135 EXPECT_EQ(MOJO_RESULT_OK,
136 MojoWait(client_mp, MOJO_WAIT_FLAG_READABLE, 136 MojoWait(client_mp, MOJO_HANDLE_SIGNAL_READABLE,
137 MOJO_DEADLINE_INDEFINITE)); 137 MOJO_DEADLINE_INDEFINITE));
138 138
139 char buffer[1000] = {}; 139 char buffer[1000] = {};
140 uint32_t num_bytes = static_cast<uint32_t>(sizeof(buffer)); 140 uint32_t num_bytes = static_cast<uint32_t>(sizeof(buffer));
141 EXPECT_EQ(MOJO_RESULT_OK, 141 EXPECT_EQ(MOJO_RESULT_OK,
142 MojoReadMessage(client_mp, buffer, &num_bytes, NULL, NULL, 142 MojoReadMessage(client_mp, buffer, &num_bytes, NULL, NULL,
143 MOJO_READ_MESSAGE_FLAG_NONE)); 143 MOJO_READ_MESSAGE_FLAG_NONE));
144 EXPECT_EQ(sizeof(kHello), num_bytes); 144 EXPECT_EQ(sizeof(kHello), num_bytes);
145 EXPECT_STREQ(kHello, buffer); 145 EXPECT_STREQ(kHello, buffer);
146 146
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 193
194 // Write another message to |h0|. 194 // Write another message to |h0|.
195 const char kFoo[] = "foo"; 195 const char kFoo[] = "foo";
196 EXPECT_EQ(MOJO_RESULT_OK, 196 EXPECT_EQ(MOJO_RESULT_OK,
197 MojoWriteMessage(h0, kFoo, 197 MojoWriteMessage(h0, kFoo,
198 static_cast<uint32_t>(sizeof(kFoo)), NULL, 0, 198 static_cast<uint32_t>(sizeof(kFoo)), NULL, 0,
199 MOJO_WRITE_MESSAGE_FLAG_NONE)); 199 MOJO_WRITE_MESSAGE_FLAG_NONE));
200 200
201 // Wait for |client_mp| to become readable. 201 // Wait for |client_mp| to become readable.
202 EXPECT_EQ(MOJO_RESULT_OK, 202 EXPECT_EQ(MOJO_RESULT_OK,
203 MojoWait(client_mp, MOJO_WAIT_FLAG_READABLE, 203 MojoWait(client_mp, MOJO_HANDLE_SIGNAL_READABLE,
204 MOJO_DEADLINE_INDEFINITE)); 204 MOJO_DEADLINE_INDEFINITE));
205 205
206 // Read a message from |client_mp|. 206 // Read a message from |client_mp|.
207 char buffer[1000] = {}; 207 char buffer[1000] = {};
208 uint32_t num_bytes = static_cast<uint32_t>(sizeof(buffer)); 208 uint32_t num_bytes = static_cast<uint32_t>(sizeof(buffer));
209 MojoHandle handles[10] = {}; 209 MojoHandle handles[10] = {};
210 uint32_t num_handles = arraysize(handles); 210 uint32_t num_handles = arraysize(handles);
211 EXPECT_EQ(MOJO_RESULT_OK, 211 EXPECT_EQ(MOJO_RESULT_OK,
212 MojoReadMessage(client_mp, buffer, &num_bytes, handles, 212 MojoReadMessage(client_mp, buffer, &num_bytes, handles,
213 &num_handles, MOJO_READ_MESSAGE_FLAG_NONE)); 213 &num_handles, MOJO_READ_MESSAGE_FLAG_NONE));
214 EXPECT_EQ(sizeof(kWorld), num_bytes); 214 EXPECT_EQ(sizeof(kWorld), num_bytes);
215 EXPECT_STREQ(kWorld, buffer); 215 EXPECT_STREQ(kWorld, buffer);
216 EXPECT_EQ(1u, num_handles); 216 EXPECT_EQ(1u, num_handles);
217 EXPECT_NE(handles[0], MOJO_HANDLE_INVALID); 217 EXPECT_NE(handles[0], MOJO_HANDLE_INVALID);
218 h1 = handles[0]; 218 h1 = handles[0];
219 219
220 // Wait for |h1| to become readable. 220 // Wait for |h1| to become readable.
221 EXPECT_EQ(MOJO_RESULT_OK, 221 EXPECT_EQ(MOJO_RESULT_OK,
222 MojoWait(h1, MOJO_WAIT_FLAG_READABLE, MOJO_DEADLINE_INDEFINITE)); 222 MojoWait(h1, MOJO_HANDLE_SIGNAL_READABLE,
223 MOJO_DEADLINE_INDEFINITE));
223 224
224 // Read a message from |h1|. 225 // Read a message from |h1|.
225 memset(buffer, 0, sizeof(buffer)); 226 memset(buffer, 0, sizeof(buffer));
226 num_bytes = static_cast<uint32_t>(sizeof(buffer)); 227 num_bytes = static_cast<uint32_t>(sizeof(buffer));
227 memset(handles, 0, sizeof(handles)); 228 memset(handles, 0, sizeof(handles));
228 num_handles = arraysize(handles); 229 num_handles = arraysize(handles);
229 EXPECT_EQ(MOJO_RESULT_OK, 230 EXPECT_EQ(MOJO_RESULT_OK,
230 MojoReadMessage(h1, buffer, &num_bytes, handles, &num_handles, 231 MojoReadMessage(h1, buffer, &num_bytes, handles, &num_handles,
231 MOJO_READ_MESSAGE_FLAG_NONE)); 232 MOJO_READ_MESSAGE_FLAG_NONE));
232 EXPECT_EQ(sizeof(kHello), num_bytes); 233 EXPECT_EQ(sizeof(kHello), num_bytes);
233 EXPECT_STREQ(kHello, buffer); 234 EXPECT_STREQ(kHello, buffer);
234 EXPECT_EQ(0u, num_handles); 235 EXPECT_EQ(0u, num_handles);
235 236
236 // Wait for |h1| to become readable (again). 237 // Wait for |h1| to become readable (again).
237 EXPECT_EQ(MOJO_RESULT_OK, 238 EXPECT_EQ(MOJO_RESULT_OK,
238 MojoWait(h1, MOJO_WAIT_FLAG_READABLE, MOJO_DEADLINE_INDEFINITE)); 239 MojoWait(h1, MOJO_HANDLE_SIGNAL_READABLE,
240 MOJO_DEADLINE_INDEFINITE));
239 241
240 // Read the second message from |h1|. 242 // Read the second message from |h1|.
241 memset(buffer, 0, sizeof(buffer)); 243 memset(buffer, 0, sizeof(buffer));
242 num_bytes = static_cast<uint32_t>(sizeof(buffer)); 244 num_bytes = static_cast<uint32_t>(sizeof(buffer));
243 EXPECT_EQ(MOJO_RESULT_OK, 245 EXPECT_EQ(MOJO_RESULT_OK,
244 MojoReadMessage(h1, buffer, &num_bytes, NULL, NULL, 246 MojoReadMessage(h1, buffer, &num_bytes, NULL, NULL,
245 MOJO_READ_MESSAGE_FLAG_NONE)); 247 MOJO_READ_MESSAGE_FLAG_NONE));
246 EXPECT_EQ(sizeof(kFoo), num_bytes); 248 EXPECT_EQ(sizeof(kFoo), num_bytes);
247 EXPECT_STREQ(kFoo, buffer); 249 EXPECT_STREQ(kFoo, buffer);
248 250
249 // Write a message to |h1|. 251 // Write a message to |h1|.
250 const char kBarBaz[] = "barbaz"; 252 const char kBarBaz[] = "barbaz";
251 EXPECT_EQ(MOJO_RESULT_OK, 253 EXPECT_EQ(MOJO_RESULT_OK,
252 MojoWriteMessage(h1, kBarBaz, 254 MojoWriteMessage(h1, kBarBaz,
253 static_cast<uint32_t>(sizeof(kBarBaz)), NULL, 0, 255 static_cast<uint32_t>(sizeof(kBarBaz)), NULL, 0,
254 MOJO_WRITE_MESSAGE_FLAG_NONE)); 256 MOJO_WRITE_MESSAGE_FLAG_NONE));
255 257
256 // Wait for |h0| to become readable. 258 // Wait for |h0| to become readable.
257 EXPECT_EQ(MOJO_RESULT_OK, 259 EXPECT_EQ(MOJO_RESULT_OK,
258 MojoWait(h0, MOJO_WAIT_FLAG_READABLE, MOJO_DEADLINE_INDEFINITE)); 260 MojoWait(h0, MOJO_HANDLE_SIGNAL_READABLE,
261 MOJO_DEADLINE_INDEFINITE));
259 262
260 // Read a message from |h0|. 263 // Read a message from |h0|.
261 memset(buffer, 0, sizeof(buffer)); 264 memset(buffer, 0, sizeof(buffer));
262 num_bytes = static_cast<uint32_t>(sizeof(buffer)); 265 num_bytes = static_cast<uint32_t>(sizeof(buffer));
263 EXPECT_EQ(MOJO_RESULT_OK, 266 EXPECT_EQ(MOJO_RESULT_OK,
264 MojoReadMessage(h0, buffer, &num_bytes, NULL, NULL, 267 MojoReadMessage(h0, buffer, &num_bytes, NULL, NULL,
265 MOJO_READ_MESSAGE_FLAG_NONE)); 268 MOJO_READ_MESSAGE_FLAG_NONE));
266 EXPECT_EQ(sizeof(kBarBaz), num_bytes); 269 EXPECT_EQ(sizeof(kBarBaz), num_bytes);
267 EXPECT_STREQ(kBarBaz, buffer); 270 EXPECT_STREQ(kBarBaz, buffer);
268 271
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
313 EXPECT_EQ(MOJO_RESULT_OK, 316 EXPECT_EQ(MOJO_RESULT_OK,
314 MojoWriteMessage(server_mp, kHello, 317 MojoWriteMessage(server_mp, kHello,
315 static_cast<uint32_t>(sizeof(kHello)), NULL, 0, 318 static_cast<uint32_t>(sizeof(kHello)), NULL, 0,
316 MOJO_WRITE_MESSAGE_FLAG_NONE)); 319 MOJO_WRITE_MESSAGE_FLAG_NONE));
317 320
318 // TODO(vtl): If the scope were ended immediately here (maybe after closing 321 // TODO(vtl): If the scope were ended immediately here (maybe after closing
319 // |server_mp|), we die with a fatal error in |Channel::HandleLocalError()|. 322 // |server_mp|), we die with a fatal error in |Channel::HandleLocalError()|.
320 323
321 // 2. Read a message from |server_mp|. 324 // 2. Read a message from |server_mp|.
322 EXPECT_EQ(MOJO_RESULT_OK, 325 EXPECT_EQ(MOJO_RESULT_OK,
323 MojoWait(server_mp, MOJO_WAIT_FLAG_READABLE, 326 MojoWait(server_mp, MOJO_HANDLE_SIGNAL_READABLE,
324 MOJO_DEADLINE_INDEFINITE)); 327 MOJO_DEADLINE_INDEFINITE));
325 char buffer[1000] = {}; 328 char buffer[1000] = {};
326 uint32_t num_bytes = static_cast<uint32_t>(sizeof(buffer)); 329 uint32_t num_bytes = static_cast<uint32_t>(sizeof(buffer));
327 EXPECT_EQ(MOJO_RESULT_OK, 330 EXPECT_EQ(MOJO_RESULT_OK,
328 MojoReadMessage(server_mp, buffer, &num_bytes, NULL, NULL, 331 MojoReadMessage(server_mp, buffer, &num_bytes, NULL, NULL,
329 MOJO_READ_MESSAGE_FLAG_NONE)); 332 MOJO_READ_MESSAGE_FLAG_NONE));
330 const char kWorld[] = "world!"; 333 const char kWorld[] = "world!";
331 EXPECT_EQ(sizeof(kWorld), num_bytes); 334 EXPECT_EQ(sizeof(kWorld), num_bytes);
332 EXPECT_STREQ(kWorld, buffer); 335 EXPECT_STREQ(kWorld, buffer);
333 336
(...skipping 14 matching lines...) Expand all
348 MojoWriteMessage(server_mp, kBar, 351 MojoWriteMessage(server_mp, kBar,
349 static_cast<uint32_t>(sizeof(kBar)), &mp1, 1, 352 static_cast<uint32_t>(sizeof(kBar)), &mp1, 1,
350 MOJO_WRITE_MESSAGE_FLAG_NONE)); 353 MOJO_WRITE_MESSAGE_FLAG_NONE));
351 mp1 = MOJO_HANDLE_INVALID; 354 mp1 = MOJO_HANDLE_INVALID;
352 355
353 // 5. Close |server_mp|. 356 // 5. Close |server_mp|.
354 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(server_mp)); 357 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(server_mp));
355 358
356 // 9. Read a message from |mp0|, which should have |mp2| attached. 359 // 9. Read a message from |mp0|, which should have |mp2| attached.
357 EXPECT_EQ(MOJO_RESULT_OK, 360 EXPECT_EQ(MOJO_RESULT_OK,
358 MojoWait(mp0, MOJO_WAIT_FLAG_READABLE, MOJO_DEADLINE_INDEFINITE)); 361 MojoWait(mp0, MOJO_HANDLE_SIGNAL_READABLE,
362 MOJO_DEADLINE_INDEFINITE));
359 memset(buffer, 0, sizeof(buffer)); 363 memset(buffer, 0, sizeof(buffer));
360 num_bytes = static_cast<uint32_t>(sizeof(buffer)); 364 num_bytes = static_cast<uint32_t>(sizeof(buffer));
361 MojoHandle mp2 = MOJO_HANDLE_INVALID; 365 MojoHandle mp2 = MOJO_HANDLE_INVALID;
362 uint32_t num_handles = 1; 366 uint32_t num_handles = 1;
363 EXPECT_EQ(MOJO_RESULT_OK, 367 EXPECT_EQ(MOJO_RESULT_OK,
364 MojoReadMessage(mp0, buffer, &num_bytes, &mp2, &num_handles, 368 MojoReadMessage(mp0, buffer, &num_bytes, &mp2, &num_handles,
365 MOJO_READ_MESSAGE_FLAG_NONE)); 369 MOJO_READ_MESSAGE_FLAG_NONE));
366 const char kQuux[] = "quux"; 370 const char kQuux[] = "quux";
367 EXPECT_EQ(sizeof(kQuux), num_bytes); 371 EXPECT_EQ(sizeof(kQuux), num_bytes);
368 EXPECT_STREQ(kQuux, buffer); 372 EXPECT_STREQ(kQuux, buffer);
369 EXPECT_EQ(1u, num_handles); 373 EXPECT_EQ(1u, num_handles);
370 EXPECT_NE(mp2, MOJO_HANDLE_INVALID); 374 EXPECT_NE(mp2, MOJO_HANDLE_INVALID);
371 375
372 // 7. Read a message from |mp2|. 376 // 7. Read a message from |mp2|.
373 EXPECT_EQ(MOJO_RESULT_OK, 377 EXPECT_EQ(MOJO_RESULT_OK,
374 MojoWait(mp2, MOJO_WAIT_FLAG_READABLE, MOJO_DEADLINE_INDEFINITE)); 378 MojoWait(mp2, MOJO_HANDLE_SIGNAL_READABLE,
379 MOJO_DEADLINE_INDEFINITE));
375 memset(buffer, 0, sizeof(buffer)); 380 memset(buffer, 0, sizeof(buffer));
376 num_bytes = static_cast<uint32_t>(sizeof(buffer)); 381 num_bytes = static_cast<uint32_t>(sizeof(buffer));
377 EXPECT_EQ(MOJO_RESULT_OK, 382 EXPECT_EQ(MOJO_RESULT_OK,
378 MojoReadMessage(mp2, buffer, &num_bytes, NULL, NULL, 383 MojoReadMessage(mp2, buffer, &num_bytes, NULL, NULL,
379 MOJO_READ_MESSAGE_FLAG_NONE)); 384 MOJO_READ_MESSAGE_FLAG_NONE));
380 const char kBaz[] = "baz"; 385 const char kBaz[] = "baz";
381 EXPECT_EQ(sizeof(kBaz), num_bytes); 386 EXPECT_EQ(sizeof(kBaz), num_bytes);
382 EXPECT_STREQ(kBaz, buffer); 387 EXPECT_STREQ(kBaz, buffer);
383 388
384 // 10. Close |mp0|. 389 // 10. Close |mp0|.
385 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(mp0)); 390 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(mp0));
386 391
387 // 12. Wait on |mp2| (which should eventually fail) and then close it. 392 // 12. Wait on |mp2| (which should eventually fail) and then close it.
388 // TODO(vtl): crbug.com/351768 393 // TODO(vtl): crbug.com/351768
389 #if 0 394 #if 0
390 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, 395 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION,
391 MojoWait(mp2, MOJO_WAIT_FLAG_READABLE, MOJO_DEADLINE_INDEFINITE)); 396 MojoWait(mp2, MOJO_HANDLE_SIGNAL_READABLE,
397 MOJO_DEADLINE_INDEFINITE));
392 #endif 398 #endif
393 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(mp2)); 399 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(mp2));
394 } 400 }
395 401
396 EXPECT_TRUE(multiprocess_test_helper.WaitForChildTestShutdown()); 402 EXPECT_TRUE(multiprocess_test_helper.WaitForChildTestShutdown());
397 EXPECT_TRUE(test::Shutdown()); 403 EXPECT_TRUE(test::Shutdown());
398 } 404 }
399 405
400 MOJO_MULTIPROCESS_TEST_CHILD_TEST(MultiprocessChannelsClient) { 406 MOJO_MULTIPROCESS_TEST_CHILD_TEST(MultiprocessChannelsClient) {
401 embedder::ScopedPlatformHandle client_platform_handle = 407 embedder::ScopedPlatformHandle client_platform_handle =
402 mojo::test::MultiprocessTestHelper::client_platform_handle.Pass(); 408 mojo::test::MultiprocessTestHelper::client_platform_handle.Pass();
403 EXPECT_TRUE(client_platform_handle.is_valid()); 409 EXPECT_TRUE(client_platform_handle.is_valid());
404 410
405 system::test::TestIOThread 411 system::test::TestIOThread
406 test_io_thread(system::test::TestIOThread::kAutoStart); 412 test_io_thread(system::test::TestIOThread::kAutoStart);
407 Init(); 413 Init();
408 414
409 { 415 {
410 ScopedTestChannel client_channel(test_io_thread.task_runner(), 416 ScopedTestChannel client_channel(test_io_thread.task_runner(),
411 client_platform_handle.Pass()); 417 client_platform_handle.Pass());
412 MojoHandle client_mp = client_channel.bootstrap_message_pipe(); 418 MojoHandle client_mp = client_channel.bootstrap_message_pipe();
413 EXPECT_NE(client_mp, MOJO_HANDLE_INVALID); 419 EXPECT_NE(client_mp, MOJO_HANDLE_INVALID);
414 client_channel.WaitForChannelCreationCompletion(); 420 client_channel.WaitForChannelCreationCompletion();
415 CHECK(client_channel.channel_info() != NULL); 421 CHECK(client_channel.channel_info() != NULL);
416 422
417 // 1. Read the first message from |client_mp|. 423 // 1. Read the first message from |client_mp|.
418 EXPECT_EQ(MOJO_RESULT_OK, 424 EXPECT_EQ(MOJO_RESULT_OK,
419 MojoWait(client_mp, MOJO_WAIT_FLAG_READABLE, 425 MojoWait(client_mp, MOJO_HANDLE_SIGNAL_READABLE,
420 MOJO_DEADLINE_INDEFINITE)); 426 MOJO_DEADLINE_INDEFINITE));
421 char buffer[1000] = {}; 427 char buffer[1000] = {};
422 uint32_t num_bytes = static_cast<uint32_t>(sizeof(buffer)); 428 uint32_t num_bytes = static_cast<uint32_t>(sizeof(buffer));
423 EXPECT_EQ(MOJO_RESULT_OK, 429 EXPECT_EQ(MOJO_RESULT_OK,
424 MojoReadMessage(client_mp, buffer, &num_bytes, NULL, NULL, 430 MojoReadMessage(client_mp, buffer, &num_bytes, NULL, NULL,
425 MOJO_READ_MESSAGE_FLAG_NONE)); 431 MOJO_READ_MESSAGE_FLAG_NONE));
426 const char kHello[] = "hello"; 432 const char kHello[] = "hello";
427 EXPECT_EQ(sizeof(kHello), num_bytes); 433 EXPECT_EQ(sizeof(kHello), num_bytes);
428 EXPECT_STREQ(kHello, buffer); 434 EXPECT_STREQ(kHello, buffer);
429 435
430 // 2. Write a message to |client_mp| (attaching nothing). 436 // 2. Write a message to |client_mp| (attaching nothing).
431 const char kWorld[] = "world!"; 437 const char kWorld[] = "world!";
432 EXPECT_EQ(MOJO_RESULT_OK, 438 EXPECT_EQ(MOJO_RESULT_OK,
433 MojoWriteMessage(client_mp, kWorld, 439 MojoWriteMessage(client_mp, kWorld,
434 static_cast<uint32_t>(sizeof(kWorld)), NULL, 0, 440 static_cast<uint32_t>(sizeof(kWorld)), NULL, 0,
435 MOJO_WRITE_MESSAGE_FLAG_NONE)); 441 MOJO_WRITE_MESSAGE_FLAG_NONE));
436 442
437 // 4. Read a message from |client_mp|, which should have |mp1| attached. 443 // 4. Read a message from |client_mp|, which should have |mp1| attached.
438 EXPECT_EQ(MOJO_RESULT_OK, 444 EXPECT_EQ(MOJO_RESULT_OK,
439 MojoWait(client_mp, MOJO_WAIT_FLAG_READABLE, 445 MojoWait(client_mp, MOJO_HANDLE_SIGNAL_READABLE,
440 MOJO_DEADLINE_INDEFINITE)); 446 MOJO_DEADLINE_INDEFINITE));
441 // TODO(vtl): If the scope were to end here (and |client_mp| closed), we'd 447 // TODO(vtl): If the scope were to end here (and |client_mp| closed), we'd
442 // die (again due to |Channel::HandleLocalError()|). 448 // die (again due to |Channel::HandleLocalError()|).
443 memset(buffer, 0, sizeof(buffer)); 449 memset(buffer, 0, sizeof(buffer));
444 num_bytes = static_cast<uint32_t>(sizeof(buffer)); 450 num_bytes = static_cast<uint32_t>(sizeof(buffer));
445 MojoHandle mp1 = MOJO_HANDLE_INVALID; 451 MojoHandle mp1 = MOJO_HANDLE_INVALID;
446 uint32_t num_handles = 1; 452 uint32_t num_handles = 1;
447 EXPECT_EQ(MOJO_RESULT_OK, 453 EXPECT_EQ(MOJO_RESULT_OK,
448 MojoReadMessage(client_mp, buffer, &num_bytes, &mp1, &num_handles, 454 MojoReadMessage(client_mp, buffer, &num_bytes, &mp1, &num_handles,
449 MOJO_READ_MESSAGE_FLAG_NONE)); 455 MOJO_READ_MESSAGE_FLAG_NONE));
(...skipping 26 matching lines...) Expand all
476 // 9. Write a message to |mp1|, attaching |mp2|. 482 // 9. Write a message to |mp1|, attaching |mp2|.
477 const char kQuux[] = "quux"; 483 const char kQuux[] = "quux";
478 EXPECT_EQ(MOJO_RESULT_OK, 484 EXPECT_EQ(MOJO_RESULT_OK,
479 MojoWriteMessage(mp1, kQuux, 485 MojoWriteMessage(mp1, kQuux,
480 static_cast<uint32_t>(sizeof(kQuux)), &mp2, 1, 486 static_cast<uint32_t>(sizeof(kQuux)), &mp2, 1,
481 MOJO_WRITE_MESSAGE_FLAG_NONE)); 487 MOJO_WRITE_MESSAGE_FLAG_NONE));
482 mp2 = MOJO_HANDLE_INVALID; 488 mp2 = MOJO_HANDLE_INVALID;
483 489
484 // 3. Read a message from |mp1|. 490 // 3. Read a message from |mp1|.
485 EXPECT_EQ(MOJO_RESULT_OK, 491 EXPECT_EQ(MOJO_RESULT_OK,
486 MojoWait(mp1, MOJO_WAIT_FLAG_READABLE, MOJO_DEADLINE_INDEFINITE)); 492 MojoWait(mp1, MOJO_HANDLE_SIGNAL_READABLE,
493 MOJO_DEADLINE_INDEFINITE));
487 memset(buffer, 0, sizeof(buffer)); 494 memset(buffer, 0, sizeof(buffer));
488 num_bytes = static_cast<uint32_t>(sizeof(buffer)); 495 num_bytes = static_cast<uint32_t>(sizeof(buffer));
489 EXPECT_EQ(MOJO_RESULT_OK, 496 EXPECT_EQ(MOJO_RESULT_OK,
490 MojoReadMessage(mp1, buffer, &num_bytes, NULL, NULL, 497 MojoReadMessage(mp1, buffer, &num_bytes, NULL, NULL,
491 MOJO_READ_MESSAGE_FLAG_NONE)); 498 MOJO_READ_MESSAGE_FLAG_NONE));
492 const char kFoo[] = "FOO"; 499 const char kFoo[] = "FOO";
493 EXPECT_EQ(sizeof(kFoo), num_bytes); 500 EXPECT_EQ(sizeof(kFoo), num_bytes);
494 EXPECT_STREQ(kFoo, buffer); 501 EXPECT_STREQ(kFoo, buffer);
495 502
496 // 11. Wait on |mp1| (which should eventually fail) and then close it. 503 // 11. Wait on |mp1| (which should eventually fail) and then close it.
497 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, 504 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION,
498 MojoWait(mp1, MOJO_WAIT_FLAG_READABLE, MOJO_DEADLINE_INDEFINITE)); 505 MojoWait(mp1, MOJO_HANDLE_SIGNAL_READABLE,
506 MOJO_DEADLINE_INDEFINITE));
499 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(mp1)); 507 EXPECT_EQ(MOJO_RESULT_OK, MojoClose(mp1));
500 } 508 }
501 509
502 EXPECT_TRUE(test::Shutdown()); 510 EXPECT_TRUE(test::Shutdown());
503 } 511 }
504 512
505 // TODO(vtl): Test immediate write & close. 513 // TODO(vtl): Test immediate write & close.
506 // TODO(vtl): Test broken-connection cases. 514 // TODO(vtl): Test broken-connection cases.
507 515
508 } // namespace 516 } // namespace
509 } // namespace embedder 517 } // namespace embedder
510 } // namespace mojo 518 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/common/message_pump_mojo.cc ('k') | mojo/examples/html_viewer/html_viewer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698