OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
111 // - LayerWithNullDelegateTest uses NullLayerDelegate as the LayerDelegate. This | 111 // - LayerWithNullDelegateTest uses NullLayerDelegate as the LayerDelegate. This |
112 // is typically the base class you want to use. | 112 // is typically the base class you want to use. |
113 // - LayerWithDelegateTest uses LayerDelegate on the delegates. | 113 // - LayerWithDelegateTest uses LayerDelegate on the delegates. |
114 // - LayerWithRealCompositorTest when a real compositor is required for testing. | 114 // - LayerWithRealCompositorTest when a real compositor is required for testing. |
115 // - Slow because they bring up a window and run the real compositor. This | 115 // - Slow because they bring up a window and run the real compositor. This |
116 // is typically not what you want. | 116 // is typically not what you want. |
117 | 117 |
118 class ColoredLayer : public Layer, public LayerDelegate { | 118 class ColoredLayer : public Layer, public LayerDelegate { |
119 public: | 119 public: |
120 explicit ColoredLayer(SkColor color) | 120 explicit ColoredLayer(SkColor color) |
121 : Layer(Layer::LAYER_HAS_TEXTURE), | 121 : Layer(Layer::LAYER_TEXTURED), |
122 color_(color) { | 122 color_(color) { |
123 set_delegate(this); | 123 set_delegate(this); |
124 } | 124 } |
125 | 125 |
126 virtual ~ColoredLayer() { } | 126 virtual ~ColoredLayer() { } |
127 | 127 |
128 // Overridden from LayerDelegate: | 128 // Overridden from LayerDelegate: |
129 virtual void OnPaintLayer(gfx::Canvas* canvas) OVERRIDE { | 129 virtual void OnPaintLayer(gfx::Canvas* canvas) OVERRIDE { |
130 canvas->GetSkCanvas()->drawColor(color_); | 130 canvas->GetSkCanvas()->drawColor(color_); |
131 } | 131 } |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
164 return new Layer(type); | 164 return new Layer(type); |
165 } | 165 } |
166 | 166 |
167 Layer* CreateColorLayer(SkColor color, const gfx::Rect& bounds) { | 167 Layer* CreateColorLayer(SkColor color, const gfx::Rect& bounds) { |
168 Layer* layer = new ColoredLayer(color); | 168 Layer* layer = new ColoredLayer(color); |
169 layer->SetBounds(bounds); | 169 layer->SetBounds(bounds); |
170 return layer; | 170 return layer; |
171 } | 171 } |
172 | 172 |
173 Layer* CreateNoTextureLayer(const gfx::Rect& bounds) { | 173 Layer* CreateNoTextureLayer(const gfx::Rect& bounds) { |
174 Layer* layer = CreateLayer(Layer::LAYER_HAS_NO_TEXTURE); | 174 Layer* layer = CreateLayer(Layer::LAYER_NOT_DRAWN); |
175 layer->SetBounds(bounds); | 175 layer->SetBounds(bounds); |
176 return layer; | 176 return layer; |
177 } | 177 } |
178 | 178 |
179 gfx::Canvas* CreateCanvasForLayer(const Layer* layer) { | 179 gfx::Canvas* CreateCanvasForLayer(const Layer* layer) { |
180 return gfx::Canvas::CreateCanvas(layer->bounds().size(), false); | 180 return gfx::Canvas::CreateCanvas(layer->bounds().size(), false); |
181 } | 181 } |
182 | 182 |
183 void DrawTree(Layer* root) { | 183 void DrawTree(Layer* root) { |
184 GetCompositor()->SetRootLayer(root); | 184 GetCompositor()->SetRootLayer(root); |
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
374 return new Layer(type); | 374 return new Layer(type); |
375 } | 375 } |
376 | 376 |
377 Layer* CreateColorLayer(SkColor color, const gfx::Rect& bounds) { | 377 Layer* CreateColorLayer(SkColor color, const gfx::Rect& bounds) { |
378 Layer* layer = new ColoredLayer(color); | 378 Layer* layer = new ColoredLayer(color); |
379 layer->SetBounds(bounds); | 379 layer->SetBounds(bounds); |
380 return layer; | 380 return layer; |
381 } | 381 } |
382 | 382 |
383 virtual Layer* CreateNoTextureLayer(const gfx::Rect& bounds) { | 383 virtual Layer* CreateNoTextureLayer(const gfx::Rect& bounds) { |
384 Layer* layer = CreateLayer(Layer::LAYER_HAS_NO_TEXTURE); | 384 Layer* layer = CreateLayer(Layer::LAYER_NOT_DRAWN); |
385 layer->SetBounds(bounds); | 385 layer->SetBounds(bounds); |
386 return layer; | 386 return layer; |
387 } | 387 } |
388 | 388 |
389 gfx::Canvas* CreateCanvasForLayer(const Layer* layer) { | 389 gfx::Canvas* CreateCanvasForLayer(const Layer* layer) { |
390 return gfx::Canvas::CreateCanvas(layer->bounds().size(), false); | 390 return gfx::Canvas::CreateCanvas(layer->bounds().size(), false); |
391 } | 391 } |
392 | 392 |
393 void DrawTree(Layer* root) { | 393 void DrawTree(Layer* root) { |
394 compositor()->SetRootLayer(root); | 394 compositor()->SetRootLayer(root); |
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
580 return layer; | 580 return layer; |
581 } | 581 } |
582 | 582 |
583 Layer* CreateTextureRootLayer(const gfx::Rect& bounds) { | 583 Layer* CreateTextureRootLayer(const gfx::Rect& bounds) { |
584 Layer* layer = CreateTextureLayer(bounds); | 584 Layer* layer = CreateTextureLayer(bounds); |
585 compositor()->SetRootLayer(layer); | 585 compositor()->SetRootLayer(layer); |
586 return layer; | 586 return layer; |
587 } | 587 } |
588 | 588 |
589 Layer* CreateTextureLayer(const gfx::Rect& bounds) { | 589 Layer* CreateTextureLayer(const gfx::Rect& bounds) { |
590 Layer* layer = CreateLayer(Layer::LAYER_HAS_TEXTURE); | 590 Layer* layer = CreateLayer(Layer::LAYER_TEXTURED); |
591 layer->SetBounds(bounds); | 591 layer->SetBounds(bounds); |
592 return layer; | 592 return layer; |
593 } | 593 } |
594 | 594 |
595 Layer* CreateNoTextureLayer(const gfx::Rect& bounds) OVERRIDE { | 595 Layer* CreateNoTextureLayer(const gfx::Rect& bounds) OVERRIDE { |
596 Layer* layer = CreateLayer(Layer::LAYER_HAS_NO_TEXTURE); | 596 Layer* layer = CreateLayer(Layer::LAYER_NOT_DRAWN); |
597 layer->SetBounds(bounds); | 597 layer->SetBounds(bounds); |
598 return layer; | 598 return layer; |
599 } | 599 } |
600 | 600 |
601 void RunPendingMessages() { | 601 void RunPendingMessages() { |
602 MessageLoopForUI::current()->RunAllPending(); | 602 MessageLoopForUI::current()->RunAllPending(); |
603 } | 603 } |
604 | 604 |
605 private: | 605 private: |
606 scoped_ptr<NullLayerDelegate> default_layer_delegate_; | 606 scoped_ptr<NullLayerDelegate> default_layer_delegate_; |
607 | 607 |
608 DISALLOW_COPY_AND_ASSIGN(LayerWithNullDelegateTest); | 608 DISALLOW_COPY_AND_ASSIGN(LayerWithNullDelegateTest); |
609 }; | 609 }; |
610 | 610 |
611 // Various visibile/drawn assertions. | 611 // Various visibile/drawn assertions. |
612 TEST_F(LayerWithNullDelegateTest, Visibility) { | 612 TEST_F(LayerWithNullDelegateTest, Visibility) { |
613 scoped_ptr<Layer> l1(new Layer(Layer::LAYER_HAS_TEXTURE)); | 613 scoped_ptr<Layer> l1(new Layer(Layer::LAYER_TEXTURED)); |
614 scoped_ptr<Layer> l2(new Layer(Layer::LAYER_HAS_TEXTURE)); | 614 scoped_ptr<Layer> l2(new Layer(Layer::LAYER_TEXTURED)); |
615 scoped_ptr<Layer> l3(new Layer(Layer::LAYER_HAS_TEXTURE)); | 615 scoped_ptr<Layer> l3(new Layer(Layer::LAYER_TEXTURED)); |
616 l1->Add(l2.get()); | 616 l1->Add(l2.get()); |
617 l2->Add(l3.get()); | 617 l2->Add(l3.get()); |
618 | 618 |
619 NullLayerDelegate delegate; | 619 NullLayerDelegate delegate; |
620 l1->set_delegate(&delegate); | 620 l1->set_delegate(&delegate); |
621 l2->set_delegate(&delegate); | 621 l2->set_delegate(&delegate); |
622 l3->set_delegate(&delegate); | 622 l3->set_delegate(&delegate); |
623 | 623 |
624 // Layers should initially be drawn. | 624 // Layers should initially be drawn. |
625 EXPECT_TRUE(l1->IsDrawn()); | 625 EXPECT_TRUE(l1->IsDrawn()); |
(...skipping 21 matching lines...) Expand all Loading... |
647 | 647 |
648 l1->SetVisible(true); | 648 l1->SetVisible(true); |
649 EXPECT_TRUE(l1->IsDrawn()); | 649 EXPECT_TRUE(l1->IsDrawn()); |
650 EXPECT_TRUE(l2->IsDrawn()); | 650 EXPECT_TRUE(l2->IsDrawn()); |
651 EXPECT_FALSE(l3->IsDrawn()); | 651 EXPECT_FALSE(l3->IsDrawn()); |
652 EXPECT_EQ(1.f, l1->web_layer().opacity()); | 652 EXPECT_EQ(1.f, l1->web_layer().opacity()); |
653 } | 653 } |
654 | 654 |
655 // Checks that stacking-related methods behave as advertised. | 655 // Checks that stacking-related methods behave as advertised. |
656 TEST_F(LayerWithNullDelegateTest, Stacking) { | 656 TEST_F(LayerWithNullDelegateTest, Stacking) { |
657 scoped_ptr<Layer> root(new Layer(Layer::LAYER_HAS_NO_TEXTURE)); | 657 scoped_ptr<Layer> root(new Layer(Layer::LAYER_NOT_DRAWN)); |
658 scoped_ptr<Layer> l1(new Layer(Layer::LAYER_HAS_TEXTURE)); | 658 scoped_ptr<Layer> l1(new Layer(Layer::LAYER_TEXTURED)); |
659 scoped_ptr<Layer> l2(new Layer(Layer::LAYER_HAS_TEXTURE)); | 659 scoped_ptr<Layer> l2(new Layer(Layer::LAYER_TEXTURED)); |
660 scoped_ptr<Layer> l3(new Layer(Layer::LAYER_HAS_TEXTURE)); | 660 scoped_ptr<Layer> l3(new Layer(Layer::LAYER_TEXTURED)); |
661 l1->set_name("1"); | 661 l1->set_name("1"); |
662 l2->set_name("2"); | 662 l2->set_name("2"); |
663 l3->set_name("3"); | 663 l3->set_name("3"); |
664 root->Add(l3.get()); | 664 root->Add(l3.get()); |
665 root->Add(l2.get()); | 665 root->Add(l2.get()); |
666 root->Add(l1.get()); | 666 root->Add(l1.get()); |
667 | 667 |
668 // Layers' children are stored in bottom-to-top order. | 668 // Layers' children are stored in bottom-to-top order. |
669 EXPECT_EQ("3,2,1", GetLayerChildrenNames(*root.get())); | 669 EXPECT_EQ("3,2,1", GetLayerChildrenNames(*root.get())); |
670 | 670 |
(...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1015 EXPECT_TRUE(schedule_draw_invoked_); | 1015 EXPECT_TRUE(schedule_draw_invoked_); |
1016 // Because SchedulePaint() was invoked from OnPaintLayer() |child| should | 1016 // Because SchedulePaint() was invoked from OnPaintLayer() |child| should |
1017 // still need to be painted. | 1017 // still need to be painted. |
1018 DrawTree(root.get()); | 1018 DrawTree(root.get()); |
1019 EXPECT_EQ(1, child_delegate.GetPaintCountAndClear()); | 1019 EXPECT_EQ(1, child_delegate.GetPaintCountAndClear()); |
1020 EXPECT_TRUE(child_delegate.last_clip_rect().Contains( | 1020 EXPECT_TRUE(child_delegate.last_clip_rect().Contains( |
1021 gfx::Rect(10, 10, 30, 30))); | 1021 gfx::Rect(10, 10, 30, 30))); |
1022 } | 1022 } |
1023 | 1023 |
1024 } // namespace ui | 1024 } // namespace ui |
OLD | NEW |