| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "base/message_loop/message_loop.h" | 5 #include "base/message_loop/message_loop.h" |
| 6 #include "base/run_loop.h" | 6 #include "base/run_loop.h" |
| 7 #include "cc/input/selection.h" | 7 #include "cc/input/selection.h" |
| 8 #include "cc/ipc/traits_test_service.mojom.h" | 8 #include "cc/ipc/traits_test_service.mojom.h" |
| 9 #include "cc/output/copy_output_result.h" | 9 #include "cc/output/copy_output_result.h" |
| 10 #include "cc/quads/debug_border_draw_quad.h" | 10 #include "cc/quads/debug_border_draw_quad.h" |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 123 void EchoTransferableResource( | 123 void EchoTransferableResource( |
| 124 const TransferableResource& t, | 124 const TransferableResource& t, |
| 125 const EchoTransferableResourceCallback& callback) override { | 125 const EchoTransferableResourceCallback& callback) override { |
| 126 callback.Run(t); | 126 callback.Run(t); |
| 127 } | 127 } |
| 128 | 128 |
| 129 mojo::BindingSet<TraitsTestService> traits_test_bindings_; | 129 mojo::BindingSet<TraitsTestService> traits_test_bindings_; |
| 130 DISALLOW_COPY_AND_ASSIGN(StructTraitsTest); | 130 DISALLOW_COPY_AND_ASSIGN(StructTraitsTest); |
| 131 }; | 131 }; |
| 132 | 132 |
| 133 void StubCopyOutputRequestCallback(std::unique_ptr<CopyOutputResult> result) {} | 133 void CopyOutputRequestCallback(base::Closure quit_closure, |
| 134 gfx::Size expected_size, |
| 135 std::unique_ptr<CopyOutputResult> result) { |
| 136 EXPECT_EQ(expected_size, result->size()); |
| 137 quit_closure.Run(); |
| 138 } |
| 134 | 139 |
| 135 void CopyOutputResultCallback(base::Closure quit_closure, | 140 void CopyOutputResultCallback(base::Closure quit_closure, |
| 136 const gpu::SyncToken& expected_sync_token, | 141 const gpu::SyncToken& expected_sync_token, |
| 137 bool expected_is_lost, | 142 bool expected_is_lost, |
| 138 const gpu::SyncToken& sync_token, | 143 const gpu::SyncToken& sync_token, |
| 139 bool is_lost) { | 144 bool is_lost) { |
| 140 EXPECT_EQ(expected_sync_token, sync_token); | 145 EXPECT_EQ(expected_sync_token, sync_token); |
| 141 EXPECT_EQ(expected_is_lost, is_lost); | 146 EXPECT_EQ(expected_is_lost, is_lost); |
| 142 quit_closure.Run(); | 147 quit_closure.Run(); |
| 143 } | 148 } |
| (...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 363 ui::LatencyInfo::LatencyComponent component; | 368 ui::LatencyInfo::LatencyComponent component; |
| 364 EXPECT_TRUE(output.latency_info[0].FindLatency( | 369 EXPECT_TRUE(output.latency_info[0].FindLatency( |
| 365 ui::LATENCY_BEGIN_SCROLL_LISTENER_UPDATE_MAIN_COMPONENT, 1337, | 370 ui::LATENCY_BEGIN_SCROLL_LISTENER_UPDATE_MAIN_COMPONENT, 1337, |
| 366 &component)); | 371 &component)); |
| 367 EXPECT_EQ(7331, component.sequence_number); | 372 EXPECT_EQ(7331, component.sequence_number); |
| 368 EXPECT_EQ(referenced_surfaces.size(), output.referenced_surfaces.size()); | 373 EXPECT_EQ(referenced_surfaces.size(), output.referenced_surfaces.size()); |
| 369 for (uint32_t i = 0; i < referenced_surfaces.size(); ++i) | 374 for (uint32_t i = 0; i < referenced_surfaces.size(); ++i) |
| 370 EXPECT_EQ(referenced_surfaces[i], output.referenced_surfaces[i]); | 375 EXPECT_EQ(referenced_surfaces[i], output.referenced_surfaces[i]); |
| 371 } | 376 } |
| 372 | 377 |
| 373 TEST_F(StructTraitsTest, CopyOutputRequest) { | 378 TEST_F(StructTraitsTest, CopyOutputRequest_Bitmap) { |
| 374 const gfx::Rect area(5, 7, 44, 55); | 379 const gfx::Rect area(5, 7, 44, 55); |
| 375 const auto callback = base::Bind(StubCopyOutputRequestCallback); | |
| 376 const int8_t mailbox_name[GL_MAILBOX_SIZE_CHROMIUM] = { | |
| 377 0, 9, 8, 7, 6, 5, 4, 3, 2, 1, 9, 7, 5, 3, 1, 3}; | |
| 378 const uint32_t target = 3; | |
| 379 const auto source = | 380 const auto source = |
| 380 base::UnguessableToken::Deserialize(0xdeadbeef, 0xdeadf00d); | 381 base::UnguessableToken::Deserialize(0xdeadbeef, 0xdeadf00d); |
| 381 gpu::Mailbox mailbox; | 382 gfx::Size size(9, 8); |
| 382 mailbox.SetName(mailbox_name); | 383 auto bitmap = base::MakeUnique<SkBitmap>(); |
| 383 TextureMailbox texture_mailbox(mailbox, gpu::SyncToken(), target); | 384 bitmap->allocN32Pixels(size.width(), size.height()); |
| 385 base::RunLoop run_loop; |
| 386 auto callback = |
| 387 base::Bind(CopyOutputRequestCallback, run_loop.QuitClosure(), size); |
| 384 | 388 |
| 385 // Test with bitmap. | |
| 386 std::unique_ptr<CopyOutputRequest> input; | 389 std::unique_ptr<CopyOutputRequest> input; |
| 387 input = CopyOutputRequest::CreateBitmapRequest(callback); | 390 input = CopyOutputRequest::CreateBitmapRequest(callback); |
| 388 input->set_area(area); | 391 input->set_area(area); |
| 389 input->set_source(source); | 392 input->set_source(source); |
| 390 mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy(); | 393 mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy(); |
| 391 std::unique_ptr<CopyOutputRequest> output; | 394 std::unique_ptr<CopyOutputRequest> output; |
| 392 proxy->EchoCopyOutputRequest(std::move(input), &output); | 395 proxy->EchoCopyOutputRequest(std::move(input), &output); |
| 393 | 396 |
| 394 EXPECT_TRUE(output->force_bitmap_result()); | 397 EXPECT_TRUE(output->force_bitmap_result()); |
| 395 EXPECT_FALSE(output->has_texture_mailbox()); | 398 EXPECT_FALSE(output->has_texture_mailbox()); |
| 396 EXPECT_TRUE(output->has_area()); | 399 EXPECT_TRUE(output->has_area()); |
| 397 EXPECT_EQ(area, output->area()); | 400 EXPECT_EQ(area, output->area()); |
| 398 EXPECT_EQ(source, output->source()); | 401 EXPECT_EQ(source, output->source()); |
| 402 output->SendBitmapResult(std::move(bitmap)); |
| 403 // If CopyOutputRequestCallback is called, this ends. Otherwise, the test |
| 404 // will time out and fail. |
| 405 run_loop.Run(); |
| 406 } |
| 399 | 407 |
| 400 // Test with texture mailbox. | 408 TEST_F(StructTraitsTest, CopyOutputRequest_Texture) { |
| 401 input = CopyOutputRequest::CreateRequest(callback); | 409 const int8_t mailbox_name[GL_MAILBOX_SIZE_CHROMIUM] = { |
| 410 0, 9, 8, 7, 6, 5, 4, 3, 2, 1, 9, 7, 5, 3, 1, 3}; |
| 411 const uint32_t target = 3; |
| 412 gpu::Mailbox mailbox; |
| 413 mailbox.SetName(mailbox_name); |
| 414 TextureMailbox texture_mailbox(mailbox, gpu::SyncToken(), target); |
| 415 base::RunLoop run_loop; |
| 416 auto callback = base::Bind(CopyOutputRequestCallback, run_loop.QuitClosure(), |
| 417 gfx::Size()); |
| 418 |
| 419 auto input = CopyOutputRequest::CreateRequest(callback); |
| 402 input->SetTextureMailbox(texture_mailbox); | 420 input->SetTextureMailbox(texture_mailbox); |
| 403 | 421 |
| 404 std::unique_ptr<CopyOutputRequest> output2; | 422 mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy(); |
| 405 proxy->EchoCopyOutputRequest(std::move(input), &output2); | 423 std::unique_ptr<CopyOutputRequest> output; |
| 424 proxy->EchoCopyOutputRequest(std::move(input), &output); |
| 406 | 425 |
| 407 EXPECT_TRUE(output2->has_texture_mailbox()); | 426 EXPECT_TRUE(output->has_texture_mailbox()); |
| 408 EXPECT_FALSE(output2->has_area()); | 427 EXPECT_FALSE(output->has_area()); |
| 409 EXPECT_EQ(mailbox, output2->texture_mailbox().mailbox()); | 428 EXPECT_EQ(mailbox, output->texture_mailbox().mailbox()); |
| 410 EXPECT_EQ(target, output2->texture_mailbox().target()); | 429 EXPECT_EQ(target, output->texture_mailbox().target()); |
| 411 EXPECT_FALSE(output2->has_source()); | 430 EXPECT_FALSE(output->has_source()); |
| 431 output->SendEmptyResult(); |
| 432 // If CopyOutputRequestCallback is called, this ends. Otherwise, the test |
| 433 // will time out and fail. |
| 434 run_loop.Run(); |
| 412 } | 435 } |
| 413 | 436 |
| 414 TEST_F(StructTraitsTest, CopyOutputResult_Bitmap) { | 437 TEST_F(StructTraitsTest, CopyOutputResult_Bitmap) { |
| 415 auto bitmap = base::MakeUnique<SkBitmap>(); | 438 auto bitmap = base::MakeUnique<SkBitmap>(); |
| 416 bitmap->allocN32Pixels(7, 8); | 439 bitmap->allocN32Pixels(7, 8); |
| 417 bitmap->eraseARGB(123, 213, 77, 33); | 440 bitmap->eraseARGB(123, 213, 77, 33); |
| 418 auto in_bitmap = base::MakeUnique<SkBitmap>(); | 441 auto in_bitmap = base::MakeUnique<SkBitmap>(); |
| 419 bitmap->deepCopyTo(in_bitmap.get()); | 442 bitmap->deepCopyTo(in_bitmap.get()); |
| 420 auto input = CopyOutputResult::CreateBitmapResult(std::move(bitmap)); | 443 auto input = CopyOutputResult::CreateBitmapResult(std::move(bitmap)); |
| 421 auto size = input->size(); | 444 auto size = input->size(); |
| (...skipping 683 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1105 EXPECT_EQ(u_plane_resource_id, out_quad->u_plane_resource_id()); | 1128 EXPECT_EQ(u_plane_resource_id, out_quad->u_plane_resource_id()); |
| 1106 EXPECT_EQ(v_plane_resource_id, out_quad->v_plane_resource_id()); | 1129 EXPECT_EQ(v_plane_resource_id, out_quad->v_plane_resource_id()); |
| 1107 EXPECT_EQ(a_plane_resource_id, out_quad->a_plane_resource_id()); | 1130 EXPECT_EQ(a_plane_resource_id, out_quad->a_plane_resource_id()); |
| 1108 EXPECT_EQ(color_space, out_quad->color_space); | 1131 EXPECT_EQ(color_space, out_quad->color_space); |
| 1109 EXPECT_EQ(resource_offset, out_quad->resource_offset); | 1132 EXPECT_EQ(resource_offset, out_quad->resource_offset); |
| 1110 EXPECT_EQ(resource_multiplier, out_quad->resource_multiplier); | 1133 EXPECT_EQ(resource_multiplier, out_quad->resource_multiplier); |
| 1111 EXPECT_EQ(bits_per_channel, out_quad->bits_per_channel); | 1134 EXPECT_EQ(bits_per_channel, out_quad->bits_per_channel); |
| 1112 } | 1135 } |
| 1113 | 1136 |
| 1114 } // namespace cc | 1137 } // namespace cc |
| OLD | NEW |