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/output/overlay_unittest.cc

Issue 1110813002: Fix assert in GetOverlayRect when transforming video with Ozone overlay (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Changes display_rect to float Created 5 years, 7 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "cc/base/scoped_ptr_vector.h" 5 #include "cc/base/scoped_ptr_vector.h"
6 #include "cc/output/compositor_frame_metadata.h" 6 #include "cc/output/compositor_frame_metadata.h"
7 #include "cc/output/gl_renderer.h" 7 #include "cc/output/gl_renderer.h"
8 #include "cc/output/output_surface.h" 8 #include "cc/output/output_surface.h"
9 #include "cc/output/output_surface_client.h" 9 #include "cc/output/output_surface_client.h"
10 #include "cc/output/overlay_candidate_validator.h" 10 #include "cc/output/overlay_candidate_validator.h"
11 #include "cc/output/overlay_processor.h" 11 #include "cc/output/overlay_processor.h"
12 #include "cc/output/overlay_strategy_single_on_top.h" 12 #include "cc/output/overlay_strategy_single_on_top.h"
13 #include "cc/output/overlay_strategy_underlay.h" 13 #include "cc/output/overlay_strategy_underlay.h"
14 #include "cc/quads/checkerboard_draw_quad.h" 14 #include "cc/quads/checkerboard_draw_quad.h"
15 #include "cc/quads/render_pass.h" 15 #include "cc/quads/render_pass.h"
16 #include "cc/quads/stream_video_draw_quad.h" 16 #include "cc/quads/stream_video_draw_quad.h"
17 #include "cc/quads/texture_draw_quad.h" 17 #include "cc/quads/texture_draw_quad.h"
18 #include "cc/resources/resource_provider.h" 18 #include "cc/resources/resource_provider.h"
19 #include "cc/resources/texture_mailbox.h" 19 #include "cc/resources/texture_mailbox.h"
20 #include "cc/test/fake_output_surface_client.h" 20 #include "cc/test/fake_output_surface_client.h"
21 #include "cc/test/geometry_test_utils.h" 21 #include "cc/test/geometry_test_utils.h"
22 #include "cc/test/test_context_provider.h" 22 #include "cc/test/test_context_provider.h"
23 #include "cc/test/test_shared_bitmap_manager.h" 23 #include "cc/test/test_shared_bitmap_manager.h"
24 #include "testing/gmock/include/gmock/gmock.h" 24 #include "testing/gmock/include/gmock/gmock.h"
25 #include "testing/gtest/include/gtest/gtest.h" 25 #include "testing/gtest/include/gtest/gtest.h"
26 #include "ui/gfx/geometry/rect_conversions.h"
26 27
27 using testing::_; 28 using testing::_;
28 using testing::Mock; 29 using testing::Mock;
29 30
30 namespace cc { 31 namespace cc {
31 namespace { 32 namespace {
32 33
33 const gfx::Rect kOverlayRect(0, 0, 128, 128); 34 const gfx::Rect kOverlayRect(0, 0, 128, 128);
34 const gfx::Rect kOverlayTopLeftRect(0, 0, 64, 64); 35 const gfx::Rect kOverlayTopLeftRect(0, 0, 64, 64);
35 const gfx::Rect kOverlayBottomRightRect(64, 64, 64, 64); 36 const gfx::Rect kOverlayBottomRightRect(64, 64, 64, 64);
(...skipping 18 matching lines...) Expand all
54 class SingleOverlayValidator : public OverlayCandidateValidator { 55 class SingleOverlayValidator : public OverlayCandidateValidator {
55 public: 56 public:
56 void CheckOverlaySupport(OverlayCandidateList* surfaces) override; 57 void CheckOverlaySupport(OverlayCandidateList* surfaces) override;
57 }; 58 };
58 59
59 void SingleOverlayValidator::CheckOverlaySupport( 60 void SingleOverlayValidator::CheckOverlaySupport(
60 OverlayCandidateList* surfaces) { 61 OverlayCandidateList* surfaces) {
61 ASSERT_EQ(2U, surfaces->size()); 62 ASSERT_EQ(2U, surfaces->size());
62 63
63 OverlayCandidate& candidate = surfaces->back(); 64 OverlayCandidate& candidate = surfaces->back();
65
66 // Reject non-integer rectangles
67 if (!gfx::IsNearestRectWithinDistance(candidate.display_rect, 0.01f))
achaulk 2015/04/29 21:37:03 I'm not really sure this is useful - the test code
halliwell 2015/04/29 21:42:55 Agreed, will delete this test now.
68 return;
69
64 if (candidate.display_rect.width() == 64) 70 if (candidate.display_rect.width() == 64)
65 EXPECT_EQ(kOverlayBottomRightRect, candidate.display_rect); 71 EXPECT_EQ(kOverlayBottomRightRect, candidate.display_rect);
66 else 72 else
67 EXPECT_EQ(kOverlayRect, candidate.display_rect); 73 EXPECT_EQ(kOverlayRect, candidate.display_rect);
68 EXPECT_EQ(BoundingRect(kUVTopLeft, kUVBottomRight).ToString(), 74 EXPECT_EQ(BoundingRect(kUVTopLeft, kUVBottomRight).ToString(),
69 candidate.uv_rect.ToString()); 75 candidate.uv_rect.ToString());
70 candidate.overlay_handled = true; 76 candidate.overlay_handled = true;
71 } 77 }
72 78
73 template <typename OverlayStrategyType> 79 template <typename OverlayStrategyType>
(...skipping 508 matching lines...) Expand 10 before | Expand all | Expand 10 after
582 1.0f); 588 1.0f);
583 589
584 RenderPassList pass_list; 590 RenderPassList pass_list;
585 pass_list.push_back(pass.Pass()); 591 pass_list.push_back(pass.Pass());
586 OverlayCandidateList candidate_list; 592 OverlayCandidateList candidate_list;
587 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); 593 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
588 ASSERT_EQ(1U, pass_list.size()); 594 ASSERT_EQ(1U, pass_list.size());
589 EXPECT_EQ(2U, candidate_list.size()); 595 EXPECT_EQ(2U, candidate_list.size());
590 } 596 }
591 597
598 TEST_F(SingleOverlayOnTopTest, CanRejectNonIntegerTranslation) {
599 gfx::Rect rect = kOverlayRect;
600 rect.Offset(-1, -1);
601 rect.Inset(0, 0, -1, -1);
602 scoped_ptr<RenderPass> pass = CreateRenderPass();
603 CreateCandidateQuadAt(resource_provider_.get(),
604 pass->shared_quad_state_list.back(), pass.get(), rect);
605 pass->shared_quad_state_list.back()->content_to_target_transform.Translate(
606 0.5f, 0.5f);
607
608 RenderPassList pass_list;
609 pass_list.push_back(pass.Pass());
610 OverlayCandidateList candidate_list;
611 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
612 ASSERT_EQ(1U, pass_list.size());
613 EXPECT_EQ(0U, candidate_list.size());
614 }
615
592 TEST_F(SingleOverlayOnTopTest, AllowNotTopIfNotOccluded) { 616 TEST_F(SingleOverlayOnTopTest, AllowNotTopIfNotOccluded) {
593 scoped_ptr<RenderPass> pass = CreateRenderPass(); 617 scoped_ptr<RenderPass> pass = CreateRenderPass();
594 CreateCheckeredQuadAt(resource_provider_.get(), 618 CreateCheckeredQuadAt(resource_provider_.get(),
595 pass->shared_quad_state_list.back(), 619 pass->shared_quad_state_list.back(),
596 pass.get(), 620 pass.get(),
597 kOverlayTopLeftRect); 621 kOverlayTopLeftRect);
598 CreateCandidateQuadAt(resource_provider_.get(), 622 CreateCandidateQuadAt(resource_provider_.get(),
599 pass->shared_quad_state_list.back(), 623 pass->shared_quad_state_list.back(),
600 pass.get(), 624 pass.get(),
601 kOverlayBottomRightRect); 625 kOverlayBottomRightRect);
(...skipping 501 matching lines...) Expand 10 before | Expand all | Expand 10 after
1103 renderer_->BeginDrawingFrame(&frame3); 1127 renderer_->BeginDrawingFrame(&frame3);
1104 renderer_->FinishDrawingFrame(&frame3); 1128 renderer_->FinishDrawingFrame(&frame3);
1105 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); 1129 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
1106 SwapBuffers(); 1130 SwapBuffers();
1107 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); 1131 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1));
1108 Mock::VerifyAndClearExpectations(&scheduler_); 1132 Mock::VerifyAndClearExpectations(&scheduler_);
1109 } 1133 }
1110 1134
1111 } // namespace 1135 } // namespace
1112 } // namespace cc 1136 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698