Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(718)

Side by Side Diff: cc/layers/scrollbar_layer_unittest.cc

Issue 23102003: Note scrollbar layer properties changed when position changes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 "cc/layers/scrollbar_layer.h" 5 #include "cc/layers/scrollbar_layer.h"
6 6
7 #include "cc/animation/scrollbar_animation_controller.h" 7 #include "cc/animation/scrollbar_animation_controller.h"
8 #include "cc/layers/append_quads_data.h" 8 #include "cc/layers/append_quads_data.h"
9 #include "cc/layers/scrollbar_layer_impl.h" 9 #include "cc/layers/scrollbar_layer_impl.h"
10 #include "cc/quads/solid_color_draw_quad.h" 10 #include "cc/quads/solid_color_draw_quad.h"
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 layer_tree_settings.solid_color_scrollbars = true; 160 layer_tree_settings.solid_color_scrollbars = true;
161 layer_tree_settings.solid_color_scrollbar_thickness_dip = 3; 161 layer_tree_settings.solid_color_scrollbar_thickness_dip = 3;
162 scoped_ptr<FakeLayerTreeHost> host = 162 scoped_ptr<FakeLayerTreeHost> host =
163 FakeLayerTreeHost::Create(layer_tree_settings); 163 FakeLayerTreeHost::Create(layer_tree_settings);
164 164
165 scoped_ptr<Scrollbar> scrollbar(new FakeScrollbar(false, true, true)); 165 scoped_ptr<Scrollbar> scrollbar(new FakeScrollbar(false, true, true));
166 LayerImpl* layer_impl_tree_root = 166 LayerImpl* layer_impl_tree_root =
167 LayerImplForScrollAreaAndScrollbar(host.get(), scrollbar.Pass(), false); 167 LayerImplForScrollAreaAndScrollbar(host.get(), scrollbar.Pass(), false);
168 ScrollbarLayerImpl* scrollbar_layer_impl = 168 ScrollbarLayerImpl* scrollbar_layer_impl =
169 static_cast<ScrollbarLayerImpl*>(layer_impl_tree_root->children()[1]); 169 static_cast<ScrollbarLayerImpl*>(layer_impl_tree_root->children()[1]);
170 scrollbar_layer_impl->set_thumb_thickness(3); 170 scrollbar_layer_impl->SetThumbThickness(3);
171 scrollbar_layer_impl->SetCurrentPos(10.f); 171 scrollbar_layer_impl->SetCurrentPos(10.f);
172 scrollbar_layer_impl->SetMaximum(100); 172 scrollbar_layer_impl->SetMaximum(100);
173 scrollbar_layer_impl->set_track_length(100); 173 scrollbar_layer_impl->SetTrackLength(100);
174 scrollbar_layer_impl->set_visible_to_total_length_ratio(0.4f); 174 scrollbar_layer_impl->SetVisibleToTotalLengthRatio(0.4f);
175 175
176 // Thickness should be overridden to 3. 176 // Thickness should be overridden to 3.
177 { 177 {
178 MockQuadCuller quad_culler; 178 MockQuadCuller quad_culler;
179 AppendQuadsData data; 179 AppendQuadsData data;
180 scrollbar_layer_impl->AppendQuads(&quad_culler, &data); 180 scrollbar_layer_impl->AppendQuads(&quad_culler, &data);
181 181
182 const QuadList& quads = quad_culler.quad_list(); 182 const QuadList& quads = quad_culler.quad_list();
183 ASSERT_EQ(1u, quads.size()); 183 ASSERT_EQ(1u, quads.size());
184 EXPECT_EQ(DrawQuad::SOLID_COLOR, quads[0]->material); 184 EXPECT_EQ(DrawQuad::SOLID_COLOR, quads[0]->material);
(...skipping 11 matching lines...) Expand all
196 const QuadList& quads = quad_culler.quad_list(); 196 const QuadList& quads = quad_culler.quad_list();
197 ASSERT_EQ(1u, quads.size()); 197 ASSERT_EQ(1u, quads.size());
198 EXPECT_EQ(DrawQuad::SOLID_COLOR, quads[0]->material); 198 EXPECT_EQ(DrawQuad::SOLID_COLOR, quads[0]->material);
199 EXPECT_RECT_EQ(gfx::Rect(12, 0, 80, 6), quads[0]->rect); 199 EXPECT_RECT_EQ(gfx::Rect(12, 0, 80, 6), quads[0]->rect);
200 } 200 }
201 scrollbar_layer_impl->draw_properties().contents_scale_x = 1.f; 201 scrollbar_layer_impl->draw_properties().contents_scale_x = 1.f;
202 scrollbar_layer_impl->draw_properties().contents_scale_y = 1.f; 202 scrollbar_layer_impl->draw_properties().contents_scale_y = 1.f;
203 203
204 // For solid color scrollbars, position and size should reflect the 204 // For solid color scrollbars, position and size should reflect the
205 // current viewport state. 205 // current viewport state.
206 scrollbar_layer_impl->set_visible_to_total_length_ratio(0.2f); 206 scrollbar_layer_impl->SetVisibleToTotalLengthRatio(0.2f);
207 { 207 {
208 MockQuadCuller quad_culler; 208 MockQuadCuller quad_culler;
209 AppendQuadsData data; 209 AppendQuadsData data;
210 scrollbar_layer_impl->AppendQuads(&quad_culler, &data); 210 scrollbar_layer_impl->AppendQuads(&quad_culler, &data);
211 211
212 const QuadList& quads = quad_culler.quad_list(); 212 const QuadList& quads = quad_culler.quad_list();
213 ASSERT_EQ(1u, quads.size()); 213 ASSERT_EQ(1u, quads.size());
214 EXPECT_EQ(DrawQuad::SOLID_COLOR, quads[0]->material); 214 EXPECT_EQ(DrawQuad::SOLID_COLOR, quads[0]->material);
215 EXPECT_RECT_EQ(gfx::Rect(8, 0, 20, 3), quads[0]->rect); 215 EXPECT_RECT_EQ(gfx::Rect(8, 0, 20, 3), quads[0]->rect);
216 } 216 }
217 } 217 }
218 218
219 TEST(ScrollbarLayerTest, LayerDrivenSolidColorDrawQuads) { 219 TEST(ScrollbarLayerTest, LayerDrivenSolidColorDrawQuads) {
220 LayerTreeSettings layer_tree_settings; 220 LayerTreeSettings layer_tree_settings;
221 layer_tree_settings.solid_color_scrollbars = true; 221 layer_tree_settings.solid_color_scrollbars = true;
222 layer_tree_settings.solid_color_scrollbar_thickness_dip = 3; 222 layer_tree_settings.solid_color_scrollbar_thickness_dip = 3;
223 scoped_ptr<FakeLayerTreeHost> host = 223 scoped_ptr<FakeLayerTreeHost> host =
224 FakeLayerTreeHost::Create(layer_tree_settings); 224 FakeLayerTreeHost::Create(layer_tree_settings);
225 225
226 scoped_ptr<Scrollbar> scrollbar(new FakeScrollbar(false, true, true)); 226 scoped_ptr<Scrollbar> scrollbar(new FakeScrollbar(false, true, true));
227 LayerImpl* layer_impl_tree_root = 227 LayerImpl* layer_impl_tree_root =
228 LayerImplForScrollAreaAndScrollbar(host.get(), scrollbar.Pass(), false); 228 LayerImplForScrollAreaAndScrollbar(host.get(), scrollbar.Pass(), false);
229 ScrollbarLayerImpl* scrollbar_layer_impl = 229 ScrollbarLayerImpl* scrollbar_layer_impl =
230 static_cast<ScrollbarLayerImpl*>(layer_impl_tree_root->children()[1]); 230 static_cast<ScrollbarLayerImpl*>(layer_impl_tree_root->children()[1]);
231 231
232 scrollbar_layer_impl->set_thumb_thickness(3); 232 scrollbar_layer_impl->SetThumbThickness(3);
233 scrollbar_layer_impl->set_track_length(10); 233 scrollbar_layer_impl->SetTrackLength(10);
234 scrollbar_layer_impl->SetCurrentPos(4.f); 234 scrollbar_layer_impl->SetCurrentPos(4.f);
235 scrollbar_layer_impl->SetMaximum(8); 235 scrollbar_layer_impl->SetMaximum(8);
236 236
237 layer_impl_tree_root->SetScrollable(true); 237 layer_impl_tree_root->SetScrollable(true);
238 layer_impl_tree_root->SetHorizontalScrollbarLayer(scrollbar_layer_impl); 238 layer_impl_tree_root->SetHorizontalScrollbarLayer(scrollbar_layer_impl);
239 layer_impl_tree_root->SetMaxScrollOffset(gfx::Vector2d(8, 8)); 239 layer_impl_tree_root->SetMaxScrollOffset(gfx::Vector2d(8, 8));
240 layer_impl_tree_root->SetBounds(gfx::Size(2, 2)); 240 layer_impl_tree_root->SetBounds(gfx::Size(2, 2));
241 layer_impl_tree_root->ScrollBy(gfx::Vector2dF(4.f, 0.f)); 241 layer_impl_tree_root->ScrollBy(gfx::Vector2dF(4.f, 0.f));
242 242
243 { 243 {
(...skipping 24 matching lines...) Expand all
268 protected: 268 protected:
269 FakeImplProxy proxy_; 269 FakeImplProxy proxy_;
270 scoped_ptr<FakeLayerTreeHostImpl> host_impl_; 270 scoped_ptr<FakeLayerTreeHostImpl> host_impl_;
271 scoped_ptr<ScrollbarLayerImpl> horizontal_scrollbar_layer_; 271 scoped_ptr<ScrollbarLayerImpl> horizontal_scrollbar_layer_;
272 scoped_ptr<ScrollbarLayerImpl> vertical_scrollbar_layer_; 272 scoped_ptr<ScrollbarLayerImpl> vertical_scrollbar_layer_;
273 }; 273 };
274 274
275 TEST_F(ScrollbarLayerSolidColorThumbTest, SolidColorThumbLength) { 275 TEST_F(ScrollbarLayerSolidColorThumbTest, SolidColorThumbLength) {
276 horizontal_scrollbar_layer_->SetCurrentPos(0); 276 horizontal_scrollbar_layer_->SetCurrentPos(0);
277 horizontal_scrollbar_layer_->SetMaximum(10); 277 horizontal_scrollbar_layer_->SetMaximum(10);
278 horizontal_scrollbar_layer_->set_thumb_thickness(3); 278 horizontal_scrollbar_layer_->SetThumbThickness(3);
279 279
280 // Simple case - one third of the scrollable area is visible, so the thumb 280 // Simple case - one third of the scrollable area is visible, so the thumb
281 // should be one third as long as the track. 281 // should be one third as long as the track.
282 horizontal_scrollbar_layer_->set_visible_to_total_length_ratio(0.33f); 282 horizontal_scrollbar_layer_->SetVisibleToTotalLengthRatio(0.33f);
283 horizontal_scrollbar_layer_->set_track_length(100); 283 horizontal_scrollbar_layer_->SetTrackLength(100);
284 EXPECT_EQ(33, horizontal_scrollbar_layer_->ComputeThumbQuadRect().width()); 284 EXPECT_EQ(33, horizontal_scrollbar_layer_->ComputeThumbQuadRect().width());
285 285
286 // The thumb's length should never be less than its thickness. 286 // The thumb's length should never be less than its thickness.
287 horizontal_scrollbar_layer_->set_visible_to_total_length_ratio(0.01f); 287 horizontal_scrollbar_layer_->SetVisibleToTotalLengthRatio(0.01f);
288 horizontal_scrollbar_layer_->set_track_length(100); 288 horizontal_scrollbar_layer_->SetTrackLength(100);
289 EXPECT_EQ(3, horizontal_scrollbar_layer_->ComputeThumbQuadRect().width()); 289 EXPECT_EQ(3, horizontal_scrollbar_layer_->ComputeThumbQuadRect().width());
290 } 290 }
291 291
292 TEST_F(ScrollbarLayerSolidColorThumbTest, SolidColorThumbPosition) { 292 TEST_F(ScrollbarLayerSolidColorThumbTest, SolidColorThumbPosition) {
293 horizontal_scrollbar_layer_->set_track_length(100); 293 horizontal_scrollbar_layer_->SetTrackLength(100);
294 horizontal_scrollbar_layer_->set_visible_to_total_length_ratio(0.1f); 294 horizontal_scrollbar_layer_->SetVisibleToTotalLengthRatio(0.1f);
295 horizontal_scrollbar_layer_->set_thumb_thickness(3); 295 horizontal_scrollbar_layer_->SetThumbThickness(3);
296 296
297 horizontal_scrollbar_layer_->SetCurrentPos(0); 297 horizontal_scrollbar_layer_->SetCurrentPos(0);
298 horizontal_scrollbar_layer_->SetMaximum(100); 298 horizontal_scrollbar_layer_->SetMaximum(100);
299 EXPECT_EQ(0, horizontal_scrollbar_layer_->ComputeThumbQuadRect().x()); 299 EXPECT_EQ(0, horizontal_scrollbar_layer_->ComputeThumbQuadRect().x());
300 EXPECT_EQ(10, horizontal_scrollbar_layer_->ComputeThumbQuadRect().width()); 300 EXPECT_EQ(10, horizontal_scrollbar_layer_->ComputeThumbQuadRect().width());
301 301
302 horizontal_scrollbar_layer_->SetCurrentPos(100); 302 horizontal_scrollbar_layer_->SetCurrentPos(100);
303 // The thumb is 10px long and the track is 100px, so the maximum thumb 303 // The thumb is 10px long and the track is 100px, so the maximum thumb
304 // position is 90px. 304 // position is 90px.
305 EXPECT_EQ(90, horizontal_scrollbar_layer_->ComputeThumbQuadRect().x()); 305 EXPECT_EQ(90, horizontal_scrollbar_layer_->ComputeThumbQuadRect().x());
306 306
307 horizontal_scrollbar_layer_->SetCurrentPos(80); 307 horizontal_scrollbar_layer_->SetCurrentPos(80);
308 // The scroll position is 80% of the maximum, so the thumb's position should 308 // The scroll position is 80% of the maximum, so the thumb's position should
309 // be at 80% of its maximum or 72px. 309 // be at 80% of its maximum or 72px.
310 EXPECT_EQ(72, horizontal_scrollbar_layer_->ComputeThumbQuadRect().x()); 310 EXPECT_EQ(72, horizontal_scrollbar_layer_->ComputeThumbQuadRect().x());
311 } 311 }
312 312
313 TEST_F(ScrollbarLayerSolidColorThumbTest, SolidColorThumbVerticalAdjust) { 313 TEST_F(ScrollbarLayerSolidColorThumbTest, SolidColorThumbVerticalAdjust) {
314 ScrollbarLayerImpl* layers[2] = 314 ScrollbarLayerImpl* layers[2] =
315 { horizontal_scrollbar_layer_.get(), vertical_scrollbar_layer_.get() }; 315 { horizontal_scrollbar_layer_.get(), vertical_scrollbar_layer_.get() };
316 for (size_t i = 0; i < 2; ++i) { 316 for (size_t i = 0; i < 2; ++i) {
317 layers[i]->set_track_length(100); 317 layers[i]->SetTrackLength(100);
318 layers[i]->set_visible_to_total_length_ratio(0.2f); 318 layers[i]->SetVisibleToTotalLengthRatio(0.2f);
319 layers[i]->set_thumb_thickness(3); 319 layers[i]->SetThumbThickness(3);
320 layers[i]->SetCurrentPos(25); 320 layers[i]->SetCurrentPos(25);
321 layers[i]->SetMaximum(100); 321 layers[i]->SetMaximum(100);
322 } 322 }
323 323
324 EXPECT_RECT_EQ(gfx::RectF(20.f, 0.f, 20.f, 3.f), 324 EXPECT_RECT_EQ(gfx::RectF(20.f, 0.f, 20.f, 3.f),
325 horizontal_scrollbar_layer_->ComputeThumbQuadRect()); 325 horizontal_scrollbar_layer_->ComputeThumbQuadRect());
326 EXPECT_RECT_EQ(gfx::RectF(0.f, 20.f, 3.f, 20.f), 326 EXPECT_RECT_EQ(gfx::RectF(0.f, 20.f, 3.f, 20.f),
327 vertical_scrollbar_layer_->ComputeThumbQuadRect()); 327 vertical_scrollbar_layer_->ComputeThumbQuadRect());
328 328
329 horizontal_scrollbar_layer_->set_vertical_adjust(10.f); 329 horizontal_scrollbar_layer_->SetVerticalAdjust(10.f);
330 vertical_scrollbar_layer_->set_vertical_adjust(10.f); 330 vertical_scrollbar_layer_->SetVerticalAdjust(10.f);
331 331
332 // The vertical adjustment factor has two effects: 332 // The vertical adjustment factor has two effects:
333 // 1.) Moves the horizontal scrollbar down 333 // 1.) Moves the horizontal scrollbar down
334 // 2.) Increases the vertical scrollbar's effective track length which both 334 // 2.) Increases the vertical scrollbar's effective track length which both
335 // increases the thumb's length and its position within the track. 335 // increases the thumb's length and its position within the track.
336 EXPECT_RECT_EQ(gfx::Rect(20.f, 10.f, 20.f, 3.f), 336 EXPECT_RECT_EQ(gfx::Rect(20.f, 10.f, 20.f, 3.f),
337 horizontal_scrollbar_layer_->ComputeThumbQuadRect()); 337 horizontal_scrollbar_layer_->ComputeThumbQuadRect());
338 EXPECT_RECT_EQ(gfx::Rect(0.f, 22, 3.f, 22.f), 338 EXPECT_RECT_EQ(gfx::Rect(0.f, 22, 3.f, 22.f),
339 vertical_scrollbar_layer_->ComputeThumbQuadRect()); 339 vertical_scrollbar_layer_->ComputeThumbQuadRect());
340 } 340 }
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
567 567
568 TEST_F(ScaledScrollbarLayerTestResourceCreation, ScaledResourceUpload) { 568 TEST_F(ScaledScrollbarLayerTestResourceCreation, ScaledResourceUpload) {
569 layer_tree_settings_.solid_color_scrollbars = false; 569 layer_tree_settings_.solid_color_scrollbars = false;
570 // Pick a test scale that moves the scrollbar's (non-zero) position to 570 // Pick a test scale that moves the scrollbar's (non-zero) position to
571 // a non-pixel-aligned location. 571 // a non-pixel-aligned location.
572 TestResourceUpload(2, 1.41f); 572 TestResourceUpload(2, 1.41f);
573 } 573 }
574 574
575 } // namespace 575 } // namespace
576 } // namespace cc 576 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698