OLD | NEW |
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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/trees/layer_tree_host_impl.h" | 5 #include "cc/trees/layer_tree_host_impl.h" |
6 | 6 |
7 #include <cmath> | 7 #include <cmath> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 5958 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5969 EXPECT_EQ(0, set_needs_commit_count); | 5969 EXPECT_EQ(0, set_needs_commit_count); |
5970 EXPECT_EQ(2, set_needs_redraw_count); | 5970 EXPECT_EQ(2, set_needs_redraw_count); |
5971 } | 5971 } |
5972 } | 5972 } |
5973 | 5973 |
5974 class LayerTreeHostImplWithTopControlsTest : public LayerTreeHostImplTest { | 5974 class LayerTreeHostImplWithTopControlsTest : public LayerTreeHostImplTest { |
5975 public: | 5975 public: |
5976 virtual void SetUp() OVERRIDE { | 5976 virtual void SetUp() OVERRIDE { |
5977 LayerTreeSettings settings = DefaultSettings(); | 5977 LayerTreeSettings settings = DefaultSettings(); |
5978 settings.calculate_top_controls_position = true; | 5978 settings.calculate_top_controls_position = true; |
| 5979 settings.top_controls_height = top_controls_height_; |
5979 CreateHostImpl(settings, CreateOutputSurface()); | 5980 CreateHostImpl(settings, CreateOutputSurface()); |
5980 } | 5981 } |
| 5982 |
| 5983 protected: |
| 5984 static const int top_controls_height_; |
5981 }; | 5985 }; |
5982 | 5986 |
| 5987 const int LayerTreeHostImplWithTopControlsTest::top_controls_height_ = 50; |
| 5988 |
5983 TEST_F(LayerTreeHostImplWithTopControlsTest, NoIdleAnimations) { | 5989 TEST_F(LayerTreeHostImplWithTopControlsTest, NoIdleAnimations) { |
5984 SetupScrollAndContentsLayers(gfx::Size(100, 100)) | 5990 SetupScrollAndContentsLayers(gfx::Size(100, 100)) |
5985 ->SetScrollOffset(gfx::Vector2d(0, 10)); | 5991 ->SetScrollOffset(gfx::Vector2d(0, 10)); |
5986 host_impl_->Animate(base::TimeTicks(), base::Time()); | 5992 host_impl_->Animate(base::TimeTicks(), base::Time()); |
5987 EXPECT_FALSE(did_request_redraw_); | 5993 EXPECT_FALSE(did_request_redraw_); |
5988 } | 5994 } |
5989 | 5995 |
| 5996 TEST_F(LayerTreeHostImplWithTopControlsTest, ScrollHandledByTopControls) { |
| 5997 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 200)); |
| 5998 host_impl_->SetViewportSize(gfx::Size(100, 100)); |
| 5999 DrawFrame(); |
| 6000 |
| 6001 EXPECT_EQ(InputHandler::ScrollStarted, |
| 6002 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture)); |
| 6003 EXPECT_EQ(0, host_impl_->top_controls_manager()->controls_top_offset()); |
| 6004 EXPECT_EQ(gfx::Vector2dF().ToString(), |
| 6005 scroll_layer->TotalScrollOffset().ToString()); |
| 6006 |
| 6007 // Scroll just the top controls and verify that the scroll succeeds. |
| 6008 const float residue = 10; |
| 6009 float offset = top_controls_height_ - residue; |
| 6010 EXPECT_TRUE(host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, offset))); |
| 6011 EXPECT_EQ(-offset, host_impl_->top_controls_manager()->controls_top_offset()); |
| 6012 EXPECT_EQ(gfx::Vector2dF().ToString(), |
| 6013 scroll_layer->TotalScrollOffset().ToString()); |
| 6014 |
| 6015 // Scroll across the boundary |
| 6016 const float content_scroll = 20; |
| 6017 offset = residue + content_scroll; |
| 6018 EXPECT_TRUE(host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, offset))); |
| 6019 EXPECT_EQ(-top_controls_height_, |
| 6020 host_impl_->top_controls_manager()->controls_top_offset()); |
| 6021 EXPECT_EQ(gfx::Vector2dF(0, content_scroll).ToString(), |
| 6022 scroll_layer->TotalScrollOffset().ToString()); |
| 6023 |
| 6024 // Now scroll back to the top of the content |
| 6025 offset = -content_scroll; |
| 6026 EXPECT_TRUE(host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, offset))); |
| 6027 EXPECT_EQ(-top_controls_height_, |
| 6028 host_impl_->top_controls_manager()->controls_top_offset()); |
| 6029 EXPECT_EQ(gfx::Vector2dF().ToString(), |
| 6030 scroll_layer->TotalScrollOffset().ToString()); |
| 6031 |
| 6032 // And scroll the top controls completely into view |
| 6033 offset = -top_controls_height_; |
| 6034 EXPECT_TRUE(host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, offset))); |
| 6035 EXPECT_EQ(0, host_impl_->top_controls_manager()->controls_top_offset()); |
| 6036 EXPECT_EQ(gfx::Vector2dF().ToString(), |
| 6037 scroll_layer->TotalScrollOffset().ToString()); |
| 6038 |
| 6039 // And attempt to scroll past the end |
| 6040 EXPECT_FALSE(host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, offset))); |
| 6041 EXPECT_EQ(0, host_impl_->top_controls_manager()->controls_top_offset()); |
| 6042 EXPECT_EQ(gfx::Vector2dF().ToString(), |
| 6043 scroll_layer->TotalScrollOffset().ToString()); |
| 6044 |
| 6045 host_impl_->ScrollEnd(); |
| 6046 } |
| 6047 |
5990 class LayerTreeHostImplVirtualViewportTest : public LayerTreeHostImplTest { | 6048 class LayerTreeHostImplVirtualViewportTest : public LayerTreeHostImplTest { |
5991 public: | 6049 public: |
5992 void SetupVirtualViewportLayers(const gfx::Size& content_size, | 6050 void SetupVirtualViewportLayers(const gfx::Size& content_size, |
5993 const gfx::Size& outer_viewport, | 6051 const gfx::Size& outer_viewport, |
5994 const gfx::Size& inner_viewport) { | 6052 const gfx::Size& inner_viewport) { |
5995 LayerTreeImpl* layer_tree_impl = host_impl_->active_tree(); | 6053 LayerTreeImpl* layer_tree_impl = host_impl_->active_tree(); |
5996 const int kOuterViewportClipLayerId = 6; | 6054 const int kOuterViewportClipLayerId = 6; |
5997 const int kOuterViewportScrollLayerId = 7; | 6055 const int kOuterViewportScrollLayerId = 7; |
5998 const int kInnerViewportScrollLayerId = 2; | 6056 const int kInnerViewportScrollLayerId = 2; |
5999 const int kInnerViewportClipLayerId = 4; | 6057 const int kInnerViewportClipLayerId = 4; |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6121 EXPECT_EQ(host_impl_->global_tile_state().hard_memory_limit_in_bytes, | 6179 EXPECT_EQ(host_impl_->global_tile_state().hard_memory_limit_in_bytes, |
6122 300u * 1024u * 1024u); | 6180 300u * 1024u * 1024u); |
6123 EXPECT_EQ(host_impl_->global_tile_state().soft_memory_limit_in_bytes, | 6181 EXPECT_EQ(host_impl_->global_tile_state().soft_memory_limit_in_bytes, |
6124 150u * 1024u * 1024u); | 6182 150u * 1024u * 1024u); |
6125 EXPECT_EQ(host_impl_->global_tile_state().unused_memory_limit_in_bytes, | 6183 EXPECT_EQ(host_impl_->global_tile_state().unused_memory_limit_in_bytes, |
6126 75u * 1024u * 1024u); | 6184 75u * 1024u * 1024u); |
6127 } | 6185 } |
6128 | 6186 |
6129 } // namespace | 6187 } // namespace |
6130 } // namespace cc | 6188 } // namespace cc |
OLD | NEW |