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 |