blob: a80b75a2f8851022c220dc9d26ddd1df27b9bd0b [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());
ThreadHeap::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());
ThreadHeap::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());
ThreadHeap::collectAllGarbage();
}
} // namespace blink