Index: ui/gfx/mojo/struct_traits_unittest.cc |
diff --git a/ui/gfx/mojo/struct_traits_unittest.cc b/ui/gfx/mojo/struct_traits_unittest.cc |
index 1ecbf86db73cdbc698b7de651124069cbe2032ed..556954b0f546648346f3b4d9ad312af65ac4155f 100644 |
--- a/ui/gfx/mojo/struct_traits_unittest.cc |
+++ b/ui/gfx/mojo/struct_traits_unittest.cc |
@@ -49,6 +49,12 @@ class StructTraitsTest : public testing::Test, public mojom::TraitsTestService { |
callback.Run(t); |
} |
+ void EchoGpuMemoryBufferHandle( |
+ const GpuMemoryBufferHandle& handle, |
+ const EchoGpuMemoryBufferHandleCallback& callback) override { |
+ callback.Run(handle); |
+ } |
+ |
base::MessageLoop loop_; |
mojo::BindingSet<TraitsTestService> traits_test_bindings_; |
@@ -134,4 +140,33 @@ TEST_F(StructTraitsTest, MAYBE_AcceleratedWidget) { |
EXPECT_EQ(input, output); |
} |
+TEST_F(StructTraitsTest, GpuMemoryBufferHandle) { |
+ const gfx::GpuMemoryBufferId kId(99); |
+ const uint32_t kOffset = 126; |
+ const int32_t kStride = 256; |
+ base::SharedMemory shared_memory; |
+ ASSERT_TRUE(shared_memory.CreateAnonymous(1024)); |
+ ASSERT_TRUE(shared_memory.Map(1024)); |
+ |
+ gfx::GpuMemoryBufferHandle handle; |
+ handle.type = gfx::SHARED_MEMORY_BUFFER; |
+ handle.id = kId; |
+ handle.handle = base::SharedMemory::DuplicateHandle(shared_memory.handle()); |
+ handle.offset = kOffset; |
+ handle.stride = kStride; |
+ |
+ mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy(); |
+ gfx::GpuMemoryBufferHandle output; |
+ proxy->EchoGpuMemoryBufferHandle(handle, &output); |
+ EXPECT_EQ(gfx::SHARED_MEMORY_BUFFER, output.type); |
+ EXPECT_EQ(kId, output.id); |
+ EXPECT_EQ(kOffset, output.offset); |
+ EXPECT_EQ(kStride, output.stride); |
+#if !defined(OS_MACOSX) && !defined(OS_IOS) |
+ // TODO: Add support for mach_port on mac. |
+ base::SharedMemory output_memory(output.handle, true); |
+ EXPECT_TRUE(output_memory.Map(1024)); |
+#endif |
+} |
+ |
} // namespace gfx |