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_impl.h" | 5 #include "cc/trees/layer_tree_impl.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 #include <set> | 8 #include <set> |
9 | 9 |
10 #include "base/debug/trace_event.h" | 10 #include "base/debug/trace_event.h" |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
68 | 68 |
69 private: | 69 private: |
70 LayerImpl* layer_; | 70 LayerImpl* layer_; |
71 LayerScrollOffsetDelegate* delegate_; | 71 LayerScrollOffsetDelegate* delegate_; |
72 LayerTreeImpl* layer_tree_impl_; | 72 LayerTreeImpl* layer_tree_impl_; |
73 gfx::ScrollOffset last_set_scroll_offset_; | 73 gfx::ScrollOffset last_set_scroll_offset_; |
74 }; | 74 }; |
75 | 75 |
76 LayerTreeImpl::LayerTreeImpl( | 76 LayerTreeImpl::LayerTreeImpl( |
77 LayerTreeHostImpl* layer_tree_host_impl, | 77 LayerTreeHostImpl* layer_tree_host_impl, |
78 scoped_refptr<SyncedProperty<ScaleGroup>> page_scale_factor) | 78 scoped_refptr<SyncedProperty<ScaleGroup>> page_scale_factor, |
| 79 scoped_refptr<SyncedElasticOverscroll> elastic_overscroll) |
79 : layer_tree_host_impl_(layer_tree_host_impl), | 80 : layer_tree_host_impl_(layer_tree_host_impl), |
80 source_frame_number_(-1), | 81 source_frame_number_(-1), |
81 hud_layer_(0), | 82 hud_layer_(0), |
82 currently_scrolling_layer_(NULL), | 83 currently_scrolling_layer_(NULL), |
83 root_layer_scroll_offset_delegate_(NULL), | 84 root_layer_scroll_offset_delegate_(NULL), |
84 background_color_(0), | 85 background_color_(0), |
85 has_transparent_background_(false), | 86 has_transparent_background_(false), |
| 87 overscroll_elasticity_layer_(NULL), |
86 page_scale_layer_(NULL), | 88 page_scale_layer_(NULL), |
87 inner_viewport_scroll_layer_(NULL), | 89 inner_viewport_scroll_layer_(NULL), |
88 outer_viewport_scroll_layer_(NULL), | 90 outer_viewport_scroll_layer_(NULL), |
89 page_scale_factor_(page_scale_factor), | 91 page_scale_factor_(page_scale_factor), |
90 min_page_scale_factor_(0), | 92 min_page_scale_factor_(0), |
91 max_page_scale_factor_(0), | 93 max_page_scale_factor_(0), |
| 94 elastic_overscroll_(elastic_overscroll), |
92 scrolling_layer_id_from_previous_tree_(0), | 95 scrolling_layer_id_from_previous_tree_(0), |
93 contents_textures_purged_(false), | 96 contents_textures_purged_(false), |
94 viewport_size_invalid_(false), | 97 viewport_size_invalid_(false), |
95 needs_update_draw_properties_(true), | 98 needs_update_draw_properties_(true), |
96 needs_full_tree_sync_(true), | 99 needs_full_tree_sync_(true), |
97 next_activation_forces_redraw_(false), | 100 next_activation_forces_redraw_(false), |
98 has_ever_been_drawn_(false), | 101 has_ever_been_drawn_(false), |
99 render_surface_layer_list_id_(0), | 102 render_surface_layer_list_id_(0), |
100 top_controls_shrink_blink_size_(false), | 103 top_controls_shrink_blink_size_(false), |
101 top_controls_height_(0), | 104 top_controls_height_(0), |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
223 target_tree->top_controls_content_offset_ = top_controls_content_offset_; | 226 target_tree->top_controls_content_offset_ = top_controls_content_offset_; |
224 target_tree->top_controls_delta_ = target_tree->top_controls_delta_ - | 227 target_tree->top_controls_delta_ = target_tree->top_controls_delta_ - |
225 target_tree->sent_top_controls_delta_ - | 228 target_tree->sent_top_controls_delta_ - |
226 top_controls_height_delta; | 229 top_controls_height_delta; |
227 target_tree->sent_top_controls_delta_ = 0.f; | 230 target_tree->sent_top_controls_delta_ = 0.f; |
228 | 231 |
229 // Active tree already shares the page_scale_factor object with pending | 232 // Active tree already shares the page_scale_factor object with pending |
230 // tree so only the limits need to be provided. | 233 // tree so only the limits need to be provided. |
231 target_tree->PushPageScaleFactorAndLimits(nullptr, min_page_scale_factor(), | 234 target_tree->PushPageScaleFactorAndLimits(nullptr, min_page_scale_factor(), |
232 max_page_scale_factor()); | 235 max_page_scale_factor()); |
| 236 target_tree->elastic_overscroll()->PushPendingToActive(); |
233 | 237 |
234 target_tree->pending_page_scale_animation_ = | 238 target_tree->pending_page_scale_animation_ = |
235 pending_page_scale_animation_.Pass(); | 239 pending_page_scale_animation_.Pass(); |
236 | 240 |
237 if (page_scale_layer_ && inner_viewport_scroll_layer_) { | 241 if (page_scale_layer_ && inner_viewport_scroll_layer_) { |
238 target_tree->SetViewportLayersFromIds( | 242 target_tree->SetViewportLayersFromIds( |
239 overscroll_elasticity_layer_ ? overscroll_elasticity_layer_->id() | 243 overscroll_elasticity_layer_ ? overscroll_elasticity_layer_->id() |
240 : Layer::INVALID_ID, | 244 : Layer::INVALID_ID, |
241 page_scale_layer_->id(), inner_viewport_scroll_layer_->id(), | 245 page_scale_layer_->id(), inner_viewport_scroll_layer_->id(), |
242 outer_viewport_scroll_layer_ ? outer_viewport_scroll_layer_->id() | 246 outer_viewport_scroll_layer_ ? outer_viewport_scroll_layer_->id() |
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
421 } | 425 } |
422 | 426 |
423 static void ApplySentScrollDeltasFromAbortedCommitTo(LayerImpl* layer) { | 427 static void ApplySentScrollDeltasFromAbortedCommitTo(LayerImpl* layer) { |
424 layer->ApplySentScrollDeltasFromAbortedCommit(); | 428 layer->ApplySentScrollDeltasFromAbortedCommit(); |
425 } | 429 } |
426 | 430 |
427 void LayerTreeImpl::ApplySentScrollAndScaleDeltasFromAbortedCommit() { | 431 void LayerTreeImpl::ApplySentScrollAndScaleDeltasFromAbortedCommit() { |
428 DCHECK(IsActiveTree()); | 432 DCHECK(IsActiveTree()); |
429 | 433 |
430 page_scale_factor()->AbortCommit(); | 434 page_scale_factor()->AbortCommit(); |
| 435 elastic_overscroll()->AbortCommit(); |
431 | 436 |
432 top_controls_content_offset_ += sent_top_controls_delta_; | 437 top_controls_content_offset_ += sent_top_controls_delta_; |
433 top_controls_delta_ -= sent_top_controls_delta_; | 438 top_controls_delta_ -= sent_top_controls_delta_; |
434 sent_top_controls_delta_ = 0.f; | 439 sent_top_controls_delta_ = 0.f; |
435 | 440 |
436 if (!root_layer()) | 441 if (!root_layer()) |
437 return; | 442 return; |
438 | 443 |
439 LayerTreeHostCommon::CallFunctionForSubtree( | 444 LayerTreeHostCommon::CallFunctionForSubtree( |
440 root_layer(), base::Bind(&ApplySentScrollDeltasFromAbortedCommitTo)); | 445 root_layer(), base::Bind(&ApplySentScrollDeltasFromAbortedCommitTo)); |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
517 page_scale_layer_ ? page_scale_layer_ : InnerViewportContainerLayer(); | 522 page_scale_layer_ ? page_scale_layer_ : InnerViewportContainerLayer(); |
518 bool can_render_to_separate_surface = | 523 bool can_render_to_separate_surface = |
519 (layer_tree_host_impl_->GetDrawMode() != | 524 (layer_tree_host_impl_->GetDrawMode() != |
520 DRAW_MODE_RESOURCELESS_SOFTWARE); | 525 DRAW_MODE_RESOURCELESS_SOFTWARE); |
521 | 526 |
522 ++render_surface_layer_list_id_; | 527 ++render_surface_layer_list_id_; |
523 LayerTreeHostCommon::CalcDrawPropsImplInputs inputs( | 528 LayerTreeHostCommon::CalcDrawPropsImplInputs inputs( |
524 root_layer(), DrawViewportSize(), | 529 root_layer(), DrawViewportSize(), |
525 layer_tree_host_impl_->DrawTransform(), device_scale_factor(), | 530 layer_tree_host_impl_->DrawTransform(), device_scale_factor(), |
526 current_page_scale_factor(), page_scale_layer, | 531 current_page_scale_factor(), page_scale_layer, |
527 resource_provider()->max_texture_size(), settings().can_use_lcd_text, | 532 elastic_overscroll()->Current(IsActiveTree()), |
528 settings().layers_always_allowed_lcd_text, | 533 overscroll_elasticity_layer_, resource_provider()->max_texture_size(), |
| 534 settings().can_use_lcd_text, settings().layers_always_allowed_lcd_text, |
529 can_render_to_separate_surface, | 535 can_render_to_separate_surface, |
530 settings().layer_transforms_should_scale_layer_contents, | 536 settings().layer_transforms_should_scale_layer_contents, |
531 &render_surface_layer_list_, render_surface_layer_list_id_); | 537 &render_surface_layer_list_, render_surface_layer_list_id_); |
532 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | 538 LayerTreeHostCommon::CalculateDrawProperties(&inputs); |
533 } | 539 } |
534 | 540 |
535 { | 541 { |
536 TRACE_EVENT_BEGIN2("cc", "LayerTreeImpl::UpdateTilePriorities", "IsActive", | 542 TRACE_EVENT_BEGIN2("cc", "LayerTreeImpl::UpdateTilePriorities", "IsActive", |
537 IsActiveTree(), "SourceFrameNumber", | 543 IsActiveTree(), "SourceFrameNumber", |
538 source_frame_number_); | 544 source_frame_number_); |
(...skipping 974 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1513 scoped_ptr<PendingPageScaleAnimation> pending_animation) { | 1519 scoped_ptr<PendingPageScaleAnimation> pending_animation) { |
1514 pending_page_scale_animation_ = pending_animation.Pass(); | 1520 pending_page_scale_animation_ = pending_animation.Pass(); |
1515 } | 1521 } |
1516 | 1522 |
1517 scoped_ptr<PendingPageScaleAnimation> | 1523 scoped_ptr<PendingPageScaleAnimation> |
1518 LayerTreeImpl::TakePendingPageScaleAnimation() { | 1524 LayerTreeImpl::TakePendingPageScaleAnimation() { |
1519 return pending_page_scale_animation_.Pass(); | 1525 return pending_page_scale_animation_.Pass(); |
1520 } | 1526 } |
1521 | 1527 |
1522 } // namespace cc | 1528 } // namespace cc |
OLD | NEW |