Index: cc/ipc/struct_traits_unittest.cc |
diff --git a/cc/ipc/struct_traits_unittest.cc b/cc/ipc/struct_traits_unittest.cc |
index 1b90b4a5498bb3a2b6964b5716a3e2ea6d7c7231..c38d29ac67d65132d7e69715d2790b2a956727e1 100644 |
--- a/cc/ipc/struct_traits_unittest.cc |
+++ b/cc/ipc/struct_traits_unittest.cc |
@@ -130,7 +130,12 @@ class StructTraitsTest : public testing::Test, public mojom::TraitsTestService { |
DISALLOW_COPY_AND_ASSIGN(StructTraitsTest); |
}; |
-void StubCopyOutputRequestCallback(std::unique_ptr<CopyOutputResult> result) {} |
+void CopyOutputRequestCallback(base::Closure quit_closure, |
+ gfx::Size expected_size, |
+ std::unique_ptr<CopyOutputResult> result) { |
+ EXPECT_EQ(expected_size, result->size()); |
+ quit_closure.Run(); |
+} |
void CopyOutputResultCallback(base::Closure quit_closure, |
const gpu::SyncToken& expected_sync_token, |
@@ -370,19 +375,17 @@ TEST_F(StructTraitsTest, CompositorFrameMetadata) { |
EXPECT_EQ(referenced_surfaces[i], output.referenced_surfaces[i]); |
} |
-TEST_F(StructTraitsTest, CopyOutputRequest) { |
+TEST_F(StructTraitsTest, CopyOutputRequest_Bitmap) { |
const gfx::Rect area(5, 7, 44, 55); |
- const auto callback = base::Bind(StubCopyOutputRequestCallback); |
- 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; |
const auto source = |
base::UnguessableToken::Deserialize(0xdeadbeef, 0xdeadf00d); |
- gpu::Mailbox mailbox; |
- mailbox.SetName(mailbox_name); |
- TextureMailbox texture_mailbox(mailbox, gpu::SyncToken(), target); |
+ gfx::Size size(9, 8); |
+ auto bitmap = base::MakeUnique<SkBitmap>(); |
+ bitmap->allocN32Pixels(size.width(), size.height()); |
+ base::RunLoop run_loop; |
+ auto callback = |
+ base::Bind(CopyOutputRequestCallback, run_loop.QuitClosure(), size); |
- // Test with bitmap. |
std::unique_ptr<CopyOutputRequest> input; |
input = CopyOutputRequest::CreateBitmapRequest(callback); |
input->set_area(area); |
@@ -396,19 +399,39 @@ TEST_F(StructTraitsTest, CopyOutputRequest) { |
EXPECT_TRUE(output->has_area()); |
EXPECT_EQ(area, output->area()); |
EXPECT_EQ(source, output->source()); |
+ output->SendBitmapResult(std::move(bitmap)); |
+ // If CopyOutputRequestCallback is called, this ends. Otherwise, the test |
+ // will time out and fail. |
+ run_loop.Run(); |
+} |
- // Test with texture mailbox. |
- input = CopyOutputRequest::CreateRequest(callback); |
+TEST_F(StructTraitsTest, CopyOutputRequest_Texture) { |
+ 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; |
+ gpu::Mailbox mailbox; |
+ mailbox.SetName(mailbox_name); |
+ TextureMailbox texture_mailbox(mailbox, gpu::SyncToken(), target); |
+ base::RunLoop run_loop; |
+ auto callback = base::Bind(CopyOutputRequestCallback, run_loop.QuitClosure(), |
+ gfx::Size()); |
+ |
+ auto input = CopyOutputRequest::CreateRequest(callback); |
input->SetTextureMailbox(texture_mailbox); |
- std::unique_ptr<CopyOutputRequest> output2; |
- proxy->EchoCopyOutputRequest(std::move(input), &output2); |
+ mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy(); |
+ std::unique_ptr<CopyOutputRequest> output; |
+ proxy->EchoCopyOutputRequest(std::move(input), &output); |
- EXPECT_TRUE(output2->has_texture_mailbox()); |
- EXPECT_FALSE(output2->has_area()); |
- EXPECT_EQ(mailbox, output2->texture_mailbox().mailbox()); |
- EXPECT_EQ(target, output2->texture_mailbox().target()); |
- EXPECT_FALSE(output2->has_source()); |
+ EXPECT_TRUE(output->has_texture_mailbox()); |
+ EXPECT_FALSE(output->has_area()); |
+ EXPECT_EQ(mailbox, output->texture_mailbox().mailbox()); |
+ EXPECT_EQ(target, output->texture_mailbox().target()); |
+ EXPECT_FALSE(output->has_source()); |
+ output->SendEmptyResult(); |
+ // If CopyOutputRequestCallback is called, this ends. Otherwise, the test |
+ // will time out and fail. |
+ run_loop.Run(); |
} |
TEST_F(StructTraitsTest, CopyOutputResult_Bitmap) { |