| 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 "cc/input/selection.h" | 6 #include "cc/input/selection.h" |
| 7 #include "cc/ipc/traits_test_service.mojom.h" | 7 #include "cc/ipc/traits_test_service.mojom.h" |
| 8 #include "cc/output/copy_output_result.h" | 8 #include "cc/output/copy_output_result.h" |
| 9 #include "cc/quads/debug_border_draw_quad.h" | 9 #include "cc/quads/debug_border_draw_quad.h" |
| 10 #include "cc/quads/render_pass.h" | 10 #include "cc/quads/render_pass.h" |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 50 const EchoCompositorFrameMetadataCallback& callback) override { | 50 const EchoCompositorFrameMetadataCallback& callback) override { |
| 51 callback.Run(c); | 51 callback.Run(c); |
| 52 } | 52 } |
| 53 | 53 |
| 54 void EchoCopyOutputRequest( | 54 void EchoCopyOutputRequest( |
| 55 const CopyOutputRequest& c, | 55 const CopyOutputRequest& c, |
| 56 const EchoCopyOutputRequestCallback& callback) override { | 56 const EchoCopyOutputRequestCallback& callback) override { |
| 57 callback.Run(std::move(c)); | 57 callback.Run(std::move(c)); |
| 58 } | 58 } |
| 59 | 59 |
| 60 void EchoCopyOutputResult( |
| 61 const CopyOutputResult& c, |
| 62 const EchoCopyOutputResultCallback& callback) override { |
| 63 callback.Run(c); |
| 64 } |
| 65 |
| 60 void EchoFilterOperation( | 66 void EchoFilterOperation( |
| 61 const FilterOperation& f, | 67 const FilterOperation& f, |
| 62 const EchoFilterOperationCallback& callback) override { | 68 const EchoFilterOperationCallback& callback) override { |
| 63 callback.Run(f); | 69 callback.Run(f); |
| 64 } | 70 } |
| 65 | 71 |
| 66 void EchoFilterOperations( | 72 void EchoFilterOperations( |
| 67 const FilterOperations& f, | 73 const FilterOperations& f, |
| 68 const EchoFilterOperationsCallback& callback) override { | 74 const EchoFilterOperationsCallback& callback) override { |
| 69 callback.Run(f); | 75 callback.Run(f); |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 118 const EchoTransferableResourceCallback& callback) override { | 124 const EchoTransferableResourceCallback& callback) override { |
| 119 callback.Run(t); | 125 callback.Run(t); |
| 120 } | 126 } |
| 121 | 127 |
| 122 mojo::BindingSet<TraitsTestService> traits_test_bindings_; | 128 mojo::BindingSet<TraitsTestService> traits_test_bindings_; |
| 123 DISALLOW_COPY_AND_ASSIGN(StructTraitsTest); | 129 DISALLOW_COPY_AND_ASSIGN(StructTraitsTest); |
| 124 }; | 130 }; |
| 125 | 131 |
| 126 void StubCopyOutputRequestCallback(std::unique_ptr<CopyOutputResult> result) {} | 132 void StubCopyOutputRequestCallback(std::unique_ptr<CopyOutputResult> result) {} |
| 127 | 133 |
| 134 void StubCopyOutputResultCallback(const gpu::SyncToken& sync_token, |
| 135 bool is_lost) {} |
| 136 |
| 128 } // namespace | 137 } // namespace |
| 129 | 138 |
| 130 TEST_F(StructTraitsTest, BeginFrameArgs) { | 139 TEST_F(StructTraitsTest, BeginFrameArgs) { |
| 131 const base::TimeTicks frame_time = base::TimeTicks::Now(); | 140 const base::TimeTicks frame_time = base::TimeTicks::Now(); |
| 132 const base::TimeTicks deadline = base::TimeTicks::Now(); | 141 const base::TimeTicks deadline = base::TimeTicks::Now(); |
| 133 const base::TimeDelta interval = base::TimeDelta::FromMilliseconds(1337); | 142 const base::TimeDelta interval = base::TimeDelta::FromMilliseconds(1337); |
| 134 const BeginFrameArgs::BeginFrameArgsType type = BeginFrameArgs::NORMAL; | 143 const BeginFrameArgs::BeginFrameArgsType type = BeginFrameArgs::NORMAL; |
| 135 const bool on_critical_path = true; | 144 const bool on_critical_path = true; |
| 136 BeginFrameArgs input; | 145 BeginFrameArgs input; |
| 137 input.frame_time = frame_time; | 146 input.frame_time = frame_time; |
| (...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 363 base::UnguessableToken::Deserialize(0xdeadbeef, 0xdeadf00d); | 372 base::UnguessableToken::Deserialize(0xdeadbeef, 0xdeadf00d); |
| 364 gpu::Mailbox mailbox; | 373 gpu::Mailbox mailbox; |
| 365 mailbox.SetName(mailbox_name); | 374 mailbox.SetName(mailbox_name); |
| 366 TextureMailbox texture_mailbox(mailbox, gpu::SyncToken(), target); | 375 TextureMailbox texture_mailbox(mailbox, gpu::SyncToken(), target); |
| 367 | 376 |
| 368 // Test with bitmap. | 377 // Test with bitmap. |
| 369 std::unique_ptr<CopyOutputRequest> input; | 378 std::unique_ptr<CopyOutputRequest> input; |
| 370 input = CopyOutputRequest::CreateBitmapRequest(callback); | 379 input = CopyOutputRequest::CreateBitmapRequest(callback); |
| 371 input->set_area(area); | 380 input->set_area(area); |
| 372 input->set_source(source); | 381 input->set_source(source); |
| 373 | |
| 374 mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy(); | 382 mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy(); |
| 375 CopyOutputRequest output; | 383 CopyOutputRequest output; |
| 376 proxy->EchoCopyOutputRequest(*input.get(), &output); | 384 proxy->EchoCopyOutputRequest(*input.get(), &output); |
| 377 | 385 |
| 378 EXPECT_TRUE(output.force_bitmap_result()); | 386 EXPECT_TRUE(output.force_bitmap_result()); |
| 379 EXPECT_FALSE(output.has_texture_mailbox()); | 387 EXPECT_FALSE(output.has_texture_mailbox()); |
| 380 EXPECT_TRUE(output.has_area()); | 388 EXPECT_TRUE(output.has_area()); |
| 381 EXPECT_EQ(area, output.area()); | 389 EXPECT_EQ(area, output.area()); |
| 382 EXPECT_EQ(source, output.source()); | 390 EXPECT_EQ(source, output.source()); |
| 383 | 391 |
| 384 // Test with texture mailbox. | 392 // Test with texture mailbox. |
| 385 input = CopyOutputRequest::CreateRequest(callback); | 393 input = CopyOutputRequest::CreateRequest(callback); |
| 386 input->SetTextureMailbox(texture_mailbox); | 394 input->SetTextureMailbox(texture_mailbox); |
| 387 | 395 |
| 388 CopyOutputRequest output2; | 396 CopyOutputRequest output2; |
| 389 proxy->EchoCopyOutputRequest(*input.get(), &output2); | 397 proxy->EchoCopyOutputRequest(*input.get(), &output2); |
| 390 | 398 |
| 391 EXPECT_TRUE(output2.has_texture_mailbox()); | 399 EXPECT_TRUE(output2.has_texture_mailbox()); |
| 392 EXPECT_FALSE(output2.has_area()); | 400 EXPECT_FALSE(output2.has_area()); |
| 393 EXPECT_EQ(mailbox, output2.texture_mailbox().mailbox()); | 401 EXPECT_EQ(mailbox, output2.texture_mailbox().mailbox()); |
| 394 EXPECT_EQ(target, output2.texture_mailbox().target()); | 402 EXPECT_EQ(target, output2.texture_mailbox().target()); |
| 395 EXPECT_FALSE(output2.has_source()); | 403 EXPECT_FALSE(output2.has_source()); |
| 396 } | 404 } |
| 397 | 405 |
| 406 TEST_F(StructTraitsTest, CopyOutputResult_Bitmap) { |
| 407 auto bitmap = base::MakeUnique<SkBitmap>(); |
| 408 bitmap->allocN32Pixels(7, 8); |
| 409 bitmap->eraseARGB(123, 213, 77, 33); |
| 410 auto input = CopyOutputResult::CreateBitmapResult(std::move(bitmap)); |
| 411 |
| 412 mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy(); |
| 413 CopyOutputResult output; |
| 414 proxy->EchoCopyOutputResult(*input, &output); |
| 415 |
| 416 EXPECT_TRUE(output.HasBitmap()); |
| 417 EXPECT_FALSE(output.HasTexture()); |
| 418 EXPECT_EQ(input->size(), output.size()); |
| 419 |
| 420 std::unique_ptr<SkBitmap> in_bitmap = input->TakeBitmap(); |
| 421 std::unique_ptr<SkBitmap> out_bitmap = output.TakeBitmap(); |
| 422 EXPECT_EQ(in_bitmap->getSize(), out_bitmap->getSize()); |
| 423 EXPECT_EQ(0, std::memcmp(in_bitmap->getPixels(), out_bitmap->getPixels(), |
| 424 in_bitmap->getSize())); |
| 425 } |
| 426 |
| 427 TEST_F(StructTraitsTest, CopyOutputResult_Texture) { |
| 428 const gfx::Size size(1234, 5678); |
| 429 const int8_t mailbox_name[GL_MAILBOX_SIZE_CHROMIUM] = { |
| 430 0, 9, 8, 7, 6, 5, 4, 3, 2, 1, 9, 7, 5, 3, 1, 3}; |
| 431 const uint32_t target = 3; |
| 432 auto callback = |
| 433 SingleReleaseCallback::Create(base::Bind(StubCopyOutputResultCallback)); |
| 434 gpu::Mailbox mailbox; |
| 435 mailbox.SetName(mailbox_name); |
| 436 TextureMailbox texture_mailbox(mailbox, gpu::SyncToken(), target); |
| 437 |
| 438 auto input = CopyOutputResult::CreateTextureResult(size, texture_mailbox, |
| 439 std::move(callback)); |
| 440 |
| 441 mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy(); |
| 442 CopyOutputResult output; |
| 443 proxy->EchoCopyOutputResult(*input, &output); |
| 444 |
| 445 EXPECT_FALSE(output.HasBitmap()); |
| 446 EXPECT_TRUE(output.HasTexture()); |
| 447 EXPECT_EQ(size, output.size()); |
| 448 |
| 449 TextureMailbox out_mailbox; |
| 450 std::unique_ptr<SingleReleaseCallback> out_callback; |
| 451 output.TakeTexture(&out_mailbox, &out_callback); |
| 452 EXPECT_EQ(mailbox, out_mailbox.mailbox()); |
| 453 } |
| 454 |
| 398 TEST_F(StructTraitsTest, FilterOperation) { | 455 TEST_F(StructTraitsTest, FilterOperation) { |
| 399 const FilterOperation inputs[] = { | 456 const FilterOperation inputs[] = { |
| 400 FilterOperation::CreateBlurFilter(20), | 457 FilterOperation::CreateBlurFilter(20), |
| 401 FilterOperation::CreateDropShadowFilter(gfx::Point(4, 4), 4.0f, | 458 FilterOperation::CreateDropShadowFilter(gfx::Point(4, 4), 4.0f, |
| 402 SkColorSetARGB(255, 40, 0, 0)), | 459 SkColorSetARGB(255, 40, 0, 0)), |
| 403 FilterOperation::CreateReferenceFilter(SkDropShadowImageFilter::Make( | 460 FilterOperation::CreateReferenceFilter(SkDropShadowImageFilter::Make( |
| 404 SkIntToScalar(3), SkIntToScalar(8), SkIntToScalar(4), | 461 SkIntToScalar(3), SkIntToScalar(8), SkIntToScalar(4), |
| 405 SkIntToScalar(9), SK_ColorBLACK, | 462 SkIntToScalar(9), SK_ColorBLACK, |
| 406 SkDropShadowImageFilter::kDrawShadowAndForeground_ShadowMode, | 463 SkDropShadowImageFilter::kDrawShadowAndForeground_ShadowMode, |
| 407 nullptr))}; | 464 nullptr))}; |
| (...skipping 615 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1023 EXPECT_EQ(u_plane_resource_id, out_quad->u_plane_resource_id()); | 1080 EXPECT_EQ(u_plane_resource_id, out_quad->u_plane_resource_id()); |
| 1024 EXPECT_EQ(v_plane_resource_id, out_quad->v_plane_resource_id()); | 1081 EXPECT_EQ(v_plane_resource_id, out_quad->v_plane_resource_id()); |
| 1025 EXPECT_EQ(a_plane_resource_id, out_quad->a_plane_resource_id()); | 1082 EXPECT_EQ(a_plane_resource_id, out_quad->a_plane_resource_id()); |
| 1026 EXPECT_EQ(color_space, out_quad->color_space); | 1083 EXPECT_EQ(color_space, out_quad->color_space); |
| 1027 EXPECT_EQ(resource_offset, out_quad->resource_offset); | 1084 EXPECT_EQ(resource_offset, out_quad->resource_offset); |
| 1028 EXPECT_EQ(resource_multiplier, out_quad->resource_multiplier); | 1085 EXPECT_EQ(resource_multiplier, out_quad->resource_multiplier); |
| 1029 EXPECT_EQ(bits_per_channel, out_quad->bits_per_channel); | 1086 EXPECT_EQ(bits_per_channel, out_quad->bits_per_channel); |
| 1030 } | 1087 } |
| 1031 | 1088 |
| 1032 } // namespace cc | 1089 } // namespace cc |
| OLD | NEW |