Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(342)

Side by Side Diff: cc/ipc/struct_traits_unittest.cc

Issue 2659703002: Implemented StructTraits for cc::CopyOutputResult (Closed)
Patch Set: c Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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) {
407 const gfx::Size size(1234, 5678);
408 const int8_t mailbox_name[GL_MAILBOX_SIZE_CHROMIUM] = {
409 0, 9, 8, 7, 6, 5, 4, 3, 2, 1, 9, 7, 5, 3, 1, 3};
410 const uint32_t target = 3;
411 auto callback =
412 SingleReleaseCallback::Create(base::Bind(StubCopyOutputResultCallback));
413 gpu::Mailbox mailbox;
414 mailbox.SetName(mailbox_name);
415 TextureMailbox texture_mailbox(mailbox, gpu::SyncToken(), target);
416 auto bitmap = base::MakeUnique<SkBitmap>();
417 bitmap->allocN32Pixels(7, 8);
418 bitmap->eraseARGB(123, 213, 77, 33);
419
420 // Bitmap test
421 auto in_bitmap = base::MakeUnique<SkBitmap>(*bitmap);
422 auto input = CopyOutputResult::CreateBitmapResult(std::move(in_bitmap));
423
424 mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy();
425 CopyOutputResult output;
426 proxy->EchoCopyOutputResult(*input, &output);
427
428 EXPECT_TRUE(output.HasBitmap());
429 EXPECT_FALSE(output.HasTexture());
430 EXPECT_EQ(input->size(), output.size());
431 std::unique_ptr<SkBitmap> out_bitmap = output.TakeBitmap();
432 EXPECT_EQ(bitmap->getSize(), out_bitmap->getSize());
433 EXPECT_EQ(0, std::memcmp(bitmap->getPixels(), out_bitmap->getPixels(),
434 bitmap->getSize()));
435
436 // Texture test
vmpstr 2017/01/31 21:32:19 nit: Can you create a different TEST_F for this (e
437 input = CopyOutputResult::CreateTextureResult(size, texture_mailbox,
438 std::move(callback));
439
440 CopyOutputResult output2;
441 proxy->EchoCopyOutputResult(*input, &output2);
442
443 EXPECT_FALSE(output2.HasBitmap());
444 EXPECT_TRUE(output2.HasTexture());
445 EXPECT_EQ(size, output2.size());
446 TextureMailbox out_mailbox;
447 std::unique_ptr<SingleReleaseCallback> out_callback;
448 output2.TakeTexture(&out_mailbox, &out_callback);
449 EXPECT_EQ(mailbox, out_mailbox.mailbox());
450 }
451
398 TEST_F(StructTraitsTest, FilterOperation) { 452 TEST_F(StructTraitsTest, FilterOperation) {
399 const FilterOperation inputs[] = { 453 const FilterOperation inputs[] = {
400 FilterOperation::CreateBlurFilter(20), 454 FilterOperation::CreateBlurFilter(20),
401 FilterOperation::CreateDropShadowFilter(gfx::Point(4, 4), 4.0f, 455 FilterOperation::CreateDropShadowFilter(gfx::Point(4, 4), 4.0f,
402 SkColorSetARGB(255, 40, 0, 0)), 456 SkColorSetARGB(255, 40, 0, 0)),
403 FilterOperation::CreateReferenceFilter(SkDropShadowImageFilter::Make( 457 FilterOperation::CreateReferenceFilter(SkDropShadowImageFilter::Make(
404 SkIntToScalar(3), SkIntToScalar(8), SkIntToScalar(4), 458 SkIntToScalar(3), SkIntToScalar(8), SkIntToScalar(4),
405 SkIntToScalar(9), SK_ColorBLACK, 459 SkIntToScalar(9), SK_ColorBLACK,
406 SkDropShadowImageFilter::kDrawShadowAndForeground_ShadowMode, 460 SkDropShadowImageFilter::kDrawShadowAndForeground_ShadowMode,
407 nullptr))}; 461 nullptr))};
(...skipping 615 matching lines...) Expand 10 before | Expand all | Expand 10 after
1023 EXPECT_EQ(u_plane_resource_id, out_quad->u_plane_resource_id()); 1077 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()); 1078 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()); 1079 EXPECT_EQ(a_plane_resource_id, out_quad->a_plane_resource_id());
1026 EXPECT_EQ(color_space, out_quad->color_space); 1080 EXPECT_EQ(color_space, out_quad->color_space);
1027 EXPECT_EQ(resource_offset, out_quad->resource_offset); 1081 EXPECT_EQ(resource_offset, out_quad->resource_offset);
1028 EXPECT_EQ(resource_multiplier, out_quad->resource_multiplier); 1082 EXPECT_EQ(resource_multiplier, out_quad->resource_multiplier);
1029 EXPECT_EQ(bits_per_channel, out_quad->bits_per_channel); 1083 EXPECT_EQ(bits_per_channel, out_quad->bits_per_channel);
1030 } 1084 }
1031 1085
1032 } // namespace cc 1086 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698