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

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

Issue 2670213006: Mojom structs for copy requests / results should map to unique_ptr (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
« no previous file with comments | « cc/ipc/copy_output_result_struct_traits.cc ('k') | cc/output/copy_output_request.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 callback.Run(std::move(c)); 45 callback.Run(std::move(c));
46 } 46 }
47 47
48 void EchoCompositorFrameMetadata( 48 void EchoCompositorFrameMetadata(
49 const CompositorFrameMetadata& c, 49 const CompositorFrameMetadata& c,
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 std::unique_ptr<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( 60 void EchoCopyOutputResult(
61 const CopyOutputResult& c, 61 std::unique_ptr<CopyOutputResult> c,
62 const EchoCopyOutputResultCallback& callback) override { 62 const EchoCopyOutputResultCallback& callback) override {
63 callback.Run(c); 63 callback.Run(std::move(c));
64 } 64 }
65 65
66 void EchoFilterOperation( 66 void EchoFilterOperation(
67 const FilterOperation& f, 67 const FilterOperation& f,
68 const EchoFilterOperationCallback& callback) override { 68 const EchoFilterOperationCallback& callback) override {
69 callback.Run(f); 69 callback.Run(f);
70 } 70 }
71 71
72 void EchoFilterOperations( 72 void EchoFilterOperations(
73 const FilterOperations& f, 73 const FilterOperations& f,
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
373 gpu::Mailbox mailbox; 373 gpu::Mailbox mailbox;
374 mailbox.SetName(mailbox_name); 374 mailbox.SetName(mailbox_name);
375 TextureMailbox texture_mailbox(mailbox, gpu::SyncToken(), target); 375 TextureMailbox texture_mailbox(mailbox, gpu::SyncToken(), target);
376 376
377 // Test with bitmap. 377 // Test with bitmap.
378 std::unique_ptr<CopyOutputRequest> input; 378 std::unique_ptr<CopyOutputRequest> input;
379 input = CopyOutputRequest::CreateBitmapRequest(callback); 379 input = CopyOutputRequest::CreateBitmapRequest(callback);
380 input->set_area(area); 380 input->set_area(area);
381 input->set_source(source); 381 input->set_source(source);
382 mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy(); 382 mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy();
383 CopyOutputRequest output; 383 std::unique_ptr<CopyOutputRequest> output;
384 proxy->EchoCopyOutputRequest(*input.get(), &output); 384 proxy->EchoCopyOutputRequest(std::move(input), &output);
385 385
386 EXPECT_TRUE(output.force_bitmap_result()); 386 EXPECT_TRUE(output->force_bitmap_result());
387 EXPECT_FALSE(output.has_texture_mailbox()); 387 EXPECT_FALSE(output->has_texture_mailbox());
388 EXPECT_TRUE(output.has_area()); 388 EXPECT_TRUE(output->has_area());
389 EXPECT_EQ(area, output.area()); 389 EXPECT_EQ(area, output->area());
390 EXPECT_EQ(source, output.source()); 390 EXPECT_EQ(source, output->source());
391 391
392 // Test with texture mailbox. 392 // Test with texture mailbox.
393 input = CopyOutputRequest::CreateRequest(callback); 393 input = CopyOutputRequest::CreateRequest(callback);
394 input->SetTextureMailbox(texture_mailbox); 394 input->SetTextureMailbox(texture_mailbox);
395 395
396 CopyOutputRequest output2; 396 std::unique_ptr<CopyOutputRequest> output2;
397 proxy->EchoCopyOutputRequest(*input.get(), &output2); 397 proxy->EchoCopyOutputRequest(std::move(input), &output2);
398 398
399 EXPECT_TRUE(output2.has_texture_mailbox()); 399 EXPECT_TRUE(output2->has_texture_mailbox());
400 EXPECT_FALSE(output2.has_area()); 400 EXPECT_FALSE(output2->has_area());
401 EXPECT_EQ(mailbox, output2.texture_mailbox().mailbox()); 401 EXPECT_EQ(mailbox, output2->texture_mailbox().mailbox());
402 EXPECT_EQ(target, output2.texture_mailbox().target()); 402 EXPECT_EQ(target, output2->texture_mailbox().target());
403 EXPECT_FALSE(output2.has_source()); 403 EXPECT_FALSE(output2->has_source());
404 } 404 }
405 405
406 TEST_F(StructTraitsTest, CopyOutputResult_Bitmap) { 406 TEST_F(StructTraitsTest, CopyOutputResult_Bitmap) {
407 auto bitmap = base::MakeUnique<SkBitmap>(); 407 auto bitmap = base::MakeUnique<SkBitmap>();
408 bitmap->allocN32Pixels(7, 8); 408 bitmap->allocN32Pixels(7, 8);
409 bitmap->eraseARGB(123, 213, 77, 33); 409 bitmap->eraseARGB(123, 213, 77, 33);
410 auto in_bitmap = base::MakeUnique<SkBitmap>();
411 bitmap->deepCopyTo(in_bitmap.get());
410 auto input = CopyOutputResult::CreateBitmapResult(std::move(bitmap)); 412 auto input = CopyOutputResult::CreateBitmapResult(std::move(bitmap));
413 auto size = input->size();
411 414
412 mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy(); 415 mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy();
413 CopyOutputResult output; 416 std::unique_ptr<CopyOutputResult> output;
414 proxy->EchoCopyOutputResult(*input, &output); 417 proxy->EchoCopyOutputResult(std::move(input), &output);
415 418
416 EXPECT_TRUE(output.HasBitmap()); 419 EXPECT_TRUE(output->HasBitmap());
417 EXPECT_FALSE(output.HasTexture()); 420 EXPECT_FALSE(output->HasTexture());
418 EXPECT_EQ(input->size(), output.size()); 421 EXPECT_EQ(size, output->size());
419 422
420 std::unique_ptr<SkBitmap> in_bitmap = input->TakeBitmap(); 423 std::unique_ptr<SkBitmap> out_bitmap = output->TakeBitmap();
421 std::unique_ptr<SkBitmap> out_bitmap = output.TakeBitmap();
422 EXPECT_EQ(in_bitmap->getSize(), out_bitmap->getSize()); 424 EXPECT_EQ(in_bitmap->getSize(), out_bitmap->getSize());
423 EXPECT_EQ(0, std::memcmp(in_bitmap->getPixels(), out_bitmap->getPixels(), 425 EXPECT_EQ(0, std::memcmp(in_bitmap->getPixels(), out_bitmap->getPixels(),
424 in_bitmap->getSize())); 426 in_bitmap->getSize()));
425 } 427 }
426 428
427 TEST_F(StructTraitsTest, CopyOutputResult_Texture) { 429 TEST_F(StructTraitsTest, CopyOutputResult_Texture) {
428 const gfx::Size size(1234, 5678); 430 const gfx::Size size(1234, 5678);
429 const int8_t mailbox_name[GL_MAILBOX_SIZE_CHROMIUM] = { 431 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}; 432 0, 9, 8, 7, 6, 5, 4, 3, 2, 1, 9, 7, 5, 3, 1, 3};
431 const uint32_t target = 3; 433 const uint32_t target = 3;
432 auto callback = 434 auto callback =
433 SingleReleaseCallback::Create(base::Bind(StubCopyOutputResultCallback)); 435 SingleReleaseCallback::Create(base::Bind(StubCopyOutputResultCallback));
434 gpu::Mailbox mailbox; 436 gpu::Mailbox mailbox;
435 mailbox.SetName(mailbox_name); 437 mailbox.SetName(mailbox_name);
436 TextureMailbox texture_mailbox(mailbox, gpu::SyncToken(), target); 438 TextureMailbox texture_mailbox(mailbox, gpu::SyncToken(), target);
437 439
438 auto input = CopyOutputResult::CreateTextureResult(size, texture_mailbox, 440 auto input = CopyOutputResult::CreateTextureResult(size, texture_mailbox,
439 std::move(callback)); 441 std::move(callback));
440 442
441 mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy(); 443 mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy();
442 CopyOutputResult output; 444 std::unique_ptr<CopyOutputResult> output;
443 proxy->EchoCopyOutputResult(*input, &output); 445 proxy->EchoCopyOutputResult(std::move(input), &output);
444 446
445 EXPECT_FALSE(output.HasBitmap()); 447 EXPECT_FALSE(output->HasBitmap());
446 EXPECT_TRUE(output.HasTexture()); 448 EXPECT_TRUE(output->HasTexture());
447 EXPECT_EQ(size, output.size()); 449 EXPECT_EQ(size, output->size());
448 450
449 TextureMailbox out_mailbox; 451 TextureMailbox out_mailbox;
450 std::unique_ptr<SingleReleaseCallback> out_callback; 452 std::unique_ptr<SingleReleaseCallback> out_callback;
451 output.TakeTexture(&out_mailbox, &out_callback); 453 output->TakeTexture(&out_mailbox, &out_callback);
452 EXPECT_EQ(mailbox, out_mailbox.mailbox()); 454 EXPECT_EQ(mailbox, out_mailbox.mailbox());
453 } 455 }
454 456
455 TEST_F(StructTraitsTest, FilterOperation) { 457 TEST_F(StructTraitsTest, FilterOperation) {
456 const FilterOperation inputs[] = { 458 const FilterOperation inputs[] = {
457 FilterOperation::CreateBlurFilter(20), 459 FilterOperation::CreateBlurFilter(20),
458 FilterOperation::CreateDropShadowFilter(gfx::Point(4, 4), 4.0f, 460 FilterOperation::CreateDropShadowFilter(gfx::Point(4, 4), 4.0f,
459 SkColorSetARGB(255, 40, 0, 0)), 461 SkColorSetARGB(255, 40, 0, 0)),
460 FilterOperation::CreateReferenceFilter(SkDropShadowImageFilter::Make( 462 FilterOperation::CreateReferenceFilter(SkDropShadowImageFilter::Make(
461 SkIntToScalar(3), SkIntToScalar(8), SkIntToScalar(4), 463 SkIntToScalar(3), SkIntToScalar(8), SkIntToScalar(4),
(...skipping 618 matching lines...) Expand 10 before | Expand all | Expand 10 after
1080 EXPECT_EQ(u_plane_resource_id, out_quad->u_plane_resource_id()); 1082 EXPECT_EQ(u_plane_resource_id, out_quad->u_plane_resource_id());
1081 EXPECT_EQ(v_plane_resource_id, out_quad->v_plane_resource_id()); 1083 EXPECT_EQ(v_plane_resource_id, out_quad->v_plane_resource_id());
1082 EXPECT_EQ(a_plane_resource_id, out_quad->a_plane_resource_id()); 1084 EXPECT_EQ(a_plane_resource_id, out_quad->a_plane_resource_id());
1083 EXPECT_EQ(color_space, out_quad->color_space); 1085 EXPECT_EQ(color_space, out_quad->color_space);
1084 EXPECT_EQ(resource_offset, out_quad->resource_offset); 1086 EXPECT_EQ(resource_offset, out_quad->resource_offset);
1085 EXPECT_EQ(resource_multiplier, out_quad->resource_multiplier); 1087 EXPECT_EQ(resource_multiplier, out_quad->resource_multiplier);
1086 EXPECT_EQ(bits_per_channel, out_quad->bits_per_channel); 1088 EXPECT_EQ(bits_per_channel, out_quad->bits_per_channel);
1087 } 1089 }
1088 1090
1089 } // namespace cc 1091 } // namespace cc
OLDNEW
« no previous file with comments | « cc/ipc/copy_output_result_struct_traits.cc ('k') | cc/output/copy_output_request.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698