| 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 |