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

Side by Side Diff: cc/scrollbar_layer_unittest.cc

Issue 11550035: Implement pinch-zoom scaling for main-frame scrollbars and pinch-zoom overlay scrollbars. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Incorporate device scale factor, default to 0 totalSize when no root scroll layer. Created 7 years, 9 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/scrollbar_layer.h" 5 #include "cc/scrollbar_layer.h"
6 6
7 #include "cc/append_quads_data.h" 7 #include "cc/append_quads_data.h"
8 #include "cc/layer_tree_impl.h"
8 #include "cc/prioritized_resource_manager.h" 9 #include "cc/prioritized_resource_manager.h"
9 #include "cc/priority_calculator.h" 10 #include "cc/priority_calculator.h"
10 #include "cc/resource_update_queue.h" 11 #include "cc/resource_update_queue.h"
11 #include "cc/scrollbar_animation_controller.h" 12 #include "cc/scrollbar_animation_controller.h"
12 #include "cc/scrollbar_layer_impl.h" 13 #include "cc/scrollbar_layer_impl.h"
13 #include "cc/single_thread_proxy.h" 14 #include "cc/single_thread_proxy.h"
14 #include "cc/solid_color_draw_quad.h" 15 #include "cc/solid_color_draw_quad.h"
15 #include "cc/test/fake_impl_proxy.h" 16 #include "cc/test/fake_impl_proxy.h"
16 #include "cc/test/fake_layer_tree_host_client.h" 17 #include "cc/test/fake_layer_tree_host_client.h"
17 #include "cc/test/fake_layer_tree_host_impl.h" 18 #include "cc/test/fake_layer_tree_host_impl.h"
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 m_layerTreeSettings.solidColorScrollbars = false; 317 m_layerTreeSettings.solidColorScrollbars = false;
317 testResourceUpload(2); 318 testResourceUpload(2);
318 } 319 }
319 320
320 TEST_F(ScrollbarLayerTestResourceCreation, solidColorNoResourceUpload) 321 TEST_F(ScrollbarLayerTestResourceCreation, solidColorNoResourceUpload)
321 { 322 {
322 m_layerTreeSettings.solidColorScrollbars = true; 323 m_layerTreeSettings.solidColorScrollbars = true;
323 testResourceUpload(0); 324 testResourceUpload(0);
324 } 325 }
325 326
327 TEST(ScrollbarLayerTest, pinchZoomScrollbarUpdates)
328 {
329 FakeImplProxy proxy;
330 FakeLayerTreeHostImpl hostImpl(&proxy);
331
332 scoped_refptr<Layer> layerTreeRoot = Layer::create();
333 layerTreeRoot->setScrollable(true);
334
335 scoped_refptr<Layer> contentLayer = Layer::create();
336 scoped_ptr<WebKit::WebScrollbar> scrollbar1(FakeWebScrollbar::create());
337 scoped_refptr<Layer> scrollbarLayerHorizontal =
338 ScrollbarLayer::create(scrollbar1.Pass(),
enne (OOO) 2013/03/11 21:08:24 Inconsistent formatting here.
wjmaclean 2013/03/12 16:13:07 Done.
339 FakeScrollbarThemePainter::Create(false).PassAs<ScrollbarThemePainter>(),
340 FakeWebScrollbarThemeGeometry::create(true),
341 Layer::s_invalidLayerId);
342 scoped_ptr<WebKit::WebScrollbar> scrollbar2(FakeWebScrollbar::create());
343 scoped_refptr<Layer> scrollbarLayerVertical =
344 ScrollbarLayer::create(scrollbar2.Pass(),
345 FakeScrollbarThemePainter::Create(false).PassAs<ScrollbarThemePainter>(),
346 FakeWebScrollbarThemeGeometry::create(true),
347 Layer::s_invalidLayerId);
348
349 layerTreeRoot->addChild(contentLayer);
350 layerTreeRoot->addChild(scrollbarLayerHorizontal);
351 layerTreeRoot->addChild(scrollbarLayerVertical);
352
353 layerTreeRoot->setScrollOffset(gfx::Vector2d(10, 20));
354 layerTreeRoot->setMaxScrollOffset(gfx::Vector2d(30, 50));
355 layerTreeRoot->setBounds(gfx::Size(100, 200));
356 contentLayer->setBounds(gfx::Size(100, 200));
357
358 scoped_ptr<LayerImpl> layerImplTreeRoot =
359 TreeSynchronizer::synchronizeTrees(layerTreeRoot.get(),
360 scoped_ptr<LayerImpl>(), hostImpl.activeTree());
361 TreeSynchronizer::pushProperties(layerTreeRoot.get(),
362 layerImplTreeRoot.get());
363
364 ScrollbarLayerImpl* pinchZoomHorizontal = static_cast<ScrollbarLayerImpl*>(
365 layerImplTreeRoot->children()[1]);
366 ScrollbarLayerImpl* pinchZoomVertical = static_cast<ScrollbarLayerImpl*>(
367 layerImplTreeRoot->children()[2]);
368
369 // Need a root layer in the active tree in order for DidUpdateScroll()
370 // to work.
371 hostImpl.activeTree()->SetRootLayer(layerImplTreeRoot.Pass());
372 hostImpl.activeTree()->FindRootScrollLayer();
373
374 // Manually set the pinch-zoom layers: normally this is done by
375 // LayerTreeHost.
376 hostImpl.activeTree()->SetPinchZoomHorizontalLayerId(
377 pinchZoomHorizontal->id());
378 hostImpl.activeTree()->SetPinchZoomVerticalLayerId(
379 pinchZoomVertical->id());
380
381 hostImpl.activeTree()->DidUpdateScroll();
382
383 EXPECT_EQ(10, pinchZoomHorizontal->currentPos());
384 EXPECT_EQ(100, pinchZoomHorizontal->totalSize());
385 EXPECT_EQ(30, pinchZoomHorizontal->maximum());
386 EXPECT_EQ(20, pinchZoomVertical->currentPos());
387 EXPECT_EQ(200, pinchZoomVertical->totalSize());
388 EXPECT_EQ(50, pinchZoomVertical->maximum());
389 }
390
326 } // namespace 391 } // namespace
327 } // namespace cc 392 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698