| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/core.h" | 5 #include "mojo/system/core.h" |
| 6 | 6 |
| 7 #include <limits> | 7 #include <limits> |
| 8 | 8 |
| 9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
| 10 #include "base/threading/platform_thread.h" | 10 #include "base/threading/platform_thread.h" |
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 180 core()->WaitMany(handles, flags, 2, MOJO_DEADLINE_INDEFINITE)); | 180 core()->WaitMany(handles, flags, 2, MOJO_DEADLINE_INDEFINITE)); |
| 181 | 181 |
| 182 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(handles[0])); | 182 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(handles[0])); |
| 183 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(handles[1])); | 183 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(handles[1])); |
| 184 } | 184 } |
| 185 | 185 |
| 186 // |CreateMessagePipe()|: | 186 // |CreateMessagePipe()|: |
| 187 { | 187 { |
| 188 MojoHandle h; | 188 MojoHandle h; |
| 189 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 189 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
| 190 core()->CreateMessagePipe(NULL, NULL)); | 190 core()->CreateMessagePipe(NULL, NULL, NULL)); |
| 191 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 191 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
| 192 core()->CreateMessagePipe(&h, NULL)); | 192 core()->CreateMessagePipe(NULL, &h, NULL)); |
| 193 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 193 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
| 194 core()->CreateMessagePipe(NULL, &h)); | 194 core()->CreateMessagePipe(NULL, NULL, &h)); |
| 195 } | 195 } |
| 196 | 196 |
| 197 // |WriteMessage()|: | 197 // |WriteMessage()|: |
| 198 // Only check arguments checked by |Core|, namely |handle|, |handles|, and | 198 // Only check arguments checked by |Core|, namely |handle|, |handles|, and |
| 199 // |num_handles|. | 199 // |num_handles|. |
| 200 { | 200 { |
| 201 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 201 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
| 202 core()->WriteMessage(MOJO_HANDLE_INVALID, NULL, 0, NULL, 0, | 202 core()->WriteMessage(MOJO_HANDLE_INVALID, NULL, 0, NULL, 0, |
| 203 MOJO_WRITE_MESSAGE_FLAG_NONE)); | 203 MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 204 | 204 |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 318 } | 318 } |
| 319 } | 319 } |
| 320 | 320 |
| 321 // TODO(vtl): test |Wait()| and |WaitMany()| properly | 321 // TODO(vtl): test |Wait()| and |WaitMany()| properly |
| 322 // - including |WaitMany()| with the same handle more than once (with | 322 // - including |WaitMany()| with the same handle more than once (with |
| 323 // same/different flags) | 323 // same/different flags) |
| 324 | 324 |
| 325 TEST_F(CoreTest, MessagePipe) { | 325 TEST_F(CoreTest, MessagePipe) { |
| 326 MojoHandle h[2]; | 326 MojoHandle h[2]; |
| 327 | 327 |
| 328 EXPECT_EQ(MOJO_RESULT_OK, core()->CreateMessagePipe(&h[0], &h[1])); | 328 EXPECT_EQ(MOJO_RESULT_OK, core()->CreateMessagePipe(NULL, &h[0], &h[1])); |
| 329 // Should get two distinct, valid handles. | 329 // Should get two distinct, valid handles. |
| 330 EXPECT_NE(h[0], MOJO_HANDLE_INVALID); | 330 EXPECT_NE(h[0], MOJO_HANDLE_INVALID); |
| 331 EXPECT_NE(h[1], MOJO_HANDLE_INVALID); | 331 EXPECT_NE(h[1], MOJO_HANDLE_INVALID); |
| 332 EXPECT_NE(h[0], h[1]); | 332 EXPECT_NE(h[0], h[1]); |
| 333 | 333 |
| 334 // Neither should be readable. | 334 // Neither should be readable. |
| 335 MojoWaitFlags flags[2] = { MOJO_WAIT_FLAG_READABLE, MOJO_WAIT_FLAG_READABLE }; | 335 MojoWaitFlags flags[2] = { MOJO_WAIT_FLAG_READABLE, MOJO_WAIT_FLAG_READABLE }; |
| 336 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED, | 336 EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED, |
| 337 core()->WaitMany(h, flags, 2, 0)); | 337 core()->WaitMany(h, flags, 2, 0)); |
| 338 | 338 |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 431 const uint32_t kWorldSize = static_cast<uint32_t>(sizeof(kWorld)); | 431 const uint32_t kWorldSize = static_cast<uint32_t>(sizeof(kWorld)); |
| 432 char buffer[100]; | 432 char buffer[100]; |
| 433 const uint32_t kBufferSize = static_cast<uint32_t>(sizeof(buffer)); | 433 const uint32_t kBufferSize = static_cast<uint32_t>(sizeof(buffer)); |
| 434 uint32_t num_bytes; | 434 uint32_t num_bytes; |
| 435 MojoHandle handles[10]; | 435 MojoHandle handles[10]; |
| 436 uint32_t num_handles; | 436 uint32_t num_handles; |
| 437 MojoHandle h_received; | 437 MojoHandle h_received; |
| 438 | 438 |
| 439 MojoHandle h_passing[2]; | 439 MojoHandle h_passing[2]; |
| 440 EXPECT_EQ(MOJO_RESULT_OK, | 440 EXPECT_EQ(MOJO_RESULT_OK, |
| 441 core()->CreateMessagePipe(&h_passing[0], &h_passing[1])); | 441 core()->CreateMessagePipe(NULL, &h_passing[0], &h_passing[1])); |
| 442 | 442 |
| 443 // Make sure that |h_passing[]| work properly. | 443 // Make sure that |h_passing[]| work properly. |
| 444 EXPECT_EQ(MOJO_RESULT_OK, | 444 EXPECT_EQ(MOJO_RESULT_OK, |
| 445 core()->WriteMessage(h_passing[0], | 445 core()->WriteMessage(h_passing[0], |
| 446 kHello, kHelloSize, | 446 kHello, kHelloSize, |
| 447 NULL, 0, | 447 NULL, 0, |
| 448 MOJO_WRITE_MESSAGE_FLAG_NONE)); | 448 MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 449 EXPECT_EQ(MOJO_RESULT_OK, | 449 EXPECT_EQ(MOJO_RESULT_OK, |
| 450 core()->Wait(h_passing[1], MOJO_WAIT_FLAG_READABLE, 1000000000)); | 450 core()->Wait(h_passing[1], MOJO_WAIT_FLAG_READABLE, 1000000000)); |
| 451 num_bytes = kBufferSize; | 451 num_bytes = kBufferSize; |
| (...skipping 15 matching lines...) Expand all Loading... |
| 467 &h_passing[0], 1, | 467 &h_passing[0], 1, |
| 468 MOJO_WRITE_MESSAGE_FLAG_NONE)); | 468 MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 469 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 469 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
| 470 core()->WriteMessage(h_passing[0], | 470 core()->WriteMessage(h_passing[0], |
| 471 kHello, kHelloSize, | 471 kHello, kHelloSize, |
| 472 &h_passing[1], 1, | 472 &h_passing[1], 1, |
| 473 MOJO_WRITE_MESSAGE_FLAG_NONE)); | 473 MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 474 | 474 |
| 475 MojoHandle h_passed[2]; | 475 MojoHandle h_passed[2]; |
| 476 EXPECT_EQ(MOJO_RESULT_OK, | 476 EXPECT_EQ(MOJO_RESULT_OK, |
| 477 core()->CreateMessagePipe(&h_passed[0], &h_passed[1])); | 477 core()->CreateMessagePipe(NULL, &h_passed[0], &h_passed[1])); |
| 478 | 478 |
| 479 // Make sure that |h_passed[]| work properly. | 479 // Make sure that |h_passed[]| work properly. |
| 480 EXPECT_EQ(MOJO_RESULT_OK, | 480 EXPECT_EQ(MOJO_RESULT_OK, |
| 481 core()->WriteMessage(h_passed[0], | 481 core()->WriteMessage(h_passed[0], |
| 482 kHello, kHelloSize, | 482 kHello, kHelloSize, |
| 483 NULL, 0, | 483 NULL, 0, |
| 484 MOJO_WRITE_MESSAGE_FLAG_NONE)); | 484 MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 485 EXPECT_EQ(MOJO_RESULT_OK, | 485 EXPECT_EQ(MOJO_RESULT_OK, |
| 486 core()->Wait(h_passed[1], MOJO_WAIT_FLAG_READABLE, 1000000000)); | 486 core()->Wait(h_passed[1], MOJO_WAIT_FLAG_READABLE, 1000000000)); |
| 487 num_bytes = kBufferSize; | 487 num_bytes = kBufferSize; |
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 679 const char kWorld[] = "world!!!"; | 679 const char kWorld[] = "world!!!"; |
| 680 const uint32_t kWorldSize = static_cast<uint32_t>(sizeof(kWorld)); | 680 const uint32_t kWorldSize = static_cast<uint32_t>(sizeof(kWorld)); |
| 681 char buffer[100]; | 681 char buffer[100]; |
| 682 const uint32_t kBufferSize = static_cast<uint32_t>(sizeof(buffer)); | 682 const uint32_t kBufferSize = static_cast<uint32_t>(sizeof(buffer)); |
| 683 uint32_t num_bytes; | 683 uint32_t num_bytes; |
| 684 MojoHandle handles[10]; | 684 MojoHandle handles[10]; |
| 685 uint32_t num_handles; | 685 uint32_t num_handles; |
| 686 | 686 |
| 687 MojoHandle h_passing[2]; | 687 MojoHandle h_passing[2]; |
| 688 EXPECT_EQ(MOJO_RESULT_OK, | 688 EXPECT_EQ(MOJO_RESULT_OK, |
| 689 core()->CreateMessagePipe(&h_passing[0], &h_passing[1])); | 689 core()->CreateMessagePipe(NULL, &h_passing[0], &h_passing[1])); |
| 690 | 690 |
| 691 MojoHandle ph, ch; | 691 MojoHandle ph, ch; |
| 692 EXPECT_EQ(MOJO_RESULT_OK, | 692 EXPECT_EQ(MOJO_RESULT_OK, |
| 693 core()->CreateDataPipe(NULL, &ph, &ch)); | 693 core()->CreateDataPipe(NULL, &ph, &ch)); |
| 694 | 694 |
| 695 // Send |ch| from |h_passing[0]| to |h_passing[1]|. | 695 // Send |ch| from |h_passing[0]| to |h_passing[1]|. |
| 696 EXPECT_EQ(MOJO_RESULT_OK, | 696 EXPECT_EQ(MOJO_RESULT_OK, |
| 697 core()->WriteMessage(h_passing[0], | 697 core()->WriteMessage(h_passing[0], |
| 698 kHello, kHelloSize, | 698 kHello, kHelloSize, |
| 699 &ch, 1, | 699 &ch, 1, |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 872 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(h_passing[1])); | 872 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(h_passing[1])); |
| 873 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(ph)); | 873 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(ph)); |
| 874 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(ch)); | 874 EXPECT_EQ(MOJO_RESULT_OK, core()->Close(ch)); |
| 875 } | 875 } |
| 876 | 876 |
| 877 // TODO(vtl): Test |DuplicateBufferHandle()| and |MapBuffer()|. | 877 // TODO(vtl): Test |DuplicateBufferHandle()| and |MapBuffer()|. |
| 878 | 878 |
| 879 } // namespace | 879 } // namespace |
| 880 } // namespace system | 880 } // namespace system |
| 881 } // namespace mojo | 881 } // namespace mojo |
| OLD | NEW |