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 <algorithm> | 7 #include <algorithm> |
8 #include <limits> | 8 #include <limits> |
9 #include <set> | 9 #include <set> |
10 | 10 |
11 #include "base/trace_event/trace_event.h" | 11 #include "base/trace_event/trace_event.h" |
12 #include "base/trace_event/trace_event_argument.h" | 12 #include "base/trace_event/trace_event_argument.h" |
13 #include "cc/animation/keyframed_animation_curve.h" | 13 #include "cc/animation/keyframed_animation_curve.h" |
14 #include "cc/animation/scrollbar_animation_controller.h" | 14 #include "cc/animation/scrollbar_animation_controller.h" |
15 #include "cc/animation/scrollbar_animation_controller_linear_fade.h" | 15 #include "cc/animation/scrollbar_animation_controller_linear_fade.h" |
16 #include "cc/animation/scrollbar_animation_controller_thinning.h" | 16 #include "cc/animation/scrollbar_animation_controller_thinning.h" |
17 #include "cc/base/math_util.h" | 17 #include "cc/base/math_util.h" |
18 #include "cc/base/synced_property.h" | 18 #include "cc/base/synced_property.h" |
19 #include "cc/base/util.h" | 19 #include "cc/base/util.h" |
20 #include "cc/debug/devtools_instrumentation.h" | 20 #include "cc/debug/devtools_instrumentation.h" |
21 #include "cc/debug/traced_value.h" | 21 #include "cc/debug/traced_value.h" |
22 #include "cc/input/page_scale_animation.h" | 22 #include "cc/input/page_scale_animation.h" |
23 #include "cc/layers/heads_up_display_layer_impl.h" | 23 #include "cc/layers/heads_up_display_layer_impl.h" |
24 #include "cc/layers/layer.h" | 24 #include "cc/layers/layer.h" |
25 #include "cc/layers/layer_iterator.h" | 25 #include "cc/layers/layer_iterator.h" |
26 #include "cc/layers/render_surface_impl.h" | 26 #include "cc/layers/render_surface_impl.h" |
27 #include "cc/layers/scrollbar_layer_impl_base.h" | 27 #include "cc/layers/scrollbar_layer_impl_base.h" |
| 28 #include "cc/layers/viewport.h" |
28 #include "cc/resources/ui_resource_request.h" | 29 #include "cc/resources/ui_resource_request.h" |
29 #include "cc/trees/layer_tree_host_common.h" | 30 #include "cc/trees/layer_tree_host_common.h" |
30 #include "cc/trees/layer_tree_host_impl.h" | 31 #include "cc/trees/layer_tree_host_impl.h" |
31 #include "cc/trees/occlusion_tracker.h" | 32 #include "cc/trees/occlusion_tracker.h" |
32 #include "ui/gfx/geometry/point_conversions.h" | 33 #include "ui/gfx/geometry/point_conversions.h" |
33 #include "ui/gfx/geometry/size_conversions.h" | 34 #include "ui/gfx/geometry/size_conversions.h" |
34 #include "ui/gfx/geometry/vector2d_conversions.h" | 35 #include "ui/gfx/geometry/vector2d_conversions.h" |
35 | 36 |
36 namespace cc { | 37 namespace cc { |
37 | 38 |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
98 contents_textures_purged_(false), | 99 contents_textures_purged_(false), |
99 viewport_size_invalid_(false), | 100 viewport_size_invalid_(false), |
100 needs_update_draw_properties_(true), | 101 needs_update_draw_properties_(true), |
101 needs_full_tree_sync_(true), | 102 needs_full_tree_sync_(true), |
102 next_activation_forces_redraw_(false), | 103 next_activation_forces_redraw_(false), |
103 has_ever_been_drawn_(false), | 104 has_ever_been_drawn_(false), |
104 render_surface_layer_list_id_(0), | 105 render_surface_layer_list_id_(0), |
105 top_controls_shrink_blink_size_(false), | 106 top_controls_shrink_blink_size_(false), |
106 top_controls_height_(0), | 107 top_controls_height_(0), |
107 top_controls_shown_ratio_(top_controls_shown_ratio) { | 108 top_controls_shown_ratio_(top_controls_shown_ratio) { |
| 109 viewport_ = Viewport::Create(layer_tree_host_impl); |
108 } | 110 } |
109 | 111 |
110 LayerTreeImpl::~LayerTreeImpl() { | 112 LayerTreeImpl::~LayerTreeImpl() { |
111 BreakSwapPromises(SwapPromise::SWAP_FAILS); | 113 BreakSwapPromises(SwapPromise::SWAP_FAILS); |
112 | 114 |
113 // Need to explicitly clear the tree prior to destroying this so that | 115 // Need to explicitly clear the tree prior to destroying this so that |
114 // the LayerTreeImpl pointer is still valid in the LayerImpl dtor. | 116 // the LayerTreeImpl pointer is still valid in the LayerImpl dtor. |
115 DCHECK(!root_layer_); | 117 DCHECK(!root_layer_); |
116 DCHECK(layers_with_copy_output_request_.empty()); | 118 DCHECK(layers_with_copy_output_request_.empty()); |
117 } | 119 } |
(...skipping 23 matching lines...) Expand all Loading... |
141 if (outer_viewport_scroll_layer_) | 143 if (outer_viewport_scroll_layer_) |
142 outer_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL); | 144 outer_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL); |
143 inner_viewport_scroll_delegate_proxy_ = nullptr; | 145 inner_viewport_scroll_delegate_proxy_ = nullptr; |
144 outer_viewport_scroll_delegate_proxy_ = nullptr; | 146 outer_viewport_scroll_delegate_proxy_ = nullptr; |
145 | 147 |
146 root_layer_ = layer.Pass(); | 148 root_layer_ = layer.Pass(); |
147 currently_scrolling_layer_ = NULL; | 149 currently_scrolling_layer_ = NULL; |
148 inner_viewport_scroll_layer_ = NULL; | 150 inner_viewport_scroll_layer_ = NULL; |
149 outer_viewport_scroll_layer_ = NULL; | 151 outer_viewport_scroll_layer_ = NULL; |
150 page_scale_layer_ = NULL; | 152 page_scale_layer_ = NULL; |
| 153 viewport_->SetViewportLayers(inner_viewport_scroll_layer_, |
| 154 outer_viewport_scroll_layer_); |
151 | 155 |
152 layer_tree_host_impl_->OnCanDrawStateChangedForTree(); | 156 layer_tree_host_impl_->OnCanDrawStateChangedForTree(); |
153 } | 157 } |
154 | 158 |
155 LayerImpl* LayerTreeImpl::InnerViewportScrollLayer() const { | 159 LayerImpl* LayerTreeImpl::InnerViewportScrollLayer() const { |
156 return inner_viewport_scroll_layer_; | 160 return inner_viewport_scroll_layer_; |
157 } | 161 } |
158 | 162 |
159 LayerImpl* LayerTreeImpl::OuterViewportScrollLayer() const { | 163 LayerImpl* LayerTreeImpl::OuterViewportScrollLayer() const { |
160 return outer_viewport_scroll_layer_; | 164 return outer_viewport_scroll_layer_; |
(...skipping 30 matching lines...) Expand all Loading... |
191 if (inner_viewport_scroll_layer_) | 195 if (inner_viewport_scroll_layer_) |
192 inner_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL); | 196 inner_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL); |
193 if (outer_viewport_scroll_layer_) | 197 if (outer_viewport_scroll_layer_) |
194 outer_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL); | 198 outer_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL); |
195 inner_viewport_scroll_delegate_proxy_ = nullptr; | 199 inner_viewport_scroll_delegate_proxy_ = nullptr; |
196 outer_viewport_scroll_delegate_proxy_ = nullptr; | 200 outer_viewport_scroll_delegate_proxy_ = nullptr; |
197 inner_viewport_scroll_layer_ = NULL; | 201 inner_viewport_scroll_layer_ = NULL; |
198 outer_viewport_scroll_layer_ = NULL; | 202 outer_viewport_scroll_layer_ = NULL; |
199 page_scale_layer_ = NULL; | 203 page_scale_layer_ = NULL; |
200 currently_scrolling_layer_ = NULL; | 204 currently_scrolling_layer_ = NULL; |
| 205 viewport_->SetViewportLayers(inner_viewport_scroll_layer_, |
| 206 outer_viewport_scroll_layer_); |
201 | 207 |
202 render_surface_layer_list_.clear(); | 208 render_surface_layer_list_.clear(); |
203 set_needs_update_draw_properties(); | 209 set_needs_update_draw_properties(); |
204 return root_layer_.Pass(); | 210 return root_layer_.Pass(); |
205 } | 211 } |
206 | 212 |
207 void LayerTreeImpl::PushPropertiesTo(LayerTreeImpl* target_tree) { | 213 void LayerTreeImpl::PushPropertiesTo(LayerTreeImpl* target_tree) { |
208 // The request queue should have been processed and does not require a push. | 214 // The request queue should have been processed and does not require a push. |
209 DCHECK_EQ(ui_resource_request_queue_.size(), 0u); | 215 DCHECK_EQ(ui_resource_request_queue_.size(), 0u); |
210 | 216 |
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
506 DCHECK(page_scale_layer_); | 512 DCHECK(page_scale_layer_); |
507 | 513 |
508 inner_viewport_scroll_layer_ = | 514 inner_viewport_scroll_layer_ = |
509 LayerById(inner_viewport_scroll_layer_id); | 515 LayerById(inner_viewport_scroll_layer_id); |
510 DCHECK(inner_viewport_scroll_layer_); | 516 DCHECK(inner_viewport_scroll_layer_); |
511 | 517 |
512 outer_viewport_scroll_layer_ = | 518 outer_viewport_scroll_layer_ = |
513 LayerById(outer_viewport_scroll_layer_id); | 519 LayerById(outer_viewport_scroll_layer_id); |
514 DCHECK(outer_viewport_scroll_layer_ || | 520 DCHECK(outer_viewport_scroll_layer_ || |
515 outer_viewport_scroll_layer_id == Layer::INVALID_ID); | 521 outer_viewport_scroll_layer_id == Layer::INVALID_ID); |
| 522 viewport_->SetViewportLayers(inner_viewport_scroll_layer_, |
| 523 outer_viewport_scroll_layer_); |
516 | 524 |
517 HideInnerViewportScrollbarsIfNearMinimumScale(); | 525 HideInnerViewportScrollbarsIfNearMinimumScale(); |
518 | 526 |
519 if (!root_layer_scroll_offset_delegate_) | 527 if (!root_layer_scroll_offset_delegate_) |
520 return; | 528 return; |
521 | 529 |
522 inner_viewport_scroll_delegate_proxy_ = make_scoped_ptr( | 530 inner_viewport_scroll_delegate_proxy_ = make_scoped_ptr( |
523 new LayerScrollOffsetDelegateProxy(inner_viewport_scroll_layer_, | 531 new LayerScrollOffsetDelegateProxy(inner_viewport_scroll_layer_, |
524 root_layer_scroll_offset_delegate_, | 532 root_layer_scroll_offset_delegate_, |
525 this)); | 533 this)); |
526 | 534 |
527 if (outer_viewport_scroll_layer_) | 535 if (outer_viewport_scroll_layer_) |
528 outer_viewport_scroll_delegate_proxy_ = make_scoped_ptr( | 536 outer_viewport_scroll_delegate_proxy_ = make_scoped_ptr( |
529 new LayerScrollOffsetDelegateProxy(outer_viewport_scroll_layer_, | 537 new LayerScrollOffsetDelegateProxy(outer_viewport_scroll_layer_, |
530 root_layer_scroll_offset_delegate_, | 538 root_layer_scroll_offset_delegate_, |
531 this)); | 539 this)); |
532 } | 540 } |
533 | 541 |
534 void LayerTreeImpl::ClearViewportLayers() { | 542 void LayerTreeImpl::ClearViewportLayers() { |
535 page_scale_layer_ = NULL; | 543 page_scale_layer_ = NULL; |
536 inner_viewport_scroll_layer_ = NULL; | 544 inner_viewport_scroll_layer_ = NULL; |
537 outer_viewport_scroll_layer_ = NULL; | 545 outer_viewport_scroll_layer_ = NULL; |
| 546 viewport_->SetViewportLayers(inner_viewport_scroll_layer_, |
| 547 outer_viewport_scroll_layer_); |
538 } | 548 } |
539 | 549 |
540 bool LayerTreeImpl::UpdateDrawProperties(bool update_lcd_text) { | 550 bool LayerTreeImpl::UpdateDrawProperties(bool update_lcd_text) { |
541 if (!needs_update_draw_properties_) | 551 if (!needs_update_draw_properties_) |
542 return true; | 552 return true; |
543 | 553 |
544 // Calling UpdateDrawProperties must clear this flag, so there can be no | 554 // Calling UpdateDrawProperties must clear this flag, so there can be no |
545 // early outs before this. | 555 // early outs before this. |
546 needs_update_draw_properties_ = false; | 556 needs_update_draw_properties_ = false; |
547 | 557 |
(...skipping 1088 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1636 scoped_ptr<PendingPageScaleAnimation> pending_animation) { | 1646 scoped_ptr<PendingPageScaleAnimation> pending_animation) { |
1637 pending_page_scale_animation_ = pending_animation.Pass(); | 1647 pending_page_scale_animation_ = pending_animation.Pass(); |
1638 } | 1648 } |
1639 | 1649 |
1640 scoped_ptr<PendingPageScaleAnimation> | 1650 scoped_ptr<PendingPageScaleAnimation> |
1641 LayerTreeImpl::TakePendingPageScaleAnimation() { | 1651 LayerTreeImpl::TakePendingPageScaleAnimation() { |
1642 return pending_page_scale_animation_.Pass(); | 1652 return pending_page_scale_animation_.Pass(); |
1643 } | 1653 } |
1644 | 1654 |
1645 } // namespace cc | 1655 } // namespace cc |
OLD | NEW |