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

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

Issue 2170603002: cc: Fix negative integer overflow in RenderPass serialization code. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add test. Created 4 years, 5 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/render_pass_struct_traits.cc ('k') | no next file » | 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/quads/debug_border_draw_quad.h" 8 #include "cc/quads/debug_border_draw_quad.h"
9 #include "cc/quads/render_pass.h" 9 #include "cc/quads/render_pass.h"
10 #include "cc/quads/render_pass_draw_quad.h" 10 #include "cc/quads/render_pass_draw_quad.h"
(...skipping 648 matching lines...) Expand 10 before | Expand all | Expand 10 after
659 out_color_quad->force_anti_aliasing_off); 659 out_color_quad->force_anti_aliasing_off);
660 660
661 const SurfaceDrawQuad* out_surface_quad = 661 const SurfaceDrawQuad* out_surface_quad =
662 SurfaceDrawQuad::MaterialCast(output->quad_list.ElementAt(2)); 662 SurfaceDrawQuad::MaterialCast(output->quad_list.ElementAt(2));
663 EXPECT_EQ(out_surface_quad->shared_quad_state, out_sqs2); 663 EXPECT_EQ(out_surface_quad->shared_quad_state, out_sqs2);
664 EXPECT_EQ(surface_quad->rect, out_surface_quad->rect); 664 EXPECT_EQ(surface_quad->rect, out_surface_quad->rect);
665 EXPECT_EQ(surface_quad->visible_rect, out_surface_quad->visible_rect); 665 EXPECT_EQ(surface_quad->visible_rect, out_surface_quad->visible_rect);
666 EXPECT_EQ(surface_quad->surface_id, out_surface_quad->surface_id); 666 EXPECT_EQ(surface_quad->surface_id, out_surface_quad->surface_id);
667 } 667 }
668 668
669 TEST_F(StructTraitsTest, RenderPassWithEmptySharedQuadStateList) {
670 const RenderPassId id(3, 2);
671 const gfx::Rect output_rect(45, 22, 120, 13);
672 const gfx::Transform transform_to_root =
673 gfx::Transform(1.0, 0.5, 0.5, -0.5, -1.0, 0.0);
674 const gfx::Rect damage_rect(56, 123, 19, 43);
675 const bool has_transparent_background = true;
676 std::unique_ptr<RenderPass> input = RenderPass::Create();
677 input->SetAll(id, output_rect, damage_rect, transform_to_root,
678 has_transparent_background);
679
680 // Unlike the previous test, don't add any quads to the list; we need to
681 // verify that the serialization code can deal with that.
682 std::unique_ptr<RenderPass> output;
683 mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy();
684 proxy->EchoRenderPass(input, &output);
685
686 EXPECT_EQ(input->quad_list.size(), output->quad_list.size());
687 EXPECT_EQ(input->shared_quad_state_list.size(),
688 output->shared_quad_state_list.size());
689 EXPECT_EQ(id, output->id);
690 EXPECT_EQ(output_rect, output->output_rect);
691 EXPECT_EQ(damage_rect, output->damage_rect);
692 EXPECT_EQ(transform_to_root, output->transform_to_root_target);
693 EXPECT_EQ(has_transparent_background, output->has_transparent_background);
694 }
695
669 TEST_F(StructTraitsTest, RenderPassId) { 696 TEST_F(StructTraitsTest, RenderPassId) {
670 const int layer_id = 1337; 697 const int layer_id = 1337;
671 const uint32_t index = 0xdeadbeef; 698 const uint32_t index = 0xdeadbeef;
672 RenderPassId input(layer_id, index); 699 RenderPassId input(layer_id, index);
673 mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy(); 700 mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy();
674 RenderPassId output; 701 RenderPassId output;
675 proxy->EchoRenderPassId(input, &output); 702 proxy->EchoRenderPassId(input, &output);
676 EXPECT_EQ(layer_id, output.layer_id); 703 EXPECT_EQ(layer_id, output.layer_id);
677 EXPECT_EQ(index, output.index); 704 EXPECT_EQ(index, output.index);
678 } 705 }
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
877 EXPECT_EQ(y_plane_resource_id, out_quad->y_plane_resource_id()); 904 EXPECT_EQ(y_plane_resource_id, out_quad->y_plane_resource_id());
878 EXPECT_EQ(u_plane_resource_id, out_quad->u_plane_resource_id()); 905 EXPECT_EQ(u_plane_resource_id, out_quad->u_plane_resource_id());
879 EXPECT_EQ(v_plane_resource_id, out_quad->v_plane_resource_id()); 906 EXPECT_EQ(v_plane_resource_id, out_quad->v_plane_resource_id());
880 EXPECT_EQ(a_plane_resource_id, out_quad->a_plane_resource_id()); 907 EXPECT_EQ(a_plane_resource_id, out_quad->a_plane_resource_id());
881 EXPECT_EQ(color_space, out_quad->color_space); 908 EXPECT_EQ(color_space, out_quad->color_space);
882 EXPECT_EQ(resource_offset, out_quad->resource_offset); 909 EXPECT_EQ(resource_offset, out_quad->resource_offset);
883 EXPECT_EQ(resource_multiplier, out_quad->resource_multiplier); 910 EXPECT_EQ(resource_multiplier, out_quad->resource_multiplier);
884 } 911 }
885 912
886 } // namespace cc 913 } // namespace cc
OLDNEW
« no previous file with comments | « cc/ipc/render_pass_struct_traits.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698