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