blob: 20e74d97445a7243258f91752bf52c6346eedfd2 [file] [log] [blame]
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "platform/scroll/ScrollbarThemeAura.h"
#include "platform/scroll/ScrollbarTestSuite.h"
namespace blink {
using testing::Return;
namespace {
class ScrollbarThemeAuraButtonOverride final : public ScrollbarThemeAura {
public:
ScrollbarThemeAuraButtonOverride() : m_hasScrollbarButtons(true) {}
void setHasScrollbarButtons(bool value) { m_hasScrollbarButtons = value; }
bool hasScrollbarButtons(ScrollbarOrientation unused) const override {
return m_hasScrollbarButtons;
}
private:
bool m_hasScrollbarButtons;
};
} // namespace
class ScrollbarThemeAuraTest : public ScrollbarTestSuite {};
TEST_F(ScrollbarThemeAuraTest, ButtonSizeHorizontal) {
MockScrollableArea* mockScrollableArea = MockScrollableArea::create();
ScrollbarThemeMock mockTheme;
Scrollbar* scrollbar = Scrollbar::createForTesting(
mockScrollableArea, HorizontalScrollbar, RegularScrollbar, &mockTheme);
ScrollbarThemeAuraButtonOverride theme;
IntRect scrollbarSizeNormalDimensions(11, 22, 444, 66);
scrollbar->setFrameRect(scrollbarSizeNormalDimensions);
IntSize size1 = theme.buttonSize(*scrollbar);
EXPECT_EQ(66, size1.width());
EXPECT_EQ(66, size1.height());
IntRect scrollbarSizeSquashedDimensions(11, 22, 444, 666);
scrollbar->setFrameRect(scrollbarSizeSquashedDimensions);
IntSize size2 = theme.buttonSize(*scrollbar);
EXPECT_EQ(222, size2.width());
EXPECT_EQ(666, size2.height());
ThreadState::current()->collectAllGarbage();
}
TEST_F(ScrollbarThemeAuraTest, ButtonSizeVertical) {
MockScrollableArea* mockScrollableArea = MockScrollableArea::create();
ScrollbarThemeMock mockTheme;
Scrollbar* scrollbar = Scrollbar::createForTesting(
mockScrollableArea, VerticalScrollbar, RegularScrollbar, &mockTheme);
ScrollbarThemeAuraButtonOverride theme;
IntRect scrollbarSizeNormalDimensions(11, 22, 44, 666);
scrollbar->setFrameRect(scrollbarSizeNormalDimensions);
IntSize size1 = theme.buttonSize(*scrollbar);
EXPECT_EQ(44, size1.width());
EXPECT_EQ(44, size1.height());
IntRect scrollbarSizeSquashedDimensions(11, 22, 444, 666);
scrollbar->setFrameRect(scrollbarSizeSquashedDimensions);
IntSize size2 = theme.buttonSize(*scrollbar);
EXPECT_EQ(444, size2.width());
EXPECT_EQ(333, size2.height());
ThreadState::current()->collectAllGarbage();
}
TEST_F(ScrollbarThemeAuraTest, NoButtonsReturnsSize0) {
MockScrollableArea* mockScrollableArea = MockScrollableArea::create();
ScrollbarThemeMock mockTheme;
Scrollbar* scrollbar = Scrollbar::createForTesting(
mockScrollableArea, VerticalScrollbar, RegularScrollbar, &mockTheme);
ScrollbarThemeAuraButtonOverride theme;
theme.setHasScrollbarButtons(false);
scrollbar->setFrameRect(IntRect(1, 2, 3, 4));
IntSize size = theme.buttonSize(*scrollbar);
EXPECT_EQ(0, size.width());
EXPECT_EQ(0, size.height());
ThreadState::current()->collectAllGarbage();
}
} // namespace blink