| 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 2852 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2863 DrawFrame(); | 2863 DrawFrame(); |
| 2864 | 2864 |
| 2865 // SetScrollLayerId will initialize the scrollbar which will cause it to | 2865 // SetScrollLayerId will initialize the scrollbar which will cause it to |
| 2866 // show and request a redraw. | 2866 // show and request a redraw. |
| 2867 did_request_redraw_ = false; | 2867 did_request_redraw_ = false; |
| 2868 } | 2868 } |
| 2869 | 2869 |
| 2870 void RunTest(LayerTreeSettings::ScrollbarAnimator animator) { | 2870 void RunTest(LayerTreeSettings::ScrollbarAnimator animator) { |
| 2871 LayerTreeSettings settings = DefaultSettings(); | 2871 LayerTreeSettings settings = DefaultSettings(); |
| 2872 settings.scrollbar_animator = animator; | 2872 settings.scrollbar_animator = animator; |
| 2873 settings.scrollbar_show_delay = base::TimeDelta::FromMilliseconds(20); | 2873 settings.scrollbar_fade_in_delay = base::TimeDelta::FromMilliseconds(20); |
| 2874 settings.scrollbar_fade_out_delay = base::TimeDelta::FromMilliseconds(20); | 2874 settings.scrollbar_fade_out_delay = base::TimeDelta::FromMilliseconds(20); |
| 2875 settings.scrollbar_fade_out_resize_delay = | 2875 settings.scrollbar_fade_out_resize_delay = |
| 2876 base::TimeDelta::FromMilliseconds(20); | 2876 base::TimeDelta::FromMilliseconds(20); |
| 2877 settings.scrollbar_fade_in_duration = base::TimeDelta::FromMilliseconds(20); |
| 2877 settings.scrollbar_fade_out_duration = | 2878 settings.scrollbar_fade_out_duration = |
| 2878 base::TimeDelta::FromMilliseconds(20); | 2879 base::TimeDelta::FromMilliseconds(20); |
| 2879 | 2880 |
| 2880 // If no animator is set, scrollbar won't show and no animation is expected. | 2881 // If no animator is set, scrollbar won't show and no animation is expected. |
| 2881 bool expecting_animations = animator != LayerTreeSettings::NO_ANIMATOR; | 2882 bool expecting_animations = animator != LayerTreeSettings::NO_ANIMATOR; |
| 2882 | 2883 |
| 2883 SetupLayers(settings); | 2884 SetupLayers(settings); |
| 2884 | 2885 |
| 2885 base::TimeTicks fake_now = base::TimeTicks::Now(); | 2886 base::TimeTicks fake_now = base::TimeTicks::Now(); |
| 2886 | 2887 |
| (...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3087 | 3088 |
| 3088 TEST_F(LayerTreeHostImplTestScrollbarAnimation, NoAnimator) { | 3089 TEST_F(LayerTreeHostImplTestScrollbarAnimation, NoAnimator) { |
| 3089 RunTest(LayerTreeSettings::NO_ANIMATOR); | 3090 RunTest(LayerTreeSettings::NO_ANIMATOR); |
| 3090 } | 3091 } |
| 3091 | 3092 |
| 3092 class LayerTreeHostImplTestScrollbarOpacity : public LayerTreeHostImplTest { | 3093 class LayerTreeHostImplTestScrollbarOpacity : public LayerTreeHostImplTest { |
| 3093 protected: | 3094 protected: |
| 3094 void RunTest(LayerTreeSettings::ScrollbarAnimator animator) { | 3095 void RunTest(LayerTreeSettings::ScrollbarAnimator animator) { |
| 3095 LayerTreeSettings settings = DefaultSettings(); | 3096 LayerTreeSettings settings = DefaultSettings(); |
| 3096 settings.scrollbar_animator = animator; | 3097 settings.scrollbar_animator = animator; |
| 3097 settings.scrollbar_show_delay = base::TimeDelta::FromMilliseconds(20); | 3098 settings.scrollbar_fade_in_delay = base::TimeDelta::FromMilliseconds(20); |
| 3098 settings.scrollbar_fade_out_delay = base::TimeDelta::FromMilliseconds(20); | 3099 settings.scrollbar_fade_out_delay = base::TimeDelta::FromMilliseconds(20); |
| 3100 settings.scrollbar_fade_in_duration = base::TimeDelta::FromMilliseconds(20); |
| 3099 settings.scrollbar_fade_out_duration = | 3101 settings.scrollbar_fade_out_duration = |
| 3100 base::TimeDelta::FromMilliseconds(20); | 3102 base::TimeDelta::FromMilliseconds(20); |
| 3101 gfx::Size content_size(100, 100); | 3103 gfx::Size content_size(100, 100); |
| 3102 | 3104 |
| 3103 // If no animator is set, scrollbar won't show and no animation is expected. | 3105 // If no animator is set, scrollbar won't show and no animation is expected. |
| 3104 bool expecting_animations = animator != LayerTreeSettings::NO_ANIMATOR; | 3106 bool expecting_animations = animator != LayerTreeSettings::NO_ANIMATOR; |
| 3105 | 3107 |
| 3106 CreateHostImpl(settings, CreateCompositorFrameSink()); | 3108 CreateHostImpl(settings, CreateCompositorFrameSink()); |
| 3107 host_impl_->CreatePendingTree(); | 3109 host_impl_->CreatePendingTree(); |
| 3108 CreateScrollAndContentsLayers(host_impl_->pending_tree(), content_size); | 3110 CreateScrollAndContentsLayers(host_impl_->pending_tree(), content_size); |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3186 RunTest(LayerTreeSettings::AURA_OVERLAY); | 3188 RunTest(LayerTreeSettings::AURA_OVERLAY); |
| 3187 } | 3189 } |
| 3188 | 3190 |
| 3189 TEST_F(LayerTreeHostImplTestScrollbarOpacity, NoAnimator) { | 3191 TEST_F(LayerTreeHostImplTestScrollbarOpacity, NoAnimator) { |
| 3190 RunTest(LayerTreeSettings::NO_ANIMATOR); | 3192 RunTest(LayerTreeSettings::NO_ANIMATOR); |
| 3191 } | 3193 } |
| 3192 | 3194 |
| 3193 TEST_F(LayerTreeHostImplTest, ScrollbarVisibilityChangeCausesRedrawAndCommit) { | 3195 TEST_F(LayerTreeHostImplTest, ScrollbarVisibilityChangeCausesRedrawAndCommit) { |
| 3194 LayerTreeSettings settings = DefaultSettings(); | 3196 LayerTreeSettings settings = DefaultSettings(); |
| 3195 settings.scrollbar_animator = LayerTreeSettings::AURA_OVERLAY; | 3197 settings.scrollbar_animator = LayerTreeSettings::AURA_OVERLAY; |
| 3196 settings.scrollbar_show_delay = base::TimeDelta::FromMilliseconds(20); | 3198 settings.scrollbar_fade_in_delay = base::TimeDelta::FromMilliseconds(20); |
| 3197 settings.scrollbar_fade_out_delay = base::TimeDelta::FromMilliseconds(20); | 3199 settings.scrollbar_fade_out_delay = base::TimeDelta::FromMilliseconds(20); |
| 3200 settings.scrollbar_fade_in_duration = base::TimeDelta::FromMilliseconds(20); |
| 3198 settings.scrollbar_fade_out_duration = base::TimeDelta::FromMilliseconds(20); | 3201 settings.scrollbar_fade_out_duration = base::TimeDelta::FromMilliseconds(20); |
| 3199 gfx::Size content_size(100, 100); | 3202 gfx::Size content_size(100, 100); |
| 3200 | 3203 |
| 3201 CreateHostImpl(settings, CreateCompositorFrameSink()); | 3204 CreateHostImpl(settings, CreateCompositorFrameSink()); |
| 3202 host_impl_->CreatePendingTree(); | 3205 host_impl_->CreatePendingTree(); |
| 3203 CreateScrollAndContentsLayers(host_impl_->pending_tree(), content_size); | 3206 CreateScrollAndContentsLayers(host_impl_->pending_tree(), content_size); |
| 3204 std::unique_ptr<SolidColorScrollbarLayerImpl> scrollbar = | 3207 std::unique_ptr<SolidColorScrollbarLayerImpl> scrollbar = |
| 3205 SolidColorScrollbarLayerImpl::Create(host_impl_->pending_tree(), 400, | 3208 SolidColorScrollbarLayerImpl::Create(host_impl_->pending_tree(), 400, |
| 3206 VERTICAL, 10, 0, false, true); | 3209 VERTICAL, 10, 0, false, true); |
| 3207 scrollbar->test_properties()->opacity = 0.f; | 3210 scrollbar->test_properties()->opacity = 0.f; |
| (...skipping 17 matching lines...) Expand all Loading... |
| 3225 animation_task_.Run(); | 3228 animation_task_.Run(); |
| 3226 | 3229 |
| 3227 base::TimeTicks fake_now = base::TimeTicks::Now(); | 3230 base::TimeTicks fake_now = base::TimeTicks::Now(); |
| 3228 scrollbar_controller->Animate(fake_now); | 3231 scrollbar_controller->Animate(fake_now); |
| 3229 fake_now += settings.scrollbar_fade_out_delay; | 3232 fake_now += settings.scrollbar_fade_out_delay; |
| 3230 scrollbar_controller->Animate(fake_now); | 3233 scrollbar_controller->Animate(fake_now); |
| 3231 | 3234 |
| 3232 ASSERT_TRUE(scrollbar_controller->ScrollbarsHidden()); | 3235 ASSERT_TRUE(scrollbar_controller->ScrollbarsHidden()); |
| 3233 } | 3236 } |
| 3234 | 3237 |
| 3235 // Move the mouse over the scrollbar region. This should post a delayed show | 3238 // Move the mouse over the scrollbar region. This should post a delayed fade |
| 3236 // task. Execute it to show the scrollbars. | 3239 // in task. Execute it to show the scrollbars. |
| 3237 { | 3240 { |
| 3238 animation_task_ = base::Closure(); | 3241 animation_task_ = base::Closure(); |
| 3239 scrollbar_controller->DidMouseMoveNear(VERTICAL, 0); | 3242 scrollbar_controller->DidMouseMoveNear(VERTICAL, 0); |
| 3240 ASSERT_FALSE(animation_task_.Equals(base::Closure())); | 3243 ASSERT_FALSE(animation_task_.Equals(base::Closure())); |
| 3241 ASSERT_FALSE(animation_task_.IsCancelled()); | 3244 ASSERT_FALSE(animation_task_.IsCancelled()); |
| 3242 } | 3245 } |
| 3243 | 3246 |
| 3244 // The show task should cause the scrollbars to show. Ensure that we | 3247 // The fade in task should cause the scrollbars to show. Ensure that we |
| 3245 // requested a redraw and a commit. | 3248 // requested a redraw and a commit. |
| 3246 { | 3249 { |
| 3247 did_request_redraw_ = false; | 3250 did_request_redraw_ = false; |
| 3248 did_request_commit_ = false; | 3251 did_request_commit_ = false; |
| 3249 ASSERT_TRUE(scrollbar_controller->ScrollbarsHidden()); | 3252 ASSERT_TRUE(scrollbar_controller->ScrollbarsHidden()); |
| 3250 animation_task_.Run(); | 3253 animation_task_.Run(); |
| 3254 |
| 3255 base::TimeTicks fake_now = base::TimeTicks::Now(); |
| 3256 scrollbar_controller->Animate(fake_now); |
| 3257 fake_now += settings.scrollbar_fade_in_duration; |
| 3258 scrollbar_controller->Animate(fake_now); |
| 3259 |
| 3251 ASSERT_FALSE(scrollbar_controller->ScrollbarsHidden()); | 3260 ASSERT_FALSE(scrollbar_controller->ScrollbarsHidden()); |
| 3252 EXPECT_TRUE(did_request_redraw_); | 3261 EXPECT_TRUE(did_request_redraw_); |
| 3253 EXPECT_TRUE(did_request_commit_); | 3262 EXPECT_TRUE(did_request_commit_); |
| 3254 } | 3263 } |
| 3255 } | 3264 } |
| 3256 | 3265 |
| 3257 TEST_F(LayerTreeHostImplTest, ScrollbarInnerLargerThanOuter) { | 3266 TEST_F(LayerTreeHostImplTest, ScrollbarInnerLargerThanOuter) { |
| 3258 LayerTreeSettings settings = DefaultSettings(); | 3267 LayerTreeSettings settings = DefaultSettings(); |
| 3259 CreateHostImpl(settings, CreateCompositorFrameSink()); | 3268 CreateHostImpl(settings, CreateCompositorFrameSink()); |
| 3260 | 3269 |
| (...skipping 23 matching lines...) Expand all Loading... |
| 3284 child->SetBounds(inner_viewport_size); | 3293 child->SetBounds(inner_viewport_size); |
| 3285 | 3294 |
| 3286 horiz_scrollbar->SetScrollLayerId(root_scroll->id()); | 3295 horiz_scrollbar->SetScrollLayerId(root_scroll->id()); |
| 3287 | 3296 |
| 3288 EXPECT_EQ(300, horiz_scrollbar->clip_layer_length()); | 3297 EXPECT_EQ(300, horiz_scrollbar->clip_layer_length()); |
| 3289 } | 3298 } |
| 3290 | 3299 |
| 3291 TEST_F(LayerTreeHostImplTest, ScrollbarRegistration) { | 3300 TEST_F(LayerTreeHostImplTest, ScrollbarRegistration) { |
| 3292 LayerTreeSettings settings = DefaultSettings(); | 3301 LayerTreeSettings settings = DefaultSettings(); |
| 3293 settings.scrollbar_animator = LayerTreeSettings::ANDROID_OVERLAY; | 3302 settings.scrollbar_animator = LayerTreeSettings::ANDROID_OVERLAY; |
| 3294 settings.scrollbar_show_delay = base::TimeDelta::FromMilliseconds(20); | 3303 settings.scrollbar_fade_in_delay = base::TimeDelta::FromMilliseconds(20); |
| 3295 settings.scrollbar_fade_out_delay = base::TimeDelta::FromMilliseconds(20); | 3304 settings.scrollbar_fade_out_delay = base::TimeDelta::FromMilliseconds(20); |
| 3305 settings.scrollbar_fade_in_duration = base::TimeDelta::FromMilliseconds(20); |
| 3296 settings.scrollbar_fade_out_duration = base::TimeDelta::FromMilliseconds(20); | 3306 settings.scrollbar_fade_out_duration = base::TimeDelta::FromMilliseconds(20); |
| 3297 CreateHostImpl(settings, CreateCompositorFrameSink()); | 3307 CreateHostImpl(settings, CreateCompositorFrameSink()); |
| 3298 | 3308 |
| 3299 gfx::Size viewport_size(300, 200); | 3309 gfx::Size viewport_size(300, 200); |
| 3300 gfx::Size content_size(1000, 1000); | 3310 gfx::Size content_size(1000, 1000); |
| 3301 | 3311 |
| 3302 const int vert_1_id = 10; | 3312 const int vert_1_id = 10; |
| 3303 const int horiz_1_id = 11; | 3313 const int horiz_1_id = 11; |
| 3304 const int vert_2_id = 12; | 3314 const int vert_2_id = 12; |
| 3305 const int horiz_2_id = 13; | 3315 const int horiz_2_id = 13; |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3406 host_impl_->active_tree()->InnerViewportScrollLayer()->SetCurrentScrollOffset( | 3416 host_impl_->active_tree()->InnerViewportScrollLayer()->SetCurrentScrollOffset( |
| 3407 gfx::ScrollOffset(20, 20)); | 3417 gfx::ScrollOffset(20, 20)); |
| 3408 EXPECT_TRUE(animation_task_.Equals(base::Closure())); | 3418 EXPECT_TRUE(animation_task_.Equals(base::Closure())); |
| 3409 child_ptr->SetCurrentScrollOffset(gfx::ScrollOffset(20, 20)); | 3419 child_ptr->SetCurrentScrollOffset(gfx::ScrollOffset(20, 20)); |
| 3410 EXPECT_TRUE(animation_task_.Equals(base::Closure())); | 3420 EXPECT_TRUE(animation_task_.Equals(base::Closure())); |
| 3411 } | 3421 } |
| 3412 | 3422 |
| 3413 void LayerTreeHostImplTest::SetupMouseMoveAtWithDeviceScale( | 3423 void LayerTreeHostImplTest::SetupMouseMoveAtWithDeviceScale( |
| 3414 float device_scale_factor) { | 3424 float device_scale_factor) { |
| 3415 LayerTreeSettings settings = DefaultSettings(); | 3425 LayerTreeSettings settings = DefaultSettings(); |
| 3416 settings.scrollbar_show_delay = base::TimeDelta::FromMilliseconds(500); | 3426 settings.scrollbar_fade_in_delay = base::TimeDelta::FromMilliseconds(500); |
| 3417 settings.scrollbar_fade_out_delay = base::TimeDelta::FromMilliseconds(500); | 3427 settings.scrollbar_fade_out_delay = base::TimeDelta::FromMilliseconds(500); |
| 3428 settings.scrollbar_fade_in_duration = base::TimeDelta::FromMilliseconds(500); |
| 3418 settings.scrollbar_fade_out_duration = base::TimeDelta::FromMilliseconds(300); | 3429 settings.scrollbar_fade_out_duration = base::TimeDelta::FromMilliseconds(300); |
| 3419 settings.scrollbar_animator = LayerTreeSettings::AURA_OVERLAY; | 3430 settings.scrollbar_animator = LayerTreeSettings::AURA_OVERLAY; |
| 3420 | 3431 |
| 3421 gfx::Size viewport_size(300, 200); | 3432 gfx::Size viewport_size(300, 200); |
| 3422 gfx::Size device_viewport_size = | 3433 gfx::Size device_viewport_size = |
| 3423 gfx::ScaleToFlooredSize(viewport_size, device_scale_factor); | 3434 gfx::ScaleToFlooredSize(viewport_size, device_scale_factor); |
| 3424 gfx::Size content_size(1000, 1000); | 3435 gfx::Size content_size(1000, 1000); |
| 3425 gfx::Size scrollbar_size(gfx::Size(15, viewport_size.height())); | 3436 gfx::Size scrollbar_size(gfx::Size(15, viewport_size.height())); |
| 3426 | 3437 |
| 3427 CreateHostImpl(settings, CreateCompositorFrameSink()); | 3438 CreateHostImpl(settings, CreateCompositorFrameSink()); |
| (...skipping 8597 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 12025 | 12036 |
| 12026 // Re-initialize with a software output surface. | 12037 // Re-initialize with a software output surface. |
| 12027 compositor_frame_sink_ = FakeCompositorFrameSink::CreateSoftware(); | 12038 compositor_frame_sink_ = FakeCompositorFrameSink::CreateSoftware(); |
| 12028 host_impl_->InitializeRenderer(compositor_frame_sink_.get()); | 12039 host_impl_->InitializeRenderer(compositor_frame_sink_.get()); |
| 12029 EXPECT_FALSE(host_impl_->use_gpu_rasterization()); | 12040 EXPECT_FALSE(host_impl_->use_gpu_rasterization()); |
| 12030 } | 12041 } |
| 12031 | 12042 |
| 12032 void LayerTreeHostImplTest::SetupMouseMoveAtTestScrollbarStates( | 12043 void LayerTreeHostImplTest::SetupMouseMoveAtTestScrollbarStates( |
| 12033 bool main_thread_scrolling) { | 12044 bool main_thread_scrolling) { |
| 12034 LayerTreeSettings settings = DefaultSettings(); | 12045 LayerTreeSettings settings = DefaultSettings(); |
| 12035 settings.scrollbar_show_delay = base::TimeDelta::FromMilliseconds(500); | 12046 settings.scrollbar_fade_in_delay = base::TimeDelta::FromMilliseconds(500); |
| 12036 settings.scrollbar_fade_out_delay = base::TimeDelta::FromMilliseconds(500); | 12047 settings.scrollbar_fade_out_delay = base::TimeDelta::FromMilliseconds(500); |
| 12048 settings.scrollbar_fade_in_duration = base::TimeDelta::FromMilliseconds(500); |
| 12037 settings.scrollbar_fade_out_duration = base::TimeDelta::FromMilliseconds(300); | 12049 settings.scrollbar_fade_out_duration = base::TimeDelta::FromMilliseconds(300); |
| 12038 settings.scrollbar_animator = LayerTreeSettings::AURA_OVERLAY; | 12050 settings.scrollbar_animator = LayerTreeSettings::AURA_OVERLAY; |
| 12039 | 12051 |
| 12040 gfx::Size viewport_size(300, 200); | 12052 gfx::Size viewport_size(300, 200); |
| 12041 gfx::Size content_size(1000, 1000); | 12053 gfx::Size content_size(1000, 1000); |
| 12042 gfx::Size child_layer_size(250, 150); | 12054 gfx::Size child_layer_size(250, 150); |
| 12043 gfx::Size scrollbar_size_1(gfx::Size(15, viewport_size.height())); | 12055 gfx::Size scrollbar_size_1(gfx::Size(15, viewport_size.height())); |
| 12044 gfx::Size scrollbar_size_2(gfx::Size(15, child_layer_size.height())); | 12056 gfx::Size scrollbar_size_2(gfx::Size(15, child_layer_size.height())); |
| 12045 | 12057 |
| 12046 const int scrollbar_1_id = 10; | 12058 const int scrollbar_1_id = 10; |
| (...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 12296 else | 12308 else |
| 12297 EXPECT_FALSE(tile->HasRasterTask()); | 12309 EXPECT_FALSE(tile->HasRasterTask()); |
| 12298 } | 12310 } |
| 12299 Region expected_invalidation( | 12311 Region expected_invalidation( |
| 12300 raster_source->GetRectForImage(checkerable_image->uniqueID())); | 12312 raster_source->GetRectForImage(checkerable_image->uniqueID())); |
| 12301 EXPECT_EQ(expected_invalidation, *(root->GetPendingInvalidation())); | 12313 EXPECT_EQ(expected_invalidation, *(root->GetPendingInvalidation())); |
| 12302 } | 12314 } |
| 12303 | 12315 |
| 12304 } // namespace | 12316 } // namespace |
| 12305 } // namespace cc | 12317 } // namespace cc |
| OLD | NEW |