OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/ScrollbarThemeOverlay.h" | 5 #include "platform/scroll/ScrollbarThemeOverlay.h" |
6 | 6 |
7 #include "platform/scroll/ScrollbarTestSuite.h" | 7 #include "platform/scroll/ScrollbarTestSuite.h" |
8 #include "platform/testing/TestingPlatformSupport.h" | 8 #include "platform/testing/TestingPlatformSupport.h" |
9 | 9 |
10 namespace blink { | 10 namespace blink { |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
108 mock_scrollable_area->ClearNeedsPaintInvalidationForScrollControls(); | 108 mock_scrollable_area->ClearNeedsPaintInvalidationForScrollControls(); |
109 | 109 |
110 // Move off should cause invalidation | 110 // Move off should cause invalidation |
111 vertical_scrollbar->SetHoveredPart(kNoPart); | 111 vertical_scrollbar->SetHoveredPart(kNoPart); |
112 EXPECT_TRUE(vertical_scrollbar->ThumbNeedsRepaint()); | 112 EXPECT_TRUE(vertical_scrollbar->ThumbNeedsRepaint()); |
113 EXPECT_TRUE(mock_scrollable_area->VerticalScrollbarNeedsPaintInvalidation()); | 113 EXPECT_TRUE(mock_scrollable_area->VerticalScrollbarNeedsPaintInvalidation()); |
114 | 114 |
115 vertical_scrollbar->ClearThumbNeedsRepaint(); | 115 vertical_scrollbar->ClearThumbNeedsRepaint(); |
116 mock_scrollable_area->ClearNeedsPaintInvalidationForScrollControls(); | 116 mock_scrollable_area->ClearNeedsPaintInvalidationForScrollControls(); |
117 | 117 |
118 // Disabling the scrollbar is used to hide it so it should cause invalidation | 118 // Hiding the scrollbar should invalidate the layer (SetNeedsDisplay) but not |
119 // but only in the general sense since the compositor will have hidden it | 119 // trigger repaint of the thumb resouce, since the compositor will give the |
120 // without a repaint. | 120 // entire layer opacity 0. |
| 121 EXPECT_CALL(*mock_scrollable_area, ScrollbarsHidden()).WillOnce(Return(true)); |
121 vertical_scrollbar->SetEnabled(false); | 122 vertical_scrollbar->SetEnabled(false); |
122 EXPECT_FALSE(vertical_scrollbar->ThumbNeedsRepaint()); | 123 EXPECT_FALSE(vertical_scrollbar->ThumbNeedsRepaint()); |
123 EXPECT_TRUE(mock_scrollable_area->VerticalScrollbarNeedsPaintInvalidation()); | 124 EXPECT_TRUE(mock_scrollable_area->VerticalScrollbarNeedsPaintInvalidation()); |
124 | 125 |
125 mock_scrollable_area->ClearNeedsPaintInvalidationForScrollControls(); | 126 mock_scrollable_area->ClearNeedsPaintInvalidationForScrollControls(); |
126 | 127 |
| 128 // Showing the scrollbar needs to repaint the thumb resource, since it may |
| 129 // have been repainted in the disabled state while hidden (e.g. from |
| 130 // SetProportion on bounds changes). |
| 131 EXPECT_CALL(*mock_scrollable_area, ScrollbarsHidden()) |
| 132 .WillOnce(Return(false)); |
127 vertical_scrollbar->SetEnabled(true); | 133 vertical_scrollbar->SetEnabled(true); |
128 EXPECT_FALSE(vertical_scrollbar->ThumbNeedsRepaint()); | 134 EXPECT_TRUE(vertical_scrollbar->ThumbNeedsRepaint()); |
129 EXPECT_TRUE(mock_scrollable_area->VerticalScrollbarNeedsPaintInvalidation()); | 135 EXPECT_TRUE(mock_scrollable_area->VerticalScrollbarNeedsPaintInvalidation()); |
130 | 136 |
131 ThreadState::Current()->CollectAllGarbage(); | 137 ThreadState::Current()->CollectAllGarbage(); |
132 } | 138 } |
133 | 139 |
134 } // namespace blink | 140 } // namespace blink |
OLD | NEW |