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/embedder/embedder.h" | 5 #include "mojo/edk/embedder/embedder.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 #include <string.h> | 9 #include <string.h> |
10 | 10 |
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
296 #define MAYBE_MultiprocessBaseSharedMemory DISABLED_MultiprocessBaseSharedMemory | 296 #define MAYBE_MultiprocessBaseSharedMemory DISABLED_MultiprocessBaseSharedMemory |
297 #else | 297 #else |
298 #define MAYBE_MultiprocessBaseSharedMemory MultiprocessBaseSharedMemory | 298 #define MAYBE_MultiprocessBaseSharedMemory MultiprocessBaseSharedMemory |
299 #endif // defined(OS_ANDROID) | 299 #endif // defined(OS_ANDROID) |
300 TEST_F(EmbedderTest, MAYBE_MultiprocessBaseSharedMemory) { | 300 TEST_F(EmbedderTest, MAYBE_MultiprocessBaseSharedMemory) { |
301 RUN_CHILD_ON_PIPE(MultiprocessSharedMemoryClient, server_mp) | 301 RUN_CHILD_ON_PIPE(MultiprocessSharedMemoryClient, server_mp) |
302 // 1. Create a base::SharedMemory object and create a mojo shared buffer | 302 // 1. Create a base::SharedMemory object and create a mojo shared buffer |
303 // from it. | 303 // from it. |
304 base::SharedMemoryCreateOptions options; | 304 base::SharedMemoryCreateOptions options; |
305 options.size = 123; | 305 options.size = 123; |
306 #if defined(OS_MACOSX) && !defined(OS_IOS) | |
307 options.type = base::SharedMemoryHandle::POSIX; | |
308 #endif | |
309 base::SharedMemory shared_memory; | 306 base::SharedMemory shared_memory; |
310 ASSERT_TRUE(shared_memory.Create(options)); | 307 ASSERT_TRUE(shared_memory.Create(options)); |
311 base::SharedMemoryHandle shm_handle = base::SharedMemory::DuplicateHandle( | 308 base::SharedMemoryHandle shm_handle = base::SharedMemory::DuplicateHandle( |
312 shared_memory.handle()); | 309 shared_memory.handle()); |
313 MojoHandle sb1; | 310 MojoHandle sb1; |
314 ASSERT_EQ(MOJO_RESULT_OK, | 311 ASSERT_EQ(MOJO_RESULT_OK, |
315 CreateSharedBufferWrapper(shm_handle, 123, false, &sb1)); | 312 CreateSharedBufferWrapper(shm_handle, 123, false, &sb1)); |
316 | 313 |
317 // 2. Map |sb1| and write something into it. | 314 // 2. Map |sb1| and write something into it. |
318 char* buffer = nullptr; | 315 char* buffer = nullptr; |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
378 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, MojoClose(sb1)); | 375 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, MojoClose(sb1)); |
379 } | 376 } |
380 | 377 |
381 #if defined(OS_MACOSX) && !defined(OS_IOS) | 378 #if defined(OS_MACOSX) && !defined(OS_IOS) |
382 TEST_F(EmbedderTest, MultiprocessMachSharedMemory) { | 379 TEST_F(EmbedderTest, MultiprocessMachSharedMemory) { |
383 RUN_CHILD_ON_PIPE(MultiprocessSharedMemoryClient, server_mp) | 380 RUN_CHILD_ON_PIPE(MultiprocessSharedMemoryClient, server_mp) |
384 // 1. Create a Mach base::SharedMemory object and create a mojo shared | 381 // 1. Create a Mach base::SharedMemory object and create a mojo shared |
385 // buffer from it. | 382 // buffer from it. |
386 base::SharedMemoryCreateOptions options; | 383 base::SharedMemoryCreateOptions options; |
387 options.size = 123; | 384 options.size = 123; |
388 options.type = base::SharedMemoryHandle::MACH; | |
389 base::SharedMemory shared_memory; | 385 base::SharedMemory shared_memory; |
390 ASSERT_TRUE(shared_memory.Create(options)); | 386 ASSERT_TRUE(shared_memory.Create(options)); |
391 base::SharedMemoryHandle shm_handle = base::SharedMemory::DuplicateHandle( | 387 base::SharedMemoryHandle shm_handle = base::SharedMemory::DuplicateHandle( |
392 shared_memory.handle()); | 388 shared_memory.handle()); |
393 MojoHandle sb1; | 389 MojoHandle sb1; |
394 ASSERT_EQ(MOJO_RESULT_OK, | 390 ASSERT_EQ(MOJO_RESULT_OK, |
395 CreateSharedBufferWrapper(shm_handle, 123, false, &sb1)); | 391 CreateSharedBufferWrapper(shm_handle, 123, false, &sb1)); |
396 | 392 |
397 // 2. Map |sb1| and write something into it. | 393 // 2. Map |sb1| and write something into it. |
398 char* buffer = nullptr; | 394 char* buffer = nullptr; |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
453 ASSERT_TRUE(file.IsValid()); | 449 ASSERT_TRUE(file.IsValid()); |
454 scoped_handle.reset(PlatformHandle(file.TakePlatformFile())); | 450 scoped_handle.reset(PlatformHandle(file.TakePlatformFile())); |
455 EXPECT_EQ(PlatformHandle::Type::POSIX, scoped_handle.get().type); | 451 EXPECT_EQ(PlatformHandle::Type::POSIX, scoped_handle.get().type); |
456 } else if (type == HandleType::MACH_NULL) { | 452 } else if (type == HandleType::MACH_NULL) { |
457 scoped_handle.reset(PlatformHandle( | 453 scoped_handle.reset(PlatformHandle( |
458 static_cast<mach_port_t>(MACH_PORT_NULL))); | 454 static_cast<mach_port_t>(MACH_PORT_NULL))); |
459 EXPECT_EQ(PlatformHandle::Type::MACH, scoped_handle.get().type); | 455 EXPECT_EQ(PlatformHandle::Type::MACH, scoped_handle.get().type); |
460 } else { | 456 } else { |
461 base::SharedMemoryCreateOptions options; | 457 base::SharedMemoryCreateOptions options; |
462 options.size = kShmSize; | 458 options.size = kShmSize; |
463 options.type = base::SharedMemoryHandle::MACH; | |
464 base::SharedMemory shared_memory; | 459 base::SharedMemory shared_memory; |
465 ASSERT_TRUE(shared_memory.Create(options)); | 460 ASSERT_TRUE(shared_memory.Create(options)); |
466 base::SharedMemoryHandle shm_handle = | 461 base::SharedMemoryHandle shm_handle = |
467 base::SharedMemory::DuplicateHandle(shared_memory.handle()); | 462 base::SharedMemory::DuplicateHandle(shared_memory.handle()); |
468 scoped_handle.reset(PlatformHandle(shm_handle.GetMemoryObject())); | 463 scoped_handle.reset(PlatformHandle(shm_handle.GetMemoryObject())); |
469 EXPECT_EQ(PlatformHandle::Type::MACH, scoped_handle.get().type); | 464 EXPECT_EQ(PlatformHandle::Type::MACH, scoped_handle.get().type); |
470 } | 465 } |
471 ASSERT_EQ(MOJO_RESULT_OK, CreatePlatformHandleWrapper( | 466 ASSERT_EQ(MOJO_RESULT_OK, CreatePlatformHandleWrapper( |
472 std::move(scoped_handle), platform_handles + i)); | 467 std::move(scoped_handle), platform_handles + i)); |
473 } | 468 } |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
518 #endif // defined(OS_MACOSX) && !defined(OS_IOS) | 513 #endif // defined(OS_MACOSX) && !defined(OS_IOS) |
519 | 514 |
520 // TODO(vtl): Test immediate write & close. | 515 // TODO(vtl): Test immediate write & close. |
521 // TODO(vtl): Test broken-connection cases. | 516 // TODO(vtl): Test broken-connection cases. |
522 | 517 |
523 #endif // !defined(OS_IOS) | 518 #endif // !defined(OS_IOS) |
524 | 519 |
525 } // namespace | 520 } // namespace |
526 } // namespace edk | 521 } // namespace edk |
527 } // namespace mojo | 522 } // namespace mojo |
OLD | NEW |