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 <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 2518 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2529 EXPECT_EQ(1, v1.GetIndexOf(&v3)); | 2529 EXPECT_EQ(1, v1.GetIndexOf(&v3)); |
2530 v1.AddChildView(&v3); | 2530 v1.AddChildView(&v3); |
2531 EXPECT_EQ(0, v1.GetIndexOf(&v2)); | 2531 EXPECT_EQ(0, v1.GetIndexOf(&v2)); |
2532 EXPECT_EQ(1, v1.GetIndexOf(&v3)); | 2532 EXPECT_EQ(1, v1.GetIndexOf(&v3)); |
2533 } | 2533 } |
2534 | 2534 |
2535 //////////////////////////////////////////////////////////////////////////////// | 2535 //////////////////////////////////////////////////////////////////////////////// |
2536 // Layers | 2536 // Layers |
2537 //////////////////////////////////////////////////////////////////////////////// | 2537 //////////////////////////////////////////////////////////////////////////////// |
2538 | 2538 |
2539 #if defined(VIEWS_COMPOSITOR) | 2539 #if defined(USE_AURA) |
2540 | 2540 |
2541 namespace { | 2541 namespace { |
2542 | 2542 |
2543 // Test implementation of LayerAnimator. | 2543 // Test implementation of LayerAnimator. |
2544 class TestLayerAnimator : public ui::LayerAnimator { | 2544 class TestLayerAnimator : public ui::LayerAnimator { |
2545 public: | 2545 public: |
2546 TestLayerAnimator(); | 2546 TestLayerAnimator(); |
2547 | 2547 |
2548 const gfx::Rect& last_bounds() const { return last_bounds_; } | 2548 const gfx::Rect& last_bounds() const { return last_bounds_; } |
2549 | 2549 |
(...skipping 18 matching lines...) Expand all Loading... |
2568 | 2568 |
2569 class ViewLayerTest : public ViewsTestBase { | 2569 class ViewLayerTest : public ViewsTestBase { |
2570 public: | 2570 public: |
2571 ViewLayerTest() : widget_(NULL), old_use_acceleration_(false) {} | 2571 ViewLayerTest() : widget_(NULL), old_use_acceleration_(false) {} |
2572 | 2572 |
2573 virtual ~ViewLayerTest() { | 2573 virtual ~ViewLayerTest() { |
2574 } | 2574 } |
2575 | 2575 |
2576 // Returns the Layer used by the RootView. | 2576 // Returns the Layer used by the RootView. |
2577 ui::Layer* GetRootLayer() { | 2577 ui::Layer* GetRootLayer() { |
2578 #if defined(USE_AURA) | |
2579 ui::Layer* root_layer = NULL; | 2578 ui::Layer* root_layer = NULL; |
2580 gfx::Point origin; | 2579 gfx::Point origin; |
2581 widget()->CalculateOffsetToAncestorWithLayer(&origin, &root_layer); | 2580 widget()->CalculateOffsetToAncestorWithLayer(&origin, &root_layer); |
2582 return root_layer; | 2581 return root_layer; |
2583 #else | |
2584 return widget()->GetRootView()->layer(); | |
2585 #endif | |
2586 } | 2582 } |
2587 | 2583 |
2588 virtual void SetUp() OVERRIDE { | 2584 virtual void SetUp() OVERRIDE { |
2589 ViewTest::SetUp(); | 2585 ViewTest::SetUp(); |
2590 old_use_acceleration_ = View::get_use_acceleration_when_possible(); | 2586 old_use_acceleration_ = View::get_use_acceleration_when_possible(); |
2591 View::set_use_acceleration_when_possible(true); | 2587 View::set_use_acceleration_when_possible(true); |
2592 | 2588 |
2593 widget_ = new Widget; | 2589 widget_ = new Widget; |
2594 Widget::InitParams params(Widget::InitParams::TYPE_POPUP); | 2590 Widget::InitParams params(Widget::InitParams::TYPE_POPUP); |
2595 params.bounds = gfx::Rect(50, 50, 200, 200); | 2591 params.bounds = gfx::Rect(50, 50, 200, 200); |
2596 widget_->Init(params); | 2592 widget_->Init(params); |
2597 widget_->Show(); | 2593 widget_->Show(); |
2598 widget_->GetRootView()->SetBounds(0, 0, 200, 200); | 2594 widget_->GetRootView()->SetBounds(0, 0, 200, 200); |
2599 } | 2595 } |
2600 | 2596 |
2601 virtual void TearDown() OVERRIDE { | 2597 virtual void TearDown() OVERRIDE { |
2602 View::set_use_acceleration_when_possible(old_use_acceleration_); | 2598 View::set_use_acceleration_when_possible(old_use_acceleration_); |
2603 widget_->CloseNow(); | 2599 widget_->CloseNow(); |
2604 Widget::SetPureViews(false); | 2600 Widget::SetPureViews(false); |
2605 ViewsTestBase::TearDown(); | 2601 ViewsTestBase::TearDown(); |
2606 } | 2602 } |
2607 | 2603 |
2608 Widget* widget() { return widget_; } | 2604 Widget* widget() { return widget_; } |
2609 | 2605 |
2610 private: | 2606 private: |
2611 Widget* widget_; | 2607 Widget* widget_; |
2612 bool old_use_acceleration_; | 2608 bool old_use_acceleration_; |
2613 }; | 2609 }; |
2614 | 2610 |
2615 #if !defined(USE_AURA) | |
2616 // This test assumes a particular layer hierarchy that isn't valid for aura. | |
2617 // Ensures the RootView has a layer and its set up correctly. | |
2618 TEST_F(ViewLayerTest, RootState) { | |
2619 ui::Layer* layer = widget()->GetRootView()->layer(); | |
2620 ASSERT_TRUE(layer); | |
2621 EXPECT_FALSE(layer->parent()); | |
2622 EXPECT_EQ(0u, layer->children().size()); | |
2623 EXPECT_FALSE(layer->transform().HasChange()); | |
2624 EXPECT_EQ(widget()->GetRootView()->bounds(), layer->bounds()); | |
2625 EXPECT_TRUE(layer->GetCompositor() != NULL); | |
2626 } | |
2627 | |
2628 // Verifies that the complete bounds of a texture are updated if the texture | |
2629 // needs to be refreshed and paint with a clip is invoked. | |
2630 // This test invokes OnNativeWidgetPaintAccelerated, which is not used by aura. | |
2631 TEST_F(ViewLayerTest, PaintAll) { | |
2632 View* view = widget()->GetRootView(); | |
2633 ui::Layer* layer = GetRootLayer(); | |
2634 view->SetBounds(0, 0, 200, 200); | |
2635 widget()->OnNativeWidgetPaintAccelerated(gfx::Rect(0, 0, 1, 1)); | |
2636 ASSERT_TRUE(layer != NULL); | |
2637 const ui::TestTexture* texture = | |
2638 static_cast<const ui::TestTexture*>(layer->texture()); | |
2639 ASSERT_TRUE(texture != NULL); | |
2640 EXPECT_EQ(view->GetLocalBounds(), texture->bounds_of_last_paint()); | |
2641 } | |
2642 #endif | |
2643 | 2611 |
2644 TEST_F(ViewLayerTest, LayerToggling) { | 2612 TEST_F(ViewLayerTest, LayerToggling) { |
2645 // Because we lazily create textures the calls to DrawTree are necessary to | 2613 // Because we lazily create textures the calls to DrawTree are necessary to |
2646 // ensure we trigger creation of textures. | 2614 // ensure we trigger creation of textures. |
2647 #if defined(USE_AURA) | |
2648 ui::Layer* root_layer = NULL; | 2615 ui::Layer* root_layer = NULL; |
2649 gfx::Point origin; | 2616 gfx::Point origin; |
2650 widget()->CalculateOffsetToAncestorWithLayer(&origin, &root_layer); | 2617 widget()->CalculateOffsetToAncestorWithLayer(&origin, &root_layer); |
2651 #else | |
2652 ui::Layer* root_layer = widget()->GetRootView()->layer(); | |
2653 #endif | |
2654 View* content_view = new View; | 2618 View* content_view = new View; |
2655 widget()->SetContentsView(content_view); | 2619 widget()->SetContentsView(content_view); |
2656 | 2620 |
2657 // Create v1, give it a bounds and verify everything is set up correctly. | 2621 // Create v1, give it a bounds and verify everything is set up correctly. |
2658 View* v1 = new View; | 2622 View* v1 = new View; |
2659 v1->SetPaintToLayer(true); | 2623 v1->SetPaintToLayer(true); |
2660 EXPECT_TRUE(v1->layer() != NULL); | 2624 EXPECT_TRUE(v1->layer() != NULL); |
2661 v1->SetBounds(20, 30, 140, 150); | 2625 v1->SetBounds(20, 30, 140, 150); |
2662 content_view->AddChildView(v1); | 2626 content_view->AddChildView(v1); |
2663 ASSERT_TRUE(v1->layer() != NULL); | 2627 ASSERT_TRUE(v1->layer() != NULL); |
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2975 ScrambleTree(content); | 2939 ScrambleTree(content); |
2976 EXPECT_TRUE(ViewAndLayerTreeAreConsistent(content, content->layer())); | 2940 EXPECT_TRUE(ViewAndLayerTreeAreConsistent(content, content->layer())); |
2977 | 2941 |
2978 ScrambleTree(content); | 2942 ScrambleTree(content); |
2979 EXPECT_TRUE(ViewAndLayerTreeAreConsistent(content, content->layer())); | 2943 EXPECT_TRUE(ViewAndLayerTreeAreConsistent(content, content->layer())); |
2980 | 2944 |
2981 ScrambleTree(content); | 2945 ScrambleTree(content); |
2982 EXPECT_TRUE(ViewAndLayerTreeAreConsistent(content, content->layer())); | 2946 EXPECT_TRUE(ViewAndLayerTreeAreConsistent(content, content->layer())); |
2983 } | 2947 } |
2984 | 2948 |
2985 #if defined(USE_AURA) | |
2986 // Verifies when views are reordered the layer is also reordered. The widget is | 2949 // Verifies when views are reordered the layer is also reordered. The widget is |
2987 // providing the parent layer. | 2950 // providing the parent layer. |
2988 TEST_F(ViewLayerTest, ReorderUnderWidget) { | 2951 TEST_F(ViewLayerTest, ReorderUnderWidget) { |
2989 View* content = new View; | 2952 View* content = new View; |
2990 widget()->SetContentsView(content); | 2953 widget()->SetContentsView(content); |
2991 View* c1 = new View; | 2954 View* c1 = new View; |
2992 c1->SetPaintToLayer(true); | 2955 c1->SetPaintToLayer(true); |
2993 content->AddChildView(c1); | 2956 content->AddChildView(c1); |
2994 View* c2 = new View; | 2957 View* c2 = new View; |
2995 c2->SetPaintToLayer(true); | 2958 c2->SetPaintToLayer(true); |
2996 content->AddChildView(c2); | 2959 content->AddChildView(c2); |
2997 | 2960 |
2998 ui::Layer* parent_layer = c1->layer()->parent(); | 2961 ui::Layer* parent_layer = c1->layer()->parent(); |
2999 ASSERT_TRUE(parent_layer); | 2962 ASSERT_TRUE(parent_layer); |
3000 ASSERT_EQ(2u, parent_layer->children().size()); | 2963 ASSERT_EQ(2u, parent_layer->children().size()); |
3001 EXPECT_EQ(c1->layer(), parent_layer->children()[0]); | 2964 EXPECT_EQ(c1->layer(), parent_layer->children()[0]); |
3002 EXPECT_EQ(c2->layer(), parent_layer->children()[1]); | 2965 EXPECT_EQ(c2->layer(), parent_layer->children()[1]); |
3003 | 2966 |
3004 // Move c1 to the front. The layers should have moved too. | 2967 // Move c1 to the front. The layers should have moved too. |
3005 content->ReorderChildView(c1, -1); | 2968 content->ReorderChildView(c1, -1); |
3006 EXPECT_EQ(c1->layer(), parent_layer->children()[1]); | 2969 EXPECT_EQ(c1->layer(), parent_layer->children()[1]); |
3007 EXPECT_EQ(c2->layer(), parent_layer->children()[0]); | 2970 EXPECT_EQ(c2->layer(), parent_layer->children()[0]); |
3008 } | 2971 } |
3009 #endif | |
3010 | 2972 |
3011 #endif // VIEWS_COMPOSITOR | 2973 #endif // USE_AURA |
3012 | 2974 |
3013 } // namespace views | 2975 } // namespace views |
OLD | NEW |