OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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 "base/containers/hash_tables.h" | 5 #include "base/containers/hash_tables.h" |
6 #include "cc/animation/scrollbar_animation_controller.h" | 6 #include "cc/animation/scrollbar_animation_controller.h" |
7 #include "cc/layers/append_quads_data.h" | 7 #include "cc/layers/append_quads_data.h" |
8 #include "cc/layers/painted_scrollbar_layer.h" | 8 #include "cc/layers/painted_scrollbar_layer.h" |
9 #include "cc/layers/painted_scrollbar_layer_impl.h" | 9 #include "cc/layers/painted_scrollbar_layer_impl.h" |
10 #include "cc/layers/scrollbar_layer_interface.h" | 10 #include "cc/layers/scrollbar_layer_interface.h" |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
132 scoped_ptr<Scrollbar> scrollbar(new FakeScrollbar); | 132 scoped_ptr<Scrollbar> scrollbar(new FakeScrollbar); |
133 scoped_refptr<Layer> layer_tree_root = Layer::Create(); | 133 scoped_refptr<Layer> layer_tree_root = Layer::Create(); |
134 scoped_refptr<Layer> scroll_layer = Layer::Create(); | 134 scoped_refptr<Layer> scroll_layer = Layer::Create(); |
135 scoped_refptr<Layer> content_layer = Layer::Create(); | 135 scoped_refptr<Layer> content_layer = Layer::Create(); |
136 scoped_refptr<Layer> scrollbar_layer = | 136 scoped_refptr<Layer> scrollbar_layer = |
137 PaintedScrollbarLayer::Create(scrollbar.Pass(), layer_tree_root->id()); | 137 PaintedScrollbarLayer::Create(scrollbar.Pass(), layer_tree_root->id()); |
138 | 138 |
139 // Choose bounds to give max_scroll_offset = (30, 50). | 139 // Choose bounds to give max_scroll_offset = (30, 50). |
140 layer_tree_root->SetBounds(gfx::Size(70, 150)); | 140 layer_tree_root->SetBounds(gfx::Size(70, 150)); |
141 scroll_layer->SetScrollClipLayerId(layer_tree_root->id()); | 141 scroll_layer->SetScrollClipLayerId(layer_tree_root->id()); |
142 scroll_layer->SetScrollOffset(gfx::Vector2d(10, 20)); | 142 scroll_layer->SetScrollOffset(gfx::ScrollOffset(10, 20)); |
143 scroll_layer->SetBounds(gfx::Size(100, 200)); | 143 scroll_layer->SetBounds(gfx::Size(100, 200)); |
144 content_layer->SetBounds(gfx::Size(100, 200)); | 144 content_layer->SetBounds(gfx::Size(100, 200)); |
145 | 145 |
146 host->SetRootLayer(layer_tree_root); | 146 host->SetRootLayer(layer_tree_root); |
147 layer_tree_root->AddChild(scroll_layer); | 147 layer_tree_root->AddChild(scroll_layer); |
148 scroll_layer->AddChild(content_layer); | 148 scroll_layer->AddChild(content_layer); |
149 layer_tree_root->AddChild(scrollbar_layer); | 149 layer_tree_root->AddChild(scrollbar_layer); |
150 scrollbar_layer->ToScrollbarLayer()->SetScrollLayer(scroll_layer->id()); | 150 scrollbar_layer->ToScrollbarLayer()->SetScrollLayer(scroll_layer->id()); |
151 scrollbar_layer->ToScrollbarLayer()->SetClipLayer(layer_tree_root->id()); | 151 scrollbar_layer->ToScrollbarLayer()->SetClipLayer(layer_tree_root->id()); |
152 | 152 |
153 layer_tree_root->SavePaintProperties(); | 153 layer_tree_root->SavePaintProperties(); |
154 content_layer->SavePaintProperties(); | 154 content_layer->SavePaintProperties(); |
155 | 155 |
156 LayerImpl* layer_impl_tree_root = host->CommitAndCreateLayerImplTree(); | 156 LayerImpl* layer_impl_tree_root = host->CommitAndCreateLayerImplTree(); |
157 | 157 |
158 ScrollbarLayerImplBase* cc_scrollbar_layer = | 158 ScrollbarLayerImplBase* cc_scrollbar_layer = |
159 static_cast<PaintedScrollbarLayerImpl*>( | 159 static_cast<PaintedScrollbarLayerImpl*>( |
160 layer_impl_tree_root->children()[1]); | 160 layer_impl_tree_root->children()[1]); |
161 | 161 |
162 EXPECT_EQ(10.f, cc_scrollbar_layer->current_pos()); | 162 EXPECT_EQ(10.f, cc_scrollbar_layer->current_pos()); |
163 EXPECT_EQ(30, cc_scrollbar_layer->maximum()); | 163 EXPECT_EQ(30, cc_scrollbar_layer->maximum()); |
164 | 164 |
165 layer_tree_root->SetBounds(gfx::Size(700, 1500)); | 165 layer_tree_root->SetBounds(gfx::Size(700, 1500)); |
166 layer_tree_root->SavePaintProperties(); | 166 layer_tree_root->SavePaintProperties(); |
167 scroll_layer->SetBounds(gfx::Size(1000, 2000)); | 167 scroll_layer->SetBounds(gfx::Size(1000, 2000)); |
168 scroll_layer->SetScrollOffset(gfx::Vector2d(100, 200)); | 168 scroll_layer->SetScrollOffset(gfx::ScrollOffset(100, 200)); |
169 scroll_layer->SavePaintProperties(); | 169 scroll_layer->SavePaintProperties(); |
170 content_layer->SetBounds(gfx::Size(1000, 2000)); | 170 content_layer->SetBounds(gfx::Size(1000, 2000)); |
171 content_layer->SavePaintProperties(); | 171 content_layer->SavePaintProperties(); |
172 | 172 |
173 ScrollbarAnimationController* scrollbar_controller = | 173 ScrollbarAnimationController* scrollbar_controller = |
174 layer_impl_tree_root->scrollbar_animation_controller(); | 174 layer_impl_tree_root->scrollbar_animation_controller(); |
175 layer_impl_tree_root = host->CommitAndCreateLayerImplTree(); | 175 layer_impl_tree_root = host->CommitAndCreateLayerImplTree(); |
176 EXPECT_EQ(scrollbar_controller, | 176 EXPECT_EQ(scrollbar_controller, |
177 layer_impl_tree_root->scrollbar_animation_controller()); | 177 layer_impl_tree_root->scrollbar_animation_controller()); |
178 | 178 |
(...skipping 30 matching lines...) Expand all Loading... |
209 // Give the root-clip a size that will result in MaxScrollOffset = (80, 0). | 209 // Give the root-clip a size that will result in MaxScrollOffset = (80, 0). |
210 root_clip_layer->SetBounds(gfx::Size(20, 50)); | 210 root_clip_layer->SetBounds(gfx::Size(20, 50)); |
211 root_layer->SetBounds(gfx::Size(100, 50)); | 211 root_layer->SetBounds(gfx::Size(100, 50)); |
212 content_layer->SetBounds(gfx::Size(100, 50)); | 212 content_layer->SetBounds(gfx::Size(100, 50)); |
213 | 213 |
214 host->SetRootLayer(root_clip_layer); | 214 host->SetRootLayer(root_clip_layer); |
215 root_clip_layer->AddChild(root_layer); | 215 root_clip_layer->AddChild(root_layer); |
216 root_layer->AddChild(content_layer); | 216 root_layer->AddChild(content_layer); |
217 root_layer->AddChild(scrollbar_layer); | 217 root_layer->AddChild(scrollbar_layer); |
218 | 218 |
219 root_layer->SetScrollOffset(gfx::Vector2d(0, 0)); | 219 root_layer->SetScrollOffset(gfx::ScrollOffset(0, 0)); |
220 scrollbar_layer->SetBounds(gfx::Size(70, 10)); | 220 scrollbar_layer->SetBounds(gfx::Size(70, 10)); |
221 scrollbar_layer->SetScrollLayer(root_layer->id()); | 221 scrollbar_layer->SetScrollLayer(root_layer->id()); |
222 scrollbar_layer->SetClipLayer(root_clip_layer->id()); | 222 scrollbar_layer->SetClipLayer(root_clip_layer->id()); |
223 scrollbar_layer->fake_scrollbar()->set_location(gfx::Point(20, 10)); | 223 scrollbar_layer->fake_scrollbar()->set_location(gfx::Point(20, 10)); |
224 scrollbar_layer->fake_scrollbar()->set_track_rect(gfx::Rect(30, 10, 50, 10)); | 224 scrollbar_layer->fake_scrollbar()->set_track_rect(gfx::Rect(30, 10, 50, 10)); |
225 scrollbar_layer->fake_scrollbar()->set_thumb_thickness(10); | 225 scrollbar_layer->fake_scrollbar()->set_thumb_thickness(10); |
226 scrollbar_layer->fake_scrollbar()->set_thumb_length(4); | 226 scrollbar_layer->fake_scrollbar()->set_thumb_length(4); |
227 | 227 |
228 scrollbar_layer->UpdateThumbAndTrackGeometry(); | 228 scrollbar_layer->UpdateThumbAndTrackGeometry(); |
229 LayerImpl* root_clip_layer_impl = NULL; | 229 LayerImpl* root_clip_layer_impl = NULL; |
(...skipping 24 matching lines...) Expand all Loading... |
254 // Give the root-clip a size that will result in MaxScrollOffset = (80, 0). | 254 // Give the root-clip a size that will result in MaxScrollOffset = (80, 0). |
255 root_clip_layer->SetBounds(gfx::Size(20, 50)); | 255 root_clip_layer->SetBounds(gfx::Size(20, 50)); |
256 root_layer->SetBounds(gfx::Size(100, 50)); | 256 root_layer->SetBounds(gfx::Size(100, 50)); |
257 content_layer->SetBounds(gfx::Size(100, 50)); | 257 content_layer->SetBounds(gfx::Size(100, 50)); |
258 | 258 |
259 host->SetRootLayer(root_clip_layer); | 259 host->SetRootLayer(root_clip_layer); |
260 root_clip_layer->AddChild(root_layer); | 260 root_clip_layer->AddChild(root_layer); |
261 root_layer->AddChild(content_layer); | 261 root_layer->AddChild(content_layer); |
262 root_layer->AddChild(scrollbar_layer); | 262 root_layer->AddChild(scrollbar_layer); |
263 | 263 |
264 root_layer->SetScrollOffset(gfx::Vector2d(0, 0)); | 264 root_layer->SetScrollOffset(gfx::ScrollOffset(0, 0)); |
265 scrollbar_layer->SetBounds(gfx::Size(70, 10)); | 265 scrollbar_layer->SetBounds(gfx::Size(70, 10)); |
266 scrollbar_layer->SetScrollLayer(root_layer->id()); | 266 scrollbar_layer->SetScrollLayer(root_layer->id()); |
267 scrollbar_layer->SetClipLayer(root_clip_layer->id()); | 267 scrollbar_layer->SetClipLayer(root_clip_layer->id()); |
268 scrollbar_layer->fake_scrollbar()->set_location(gfx::Point(20, 10)); | 268 scrollbar_layer->fake_scrollbar()->set_location(gfx::Point(20, 10)); |
269 scrollbar_layer->fake_scrollbar()->set_track_rect(gfx::Rect(30, 10, 50, 10)); | 269 scrollbar_layer->fake_scrollbar()->set_track_rect(gfx::Rect(30, 10, 50, 10)); |
270 scrollbar_layer->fake_scrollbar()->set_thumb_thickness(10); | 270 scrollbar_layer->fake_scrollbar()->set_thumb_thickness(10); |
271 scrollbar_layer->fake_scrollbar()->set_thumb_length(4); | 271 scrollbar_layer->fake_scrollbar()->set_thumb_length(4); |
272 scrollbar_layer->UpdateThumbAndTrackGeometry(); | 272 scrollbar_layer->UpdateThumbAndTrackGeometry(); |
273 LayerImpl* root_clip_layer_impl = NULL; | 273 LayerImpl* root_clip_layer_impl = NULL; |
274 LayerImpl* root_layer_impl = NULL; | 274 LayerImpl* root_layer_impl = NULL; |
275 PaintedScrollbarLayerImpl* scrollbar_layer_impl = NULL; | 275 PaintedScrollbarLayerImpl* scrollbar_layer_impl = NULL; |
276 | 276 |
277 // Thumb is at the edge of the scrollbar (should be inset to | 277 // Thumb is at the edge of the scrollbar (should be inset to |
278 // the start of the track within the scrollbar layer's | 278 // the start of the track within the scrollbar layer's |
279 // position). | 279 // position). |
280 UPDATE_AND_EXTRACT_LAYER_POINTERS(); | 280 UPDATE_AND_EXTRACT_LAYER_POINTERS(); |
281 EXPECT_EQ(gfx::Rect(10, 0, 4, 10).ToString(), | 281 EXPECT_EQ(gfx::Rect(10, 0, 4, 10).ToString(), |
282 scrollbar_layer_impl->ComputeThumbQuadRect().ToString()); | 282 scrollbar_layer_impl->ComputeThumbQuadRect().ToString()); |
283 | 283 |
284 // Under-scroll (thumb position should clamp and be unchanged). | 284 // Under-scroll (thumb position should clamp and be unchanged). |
285 root_layer->SetScrollOffset(gfx::Vector2d(-5, 0)); | 285 root_layer->SetScrollOffset(gfx::ScrollOffset(-5, 0)); |
286 | 286 |
287 UPDATE_AND_EXTRACT_LAYER_POINTERS(); | 287 UPDATE_AND_EXTRACT_LAYER_POINTERS(); |
288 EXPECT_EQ(gfx::Rect(10, 0, 4, 10).ToString(), | 288 EXPECT_EQ(gfx::Rect(10, 0, 4, 10).ToString(), |
289 scrollbar_layer_impl->ComputeThumbQuadRect().ToString()); | 289 scrollbar_layer_impl->ComputeThumbQuadRect().ToString()); |
290 | 290 |
291 // Over-scroll (thumb position should clamp on the far side). | 291 // Over-scroll (thumb position should clamp on the far side). |
292 root_layer->SetScrollOffset(gfx::Vector2d(85, 0)); | 292 root_layer->SetScrollOffset(gfx::ScrollOffset(85, 0)); |
293 | 293 |
294 UPDATE_AND_EXTRACT_LAYER_POINTERS(); | 294 UPDATE_AND_EXTRACT_LAYER_POINTERS(); |
295 EXPECT_EQ(gfx::Rect(56, 0, 4, 10).ToString(), | 295 EXPECT_EQ(gfx::Rect(56, 0, 4, 10).ToString(), |
296 scrollbar_layer_impl->ComputeThumbQuadRect().ToString()); | 296 scrollbar_layer_impl->ComputeThumbQuadRect().ToString()); |
297 | 297 |
298 // Change thumb thickness and length. | 298 // Change thumb thickness and length. |
299 scrollbar_layer->fake_scrollbar()->set_thumb_thickness(4); | 299 scrollbar_layer->fake_scrollbar()->set_thumb_thickness(4); |
300 scrollbar_layer->fake_scrollbar()->set_thumb_length(6); | 300 scrollbar_layer->fake_scrollbar()->set_thumb_length(6); |
301 | 301 |
302 UPDATE_AND_EXTRACT_LAYER_POINTERS(); | 302 UPDATE_AND_EXTRACT_LAYER_POINTERS(); |
(...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
721 scrollbar_layer = PaintedScrollbarLayer::Create(scrollbar.Pass(), | 721 scrollbar_layer = PaintedScrollbarLayer::Create(scrollbar.Pass(), |
722 layer_tree_root->id()); | 722 layer_tree_root->id()); |
723 } | 723 } |
724 layer_tree_root->AddChild(content_layer); | 724 layer_tree_root->AddChild(content_layer); |
725 layer_tree_root->AddChild(scrollbar_layer); | 725 layer_tree_root->AddChild(scrollbar_layer); |
726 | 726 |
727 layer_tree_host_->SetRootLayer(layer_tree_root); | 727 layer_tree_host_->SetRootLayer(layer_tree_root); |
728 | 728 |
729 scrollbar_layer->SetIsDrawable(true); | 729 scrollbar_layer->SetIsDrawable(true); |
730 scrollbar_layer->SetBounds(gfx::Size(100, 100)); | 730 scrollbar_layer->SetBounds(gfx::Size(100, 100)); |
731 layer_tree_root->SetScrollOffset(gfx::Vector2d(10, 20)); | 731 layer_tree_root->SetScrollOffset(gfx::ScrollOffset(10, 20)); |
732 layer_tree_root->SetBounds(gfx::Size(100, 200)); | 732 layer_tree_root->SetBounds(gfx::Size(100, 200)); |
733 content_layer->SetBounds(gfx::Size(100, 200)); | 733 content_layer->SetBounds(gfx::Size(100, 200)); |
734 scrollbar_layer->draw_properties().content_bounds = gfx::Size(100, 200); | 734 scrollbar_layer->draw_properties().content_bounds = gfx::Size(100, 200); |
735 scrollbar_layer->draw_properties().visible_content_rect = | 735 scrollbar_layer->draw_properties().visible_content_rect = |
736 gfx::Rect(0, 0, 100, 200); | 736 gfx::Rect(0, 0, 100, 200); |
737 scrollbar_layer->CreateRenderSurface(); | 737 scrollbar_layer->CreateRenderSurface(); |
738 scrollbar_layer->draw_properties().render_target = scrollbar_layer.get(); | 738 scrollbar_layer->draw_properties().render_target = scrollbar_layer.get(); |
739 | 739 |
740 testing::Mock::VerifyAndClearExpectations(layer_tree_host_.get()); | 740 testing::Mock::VerifyAndClearExpectations(layer_tree_host_.get()); |
741 EXPECT_EQ(scrollbar_layer->layer_tree_host(), layer_tree_host_.get()); | 741 EXPECT_EQ(scrollbar_layer->layer_tree_host(), layer_tree_host_.get()); |
(...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1103 TestScale(gfx::Rect(1240, 0, 15, 1333), 2.7754839f); | 1103 TestScale(gfx::Rect(1240, 0, 15, 1333), 2.7754839f); |
1104 TestScale(gfx::Rect(1240, 0, 15, 677), 2.46677136f); | 1104 TestScale(gfx::Rect(1240, 0, 15, 677), 2.46677136f); |
1105 | 1105 |
1106 // Horizontal Scrollbars. | 1106 // Horizontal Scrollbars. |
1107 TestScale(gfx::Rect(0, 1240, 1333, 15), 2.7754839f); | 1107 TestScale(gfx::Rect(0, 1240, 1333, 15), 2.7754839f); |
1108 TestScale(gfx::Rect(0, 1240, 677, 15), 2.46677136f); | 1108 TestScale(gfx::Rect(0, 1240, 677, 15), 2.46677136f); |
1109 } | 1109 } |
1110 | 1110 |
1111 } // namespace | 1111 } // namespace |
1112 } // namespace cc | 1112 } // namespace cc |
OLD | NEW |