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/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
10 #include "base/strings/stringprintf.h" | 10 #include "base/strings/stringprintf.h" |
(...skipping 2624 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2635 // Check that calling |AddChildView()| does not change the order. | 2635 // Check that calling |AddChildView()| does not change the order. |
2636 v1.AddChildView(&v2); | 2636 v1.AddChildView(&v2); |
2637 EXPECT_EQ(0, v1.GetIndexOf(&v2)); | 2637 EXPECT_EQ(0, v1.GetIndexOf(&v2)); |
2638 EXPECT_EQ(1, v1.GetIndexOf(&v3)); | 2638 EXPECT_EQ(1, v1.GetIndexOf(&v3)); |
2639 v1.AddChildView(&v3); | 2639 v1.AddChildView(&v3); |
2640 EXPECT_EQ(0, v1.GetIndexOf(&v2)); | 2640 EXPECT_EQ(0, v1.GetIndexOf(&v2)); |
2641 EXPECT_EQ(1, v1.GetIndexOf(&v3)); | 2641 EXPECT_EQ(1, v1.GetIndexOf(&v3)); |
2642 } | 2642 } |
2643 | 2643 |
2644 //////////////////////////////////////////////////////////////////////////////// | 2644 //////////////////////////////////////////////////////////////////////////////// |
| 2645 // FocusManager |
| 2646 //////////////////////////////////////////////////////////////////////////////// |
| 2647 |
| 2648 // A widget that always claims to be active, regardless of its real activation |
| 2649 // status. |
| 2650 class ActiveWidget : public Widget { |
| 2651 public: |
| 2652 ActiveWidget() {} |
| 2653 virtual ~ActiveWidget() {} |
| 2654 |
| 2655 virtual bool IsActive() const OVERRIDE { |
| 2656 return true; |
| 2657 } |
| 2658 |
| 2659 private: |
| 2660 DISALLOW_COPY_AND_ASSIGN(ActiveWidget); |
| 2661 }; |
| 2662 |
| 2663 TEST_F(ViewTest, AdvanceFocusIfNecessaryForUnfocusableView) { |
| 2664 // Create a widget with two views and give the first one focus. |
| 2665 ActiveWidget widget; |
| 2666 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); |
| 2667 params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; |
| 2668 widget.Init(params); |
| 2669 |
| 2670 View* view1 = new View(); |
| 2671 view1->SetFocusable(true); |
| 2672 widget.GetRootView()->AddChildView(view1); |
| 2673 View* view2 = new View(); |
| 2674 view2->SetFocusable(true); |
| 2675 widget.GetRootView()->AddChildView(view2); |
| 2676 |
| 2677 FocusManager* focus_manager = widget.GetFocusManager(); |
| 2678 ASSERT_TRUE(focus_manager); |
| 2679 |
| 2680 focus_manager->SetFocusedView(view1); |
| 2681 EXPECT_EQ(view1, focus_manager->GetFocusedView()); |
| 2682 |
| 2683 // Disable the focused view and check if the next view gets focused. |
| 2684 view1->SetEnabled(false); |
| 2685 EXPECT_EQ(view2, focus_manager->GetFocusedView()); |
| 2686 |
| 2687 // Re-enable and re-focus. |
| 2688 view1->SetEnabled(true); |
| 2689 focus_manager->SetFocusedView(view1); |
| 2690 EXPECT_EQ(view1, focus_manager->GetFocusedView()); |
| 2691 |
| 2692 // Hide the focused view and check it the next view gets focused. |
| 2693 view1->SetVisible(false); |
| 2694 EXPECT_EQ(view2, focus_manager->GetFocusedView()); |
| 2695 |
| 2696 // Re-show and re-focus. |
| 2697 view1->SetVisible(true); |
| 2698 focus_manager->SetFocusedView(view1); |
| 2699 EXPECT_EQ(view1, focus_manager->GetFocusedView()); |
| 2700 |
| 2701 // Set the focused view as not focusable and check if the next view gets |
| 2702 // focused. |
| 2703 view1->SetFocusable(false); |
| 2704 EXPECT_EQ(view2, focus_manager->GetFocusedView()); |
| 2705 } |
| 2706 |
| 2707 //////////////////////////////////////////////////////////////////////////////// |
2645 // Layers | 2708 // Layers |
2646 //////////////////////////////////////////////////////////////////////////////// | 2709 //////////////////////////////////////////////////////////////////////////////// |
2647 | 2710 |
2648 namespace { | 2711 namespace { |
2649 | 2712 |
2650 // Test implementation of LayerAnimator. | 2713 // Test implementation of LayerAnimator. |
2651 class TestLayerAnimator : public ui::LayerAnimator { | 2714 class TestLayerAnimator : public ui::LayerAnimator { |
2652 public: | 2715 public: |
2653 TestLayerAnimator(); | 2716 TestLayerAnimator(); |
2654 | 2717 |
(...skipping 980 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3635 // notification. | 3698 // notification. |
3636 TestView* test_view_child_2 = new TestView(); | 3699 TestView* test_view_child_2 = new TestView(); |
3637 test_view->AddChildView(test_view_child_2); | 3700 test_view->AddChildView(test_view_child_2); |
3638 EXPECT_TRUE(test_view_child_2->native_theme_); | 3701 EXPECT_TRUE(test_view_child_2->native_theme_); |
3639 EXPECT_EQ(widget->GetNativeTheme(), test_view_child_2->native_theme_); | 3702 EXPECT_EQ(widget->GetNativeTheme(), test_view_child_2->native_theme_); |
3640 | 3703 |
3641 widget->CloseNow(); | 3704 widget->CloseNow(); |
3642 } | 3705 } |
3643 | 3706 |
3644 } // namespace views | 3707 } // namespace views |
OLD | NEW |