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 <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <cmath> | 10 #include <cmath> |
(...skipping 5223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
5234 wheel_scroll_delta)); | 5234 wheel_scroll_delta)); |
5235 } | 5235 } |
5236 | 5236 |
5237 TEST_F(LayerTreeHostImplTest, ScrollViewportRounding) { | 5237 TEST_F(LayerTreeHostImplTest, ScrollViewportRounding) { |
5238 int width = 332; | 5238 int width = 332; |
5239 int height = 20; | 5239 int height = 20; |
5240 int scale = 3; | 5240 int scale = 3; |
5241 SetupScrollAndContentsLayers(gfx::Size(width, height)); | 5241 SetupScrollAndContentsLayers(gfx::Size(width, height)); |
5242 host_impl_->active_tree()->InnerViewportContainerLayer()->SetBounds( | 5242 host_impl_->active_tree()->InnerViewportContainerLayer()->SetBounds( |
5243 gfx::Size(width * scale - 1, height * scale)); | 5243 gfx::Size(width * scale - 1, height * scale)); |
5244 RebuildPropertyTrees(); | |
5244 host_impl_->active_tree()->SetDeviceScaleFactor(scale); | 5245 host_impl_->active_tree()->SetDeviceScaleFactor(scale); |
5245 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 0.5f, 4.f); | 5246 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 0.5f, 4.f); |
5246 | 5247 |
5247 LayerImpl* inner_viewport_scroll_layer = | 5248 LayerImpl* inner_viewport_scroll_layer = |
5248 host_impl_->active_tree()->InnerViewportScrollLayer(); | 5249 host_impl_->active_tree()->InnerViewportScrollLayer(); |
5249 EXPECT_EQ(gfx::ScrollOffset(0, 0), | 5250 EXPECT_EQ(gfx::ScrollOffset(0, 0), |
5250 inner_viewport_scroll_layer->MaxScrollOffset()); | 5251 inner_viewport_scroll_layer->MaxScrollOffset()); |
5251 } | 5252 } |
5252 | 5253 |
5253 class TestInputHandlerClient : public InputHandlerClient { | 5254 class TestInputHandlerClient : public InputHandlerClient { |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
5312 float min_page_scale_factor_; | 5313 float min_page_scale_factor_; |
5313 float max_page_scale_factor_; | 5314 float max_page_scale_factor_; |
5314 }; | 5315 }; |
5315 | 5316 |
5316 TEST_F(LayerTreeHostImplTest, RootLayerScrollOffsetDelegation) { | 5317 TEST_F(LayerTreeHostImplTest, RootLayerScrollOffsetDelegation) { |
5317 TestInputHandlerClient scroll_watcher; | 5318 TestInputHandlerClient scroll_watcher; |
5318 host_impl_->SetViewportSize(gfx::Size(10, 20)); | 5319 host_impl_->SetViewportSize(gfx::Size(10, 20)); |
5319 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 100)); | 5320 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 100)); |
5320 LayerImpl* clip_layer = scroll_layer->parent()->parent(); | 5321 LayerImpl* clip_layer = scroll_layer->parent()->parent(); |
5321 clip_layer->SetBounds(gfx::Size(10, 20)); | 5322 clip_layer->SetBounds(gfx::Size(10, 20)); |
5323 RebuildPropertyTrees(); | |
5322 | 5324 |
5323 host_impl_->BindToClient(&scroll_watcher); | 5325 host_impl_->BindToClient(&scroll_watcher); |
5324 | 5326 |
5325 gfx::Vector2dF initial_scroll_delta(10.f, 10.f); | 5327 gfx::Vector2dF initial_scroll_delta(10.f, 10.f); |
5326 scroll_layer->PushScrollOffsetFromMainThread(gfx::ScrollOffset()); | 5328 scroll_layer->PushScrollOffsetFromMainThread(gfx::ScrollOffset()); |
5327 scroll_layer->SetScrollDelta(initial_scroll_delta); | 5329 scroll_layer->SetScrollDelta(initial_scroll_delta); |
5328 | 5330 |
5329 EXPECT_EQ(gfx::ScrollOffset(), scroll_watcher.last_set_scroll_offset()); | 5331 EXPECT_EQ(gfx::ScrollOffset(), scroll_watcher.last_set_scroll_offset()); |
5330 | 5332 |
5331 // Requesting an update results in the current scroll offset being set. | 5333 // Requesting an update results in the current scroll offset being set. |
(...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
5682 } | 5684 } |
5683 | 5685 |
5684 TEST_F(LayerTreeHostImplTest, OverscrollAlways) { | 5686 TEST_F(LayerTreeHostImplTest, OverscrollAlways) { |
5685 InputHandlerScrollResult scroll_result; | 5687 InputHandlerScrollResult scroll_result; |
5686 LayerTreeSettings settings = DefaultSettings(); | 5688 LayerTreeSettings settings = DefaultSettings(); |
5687 CreateHostImpl(settings, CreateOutputSurface()); | 5689 CreateHostImpl(settings, CreateOutputSurface()); |
5688 | 5690 |
5689 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(50, 50)); | 5691 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(50, 50)); |
5690 LayerImpl* clip_layer = scroll_layer->parent()->parent(); | 5692 LayerImpl* clip_layer = scroll_layer->parent()->parent(); |
5691 clip_layer->SetBounds(gfx::Size(50, 50)); | 5693 clip_layer->SetBounds(gfx::Size(50, 50)); |
5694 RebuildPropertyTrees(); | |
5692 host_impl_->SetViewportSize(gfx::Size(50, 50)); | 5695 host_impl_->SetViewportSize(gfx::Size(50, 50)); |
5693 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 0.5f, 4.f); | 5696 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 0.5f, 4.f); |
5694 DrawFrame(); | 5697 DrawFrame(); |
5695 EXPECT_EQ(gfx::Vector2dF(), host_impl_->accumulated_root_overscroll()); | 5698 EXPECT_EQ(gfx::Vector2dF(), host_impl_->accumulated_root_overscroll()); |
5696 | 5699 |
5697 // Even though the layer can't scroll the overscroll still happens. | 5700 // Even though the layer can't scroll the overscroll still happens. |
5698 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, | 5701 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, |
5699 host_impl_->ScrollBegin(BeginState(gfx::Point()).get(), | 5702 host_impl_->ScrollBegin(BeginState(gfx::Point()).get(), |
5700 InputHandler::WHEEL) | 5703 InputHandler::WHEEL) |
5701 .thread); | 5704 .thread); |
(...skipping 2701 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
8403 EXPECT_EQ(-top_controls_height_, | 8406 EXPECT_EQ(-top_controls_height_, |
8404 host_impl_->top_controls_manager()->ControlsTopOffset()); | 8407 host_impl_->top_controls_manager()->ControlsTopOffset()); |
8405 } | 8408 } |
8406 | 8409 |
8407 TEST_F(LayerTreeHostImplWithTopControlsTest, | 8410 TEST_F(LayerTreeHostImplWithTopControlsTest, |
8408 TopControlsScrollDeltaInOverScroll) { | 8411 TopControlsScrollDeltaInOverScroll) { |
8409 // Verifies that the overscroll delta should not have accumulated in | 8412 // Verifies that the overscroll delta should not have accumulated in |
8410 // the top controls if we do a hide and show without releasing finger. | 8413 // the top controls if we do a hide and show without releasing finger. |
8411 | 8414 |
8412 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 200)); | 8415 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 200)); |
8413 host_impl_->SetViewportSize(gfx::Size(100, 100)); | 8416 host_impl_->SetViewportSize(gfx::Size(100, 100)); |
ajuma
2016/02/09 22:35:05
If you build property trees here, you shouldn't ne
sunxd
2016/02/10 16:56:36
DrawFrame() forces a rebuild of property trees her
ajuma
2016/02/10 17:54:58
How about making a version of DrawFrame that doesn
| |
8414 host_impl_->top_controls_manager()->UpdateTopControlsState(BOTH, SHOWN, | 8417 host_impl_->top_controls_manager()->UpdateTopControlsState(BOTH, SHOWN, |
8415 false); | 8418 false); |
8419 | |
8420 LayerImpl* inner_clip_layer = scroll_layer->scroll_clip_layer(); | |
8421 LayerImpl* outer_clip_layer = host_impl_->active_tree() | |
8422 ->OuterViewportScrollLayer() | |
8423 ->scroll_clip_layer(); | |
8424 | |
8425 gfx::Vector2dF scroll_bounds_delta = scroll_layer->bounds_delta(); | |
8426 scroll_layer->SetBoundsDelta(gfx::Vector2dF()); | |
8427 | |
8428 gfx::Vector2dF inner_clip_bounds_delta = inner_clip_layer->bounds_delta(); | |
8429 inner_clip_layer->SetBoundsDelta(gfx::Vector2dF()); | |
8430 | |
8431 gfx::Vector2dF outer_clip_bounds_delta = outer_clip_layer->bounds_delta(); | |
8432 outer_clip_layer->SetBoundsDelta(gfx::Vector2dF()); | |
8433 | |
8416 DrawFrame(); | 8434 DrawFrame(); |
8417 | 8435 |
8436 scroll_layer->SetBoundsDelta(scroll_bounds_delta); | |
8437 inner_clip_layer->SetBoundsDelta(inner_clip_bounds_delta); | |
8438 outer_clip_layer->SetBoundsDelta(outer_clip_bounds_delta); | |
8439 | |
8418 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, | 8440 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, |
8419 host_impl_->ScrollBegin(BeginState(gfx::Point()).get(), | 8441 host_impl_->ScrollBegin(BeginState(gfx::Point()).get(), |
8420 InputHandler::GESTURE) | 8442 InputHandler::GESTURE) |
8421 .thread); | 8443 .thread); |
8422 EXPECT_EQ(0, host_impl_->top_controls_manager()->ControlsTopOffset()); | 8444 EXPECT_EQ(0, host_impl_->top_controls_manager()->ControlsTopOffset()); |
8423 | 8445 |
8424 float offset = 50; | 8446 float offset = 50; |
8425 EXPECT_TRUE( | 8447 EXPECT_TRUE( |
8426 host_impl_->ScrollBy( | 8448 host_impl_->ScrollBy( |
8427 UpdateState(gfx::Point(), gfx::Vector2d(0, offset)).get()) | 8449 UpdateState(gfx::Point(), gfx::Vector2d(0, offset)).get()) |
(...skipping 1467 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
9895 host_impl_->ActivateSyncTree(); | 9917 host_impl_->ActivateSyncTree(); |
9896 DrawFrame(); | 9918 DrawFrame(); |
9897 | 9919 |
9898 host_impl_->CreatePendingTree(); | 9920 host_impl_->CreatePendingTree(); |
9899 host_impl_->active_tree()->SetPageScaleOnActiveTree(2.f); | 9921 host_impl_->active_tree()->SetPageScaleOnActiveTree(2.f); |
9900 LayerImpl* page_scale_layer = host_impl_->active_tree()->PageScaleLayer(); | 9922 LayerImpl* page_scale_layer = host_impl_->active_tree()->PageScaleLayer(); |
9901 | 9923 |
9902 TransformNode* active_tree_node = | 9924 TransformNode* active_tree_node = |
9903 host_impl_->active_tree()->property_trees()->transform_tree.Node( | 9925 host_impl_->active_tree()->property_trees()->transform_tree.Node( |
9904 page_scale_layer->transform_tree_index()); | 9926 page_scale_layer->transform_tree_index()); |
9905 EXPECT_EQ(active_tree_node->data.post_local_scale_factor, 1.f); | 9927 // SetPageScaleOnActiveTree also updates the factors in property trees. |
9928 EXPECT_EQ(active_tree_node->data.post_local_scale_factor, 2.f); | |
9906 EXPECT_EQ(host_impl_->active_tree()->current_page_scale_factor(), 2.f); | 9929 EXPECT_EQ(host_impl_->active_tree()->current_page_scale_factor(), 2.f); |
9907 | 9930 |
9908 TransformNode* pending_tree_node = | 9931 TransformNode* pending_tree_node = |
9909 host_impl_->pending_tree()->property_trees()->transform_tree.Node( | 9932 host_impl_->pending_tree()->property_trees()->transform_tree.Node( |
9910 page_scale_layer->transform_tree_index()); | 9933 page_scale_layer->transform_tree_index()); |
9911 EXPECT_EQ(pending_tree_node->data.post_local_scale_factor, 1.f); | 9934 EXPECT_EQ(pending_tree_node->data.post_local_scale_factor, 1.f); |
9912 EXPECT_EQ(host_impl_->pending_tree()->current_page_scale_factor(), 2.f); | 9935 EXPECT_EQ(host_impl_->pending_tree()->current_page_scale_factor(), 2.f); |
9913 | 9936 |
9914 host_impl_->pending_tree()->UpdateDrawProperties(false); | 9937 host_impl_->pending_tree()->UpdateDrawProperties(false); |
9915 pending_tree_node = | 9938 pending_tree_node = |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
9997 // There should not be any jitter measured till we hit the fixed point hits | 10020 // There should not be any jitter measured till we hit the fixed point hits |
9998 // threshold. | 10021 // threshold. |
9999 float expected_jitter = | 10022 float expected_jitter = |
10000 (i == pending_tree->kFixedPointHitsThreshold) ? 500 : 0; | 10023 (i == pending_tree->kFixedPointHitsThreshold) ? 500 : 0; |
10001 EXPECT_EQ(jitter, expected_jitter); | 10024 EXPECT_EQ(jitter, expected_jitter); |
10002 } | 10025 } |
10003 } | 10026 } |
10004 | 10027 |
10005 } // namespace | 10028 } // namespace |
10006 } // namespace cc | 10029 } // namespace cc |
OLD | NEW |