| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "platform/scroll/ScrollableArea.h" | 5 #include "platform/scroll/ScrollableArea.h" |
| 6 | 6 |
| 7 #include "platform/graphics/Color.h" | 7 #include "platform/graphics/Color.h" |
| 8 #include "platform/graphics/GraphicsLayer.h" | 8 #include "platform/graphics/GraphicsLayer.h" |
| 9 #include "platform/scroll/ScrollbarTheme.h" | 9 #include "platform/scroll/ScrollbarTheme.h" |
| 10 #include "platform/scroll/ScrollbarThemeMock.h" | 10 #include "platform/scroll/ScrollbarThemeMock.h" |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 136 EXPECT_CALL(theme, shouldRepaintAllPartsOnInvalidation()).WillRepeatedly(Ret
urn(false)); | 136 EXPECT_CALL(theme, shouldRepaintAllPartsOnInvalidation()).WillRepeatedly(Ret
urn(false)); |
| 137 scrollbar->clearTrackNeedsRepaint(); | 137 scrollbar->clearTrackNeedsRepaint(); |
| 138 scrollbar->clearThumbNeedsRepaint(); | 138 scrollbar->clearThumbNeedsRepaint(); |
| 139 EXPECT_FALSE(scrollbar->trackNeedsRepaint()); | 139 EXPECT_FALSE(scrollbar->trackNeedsRepaint()); |
| 140 EXPECT_FALSE(scrollbar->thumbNeedsRepaint()); | 140 EXPECT_FALSE(scrollbar->thumbNeedsRepaint()); |
| 141 scrollbar->setNeedsPaintInvalidation(ThumbPart); | 141 scrollbar->setNeedsPaintInvalidation(ThumbPart); |
| 142 EXPECT_FALSE(scrollbar->trackNeedsRepaint()); | 142 EXPECT_FALSE(scrollbar->trackNeedsRepaint()); |
| 143 EXPECT_TRUE(scrollbar->thumbNeedsRepaint()); | 143 EXPECT_TRUE(scrollbar->thumbNeedsRepaint()); |
| 144 | 144 |
| 145 // Forced GC in order to finalize objects depending on the mock object. | 145 // Forced GC in order to finalize objects depending on the mock object. |
| 146 Heap::collectAllGarbage(); | 146 ThreadHeap::collectAllGarbage(); |
| 147 } | 147 } |
| 148 | 148 |
| 149 class MockGraphicsLayerClient : public GraphicsLayerClient { | 149 class MockGraphicsLayerClient : public GraphicsLayerClient { |
| 150 public: | 150 public: |
| 151 IntRect computeInterestRect(const GraphicsLayer*, const IntRect&) const { re
turn IntRect(); } | 151 IntRect computeInterestRect(const GraphicsLayer*, const IntRect&) const { re
turn IntRect(); } |
| 152 void paintContents(const GraphicsLayer*, GraphicsContext&, GraphicsLayerPain
tingPhase, const IntRect&) const override { } | 152 void paintContents(const GraphicsLayer*, GraphicsContext&, GraphicsLayerPain
tingPhase, const IntRect&) const override { } |
| 153 String debugName(const GraphicsLayer*) const override { return String(); } | 153 String debugName(const GraphicsLayer*) const override { return String(); } |
| 154 bool isTrackingPaintInvalidations() const override { return true; } | 154 bool isTrackingPaintInvalidations() const override { return true; } |
| 155 }; | 155 }; |
| 156 | 156 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 169 graphicsLayer.setSize(FloatSize(111, 222)); | 169 graphicsLayer.setSize(FloatSize(111, 222)); |
| 170 | 170 |
| 171 EXPECT_CALL(*scrollableArea, layerForHorizontalScrollbar()).WillRepeatedly(R
eturn(&graphicsLayer)); | 171 EXPECT_CALL(*scrollableArea, layerForHorizontalScrollbar()).WillRepeatedly(R
eturn(&graphicsLayer)); |
| 172 | 172 |
| 173 RefPtrWillBeRawPtr<Scrollbar> scrollbar = Scrollbar::create(scrollableArea.g
et(), HorizontalScrollbar, RegularScrollbar, nullptr); | 173 RefPtrWillBeRawPtr<Scrollbar> scrollbar = Scrollbar::create(scrollableArea.g
et(), HorizontalScrollbar, RegularScrollbar, nullptr); |
| 174 graphicsLayer.resetTrackedPaintInvalidations(); | 174 graphicsLayer.resetTrackedPaintInvalidations(); |
| 175 scrollbar->setNeedsPaintInvalidation(NoPart); | 175 scrollbar->setNeedsPaintInvalidation(NoPart); |
| 176 EXPECT_TRUE(graphicsLayer.hasTrackedPaintInvalidations()); | 176 EXPECT_TRUE(graphicsLayer.hasTrackedPaintInvalidations()); |
| 177 | 177 |
| 178 // Forced GC in order to finalize objects depending on the mock object. | 178 // Forced GC in order to finalize objects depending on the mock object. |
| 179 Heap::collectAllGarbage(); | 179 ThreadHeap::collectAllGarbage(); |
| 180 } | 180 } |
| 181 | 181 |
| 182 TEST_F(ScrollableAreaTest, InvalidatesNonCompositedScrollbarsWhenThumbMoves) | 182 TEST_F(ScrollableAreaTest, InvalidatesNonCompositedScrollbarsWhenThumbMoves) |
| 183 { | 183 { |
| 184 ScrollbarThemeWithMockInvalidation theme; | 184 ScrollbarThemeWithMockInvalidation theme; |
| 185 OwnPtrWillBeRawPtr<MockScrollableArea> scrollableArea = MockScrollableArea::
create(IntPoint(100, 100)); | 185 OwnPtrWillBeRawPtr<MockScrollableArea> scrollableArea = MockScrollableArea::
create(IntPoint(100, 100)); |
| 186 RefPtrWillBeRawPtr<Scrollbar> horizontalScrollbar = Scrollbar::createForTest
ing(scrollableArea.get(), HorizontalScrollbar, RegularScrollbar, &theme); | 186 RefPtrWillBeRawPtr<Scrollbar> horizontalScrollbar = Scrollbar::createForTest
ing(scrollableArea.get(), HorizontalScrollbar, RegularScrollbar, &theme); |
| 187 RefPtrWillBeRawPtr<Scrollbar> verticalScrollbar = Scrollbar::createForTestin
g(scrollableArea.get(), VerticalScrollbar, RegularScrollbar, &theme); | 187 RefPtrWillBeRawPtr<Scrollbar> verticalScrollbar = Scrollbar::createForTestin
g(scrollableArea.get(), VerticalScrollbar, RegularScrollbar, &theme); |
| 188 EXPECT_CALL(*scrollableArea, horizontalScrollbar()).WillRepeatedly(Return(ho
rizontalScrollbar.get())); | 188 EXPECT_CALL(*scrollableArea, horizontalScrollbar()).WillRepeatedly(Return(ho
rizontalScrollbar.get())); |
| 189 EXPECT_CALL(*scrollableArea, verticalScrollbar()).WillRepeatedly(Return(vert
icalScrollbar.get())); | 189 EXPECT_CALL(*scrollableArea, verticalScrollbar()).WillRepeatedly(Return(vert
icalScrollbar.get())); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 201 scrollableArea->setScrollPosition(DoublePoint(0, 50), ProgrammaticScroll); | 201 scrollableArea->setScrollPosition(DoublePoint(0, 50), ProgrammaticScroll); |
| 202 EXPECT_FALSE(scrollableArea->horizontalScrollbarNeedsPaintInvalidation()); | 202 EXPECT_FALSE(scrollableArea->horizontalScrollbarNeedsPaintInvalidation()); |
| 203 EXPECT_TRUE(scrollableArea->verticalScrollbarNeedsPaintInvalidation()); | 203 EXPECT_TRUE(scrollableArea->verticalScrollbarNeedsPaintInvalidation()); |
| 204 scrollableArea->clearNeedsPaintInvalidationForScrollControls(); | 204 scrollableArea->clearNeedsPaintInvalidationForScrollControls(); |
| 205 scrollableArea->setScrollPosition(DoublePoint(50, 50), ProgrammaticScroll); | 205 scrollableArea->setScrollPosition(DoublePoint(50, 50), ProgrammaticScroll); |
| 206 EXPECT_TRUE(scrollableArea->horizontalScrollbarNeedsPaintInvalidation()); | 206 EXPECT_TRUE(scrollableArea->horizontalScrollbarNeedsPaintInvalidation()); |
| 207 EXPECT_FALSE(scrollableArea->verticalScrollbarNeedsPaintInvalidation()); | 207 EXPECT_FALSE(scrollableArea->verticalScrollbarNeedsPaintInvalidation()); |
| 208 scrollableArea->clearNeedsPaintInvalidationForScrollControls(); | 208 scrollableArea->clearNeedsPaintInvalidationForScrollControls(); |
| 209 | 209 |
| 210 // Forced GC in order to finalize objects depending on the mock object. | 210 // Forced GC in order to finalize objects depending on the mock object. |
| 211 Heap::collectAllGarbage(); | 211 ThreadHeap::collectAllGarbage(); |
| 212 } | 212 } |
| 213 | 213 |
| 214 TEST_F(ScrollableAreaTest, InvalidatesCompositedScrollbarsIfPartsNeedRepaint) | 214 TEST_F(ScrollableAreaTest, InvalidatesCompositedScrollbarsIfPartsNeedRepaint) |
| 215 { | 215 { |
| 216 ScrollbarThemeWithMockInvalidation theme; | 216 ScrollbarThemeWithMockInvalidation theme; |
| 217 OwnPtrWillBeRawPtr<MockScrollableArea> scrollableArea = MockScrollableArea::
create(IntPoint(100, 100)); | 217 OwnPtrWillBeRawPtr<MockScrollableArea> scrollableArea = MockScrollableArea::
create(IntPoint(100, 100)); |
| 218 RefPtrWillBeRawPtr<Scrollbar> horizontalScrollbar = Scrollbar::createForTest
ing(scrollableArea.get(), HorizontalScrollbar, RegularScrollbar, &theme); | 218 RefPtrWillBeRawPtr<Scrollbar> horizontalScrollbar = Scrollbar::createForTest
ing(scrollableArea.get(), HorizontalScrollbar, RegularScrollbar, &theme); |
| 219 horizontalScrollbar->clearTrackNeedsRepaint(); | 219 horizontalScrollbar->clearTrackNeedsRepaint(); |
| 220 horizontalScrollbar->clearThumbNeedsRepaint(); | 220 horizontalScrollbar->clearThumbNeedsRepaint(); |
| 221 RefPtrWillBeRawPtr<Scrollbar> verticalScrollbar = Scrollbar::createForTestin
g(scrollableArea.get(), VerticalScrollbar, RegularScrollbar, &theme); | 221 RefPtrWillBeRawPtr<Scrollbar> verticalScrollbar = Scrollbar::createForTestin
g(scrollableArea.get(), VerticalScrollbar, RegularScrollbar, &theme); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 267 EXPECT_CALL(theme, invalidateOnThumbPositionChange(_, _, _)).Times(2).WillRe
peatedly(Return(NoPart)); | 267 EXPECT_CALL(theme, invalidateOnThumbPositionChange(_, _, _)).Times(2).WillRe
peatedly(Return(NoPart)); |
| 268 scrollableArea->setScrollPosition(DoublePoint(70, 70), ProgrammaticScroll); | 268 scrollableArea->setScrollPosition(DoublePoint(70, 70), ProgrammaticScroll); |
| 269 EXPECT_TRUE(layerForHorizontalScrollbar.hasTrackedPaintInvalidations()); | 269 EXPECT_TRUE(layerForHorizontalScrollbar.hasTrackedPaintInvalidations()); |
| 270 EXPECT_TRUE(layerForVerticalScrollbar.hasTrackedPaintInvalidations()); | 270 EXPECT_TRUE(layerForVerticalScrollbar.hasTrackedPaintInvalidations()); |
| 271 EXPECT_FALSE(horizontalScrollbar->trackNeedsRepaint()); | 271 EXPECT_FALSE(horizontalScrollbar->trackNeedsRepaint()); |
| 272 EXPECT_FALSE(horizontalScrollbar->thumbNeedsRepaint()); | 272 EXPECT_FALSE(horizontalScrollbar->thumbNeedsRepaint()); |
| 273 EXPECT_FALSE(verticalScrollbar->trackNeedsRepaint()); | 273 EXPECT_FALSE(verticalScrollbar->trackNeedsRepaint()); |
| 274 EXPECT_FALSE(verticalScrollbar->thumbNeedsRepaint()); | 274 EXPECT_FALSE(verticalScrollbar->thumbNeedsRepaint()); |
| 275 | 275 |
| 276 // Forced GC in order to finalize objects depending on the mock object. | 276 // Forced GC in order to finalize objects depending on the mock object. |
| 277 Heap::collectAllGarbage(); | 277 ThreadHeap::collectAllGarbage(); |
| 278 } | 278 } |
| 279 | 279 |
| 280 TEST_F(ScrollableAreaTest, RecalculatesScrollbarOverlayIfBackgroundChanges) | 280 TEST_F(ScrollableAreaTest, RecalculatesScrollbarOverlayIfBackgroundChanges) |
| 281 { | 281 { |
| 282 OwnPtrWillBeRawPtr<MockScrollableArea> scrollableArea = MockScrollableArea::
create(IntPoint(0, 100)); | 282 OwnPtrWillBeRawPtr<MockScrollableArea> scrollableArea = MockScrollableArea::
create(IntPoint(0, 100)); |
| 283 | 283 |
| 284 EXPECT_EQ(ScrollbarOverlayStyleDefault, scrollableArea->getScrollbarOverlayS
tyle()); | 284 EXPECT_EQ(ScrollbarOverlayStyleDefault, scrollableArea->getScrollbarOverlayS
tyle()); |
| 285 scrollableArea->recalculateScrollbarOverlayStyle(Color(34, 85, 51)); | 285 scrollableArea->recalculateScrollbarOverlayStyle(Color(34, 85, 51)); |
| 286 EXPECT_EQ(ScrollbarOverlayStyleLight, scrollableArea->getScrollbarOverlaySty
le()); | 286 EXPECT_EQ(ScrollbarOverlayStyleLight, scrollableArea->getScrollbarOverlaySty
le()); |
| 287 scrollableArea->recalculateScrollbarOverlayStyle(Color(236, 143, 185)); | 287 scrollableArea->recalculateScrollbarOverlayStyle(Color(236, 143, 185)); |
| 288 EXPECT_EQ(ScrollbarOverlayStyleDefault, scrollableArea->getScrollbarOverlayS
tyle()); | 288 EXPECT_EQ(ScrollbarOverlayStyleDefault, scrollableArea->getScrollbarOverlayS
tyle()); |
| 289 } | 289 } |
| 290 | 290 |
| 291 } // namespace blink | 291 } // namespace blink |
| OLD | NEW |