OLD | NEW |
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 "base/basictypes.h" | 5 #include "base/basictypes.h" |
6 #include "base/compiler_specific.h" | 6 #include "base/compiler_specific.h" |
7 #include "base/file_path.h" | 7 #include "base/file_path.h" |
8 #include "base/file_util.h" | 8 #include "base/file_util.h" |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/path_service.h" | 10 #include "base/path_service.h" |
(...skipping 16 matching lines...) Expand all Loading... |
27 // - LayerWithNullDelegateTest uses TestCompositor and NullLayerDelegate as the | 27 // - LayerWithNullDelegateTest uses TestCompositor and NullLayerDelegate as the |
28 // LayerDelegate. This is typically the base class you want to use. | 28 // LayerDelegate. This is typically the base class you want to use. |
29 // - LayerWithDelegateTest uses TestCompositor and does not set a LayerDelegate | 29 // - LayerWithDelegateTest uses TestCompositor and does not set a LayerDelegate |
30 // on the delegates. | 30 // on the delegates. |
31 // - LayerWithRealCompositorTest when a real compositor is required for testing. | 31 // - LayerWithRealCompositorTest when a real compositor is required for testing. |
32 // - Slow because they bring up a window and run the real compositor. This | 32 // - Slow because they bring up a window and run the real compositor. This |
33 // is typically not what you want. | 33 // is typically not what you want. |
34 | 34 |
35 class ColoredLayer : public Layer, public LayerDelegate { | 35 class ColoredLayer : public Layer, public LayerDelegate { |
36 public: | 36 public: |
37 ColoredLayer(Compositor* compositor, SkColor color) | 37 explicit ColoredLayer(SkColor color) |
38 : Layer(compositor, Layer::LAYER_HAS_TEXTURE), | 38 : Layer(Layer::LAYER_HAS_TEXTURE), |
39 color_(color) { | 39 color_(color) { |
40 set_delegate(this); | 40 set_delegate(this); |
41 } | 41 } |
42 | 42 |
43 virtual ~ColoredLayer() { } | 43 virtual ~ColoredLayer() { } |
44 | 44 |
45 // Overridden from LayerDelegate: | 45 // Overridden from LayerDelegate: |
46 virtual void OnPaintLayer(gfx::Canvas* canvas) OVERRIDE { | 46 virtual void OnPaintLayer(gfx::Canvas* canvas) OVERRIDE { |
47 canvas->GetSkCanvas()->drawColor(color_); | 47 canvas->GetSkCanvas()->drawColor(color_); |
48 } | 48 } |
(...skipping 15 matching lines...) Expand all Loading... |
64 } | 64 } |
65 | 65 |
66 virtual void TearDown() OVERRIDE { | 66 virtual void TearDown() OVERRIDE { |
67 } | 67 } |
68 | 68 |
69 Compositor* GetCompositor() { | 69 Compositor* GetCompositor() { |
70 return window_->GetCompositor(); | 70 return window_->GetCompositor(); |
71 } | 71 } |
72 | 72 |
73 Layer* CreateLayer(Layer::LayerType type) { | 73 Layer* CreateLayer(Layer::LayerType type) { |
74 return new Layer(GetCompositor(), type); | 74 return new Layer(type); |
75 } | 75 } |
76 | 76 |
77 Layer* CreateColorLayer(SkColor color, const gfx::Rect& bounds) { | 77 Layer* CreateColorLayer(SkColor color, const gfx::Rect& bounds) { |
78 Layer* layer = new ColoredLayer(GetCompositor(), color); | 78 Layer* layer = new ColoredLayer(color); |
79 layer->SetBounds(bounds); | 79 layer->SetBounds(bounds); |
80 return layer; | 80 return layer; |
81 } | 81 } |
82 | 82 |
83 Layer* CreateNoTextureLayer(const gfx::Rect& bounds) { | 83 Layer* CreateNoTextureLayer(const gfx::Rect& bounds) { |
84 Layer* layer = CreateLayer(Layer::LAYER_HAS_NO_TEXTURE); | 84 Layer* layer = CreateLayer(Layer::LAYER_HAS_NO_TEXTURE); |
85 layer->SetBounds(bounds); | 85 layer->SetBounds(bounds); |
86 return layer; | 86 return layer; |
87 } | 87 } |
88 | 88 |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
196 | 196 |
197 #if defined(OS_WIN) | 197 #if defined(OS_WIN) |
198 // These are disabled on windows as they don't run correctly on the buildbot. | 198 // These are disabled on windows as they don't run correctly on the buildbot. |
199 // Reenable once we move to the real compositor. | 199 // Reenable once we move to the real compositor. |
200 #define MAYBE_Delegate DISABLED_Delegate | 200 #define MAYBE_Delegate DISABLED_Delegate |
201 #define MAYBE_Draw DISABLED_Draw | 201 #define MAYBE_Draw DISABLED_Draw |
202 #define MAYBE_DrawTree DISABLED_DrawTree | 202 #define MAYBE_DrawTree DISABLED_DrawTree |
203 #define MAYBE_Hierarchy DISABLED_Hierarchy | 203 #define MAYBE_Hierarchy DISABLED_Hierarchy |
204 #define MAYBE_HierarchyNoTexture DISABLED_HierarchyNoTexture | 204 #define MAYBE_HierarchyNoTexture DISABLED_HierarchyNoTexture |
205 #define MAYBE_DrawPixels DISABLED_DrawPixels | 205 #define MAYBE_DrawPixels DISABLED_DrawPixels |
| 206 #define MAYBE_SetRootLayer DISABLED_SetRootLayer |
206 #else | 207 #else |
207 #define MAYBE_Delegate Delegate | 208 #define MAYBE_Delegate Delegate |
208 #define MAYBE_Draw Draw | 209 #define MAYBE_Draw Draw |
209 #define MAYBE_DrawTree DrawTree | 210 #define MAYBE_DrawTree DrawTree |
210 #define MAYBE_Hierarchy Hierarchy | 211 #define MAYBE_Hierarchy Hierarchy |
211 #define MAYBE_HierarchyNoTexture HierarchyNoTexture | 212 #define MAYBE_HierarchyNoTexture HierarchyNoTexture |
212 #define MAYBE_DrawPixels DrawPixels | 213 #define MAYBE_DrawPixels DrawPixels |
| 214 #define MAYBE_SetRootLayer SetRootLayer |
213 #endif | 215 #endif |
214 | 216 |
215 TEST_F(LayerWithRealCompositorTest, MAYBE_Draw) { | 217 TEST_F(LayerWithRealCompositorTest, MAYBE_Draw) { |
216 scoped_ptr<Layer> layer(CreateColorLayer(SK_ColorRED, | 218 scoped_ptr<Layer> layer(CreateColorLayer(SK_ColorRED, |
217 gfx::Rect(20, 20, 50, 50))); | 219 gfx::Rect(20, 20, 50, 50))); |
218 DrawTree(layer.get()); | 220 DrawTree(layer.get()); |
219 } | 221 } |
220 | 222 |
221 // Create this hierarchy: | 223 // Create this hierarchy: |
222 // L1 - red | 224 // L1 - red |
(...skipping 27 matching lines...) Expand all Loading... |
250 virtual void SetUp() OVERRIDE { | 252 virtual void SetUp() OVERRIDE { |
251 compositor_ = new TestCompositor(this); | 253 compositor_ = new TestCompositor(this); |
252 } | 254 } |
253 | 255 |
254 virtual void TearDown() OVERRIDE { | 256 virtual void TearDown() OVERRIDE { |
255 } | 257 } |
256 | 258 |
257 Compositor* compositor() { return compositor_.get(); } | 259 Compositor* compositor() { return compositor_.get(); } |
258 | 260 |
259 virtual Layer* CreateLayer(Layer::LayerType type) { | 261 virtual Layer* CreateLayer(Layer::LayerType type) { |
260 return new Layer(compositor(), type); | 262 return new Layer(type); |
261 } | 263 } |
262 | 264 |
263 Layer* CreateColorLayer(SkColor color, const gfx::Rect& bounds) { | 265 Layer* CreateColorLayer(SkColor color, const gfx::Rect& bounds) { |
264 Layer* layer = new ColoredLayer(compositor(), color); | 266 Layer* layer = new ColoredLayer(color); |
265 layer->SetBounds(bounds); | 267 layer->SetBounds(bounds); |
266 return layer; | 268 return layer; |
267 } | 269 } |
268 | 270 |
269 virtual Layer* CreateNoTextureLayer(const gfx::Rect& bounds) { | 271 virtual Layer* CreateNoTextureLayer(const gfx::Rect& bounds) { |
270 Layer* layer = CreateLayer(Layer::LAYER_HAS_NO_TEXTURE); | 272 Layer* layer = CreateLayer(Layer::LAYER_HAS_NO_TEXTURE); |
271 layer->SetBounds(bounds); | 273 layer->SetBounds(bounds); |
272 return layer; | 274 return layer; |
273 } | 275 } |
274 | 276 |
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
454 // Overridden from testing::Test: | 456 // Overridden from testing::Test: |
455 virtual void SetUp() OVERRIDE { | 457 virtual void SetUp() OVERRIDE { |
456 LayerWithDelegateTest::SetUp(); | 458 LayerWithDelegateTest::SetUp(); |
457 default_layer_delegate_.reset(new NullLayerDelegate()); | 459 default_layer_delegate_.reset(new NullLayerDelegate()); |
458 } | 460 } |
459 | 461 |
460 virtual void TearDown() OVERRIDE { | 462 virtual void TearDown() OVERRIDE { |
461 } | 463 } |
462 | 464 |
463 Layer* CreateLayer(Layer::LayerType type) OVERRIDE { | 465 Layer* CreateLayer(Layer::LayerType type) OVERRIDE { |
464 Layer* layer = new Layer(compositor(), type); | 466 Layer* layer = new Layer(type); |
465 layer->set_delegate(default_layer_delegate_.get()); | 467 layer->set_delegate(default_layer_delegate_.get()); |
466 return layer; | 468 return layer; |
467 } | 469 } |
468 | 470 |
469 Layer* CreateTextureRootLayer(const gfx::Rect& bounds) { | 471 Layer* CreateTextureRootLayer(const gfx::Rect& bounds) { |
470 Layer* layer = CreateTextureLayer(bounds); | 472 Layer* layer = CreateTextureLayer(bounds); |
471 compositor()->SetRootLayer(layer); | 473 compositor()->SetRootLayer(layer); |
472 return layer; | 474 return layer; |
473 } | 475 } |
474 | 476 |
(...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
881 | 883 |
882 // Toggling l2's visibility should drop all sub-layer textures. | 884 // Toggling l2's visibility should drop all sub-layer textures. |
883 l12->SetVisible(false); | 885 l12->SetVisible(false); |
884 EXPECT_EQ(NULL, l12->texture()); | 886 EXPECT_EQ(NULL, l12->texture()); |
885 EXPECT_EQ(NULL, l121->texture()); | 887 EXPECT_EQ(NULL, l121->texture()); |
886 EXPECT_EQ(NULL, l122->texture()); | 888 EXPECT_EQ(NULL, l122->texture()); |
887 } | 889 } |
888 | 890 |
889 // Various visibile/drawn assertions. | 891 // Various visibile/drawn assertions. |
890 TEST_F(LayerWithNullDelegateTest, Visibility) { | 892 TEST_F(LayerWithNullDelegateTest, Visibility) { |
891 scoped_ptr<Layer> l1(new Layer(NULL, Layer::LAYER_HAS_TEXTURE)); | 893 scoped_ptr<Layer> l1(new Layer(Layer::LAYER_HAS_TEXTURE)); |
892 scoped_ptr<Layer> l2(new Layer(NULL, Layer::LAYER_HAS_TEXTURE)); | 894 scoped_ptr<Layer> l2(new Layer(Layer::LAYER_HAS_TEXTURE)); |
893 scoped_ptr<Layer> l3(new Layer(NULL, Layer::LAYER_HAS_TEXTURE)); | 895 scoped_ptr<Layer> l3(new Layer(Layer::LAYER_HAS_TEXTURE)); |
894 l1->Add(l2.get()); | 896 l1->Add(l2.get()); |
895 l2->Add(l3.get()); | 897 l2->Add(l3.get()); |
896 | 898 |
897 NullLayerDelegate delegate; | 899 NullLayerDelegate delegate; |
898 l1->set_delegate(&delegate); | 900 l1->set_delegate(&delegate); |
899 l2->set_delegate(&delegate); | 901 l2->set_delegate(&delegate); |
900 l3->set_delegate(&delegate); | 902 l3->set_delegate(&delegate); |
901 | 903 |
902 // Layers should initially be drawn. | 904 // Layers should initially be drawn. |
903 EXPECT_TRUE(l1->IsDrawn()); | 905 EXPECT_TRUE(l1->IsDrawn()); |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
992 | 994 |
993 SkAutoLockPixels lock(bitmap); | 995 SkAutoLockPixels lock(bitmap); |
994 bool is_all_red = true; | 996 bool is_all_red = true; |
995 for (int x = 0; is_all_red && x < 500; x++) | 997 for (int x = 0; is_all_red && x < 500; x++) |
996 for (int y = 0; is_all_red && y < 500; y++) | 998 for (int y = 0; is_all_red && y < 500; y++) |
997 is_all_red = is_all_red && (bitmap.getColor(x, y) == SK_ColorRED); | 999 is_all_red = is_all_red && (bitmap.getColor(x, y) == SK_ColorRED); |
998 | 1000 |
999 EXPECT_TRUE(is_all_red); | 1001 EXPECT_TRUE(is_all_red); |
1000 } | 1002 } |
1001 | 1003 |
| 1004 // Checks the logic around Compositor::SetRootLayer and Layer::SetCompositor. |
| 1005 TEST_F(LayerWithRealCompositorTest, MAYBE_SetRootLayer) { |
| 1006 Compositor* compositor = GetCompositor(); |
| 1007 Layer l1; |
| 1008 EXPECT_EQ(NULL, l1.GetCompositor()); |
| 1009 |
| 1010 Layer l2; |
| 1011 EXPECT_EQ(NULL, l2.GetCompositor()); |
| 1012 |
| 1013 compositor->SetRootLayer(&l1); |
| 1014 EXPECT_EQ(compositor, l1.GetCompositor()); |
| 1015 |
| 1016 l1.Add(&l2); |
| 1017 EXPECT_EQ(compositor, l2.GetCompositor()); |
| 1018 |
| 1019 l1.Remove(&l2); |
| 1020 EXPECT_EQ(NULL, l2.GetCompositor()); |
| 1021 |
| 1022 l1.Add(&l2); |
| 1023 EXPECT_EQ(compositor, l2.GetCompositor()); |
| 1024 |
| 1025 compositor->SetRootLayer(NULL); |
| 1026 EXPECT_EQ(NULL, l1.GetCompositor()); |
| 1027 EXPECT_EQ(NULL, l2.GetCompositor()); |
| 1028 } |
| 1029 |
1002 } // namespace ui | 1030 } // namespace ui |
OLD | NEW |