| Index: third_party/WebKit/Source/platform/scroll/ScrollableAreaTest.cpp | 
| diff --git a/third_party/WebKit/Source/platform/scroll/ScrollableAreaTest.cpp b/third_party/WebKit/Source/platform/scroll/ScrollableAreaTest.cpp | 
| index 13487d835d657377cc8cd2af7d229436487fdd1a..140849654a00273170c71633249e4e872369dbec 100644 | 
| --- a/third_party/WebKit/Source/platform/scroll/ScrollableAreaTest.cpp | 
| +++ b/third_party/WebKit/Source/platform/scroll/ScrollableAreaTest.cpp | 
| @@ -5,6 +5,8 @@ | 
| #include "config.h" | 
| #include "platform/scroll/ScrollableArea.h" | 
|  | 
| +#include "platform/scroll/ScrollbarTheme.h" | 
| +#include "platform/scroll/ScrollbarThemeMock.h" | 
| #include "platform/testing/TestingPlatformSupport.h" | 
| #include "public/platform/Platform.h" | 
| #include "public/platform/WebScheduler.h" | 
| @@ -32,10 +34,10 @@ public: | 
| MOCK_CONST_METHOD0(enclosingScrollableArea, ScrollableArea*()); | 
| MOCK_CONST_METHOD1(visibleContentRect, IntRect(IncludeScrollbarsInRect)); | 
| MOCK_CONST_METHOD0(contentsSize, IntSize()); | 
| -    MOCK_CONST_METHOD0(scrollbarsCanBeActive, bool()); | 
| MOCK_CONST_METHOD0(scrollableAreaBoundingBox, IntRect()); | 
|  | 
| bool userInputScrollable(ScrollbarOrientation) const override { return true; } | 
| +    bool scrollbarsCanBeActive () const override { return true; } | 
| bool shouldPlaceVerticalScrollbarOnLeft() const override { return false; } | 
| void setScrollOffset(const IntPoint& offset, ScrollType) override { m_scrollPosition = offset.shrunkTo(m_maximumScrollPosition); } | 
| IntPoint scrollPosition() const override { return m_scrollPosition; } | 
| @@ -127,4 +129,36 @@ TEST_F(ScrollableAreaTest, ScrollAnimatorCurrentPositionShouldBeSync) | 
| EXPECT_EQ(100.0, scrollableArea->scrollAnimator()->currentPosition().y()); | 
| } | 
|  | 
| +TEST_F(ScrollableAreaTest, ScrollbarTrackAndThumbRepaint) | 
| +{ | 
| +    ScrollbarTheme::setMockScrollbarsEnabled(true); | 
| +    ScrollbarThemeMock::setShouldRepaintAllPartsOnInvalidation(true); | 
| + | 
| +    OwnPtrWillBeRawPtr<MockScrollableArea> scrollableArea = MockScrollableArea::create(IntPoint(0, 100)); | 
| +    RefPtrWillBeRawPtr<Scrollbar> scrollbar = Scrollbar::create(scrollableArea.get(), HorizontalScrollbar, RegularScrollbar); | 
| + | 
| +    EXPECT_TRUE(scrollbar->trackNeedsRepaint()); | 
| +    EXPECT_TRUE(scrollbar->thumbNeedsRepaint()); | 
| +    scrollbar->setNeedsPaintInvalidation(); | 
| +    EXPECT_TRUE(scrollbar->trackNeedsRepaint()); | 
| +    EXPECT_TRUE(scrollbar->thumbNeedsRepaint()); | 
| + | 
| +    scrollbar->setTrackNeedsRepaint(false); | 
| +    scrollbar->setThumbNeedsRepaint(false); | 
| +    EXPECT_FALSE(scrollbar->trackNeedsRepaint()); | 
| +    EXPECT_FALSE(scrollbar->thumbNeedsRepaint()); | 
| +    scrollbar->setNeedsPaintInvalidation(); | 
| +    EXPECT_TRUE(scrollbar->trackNeedsRepaint()); | 
| +    EXPECT_TRUE(scrollbar->thumbNeedsRepaint()); | 
| + | 
| +    ScrollbarThemeMock::setShouldRepaintAllPartsOnInvalidation(false); | 
| +    scrollbar->setTrackNeedsRepaint(false); | 
| +    scrollbar->setThumbNeedsRepaint(false); | 
| +    EXPECT_FALSE(scrollbar->trackNeedsRepaint()); | 
| +    EXPECT_FALSE(scrollbar->thumbNeedsRepaint()); | 
| +    scrollbar->setNeedsPaintInvalidation(); | 
| +    EXPECT_FALSE(scrollbar->trackNeedsRepaint()); | 
| +    EXPECT_FALSE(scrollbar->thumbNeedsRepaint()); | 
| +} | 
| + | 
| } // namespace blink | 
|  |