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 3 // found in the LICENSE file. 4 5 #include "cc/layers/contents_scaling_layer.h" 6 7 #include <vector> 8 9 #include "cc/test/fake_layer_tree_host.h" 10 #include "cc/test/geometry_test_utils.h" 11 #include "testing/gtest/include/gtest/gtest.h" 12 13 namespace cc { 14 namespace { 15 16 class MockContentsScalingLayer : public ContentsScalingLayer { 17 public: 18 MockContentsScalingLayer() 19 : ContentsScalingLayer() {} 20 21 virtual void SetNeedsDisplayRect(const gfx::RectF& dirty_rect) OVERRIDE { 22 last_needs_display_rect_ = dirty_rect; 23 ContentsScalingLayer::SetNeedsDisplayRect(dirty_rect); 24 } 25 26 const gfx::RectF& LastNeedsDisplayRect() const { 27 return last_needs_display_rect_; 28 } 29 30 private: 31 virtual ~MockContentsScalingLayer() {} 32 33 gfx::RectF last_needs_display_rect_; 34 }; 35 36 static void CalcDrawProps(FakeLayerTreeHost* host, float device_scale_factor) { 37 RenderSurfaceLayerList render_surface_layer_list; 38 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs( 39 host->root_layer(), gfx::Size(500, 500), &render_surface_layer_list); 40 inputs.device_scale_factor = device_scale_factor; 41 LayerTreeHostCommon::CalculateDrawProperties(&inputs); 42 } 43 44 TEST(ContentsScalingLayerTest, CheckContentsBounds) { 45 FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DIRECT_3D); 46 scoped_ptr<FakeLayerTreeHost> host = FakeLayerTreeHost::Create(&client); 47 48 scoped_refptr<MockContentsScalingLayer> test_layer = 49 make_scoped_refptr(new MockContentsScalingLayer()); 50 51 scoped_refptr<Layer> root = Layer::Create(); 52 root->AddChild(test_layer); 53 host->SetRootLayer(root); 54 55 test_layer->SetBounds(gfx::Size(320, 240)); 56 57 CalcDrawProps(host.get(), 1.f); 58 EXPECT_FLOAT_EQ(1.f, test_layer->contents_scale_x()); 59 EXPECT_FLOAT_EQ(1.f, test_layer->contents_scale_y()); 60 EXPECT_EQ(320, test_layer->content_bounds().width()); 61 EXPECT_EQ(240, test_layer->content_bounds().height()); 62 63 CalcDrawProps(host.get(), 2.f); 64 EXPECT_EQ(640, test_layer->content_bounds().width()); 65 EXPECT_EQ(480, test_layer->content_bounds().height()); 66 67 test_layer->SetBounds(gfx::Size(10, 20)); 68 CalcDrawProps(host.get(), 2.f); 69 EXPECT_EQ(20, test_layer->content_bounds().width()); 70 EXPECT_EQ(40, test_layer->content_bounds().height()); 71 72 CalcDrawProps(host.get(), 1.33f); 73 EXPECT_EQ(14, test_layer->content_bounds().width()); 74 EXPECT_EQ(27, test_layer->content_bounds().height()); 75 } 76 77 } // namespace 78 } // namespace cc 79