| Index: ui/views/controls/scroll_view_unittest.cc
|
| diff --git a/ui/views/controls/scroll_view_unittest.cc b/ui/views/controls/scroll_view_unittest.cc
|
| index c4a5ca7a113e2e57dbf6818529af58591afd501c..1aa29e15974dce512c18bd8211dcda8c2211250e 100644
|
| --- a/ui/views/controls/scroll_view_unittest.cc
|
| +++ b/ui/views/controls/scroll_view_unittest.cc
|
| @@ -167,6 +167,14 @@ class ScrollViewTest : public ViewsTestBase {
|
|
|
| protected:
|
| #endif
|
| + int VerticalScrollBarWidth() {
|
| + return scroll_view_.vertical_scroll_bar()->GetThickness();
|
| + }
|
| +
|
| + int HorizontalScrollBarHeight() {
|
| + return scroll_view_.horizontal_scroll_bar()->GetThickness();
|
| + }
|
| +
|
| ScrollView scroll_view_;
|
|
|
| private:
|
| @@ -309,7 +317,7 @@ TEST_F(ScrollViewTest, ScrollBars) {
|
| // Size the contents such that vertical scrollbar is needed.
|
| contents->SetBounds(0, 0, 50, 400);
|
| scroll_view_.Layout();
|
| - EXPECT_EQ(100 - scroll_view_.GetScrollBarWidth(),
|
| + EXPECT_EQ(100 - scroll_view_.GetScrollBarLayoutWidth(),
|
| contents->parent()->width());
|
| EXPECT_EQ(100, contents->parent()->height());
|
| CheckScrollbarVisibility(scroll_view_, VERTICAL, true);
|
| @@ -323,7 +331,7 @@ TEST_F(ScrollViewTest, ScrollBars) {
|
| contents->SetBounds(0, 0, 400, 50);
|
| scroll_view_.Layout();
|
| EXPECT_EQ(100, contents->parent()->width());
|
| - EXPECT_EQ(100 - scroll_view_.GetScrollBarHeight(),
|
| + EXPECT_EQ(100 - scroll_view_.GetScrollBarLayoutHeight(),
|
| contents->parent()->height());
|
| CheckScrollbarVisibility(scroll_view_, VERTICAL, false);
|
| CheckScrollbarVisibility(scroll_view_, HORIZONTAL, true);
|
| @@ -331,9 +339,9 @@ TEST_F(ScrollViewTest, ScrollBars) {
|
| // Both horizontal and vertical.
|
| contents->SetBounds(0, 0, 300, 400);
|
| scroll_view_.Layout();
|
| - EXPECT_EQ(100 - scroll_view_.GetScrollBarWidth(),
|
| + EXPECT_EQ(100 - scroll_view_.GetScrollBarLayoutWidth(),
|
| contents->parent()->width());
|
| - EXPECT_EQ(100 - scroll_view_.GetScrollBarHeight(),
|
| + EXPECT_EQ(100 - scroll_view_.GetScrollBarLayoutHeight(),
|
| contents->parent()->height());
|
| CheckScrollbarVisibility(scroll_view_, VERTICAL, true);
|
| CheckScrollbarVisibility(scroll_view_, HORIZONTAL, true);
|
| @@ -347,16 +355,16 @@ TEST_F(ScrollViewTest, ScrollBars) {
|
| kBottomPadding, kRightPadding));
|
| contents->SetBounds(0, 0, 50, 400);
|
| scroll_view_.Layout();
|
| - EXPECT_EQ(
|
| - 100 - scroll_view_.GetScrollBarWidth() - kLeftPadding - kRightPadding,
|
| - contents->parent()->width());
|
| + EXPECT_EQ(100 - scroll_view_.GetScrollBarLayoutWidth() - kLeftPadding -
|
| + kRightPadding,
|
| + contents->parent()->width());
|
| EXPECT_EQ(100 - kTopPadding - kBottomPadding, contents->parent()->height());
|
| EXPECT_TRUE(!scroll_view_.horizontal_scroll_bar() ||
|
| !scroll_view_.horizontal_scroll_bar()->visible());
|
| ASSERT_TRUE(scroll_view_.vertical_scroll_bar() != NULL);
|
| EXPECT_TRUE(scroll_view_.vertical_scroll_bar()->visible());
|
| gfx::Rect bounds = scroll_view_.vertical_scroll_bar()->bounds();
|
| - EXPECT_EQ(100 - scroll_view_.GetScrollBarWidth() - kRightPadding, bounds.x());
|
| + EXPECT_EQ(100 - VerticalScrollBarWidth() - kRightPadding, bounds.x());
|
| EXPECT_EQ(100 - kRightPadding, bounds.right());
|
| EXPECT_EQ(kTopPadding, bounds.y());
|
| EXPECT_EQ(100 - kBottomPadding, bounds.bottom());
|
| @@ -365,9 +373,9 @@ TEST_F(ScrollViewTest, ScrollBars) {
|
| contents->SetBounds(0, 0, 400, 50);
|
| scroll_view_.Layout();
|
| EXPECT_EQ(100 - kLeftPadding - kRightPadding, contents->parent()->width());
|
| - EXPECT_EQ(
|
| - 100 - scroll_view_.GetScrollBarHeight() - kTopPadding - kBottomPadding,
|
| - contents->parent()->height());
|
| + EXPECT_EQ(100 - scroll_view_.GetScrollBarLayoutHeight() - kTopPadding -
|
| + kBottomPadding,
|
| + contents->parent()->height());
|
| ASSERT_TRUE(scroll_view_.horizontal_scroll_bar() != NULL);
|
| EXPECT_TRUE(scroll_view_.horizontal_scroll_bar()->visible());
|
| EXPECT_TRUE(!scroll_view_.vertical_scroll_bar() ||
|
| @@ -375,38 +383,35 @@ TEST_F(ScrollViewTest, ScrollBars) {
|
| bounds = scroll_view_.horizontal_scroll_bar()->bounds();
|
| EXPECT_EQ(kLeftPadding, bounds.x());
|
| EXPECT_EQ(100 - kRightPadding, bounds.right());
|
| - EXPECT_EQ(100 - kBottomPadding - scroll_view_.GetScrollBarHeight(),
|
| - bounds.y());
|
| + EXPECT_EQ(100 - kBottomPadding - HorizontalScrollBarHeight(), bounds.y());
|
| EXPECT_EQ(100 - kBottomPadding, bounds.bottom());
|
|
|
| // Both horizontal and vertical with border.
|
| contents->SetBounds(0, 0, 300, 400);
|
| scroll_view_.Layout();
|
| - EXPECT_EQ(
|
| - 100 - scroll_view_.GetScrollBarWidth() - kLeftPadding - kRightPadding,
|
| - contents->parent()->width());
|
| - EXPECT_EQ(
|
| - 100 - scroll_view_.GetScrollBarHeight() - kTopPadding - kBottomPadding,
|
| - contents->parent()->height());
|
| + EXPECT_EQ(100 - scroll_view_.GetScrollBarLayoutWidth() - kLeftPadding -
|
| + kRightPadding,
|
| + contents->parent()->width());
|
| + EXPECT_EQ(100 - scroll_view_.GetScrollBarLayoutHeight() - kTopPadding -
|
| + kBottomPadding,
|
| + contents->parent()->height());
|
| bounds = scroll_view_.horizontal_scroll_bar()->bounds();
|
| // Check horiz.
|
| ASSERT_TRUE(scroll_view_.horizontal_scroll_bar() != NULL);
|
| EXPECT_TRUE(scroll_view_.horizontal_scroll_bar()->visible());
|
| bounds = scroll_view_.horizontal_scroll_bar()->bounds();
|
| EXPECT_EQ(kLeftPadding, bounds.x());
|
| - EXPECT_EQ(100 - kRightPadding - scroll_view_.GetScrollBarWidth(),
|
| - bounds.right());
|
| - EXPECT_EQ(100 - kBottomPadding - scroll_view_.GetScrollBarHeight(),
|
| - bounds.y());
|
| + EXPECT_EQ(100 - kRightPadding - VerticalScrollBarWidth(), bounds.right());
|
| + EXPECT_EQ(100 - kBottomPadding - HorizontalScrollBarHeight(), bounds.y());
|
| EXPECT_EQ(100 - kBottomPadding, bounds.bottom());
|
| // Check vert.
|
| ASSERT_TRUE(scroll_view_.vertical_scroll_bar() != NULL);
|
| EXPECT_TRUE(scroll_view_.vertical_scroll_bar()->visible());
|
| bounds = scroll_view_.vertical_scroll_bar()->bounds();
|
| - EXPECT_EQ(100 - scroll_view_.GetScrollBarWidth() - kRightPadding, bounds.x());
|
| + EXPECT_EQ(100 - VerticalScrollBarWidth() - kRightPadding, bounds.x());
|
| EXPECT_EQ(100 - kRightPadding, bounds.right());
|
| EXPECT_EQ(kTopPadding, bounds.y());
|
| - EXPECT_EQ(100 - kBottomPadding - scroll_view_.GetScrollBarHeight(),
|
| + EXPECT_EQ(100 - kBottomPadding - HorizontalScrollBarHeight(),
|
| bounds.bottom());
|
| }
|
|
|
| @@ -464,19 +469,25 @@ TEST_F(ScrollViewTest, ScrollBarsWithHeader) {
|
| scroll_view_.Layout();
|
| EXPECT_EQ(0, contents->parent()->x());
|
| EXPECT_EQ(20, contents->parent()->y());
|
| - EXPECT_EQ(100 - scroll_view_.GetScrollBarWidth(),
|
| + EXPECT_EQ(100 - scroll_view_.GetScrollBarLayoutWidth(),
|
| contents->parent()->width());
|
| EXPECT_EQ(80, contents->parent()->height());
|
| EXPECT_EQ(0, header->parent()->x());
|
| EXPECT_EQ(0, header->parent()->y());
|
| - EXPECT_EQ(100 - scroll_view_.GetScrollBarWidth(), header->parent()->width());
|
| + EXPECT_EQ(100 - scroll_view_.GetScrollBarLayoutWidth(),
|
| + header->parent()->width());
|
| EXPECT_EQ(20, header->parent()->height());
|
| EXPECT_TRUE(!scroll_view_.horizontal_scroll_bar() ||
|
| !scroll_view_.horizontal_scroll_bar()->visible());
|
| ASSERT_TRUE(scroll_view_.vertical_scroll_bar() != NULL);
|
| EXPECT_TRUE(scroll_view_.vertical_scroll_bar()->visible());
|
| - // Make sure the vertical scrollbar overlaps the header.
|
| - EXPECT_EQ(header->y(), scroll_view_.vertical_scroll_bar()->y());
|
| + // Make sure the vertical scrollbar overlaps the header for traditional
|
| + // scrollbars and doesn't overlap the header for overlay scrollbars.
|
| + const int expected_scrollbar_y =
|
| + scroll_view_.vertical_scroll_bar()->OverlapsContent()
|
| + ? header->bounds().bottom()
|
| + : header->y();
|
| + EXPECT_EQ(expected_scrollbar_y, scroll_view_.vertical_scroll_bar()->y());
|
| EXPECT_EQ(header->y(), contents->y());
|
|
|
| // Size the contents such that horizontal scrollbar is needed.
|
| @@ -485,7 +496,7 @@ TEST_F(ScrollViewTest, ScrollBarsWithHeader) {
|
| EXPECT_EQ(0, contents->parent()->x());
|
| EXPECT_EQ(20, contents->parent()->y());
|
| EXPECT_EQ(100, contents->parent()->width());
|
| - EXPECT_EQ(100 - scroll_view_.GetScrollBarHeight() - 20,
|
| + EXPECT_EQ(100 - scroll_view_.GetScrollBarLayoutHeight() - 20,
|
| contents->parent()->height());
|
| EXPECT_EQ(0, header->parent()->x());
|
| EXPECT_EQ(0, header->parent()->y());
|
| @@ -501,13 +512,14 @@ TEST_F(ScrollViewTest, ScrollBarsWithHeader) {
|
| scroll_view_.Layout();
|
| EXPECT_EQ(0, contents->parent()->x());
|
| EXPECT_EQ(20, contents->parent()->y());
|
| - EXPECT_EQ(100 - scroll_view_.GetScrollBarWidth(),
|
| + EXPECT_EQ(100 - scroll_view_.GetScrollBarLayoutWidth(),
|
| contents->parent()->width());
|
| - EXPECT_EQ(100 - scroll_view_.GetScrollBarHeight() - 20,
|
| + EXPECT_EQ(100 - scroll_view_.GetScrollBarLayoutHeight() - 20,
|
| contents->parent()->height());
|
| EXPECT_EQ(0, header->parent()->x());
|
| EXPECT_EQ(0, header->parent()->y());
|
| - EXPECT_EQ(100 - scroll_view_.GetScrollBarWidth(), header->parent()->width());
|
| + EXPECT_EQ(100 - scroll_view_.GetScrollBarLayoutWidth(),
|
| + header->parent()->width());
|
| EXPECT_EQ(20, header->parent()->height());
|
| ASSERT_TRUE(scroll_view_.horizontal_scroll_bar() != NULL);
|
| EXPECT_TRUE(scroll_view_.horizontal_scroll_bar()->visible());
|
| @@ -560,7 +572,7 @@ TEST_F(ScrollViewTest, ScrollRectToVisible) {
|
| const int viewport_height = test_api.contents_viewport()->height();
|
|
|
| // Expect there to be a horizontal scrollbar, making the viewport shorter.
|
| - EXPECT_LT(viewport_height, 100);
|
| + EXPECT_EQ(100 - scroll_view_.GetScrollBarLayoutHeight(), viewport_height);
|
|
|
| gfx::ScrollOffset offset = test_api.CurrentOffset();
|
| EXPECT_EQ(415 - viewport_height, offset.y());
|
| @@ -618,10 +630,6 @@ TEST_F(ScrollViewTest, ClipHeightToShortContentHeight) {
|
| // Verifies ClipHeightTo() uses the maximum height when the content is longer
|
| // thamn the maximum height value.
|
| TEST_F(ScrollViewTest, ClipHeightToTallContentHeight) {
|
| - // Use a scrollbar that is disabled by default, so the width of the content is
|
| - // not affected.
|
| - scroll_view_.SetVerticalScrollBar(new views::OverlayScrollBar(false));
|
| -
|
| scroll_view_.ClipHeightTo(kMinHeight, kMaxHeight);
|
|
|
| const int kTallContentHeight = 1000;
|
| @@ -633,8 +641,9 @@ TEST_F(ScrollViewTest, ClipHeightToTallContentHeight) {
|
| scroll_view_.SizeToPreferredSize();
|
| scroll_view_.Layout();
|
|
|
| - EXPECT_EQ(gfx::Size(kWidth, kTallContentHeight),
|
| - scroll_view_.contents()->size());
|
| + // The width may be less than kWidth if the scroll bar takes up some width.
|
| + EXPECT_GE(kWidth, scroll_view_.contents()->width());
|
| + EXPECT_EQ(kTallContentHeight, scroll_view_.contents()->height());
|
| EXPECT_EQ(gfx::Size(kWidth, kMaxHeight), scroll_view_.size());
|
| }
|
|
|
| @@ -654,8 +663,7 @@ TEST_F(ScrollViewTest, ClipHeightToScrollbarUsesWidth) {
|
| scroll_view_.SetSize(new_size);
|
| scroll_view_.Layout();
|
|
|
| - int scroll_bar_width = scroll_view_.GetScrollBarWidth();
|
| - int expected_width = kWidth - scroll_bar_width;
|
| + int expected_width = kWidth - scroll_view_.GetScrollBarLayoutWidth();
|
| EXPECT_EQ(scroll_view_.contents()->size().width(), expected_width);
|
| EXPECT_EQ(scroll_view_.contents()->size().height(), 1000 * expected_width);
|
| EXPECT_EQ(gfx::Size(kWidth, kMaxHeight), scroll_view_.size());
|
| @@ -665,17 +673,24 @@ TEST_F(ScrollViewTest, CornerViewVisibility) {
|
| View* contents = InstallContents();
|
| View* corner_view = ScrollViewTestApi(&scroll_view_).corner_view();
|
|
|
| - // Corner view should be visible when both scrollbars are visible.
|
| contents->SetBounds(0, 0, 200, 200);
|
| scroll_view_.Layout();
|
| +
|
| + // Corner view should not exist if using overlay scrollbars.
|
| + if (scroll_view_.vertical_scroll_bar()->OverlapsContent()) {
|
| + EXPECT_FALSE(corner_view->parent());
|
| + return;
|
| + }
|
| +
|
| + // Corner view should be visible when both scrollbars are visible.
|
| EXPECT_EQ(&scroll_view_, corner_view->parent());
|
| EXPECT_TRUE(corner_view->visible());
|
|
|
| // Corner view should be aligned to the scrollbars.
|
| EXPECT_EQ(scroll_view_.vertical_scroll_bar()->x(), corner_view->x());
|
| EXPECT_EQ(scroll_view_.horizontal_scroll_bar()->y(), corner_view->y());
|
| - EXPECT_EQ(scroll_view_.GetScrollBarWidth(), corner_view->width());
|
| - EXPECT_EQ(scroll_view_.GetScrollBarHeight(), corner_view->height());
|
| + EXPECT_EQ(scroll_view_.GetScrollBarLayoutWidth(), corner_view->width());
|
| + EXPECT_EQ(scroll_view_.GetScrollBarLayoutHeight(), corner_view->height());
|
|
|
| // Corner view should be removed when only the vertical scrollbar is visible.
|
| contents->SetBounds(0, 0, 50, 200);
|
| @@ -712,7 +727,7 @@ TEST_F(ScrollViewTest, CocoaOverlayScrollBars) {
|
| scroll_view_.Layout();
|
| EXPECT_EQ(100, contents->parent()->width());
|
| EXPECT_EQ(100, contents->parent()->height());
|
| - EXPECT_EQ(0, scroll_view_.GetScrollBarWidth());
|
| + EXPECT_EQ(0, scroll_view_.GetScrollBarLayoutWidth());
|
| CheckScrollbarVisibility(scroll_view_, VERTICAL, true);
|
| CheckScrollbarVisibility(scroll_view_, HORIZONTAL, false);
|
|
|
| @@ -721,7 +736,7 @@ TEST_F(ScrollViewTest, CocoaOverlayScrollBars) {
|
| scroll_view_.Layout();
|
| EXPECT_EQ(100, contents->parent()->width());
|
| EXPECT_EQ(100, contents->parent()->height());
|
| - EXPECT_EQ(0, scroll_view_.GetScrollBarHeight());
|
| + EXPECT_EQ(0, scroll_view_.GetScrollBarLayoutHeight());
|
| CheckScrollbarVisibility(scroll_view_, VERTICAL, false);
|
| CheckScrollbarVisibility(scroll_view_, HORIZONTAL, true);
|
|
|
| @@ -730,8 +745,8 @@ TEST_F(ScrollViewTest, CocoaOverlayScrollBars) {
|
| scroll_view_.Layout();
|
| EXPECT_EQ(100, contents->parent()->width());
|
| EXPECT_EQ(100, contents->parent()->height());
|
| - EXPECT_EQ(0, scroll_view_.GetScrollBarWidth());
|
| - EXPECT_EQ(0, scroll_view_.GetScrollBarHeight());
|
| + EXPECT_EQ(0, scroll_view_.GetScrollBarLayoutWidth());
|
| + EXPECT_EQ(0, scroll_view_.GetScrollBarLayoutHeight());
|
| CheckScrollbarVisibility(scroll_view_, VERTICAL, true);
|
| CheckScrollbarVisibility(scroll_view_, HORIZONTAL, true);
|
|
|
| @@ -744,12 +759,10 @@ TEST_F(ScrollViewTest, CocoaOverlayScrollBars) {
|
| // Switch to the non-overlay style and check that the ViewPort is now sized
|
| // to be smaller, and ScrollbarWidth and ScrollbarHeight are non-zero.
|
| SetOverlayScrollersEnabled(false);
|
| - EXPECT_EQ(100 - scroll_view_.GetScrollBarWidth(),
|
| - contents->parent()->width());
|
| - EXPECT_EQ(100 - scroll_view_.GetScrollBarHeight(),
|
| - contents->parent()->height());
|
| - EXPECT_NE(0, scroll_view_.GetScrollBarWidth());
|
| - EXPECT_NE(0, scroll_view_.GetScrollBarHeight());
|
| + EXPECT_EQ(100 - VerticalScrollBarWidth(), contents->parent()->width());
|
| + EXPECT_EQ(100 - HorizontalScrollBarHeight(), contents->parent()->height());
|
| + EXPECT_NE(0, VerticalScrollBarWidth());
|
| + EXPECT_NE(0, HorizontalScrollBarHeight());
|
| }
|
|
|
| // Test overlay scrollbar behavior when just resting fingers on the trackpad.
|
|
|