| 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 953 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 964 host_impl_->ScrollEnd(); | 964 host_impl_->ScrollEnd(); |
| 965 | 965 |
| 966 scoped_ptr<ScrollAndScaleSet> scroll_info = | 966 scoped_ptr<ScrollAndScaleSet> scroll_info = |
| 967 host_impl_->ProcessScrollDeltas(); | 967 host_impl_->ProcessScrollDeltas(); |
| 968 ExpectContains(*scroll_info.get(), | 968 ExpectContains(*scroll_info.get(), |
| 969 scroll_layer->id(), | 969 scroll_layer->id(), |
| 970 scroll_delta); | 970 scroll_delta); |
| 971 } | 971 } |
| 972 } | 972 } |
| 973 | 973 |
| 974 TEST_F(LayerTreeHostImplTest, ScrollWithLatencyInfo) { |
| 975 ui::LatencyInfo latency_info; |
| 976 latency_info.AddLatencyNumber( |
| 977 ui::INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_COMPONENT, 0, 0); |
| 978 |
| 979 SetupScrollAndContentsLayers(gfx::Size(100, 100)); |
| 980 EXPECT_EQ(InputHandler::ScrollStarted, |
| 981 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture)); |
| 982 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10)); |
| 983 host_impl_->QueueScrollUpdateLatencyInfo(latency_info); |
| 984 host_impl_->ScrollEnd(); |
| 985 |
| 986 scoped_ptr<ScrollAndScaleSet> scroll_info = host_impl_->ProcessScrollDeltas(); |
| 987 ASSERT_EQ(scroll_info->latency_infos.size(), 1u); |
| 988 ASSERT_TRUE(scroll_info->latency_infos[0].FindLatency( |
| 989 ui::INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_COMPONENT, 0, 0)); |
| 990 } |
| 991 |
| 974 TEST_F(LayerTreeHostImplTest, MasksToBoundsDoesntClobberInnerContainerSize) { | 992 TEST_F(LayerTreeHostImplTest, MasksToBoundsDoesntClobberInnerContainerSize) { |
| 975 SetupScrollAndContentsLayers(gfx::Size(100, 100)); | 993 SetupScrollAndContentsLayers(gfx::Size(100, 100)); |
| 976 host_impl_->SetViewportSize(gfx::Size(50, 50)); | 994 host_impl_->SetViewportSize(gfx::Size(50, 50)); |
| 977 DrawFrame(); | 995 DrawFrame(); |
| 978 | 996 |
| 979 LayerImpl* scroll_layer = host_impl_->InnerViewportScrollLayer(); | 997 LayerImpl* scroll_layer = host_impl_->InnerViewportScrollLayer(); |
| 980 LayerImpl* container_layer = scroll_layer->scroll_clip_layer(); | 998 LayerImpl* container_layer = scroll_layer->scroll_clip_layer(); |
| 981 DCHECK(scroll_layer); | 999 DCHECK(scroll_layer); |
| 982 | 1000 |
| 983 float min_page_scale = 1.f; | 1001 float min_page_scale = 1.f; |
| (...skipping 5305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6289 EXPECT_EQ(1u, metadata_latency_after.size()); | 6307 EXPECT_EQ(1u, metadata_latency_after.size()); |
| 6290 EXPECT_TRUE(metadata_latency_after[0].FindLatency( | 6308 EXPECT_TRUE(metadata_latency_after[0].FindLatency( |
| 6291 ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 0, NULL)); | 6309 ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 0, NULL)); |
| 6292 } | 6310 } |
| 6293 | 6311 |
| 6294 class SimpleSwapPromiseMonitor : public SwapPromiseMonitor { | 6312 class SimpleSwapPromiseMonitor : public SwapPromiseMonitor { |
| 6295 public: | 6313 public: |
| 6296 SimpleSwapPromiseMonitor(LayerTreeHost* layer_tree_host, | 6314 SimpleSwapPromiseMonitor(LayerTreeHost* layer_tree_host, |
| 6297 LayerTreeHostImpl* layer_tree_host_impl, | 6315 LayerTreeHostImpl* layer_tree_host_impl, |
| 6298 int* set_needs_commit_count, | 6316 int* set_needs_commit_count, |
| 6299 int* set_needs_redraw_count) | 6317 int* set_needs_redraw_count, |
| 6318 int* forward_to_main_count) |
| 6300 : SwapPromiseMonitor(layer_tree_host, layer_tree_host_impl), | 6319 : SwapPromiseMonitor(layer_tree_host, layer_tree_host_impl), |
| 6301 set_needs_commit_count_(set_needs_commit_count), | 6320 set_needs_commit_count_(set_needs_commit_count), |
| 6302 set_needs_redraw_count_(set_needs_redraw_count) {} | 6321 set_needs_redraw_count_(set_needs_redraw_count), |
| 6322 forward_to_main_count_(forward_to_main_count) {} |
| 6303 | 6323 |
| 6304 virtual ~SimpleSwapPromiseMonitor() {} | 6324 virtual ~SimpleSwapPromiseMonitor() {} |
| 6305 | 6325 |
| 6306 virtual void OnSetNeedsCommitOnMain() OVERRIDE { | 6326 virtual void OnSetNeedsCommitOnMain() OVERRIDE { |
| 6307 (*set_needs_commit_count_)++; | 6327 (*set_needs_commit_count_)++; |
| 6308 } | 6328 } |
| 6309 | 6329 |
| 6310 virtual void OnSetNeedsRedrawOnImpl() OVERRIDE { | 6330 virtual void OnSetNeedsRedrawOnImpl() OVERRIDE { |
| 6311 (*set_needs_redraw_count_)++; | 6331 (*set_needs_redraw_count_)++; |
| 6312 } | 6332 } |
| 6313 | 6333 |
| 6334 virtual void OnForwardScrollUpdateToMainThreadOnImpl() OVERRIDE { |
| 6335 (*forward_to_main_count_)++; |
| 6336 } |
| 6337 |
| 6314 private: | 6338 private: |
| 6315 int* set_needs_commit_count_; | 6339 int* set_needs_commit_count_; |
| 6316 int* set_needs_redraw_count_; | 6340 int* set_needs_redraw_count_; |
| 6341 int* forward_to_main_count_; |
| 6317 }; | 6342 }; |
| 6318 | 6343 |
| 6319 TEST_F(LayerTreeHostImplTest, SimpleSwapPromiseMonitor) { | 6344 TEST_F(LayerTreeHostImplTest, SimpleSwapPromiseMonitor) { |
| 6320 int set_needs_commit_count = 0; | 6345 int set_needs_commit_count = 0; |
| 6321 int set_needs_redraw_count = 0; | 6346 int set_needs_redraw_count = 0; |
| 6347 int forward_to_main_count = 0; |
| 6322 | 6348 |
| 6323 { | 6349 { |
| 6324 scoped_ptr<SimpleSwapPromiseMonitor> swap_promise_monitor( | 6350 scoped_ptr<SimpleSwapPromiseMonitor> swap_promise_monitor( |
| 6325 new SimpleSwapPromiseMonitor(NULL, | 6351 new SimpleSwapPromiseMonitor(NULL, |
| 6326 host_impl_.get(), | 6352 host_impl_.get(), |
| 6327 &set_needs_commit_count, | 6353 &set_needs_commit_count, |
| 6328 &set_needs_redraw_count)); | 6354 &set_needs_redraw_count, |
| 6355 &forward_to_main_count)); |
| 6329 host_impl_->SetNeedsRedraw(); | 6356 host_impl_->SetNeedsRedraw(); |
| 6330 EXPECT_EQ(0, set_needs_commit_count); | 6357 EXPECT_EQ(0, set_needs_commit_count); |
| 6331 EXPECT_EQ(1, set_needs_redraw_count); | 6358 EXPECT_EQ(1, set_needs_redraw_count); |
| 6359 EXPECT_EQ(0, forward_to_main_count); |
| 6332 } | 6360 } |
| 6333 | 6361 |
| 6334 // Now the monitor is destroyed, SetNeedsRedraw() is no longer being | 6362 // Now the monitor is destroyed, SetNeedsRedraw() is no longer being |
| 6335 // monitored. | 6363 // monitored. |
| 6336 host_impl_->SetNeedsRedraw(); | 6364 host_impl_->SetNeedsRedraw(); |
| 6337 EXPECT_EQ(0, set_needs_commit_count); | 6365 EXPECT_EQ(0, set_needs_commit_count); |
| 6338 EXPECT_EQ(1, set_needs_redraw_count); | 6366 EXPECT_EQ(1, set_needs_redraw_count); |
| 6367 EXPECT_EQ(0, forward_to_main_count); |
| 6339 | 6368 |
| 6340 { | 6369 { |
| 6341 scoped_ptr<SimpleSwapPromiseMonitor> swap_promise_monitor( | 6370 scoped_ptr<SimpleSwapPromiseMonitor> swap_promise_monitor( |
| 6342 new SimpleSwapPromiseMonitor(NULL, | 6371 new SimpleSwapPromiseMonitor(NULL, |
| 6343 host_impl_.get(), | 6372 host_impl_.get(), |
| 6344 &set_needs_commit_count, | 6373 &set_needs_commit_count, |
| 6345 &set_needs_redraw_count)); | 6374 &set_needs_redraw_count, |
| 6375 &forward_to_main_count)); |
| 6346 host_impl_->SetNeedsRedrawRect(gfx::Rect(10, 10)); | 6376 host_impl_->SetNeedsRedrawRect(gfx::Rect(10, 10)); |
| 6347 EXPECT_EQ(0, set_needs_commit_count); | 6377 EXPECT_EQ(0, set_needs_commit_count); |
| 6348 EXPECT_EQ(2, set_needs_redraw_count); | 6378 EXPECT_EQ(2, set_needs_redraw_count); |
| 6379 EXPECT_EQ(0, forward_to_main_count); |
| 6349 } | 6380 } |
| 6350 | 6381 |
| 6351 { | 6382 { |
| 6352 scoped_ptr<SimpleSwapPromiseMonitor> swap_promise_monitor( | 6383 scoped_ptr<SimpleSwapPromiseMonitor> swap_promise_monitor( |
| 6353 new SimpleSwapPromiseMonitor(NULL, | 6384 new SimpleSwapPromiseMonitor(NULL, |
| 6354 host_impl_.get(), | 6385 host_impl_.get(), |
| 6355 &set_needs_commit_count, | 6386 &set_needs_commit_count, |
| 6356 &set_needs_redraw_count)); | 6387 &set_needs_redraw_count, |
| 6388 &forward_to_main_count)); |
| 6357 // Empty damage rect won't signal the monitor. | 6389 // Empty damage rect won't signal the monitor. |
| 6358 host_impl_->SetNeedsRedrawRect(gfx::Rect()); | 6390 host_impl_->SetNeedsRedrawRect(gfx::Rect()); |
| 6359 EXPECT_EQ(0, set_needs_commit_count); | 6391 EXPECT_EQ(0, set_needs_commit_count); |
| 6360 EXPECT_EQ(2, set_needs_redraw_count); | 6392 EXPECT_EQ(2, set_needs_redraw_count); |
| 6393 EXPECT_EQ(0, forward_to_main_count); |
| 6394 } |
| 6395 |
| 6396 { |
| 6397 set_needs_commit_count = 0; |
| 6398 set_needs_redraw_count = 0; |
| 6399 forward_to_main_count = 0; |
| 6400 scoped_ptr<SimpleSwapPromiseMonitor> swap_promise_monitor( |
| 6401 new SimpleSwapPromiseMonitor(NULL, |
| 6402 host_impl_.get(), |
| 6403 &set_needs_commit_count, |
| 6404 &set_needs_redraw_count, |
| 6405 &forward_to_main_count)); |
| 6406 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 100)); |
| 6407 |
| 6408 // Scrolling normally should not trigger any forwarding. |
| 6409 EXPECT_EQ(InputHandler::ScrollStarted, |
| 6410 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture)); |
| 6411 EXPECT_TRUE(host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10))); |
| 6412 host_impl_->ScrollEnd(); |
| 6413 |
| 6414 EXPECT_EQ(0, set_needs_commit_count); |
| 6415 EXPECT_EQ(1, set_needs_redraw_count); |
| 6416 EXPECT_EQ(0, forward_to_main_count); |
| 6417 |
| 6418 // Scrolling with a scroll handler should defer the swap to the main |
| 6419 // thread. |
| 6420 scroll_layer->SetHaveScrollEventHandlers(true); |
| 6421 EXPECT_EQ(InputHandler::ScrollStarted, |
| 6422 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture)); |
| 6423 EXPECT_TRUE(host_impl_->ScrollBy(gfx::Point(), gfx::Vector2d(0, 10))); |
| 6424 host_impl_->ScrollEnd(); |
| 6425 |
| 6426 EXPECT_EQ(0, set_needs_commit_count); |
| 6427 EXPECT_EQ(2, set_needs_redraw_count); |
| 6428 EXPECT_EQ(1, forward_to_main_count); |
| 6361 } | 6429 } |
| 6362 } | 6430 } |
| 6363 | 6431 |
| 6364 class LayerTreeHostImplWithTopControlsTest : public LayerTreeHostImplTest { | 6432 class LayerTreeHostImplWithTopControlsTest : public LayerTreeHostImplTest { |
| 6365 public: | 6433 public: |
| 6366 virtual void SetUp() OVERRIDE { | 6434 virtual void SetUp() OVERRIDE { |
| 6367 LayerTreeSettings settings = DefaultSettings(); | 6435 LayerTreeSettings settings = DefaultSettings(); |
| 6368 settings.calculate_top_controls_position = true; | 6436 settings.calculate_top_controls_position = true; |
| 6369 settings.top_controls_height = top_controls_height_; | 6437 settings.top_controls_height = top_controls_height_; |
| 6370 CreateHostImpl(settings, CreateOutputSurface()); | 6438 CreateHostImpl(settings, CreateOutputSurface()); |
| (...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6597 external_viewport, | 6665 external_viewport, |
| 6598 external_clip, | 6666 external_clip, |
| 6599 valid_for_tile_management); | 6667 valid_for_tile_management); |
| 6600 DrawFrame(); | 6668 DrawFrame(); |
| 6601 EXPECT_TRANSFORMATION_MATRIX_EQ( | 6669 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 6602 external_transform, layer->draw_properties().target_space_transform); | 6670 external_transform, layer->draw_properties().target_space_transform); |
| 6603 } | 6671 } |
| 6604 | 6672 |
| 6605 } // namespace | 6673 } // namespace |
| 6606 } // namespace cc | 6674 } // namespace cc |
| OLD | NEW |