blob: b8d58e34a909da3544b76bc94f1676ffc0220712 [file]
// 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"
#include "platform/testing/TestingPlatformSupport.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
using ScrollbarThemeAuraTest = testing::Test;
TEST_F(ScrollbarThemeAuraTest, ButtonSizeHorizontal) {
ScopedTestingPlatformSupport<TestingPlatformSupportWithMockScheduler>
platform;
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) {
ScopedTestingPlatformSupport<TestingPlatformSupportWithMockScheduler>
platform;
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) {
ScopedTestingPlatformSupport<TestingPlatformSupportWithMockScheduler>
platform;
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