Chromium Code Reviews| Index: cc/ipc/struct_traits_unittest.cc |
| diff --git a/cc/ipc/struct_traits_unittest.cc b/cc/ipc/struct_traits_unittest.cc |
| index b84233bad89a95ff5c26a2fd60da45a13c1b0c67..fe01902e6bcbc610aa926becc403ae781fb0267b 100644 |
| --- a/cc/ipc/struct_traits_unittest.cc |
| +++ b/cc/ipc/struct_traits_unittest.cc |
| @@ -57,6 +57,12 @@ class StructTraitsTest : public testing::Test, public mojom::TraitsTestService { |
| callback.Run(std::move(c)); |
| } |
| + void EchoCopyOutputResult( |
| + const CopyOutputResult& c, |
| + const EchoCopyOutputResultCallback& callback) override { |
| + callback.Run(c); |
| + } |
| + |
| void EchoFilterOperation( |
| const FilterOperation& f, |
| const EchoFilterOperationCallback& callback) override { |
| @@ -125,6 +131,9 @@ class StructTraitsTest : public testing::Test, public mojom::TraitsTestService { |
| void StubCopyOutputRequestCallback(std::unique_ptr<CopyOutputResult> result) {} |
| +void StubCopyOutputResultCallback(const gpu::SyncToken& sync_token, |
| + bool is_lost) {} |
| + |
| } // namespace |
| TEST_F(StructTraitsTest, BeginFrameArgs) { |
| @@ -370,7 +379,6 @@ TEST_F(StructTraitsTest, CopyOutputRequest) { |
| input = CopyOutputRequest::CreateBitmapRequest(callback); |
| input->set_area(area); |
| input->set_source(source); |
| - |
| mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy(); |
| CopyOutputRequest output; |
| proxy->EchoCopyOutputRequest(*input.get(), &output); |
| @@ -395,6 +403,52 @@ TEST_F(StructTraitsTest, CopyOutputRequest) { |
| EXPECT_FALSE(output2.has_source()); |
| } |
| +TEST_F(StructTraitsTest, CopyOutputResult) { |
| + const gfx::Size size(1234, 5678); |
| + const int8_t mailbox_name[GL_MAILBOX_SIZE_CHROMIUM] = { |
| + 0, 9, 8, 7, 6, 5, 4, 3, 2, 1, 9, 7, 5, 3, 1, 3}; |
| + const uint32_t target = 3; |
| + auto callback = |
| + SingleReleaseCallback::Create(base::Bind(StubCopyOutputResultCallback)); |
| + gpu::Mailbox mailbox; |
| + mailbox.SetName(mailbox_name); |
| + TextureMailbox texture_mailbox(mailbox, gpu::SyncToken(), target); |
| + auto bitmap = base::MakeUnique<SkBitmap>(); |
| + bitmap->allocN32Pixels(7, 8); |
| + bitmap->eraseARGB(123, 213, 77, 33); |
| + |
| + // Bitmap test |
| + auto in_bitmap = base::MakeUnique<SkBitmap>(*bitmap); |
| + auto input = CopyOutputResult::CreateBitmapResult(std::move(in_bitmap)); |
| + |
| + mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy(); |
| + CopyOutputResult output; |
| + proxy->EchoCopyOutputResult(*input, &output); |
| + |
| + EXPECT_TRUE(output.HasBitmap()); |
| + EXPECT_FALSE(output.HasTexture()); |
| + EXPECT_EQ(input->size(), output.size()); |
| + std::unique_ptr<SkBitmap> out_bitmap = output.TakeBitmap(); |
| + EXPECT_EQ(bitmap->getSize(), out_bitmap->getSize()); |
| + EXPECT_EQ(0, std::memcmp(bitmap->getPixels(), out_bitmap->getPixels(), |
| + bitmap->getSize())); |
| + |
| + // Texture test |
|
vmpstr
2017/01/31 21:32:19
nit: Can you create a different TEST_F for this (e
|
| + input = CopyOutputResult::CreateTextureResult(size, texture_mailbox, |
| + std::move(callback)); |
| + |
| + CopyOutputResult output2; |
| + proxy->EchoCopyOutputResult(*input, &output2); |
| + |
| + EXPECT_FALSE(output2.HasBitmap()); |
| + EXPECT_TRUE(output2.HasTexture()); |
| + EXPECT_EQ(size, output2.size()); |
| + TextureMailbox out_mailbox; |
| + std::unique_ptr<SingleReleaseCallback> out_callback; |
| + output2.TakeTexture(&out_mailbox, &out_callback); |
| + EXPECT_EQ(mailbox, out_mailbox.mailbox()); |
| +} |
| + |
| TEST_F(StructTraitsTest, FilterOperation) { |
| const FilterOperation inputs[] = { |
| FilterOperation::CreateBlurFilter(20), |