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

Side by Side Diff: views/view_unittest.cc

Issue 8368013: Improve Aura overdraw by changing hole calculation (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Resetting git state Created 9 years, 1 month 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 | Annotate | Revision Log
« no previous file with comments | « ui/gfx/compositor/layer_unittest.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 (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 <map> 5 #include <map>
6 6
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/rand_util.h" 8 #include "base/rand_util.h"
9 #include "base/string_util.h" 9 #include "base/string_util.h"
10 #include "base/utf_string_conversions.h" 10 #include "base/utf_string_conversions.h"
(...skipping 2815 matching lines...) Expand 10 before | Expand all | Expand 10 after
2826 2826
2827 View* parent_view = new View; 2827 View* parent_view = new View;
2828 content_view->AddChildView(parent_view); 2828 content_view->AddChildView(parent_view);
2829 parent_view->SetPaintToLayer(true); 2829 parent_view->SetPaintToLayer(true);
2830 parent_view->SetBounds(0, 0, 400, 400); 2830 parent_view->SetBounds(0, 0, 400, 400);
2831 2831
2832 View* child_view = new View; 2832 View* child_view = new View;
2833 child_view->SetBounds(50, 50, 100, 100); 2833 child_view->SetBounds(50, 50, 100, 100);
2834 parent_view->AddChildView(child_view); 2834 parent_view->AddChildView(child_view);
2835 2835
2836 widget()->GetCompositor()->Draw(false);
2837
2836 ASSERT_TRUE(child_view->layer() == NULL); 2838 ASSERT_TRUE(child_view->layer() == NULL);
2837 child_view->SetPaintToLayer(true); 2839 child_view->SetPaintToLayer(true);
2838 child_view->SetFillsBoundsOpaquely(true); 2840 child_view->SetFillsBoundsOpaquely(true);
2841 widget()->GetCompositor()->Draw(false);
2839 ASSERT_TRUE(child_view->layer()); 2842 ASSERT_TRUE(child_view->layer());
2840 EXPECT_EQ( 2843 EXPECT_EQ(
2841 gfx::Rect(50, 50, 100, 100), parent_view->layer()->hole_rect()); 2844 gfx::Rect(50, 50, 100, 100), parent_view->layer()->hole_rect());
2842 2845
2843 child_view->SetFillsBoundsOpaquely(false); 2846 child_view->SetFillsBoundsOpaquely(false);
2847 widget()->GetCompositor()->Draw(false);
2844 EXPECT_TRUE(parent_view->layer()->hole_rect().IsEmpty()); 2848 EXPECT_TRUE(parent_view->layer()->hole_rect().IsEmpty());
2845 } 2849 }
2846 2850
2847 // Test that a hole in a layer always corresponds to the bounds of opaque 2851 // Test that a hole in a layer always corresponds to the bounds of opaque
2848 // layers. 2852 // layers.
2849 TEST_F(ViewLayerTest, MultipleOpaqueLayers) { 2853 TEST_F(ViewLayerTest, MultipleOpaqueLayers) {
2850 View* content_view = new View; 2854 View* content_view = new View;
2851 widget()->SetContentsView(content_view); 2855 widget()->SetContentsView(content_view);
2852 2856
2853 View* parent_view = new View; 2857 View* parent_view = new View;
2854 parent_view->SetPaintToLayer(true); 2858 parent_view->SetPaintToLayer(true);
2855 parent_view->SetBounds(0, 0, 400, 400); 2859 parent_view->SetBounds(0, 0, 400, 400);
2856 content_view->AddChildView(parent_view); 2860 content_view->AddChildView(parent_view);
2857 2861
2858 View* child_view1 = new View; 2862 View* child_view1 = new View;
2859 child_view1->SetPaintToLayer(true); 2863 child_view1->SetPaintToLayer(true);
2860 child_view1->SetFillsBoundsOpaquely(true); 2864 child_view1->SetFillsBoundsOpaquely(true);
2861 child_view1->SetBounds(50, 50, 100, 100); 2865 child_view1->SetBounds(50, 50, 100, 100);
2862 parent_view->AddChildView(child_view1); 2866 parent_view->AddChildView(child_view1);
2863 2867
2864 View* child_view2 = new View; 2868 View* child_view2 = new View;
2865 child_view2->SetPaintToLayer(true); 2869 child_view2->SetPaintToLayer(true);
2866 child_view2->SetFillsBoundsOpaquely(false); 2870 child_view2->SetFillsBoundsOpaquely(false);
2867 child_view2->SetBounds(150, 150, 200, 200); 2871 child_view2->SetBounds(150, 150, 200, 200);
2868 parent_view->AddChildView(child_view2); 2872 parent_view->AddChildView(child_view2);
2869 2873
2874 widget()->GetCompositor()->Draw(false);
2875
2870 // Only child_view1 is opaque 2876 // Only child_view1 is opaque
2871 EXPECT_EQ( 2877 EXPECT_EQ(
2872 gfx::Rect(50, 50, 100, 100), parent_view->layer()->hole_rect()); 2878 gfx::Rect(50, 50, 100, 100), parent_view->layer()->hole_rect());
2873 2879
2874 // Both child views are opaque 2880 // Both child views are opaque
2875 child_view2->SetFillsBoundsOpaquely(true); 2881 child_view2->SetFillsBoundsOpaquely(true);
2882 widget()->GetCompositor()->Draw(false);
2876 EXPECT_TRUE( 2883 EXPECT_TRUE(
2877 gfx::Rect(50, 50, 100, 100) == parent_view->layer()->hole_rect() || 2884 gfx::Rect(50, 50, 100, 100) == parent_view->layer()->hole_rect() ||
2878 gfx::Rect(150, 150, 200, 200) == parent_view->layer()->hole_rect()); 2885 gfx::Rect(150, 150, 200, 200) == parent_view->layer()->hole_rect());
2879 2886
2880 // Only child_view2 is opaque 2887 // Only child_view2 is opaque
2881 delete child_view1; 2888 delete child_view1;
2882 EXPECT_EQ( 2889 EXPECT_EQ(
2883 gfx::Rect(150, 150, 200, 200), parent_view->layer()->hole_rect()); 2890 gfx::Rect(150, 150, 200, 200), parent_view->layer()->hole_rect());
2884 } 2891 }
2885 2892
2886 // Makes sure that opacity of layer persists after toggling visibilty. 2893 // Makes sure that opacity of layer persists after toggling visibilty.
2887 TEST_F(ViewLayerTest, ToggleVisibilityWithOpaqueLayer) { 2894 TEST_F(ViewLayerTest, ToggleVisibilityWithOpaqueLayer) {
2888 View* content_view = new View; 2895 View* content_view = new View;
2889 widget()->SetContentsView(content_view); 2896 widget()->SetContentsView(content_view);
2890 2897
2891 View* parent_view = new View; 2898 View* parent_view = new View;
2892 parent_view->SetPaintToLayer(true); 2899 parent_view->SetPaintToLayer(true);
2893 parent_view->SetBounds(0, 0, 400, 400); 2900 parent_view->SetBounds(0, 0, 400, 400);
2894 content_view->AddChildView(parent_view); 2901 content_view->AddChildView(parent_view);
2895 2902
2896 parent_view->SetPaintToLayer(true); 2903 parent_view->SetPaintToLayer(true);
2897 parent_view->SetBounds(0, 0, 400, 400); 2904 parent_view->SetBounds(0, 0, 400, 400);
2898 2905
2899 View* child_view = new View; 2906 View* child_view = new View;
2900 child_view->SetBounds(50, 50, 100, 100); 2907 child_view->SetBounds(50, 50, 100, 100);
2901 child_view->SetPaintToLayer(true); 2908 child_view->SetPaintToLayer(true);
2902 child_view->SetFillsBoundsOpaquely(true); 2909 child_view->SetFillsBoundsOpaquely(true);
2903 parent_view->AddChildView(child_view); 2910 parent_view->AddChildView(child_view);
2911 widget()->GetCompositor()->Draw(false);
2904 EXPECT_EQ( 2912 EXPECT_EQ(
2905 gfx::Rect(50, 50, 100, 100), parent_view->layer()->hole_rect()); 2913 gfx::Rect(50, 50, 100, 100), parent_view->layer()->hole_rect());
2906 2914
2907 child_view->SetVisible(false); 2915 child_view->SetVisible(false);
2916 widget()->GetCompositor()->Draw(false);
2908 EXPECT_TRUE(parent_view->layer()->hole_rect().IsEmpty()); 2917 EXPECT_TRUE(parent_view->layer()->hole_rect().IsEmpty());
2909 2918
2910 child_view->SetVisible(true); 2919 child_view->SetVisible(true);
2920 widget()->GetCompositor()->Draw(false);
2911 EXPECT_EQ( 2921 EXPECT_EQ(
2912 gfx::Rect(50, 50, 100, 100), parent_view->layer()->hole_rect()); 2922 gfx::Rect(50, 50, 100, 100), parent_view->layer()->hole_rect());
2913 } 2923 }
2914 2924
2915 // Tests that the layers in the subtree are orphaned after a View is removed 2925 // Tests that the layers in the subtree are orphaned after a View is removed
2916 // from the parent. 2926 // from the parent.
2917 TEST_F(ViewLayerTest, OrphanLayerAfterViewRemove) { 2927 TEST_F(ViewLayerTest, OrphanLayerAfterViewRemove) {
2918 View* content_view = new View; 2928 View* content_view = new View;
2919 widget()->SetContentsView(content_view); 2929 widget()->SetContentsView(content_view);
2920 2930
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
3097 ScrambleTree(content); 3107 ScrambleTree(content);
3098 EXPECT_TRUE(ViewAndLayerTreeAreConsistent(content, content->layer())); 3108 EXPECT_TRUE(ViewAndLayerTreeAreConsistent(content, content->layer()));
3099 3109
3100 ScrambleTree(content); 3110 ScrambleTree(content);
3101 EXPECT_TRUE(ViewAndLayerTreeAreConsistent(content, content->layer())); 3111 EXPECT_TRUE(ViewAndLayerTreeAreConsistent(content, content->layer()));
3102 } 3112 }
3103 3113
3104 #endif // VIEWS_COMPOSITOR 3114 #endif // VIEWS_COMPOSITOR
3105 3115
3106 } // namespace views 3116 } // namespace views
OLDNEW
« no previous file with comments | « ui/gfx/compositor/layer_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698