1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
|
// 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
|