| 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 "ui/views/controls/scrollbar/native_scroll_bar.h" | 5 #include "ui/views/controls/scrollbar/native_scroll_bar.h" |
| 6 #include "ui/views/controls/scrollbar/native_scroll_bar_views.h" | 6 #include "ui/views/controls/scrollbar/native_scroll_bar_views.h" |
| 7 #include "ui/views/controls/scrollbar/scroll_bar.h" | 7 #include "ui/views/controls/scrollbar/scroll_bar.h" |
| 8 #include "ui/views/test/views_test_base.h" | 8 #include "ui/views/test/views_test_base.h" |
| 9 #include "ui/views/widget/widget.h" | 9 #include "ui/views/widget/widget.h" |
| 10 | 10 |
| 11 namespace { | 11 namespace { |
| 12 | 12 |
| 13 // The Scrollbar controller. This is the widget that should do the real | 13 // The Scrollbar controller. This is the widget that should do the real |
| 14 // scrolling of contents. | 14 // scrolling of contents. |
| 15 class TestScrollBarController : public views::ScrollBarController { | 15 class TestScrollBarController : public views::ScrollBarController { |
| 16 public: | 16 public: |
| 17 virtual ~TestScrollBarController() {} | 17 virtual ~TestScrollBarController() {} |
| 18 | 18 |
| 19 virtual void ScrollToPosition(views::ScrollBar* source, | 19 void ScrollToPosition(views::ScrollBar* source, int position) override { |
| 20 int position) override { | |
| 21 last_source = source; | 20 last_source = source; |
| 22 last_position = position; | 21 last_position = position; |
| 23 } | 22 } |
| 24 | 23 |
| 25 virtual int GetScrollIncrement(views::ScrollBar* source, | 24 int GetScrollIncrement(views::ScrollBar* source, |
| 26 bool is_page, | 25 bool is_page, |
| 27 bool is_positive) override { | 26 bool is_positive) override { |
| 28 last_source = source; | 27 last_source = source; |
| 29 last_is_page = is_page; | 28 last_is_page = is_page; |
| 30 last_is_positive = is_positive; | 29 last_is_positive = is_positive; |
| 31 | 30 |
| 32 if (is_page) | 31 if (is_page) |
| 33 return 20; | 32 return 20; |
| 34 return 10; | 33 return 10; |
| 35 } | 34 } |
| 36 | 35 |
| 37 // We save the last values in order to assert the corectness of the scroll | 36 // We save the last values in order to assert the corectness of the scroll |
| 38 // operation. | 37 // operation. |
| 39 views::ScrollBar* last_source; | 38 views::ScrollBar* last_source; |
| 40 bool last_is_positive; | 39 bool last_is_positive; |
| 41 bool last_is_page; | 40 bool last_is_page; |
| 42 int last_position; | 41 int last_position; |
| 43 }; | 42 }; |
| 44 | 43 |
| 45 } // namespace | 44 } // namespace |
| 46 | 45 |
| 47 namespace views { | 46 namespace views { |
| 48 | 47 |
| 49 class NativeScrollBarTest : public ViewsTestBase { | 48 class NativeScrollBarTest : public ViewsTestBase { |
| 50 public: | 49 public: |
| 51 NativeScrollBarTest() : widget_(NULL), scrollbar_(NULL) {} | 50 NativeScrollBarTest() : widget_(NULL), scrollbar_(NULL) {} |
| 52 | 51 |
| 53 virtual void SetUp() { | 52 void SetUp() override { |
| 54 ViewsTestBase::SetUp(); | 53 ViewsTestBase::SetUp(); |
| 55 controller_.reset(new TestScrollBarController()); | 54 controller_.reset(new TestScrollBarController()); |
| 56 | 55 |
| 57 ASSERT_FALSE(scrollbar_); | 56 ASSERT_FALSE(scrollbar_); |
| 58 native_scrollbar_ = new NativeScrollBar(true); | 57 native_scrollbar_ = new NativeScrollBar(true); |
| 59 native_scrollbar_->SetBounds(0, 0, 100, 100); | 58 native_scrollbar_->SetBounds(0, 0, 100, 100); |
| 60 native_scrollbar_->set_controller(controller_.get()); | 59 native_scrollbar_->set_controller(controller_.get()); |
| 61 | 60 |
| 62 widget_ = new Widget; | 61 widget_ = new Widget; |
| 63 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); | 62 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); |
| 64 params.bounds = gfx::Rect(0, 0, 100, 100); | 63 params.bounds = gfx::Rect(0, 0, 100, 100); |
| 65 widget_->Init(params); | 64 widget_->Init(params); |
| 66 View* container = new View(); | 65 View* container = new View(); |
| 67 widget_->SetContentsView(container); | 66 widget_->SetContentsView(container); |
| 68 container->AddChildView(native_scrollbar_); | 67 container->AddChildView(native_scrollbar_); |
| 69 | 68 |
| 70 scrollbar_ = | 69 scrollbar_ = |
| 71 static_cast<NativeScrollBarViews*>(native_scrollbar_->native_wrapper_); | 70 static_cast<NativeScrollBarViews*>(native_scrollbar_->native_wrapper_); |
| 72 scrollbar_->SetBounds(0, 0, 100, 100); | 71 scrollbar_->SetBounds(0, 0, 100, 100); |
| 73 scrollbar_->Update(100, 200, 0); | 72 scrollbar_->Update(100, 200, 0); |
| 74 | 73 |
| 75 track_size_ = scrollbar_->GetTrackBounds().width(); | 74 track_size_ = scrollbar_->GetTrackBounds().width(); |
| 76 } | 75 } |
| 77 | 76 |
| 78 virtual void TearDown() { | 77 void TearDown() override { |
| 79 widget_->Close(); | 78 widget_->Close(); |
| 80 ViewsTestBase::TearDown(); | 79 ViewsTestBase::TearDown(); |
| 81 } | 80 } |
| 82 | 81 |
| 83 protected: | 82 protected: |
| 84 Widget* widget_; | 83 Widget* widget_; |
| 85 | 84 |
| 86 // This is the native scrollbar the Views one wraps around. | 85 // This is the native scrollbar the Views one wraps around. |
| 87 NativeScrollBar* native_scrollbar_; | 86 NativeScrollBar* native_scrollbar_; |
| 88 | 87 |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 161 scrollbar_->Update(100, 101, 0); | 160 scrollbar_->Update(100, 101, 0); |
| 162 EXPECT_TRUE(scrollbar_->ScrollByContentsOffset(-1)); | 161 EXPECT_TRUE(scrollbar_->ScrollByContentsOffset(-1)); |
| 163 // Shrink and then re-exapnd the content. | 162 // Shrink and then re-exapnd the content. |
| 164 scrollbar_->Update(100, 100, 0); | 163 scrollbar_->Update(100, 100, 0); |
| 165 scrollbar_->Update(100, 101, 0); | 164 scrollbar_->Update(100, 101, 0); |
| 166 // Ensure the scrollbar allows scrolling to the end. | 165 // Ensure the scrollbar allows scrolling to the end. |
| 167 EXPECT_TRUE(scrollbar_->ScrollByContentsOffset(-1)); | 166 EXPECT_TRUE(scrollbar_->ScrollByContentsOffset(-1)); |
| 168 } | 167 } |
| 169 | 168 |
| 170 } // namespace views | 169 } // namespace views |
| OLD | NEW |