| 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/platform_shared_buffer.h" | 5 #include "mojo/edk/embedder/platform_shared_buffer.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <limits> | 9 #include <limits> |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 189 EXPECT_EQ('x', static_cast<char*>(mapping2->GetBase())[0]); | 189 EXPECT_EQ('x', static_cast<char*>(mapping2->GetBase())[0]); |
| 190 | 190 |
| 191 static_cast<char*>(mapping2->GetBase())[1] = 'y'; | 191 static_cast<char*>(mapping2->GetBase())[1] = 'y'; |
| 192 EXPECT_EQ('y', static_cast<char*>(mapping1->GetBase())[51]); | 192 EXPECT_EQ('y', static_cast<char*>(mapping1->GetBase())[51]); |
| 193 } | 193 } |
| 194 | 194 |
| 195 TEST(PlatformSharedBufferTest, FromSharedMemoryHandle) { | 195 TEST(PlatformSharedBufferTest, FromSharedMemoryHandle) { |
| 196 const size_t kBufferSize = 1234; | 196 const size_t kBufferSize = 1234; |
| 197 base::SharedMemoryCreateOptions options; | 197 base::SharedMemoryCreateOptions options; |
| 198 options.size = kBufferSize; | 198 options.size = kBufferSize; |
| 199 #if defined(OS_MACOSX) && !defined(OS_IOS) |
| 200 options.type = base::SharedMemoryHandle::POSIX; |
| 201 #endif |
| 199 base::SharedMemory shared_memory; | 202 base::SharedMemory shared_memory; |
| 200 ASSERT_TRUE(shared_memory.Create(options)); | 203 ASSERT_TRUE(shared_memory.Create(options)); |
| 201 ASSERT_TRUE(shared_memory.Map(kBufferSize)); | 204 ASSERT_TRUE(shared_memory.Map(kBufferSize)); |
| 202 | 205 |
| 203 base::SharedMemoryHandle shm_handle = | 206 base::SharedMemoryHandle shm_handle = |
| 204 base::SharedMemory::DuplicateHandle(shared_memory.handle()); | 207 base::SharedMemory::DuplicateHandle(shared_memory.handle()); |
| 205 scoped_refptr<PlatformSharedBuffer> simple_buffer( | 208 scoped_refptr<PlatformSharedBuffer> simple_buffer( |
| 206 PlatformSharedBuffer::CreateFromSharedMemoryHandle( | 209 PlatformSharedBuffer::CreateFromSharedMemoryHandle( |
| 207 kBufferSize, false /* read_only */, shm_handle)); | 210 kBufferSize, false /* read_only */, shm_handle)); |
| 208 ASSERT_TRUE(simple_buffer); | 211 ASSERT_TRUE(simple_buffer); |
| 209 | 212 |
| 210 std::unique_ptr<PlatformSharedBufferMapping> mapping = | 213 std::unique_ptr<PlatformSharedBufferMapping> mapping = |
| 211 simple_buffer->Map(0, kBufferSize); | 214 simple_buffer->Map(0, kBufferSize); |
| 212 ASSERT_TRUE(mapping); | 215 ASSERT_TRUE(mapping); |
| 213 | 216 |
| 214 const int kOffset = 123; | 217 const int kOffset = 123; |
| 215 char* base_memory = static_cast<char*>(shared_memory.memory()); | 218 char* base_memory = static_cast<char*>(shared_memory.memory()); |
| 216 char* mojo_memory = static_cast<char*>(mapping->GetBase()); | 219 char* mojo_memory = static_cast<char*>(mapping->GetBase()); |
| 217 base_memory[kOffset] = 0; | 220 base_memory[kOffset] = 0; |
| 218 EXPECT_EQ(0, mojo_memory[kOffset]); | 221 EXPECT_EQ(0, mojo_memory[kOffset]); |
| 219 base_memory[kOffset] = 'a'; | 222 base_memory[kOffset] = 'a'; |
| 220 EXPECT_EQ('a', mojo_memory[kOffset]); | 223 EXPECT_EQ('a', mojo_memory[kOffset]); |
| 221 mojo_memory[kOffset] = 'z'; | 224 mojo_memory[kOffset] = 'z'; |
| 222 EXPECT_EQ('z', base_memory[kOffset]); | 225 EXPECT_EQ('z', base_memory[kOffset]); |
| 223 } | 226 } |
| 224 | 227 |
| 225 } // namespace | 228 } // namespace |
| 226 } // namespace edk | 229 } // namespace edk |
| 227 } // namespace mojo | 230 } // namespace mojo |
| OLD | NEW |