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 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
67 LayerImpl* layer_; | 67 LayerImpl* layer_; |
68 LayerScrollOffsetDelegate* delegate_; | 68 LayerScrollOffsetDelegate* delegate_; |
69 LayerTreeImpl* layer_tree_impl_; | 69 LayerTreeImpl* layer_tree_impl_; |
70 gfx::ScrollOffset last_set_scroll_offset_; | 70 gfx::ScrollOffset last_set_scroll_offset_; |
71 }; | 71 }; |
72 | 72 |
73 LayerTreeImpl::LayerTreeImpl(LayerTreeHostImpl* layer_tree_host_impl) | 73 LayerTreeImpl::LayerTreeImpl(LayerTreeHostImpl* layer_tree_host_impl) |
74 : layer_tree_host_impl_(layer_tree_host_impl), | 74 : layer_tree_host_impl_(layer_tree_host_impl), |
75 source_frame_number_(-1), | 75 source_frame_number_(-1), |
76 hud_layer_(0), | 76 hud_layer_(0), |
77 currently_scrolling_layer_(NULL), | 77 currently_scrolling_layer_(nullptr), |
78 root_layer_scroll_offset_delegate_(NULL), | 78 root_layer_scroll_offset_delegate_(nullptr), |
79 background_color_(0), | 79 background_color_(0), |
80 has_transparent_background_(false), | 80 has_transparent_background_(false), |
81 page_scale_layer_(NULL), | 81 page_scale_layer_(nullptr), |
82 inner_viewport_scroll_layer_(NULL), | 82 inner_viewport_scroll_layer_(nullptr), |
83 outer_viewport_scroll_layer_(NULL), | 83 outer_viewport_scroll_layer_(nullptr), |
84 page_scale_factor_(1), | 84 page_scale_factor_(1), |
85 page_scale_delta_(1), | 85 page_scale_delta_(1), |
86 sent_page_scale_delta_(1), | 86 sent_page_scale_delta_(1), |
87 min_page_scale_factor_(0), | 87 min_page_scale_factor_(0), |
88 max_page_scale_factor_(0), | 88 max_page_scale_factor_(0), |
89 scrolling_layer_id_from_previous_tree_(0), | 89 scrolling_layer_id_from_previous_tree_(0), |
90 contents_textures_purged_(false), | 90 contents_textures_purged_(false), |
91 viewport_size_invalid_(false), | 91 viewport_size_invalid_(false), |
92 needs_update_draw_properties_(true), | 92 needs_update_draw_properties_(true), |
93 needs_full_tree_sync_(true), | 93 needs_full_tree_sync_(true), |
(...skipping 19 matching lines...) Expand all Loading... |
113 root_layer_ = nullptr; | 113 root_layer_ = nullptr; |
114 } | 114 } |
115 | 115 |
116 void LayerTreeImpl::ReleaseResources() { | 116 void LayerTreeImpl::ReleaseResources() { |
117 if (root_layer_) | 117 if (root_layer_) |
118 ReleaseResourcesRecursive(root_layer_.get()); | 118 ReleaseResourcesRecursive(root_layer_.get()); |
119 } | 119 } |
120 | 120 |
121 void LayerTreeImpl::SetRootLayer(scoped_ptr<LayerImpl> layer) { | 121 void LayerTreeImpl::SetRootLayer(scoped_ptr<LayerImpl> layer) { |
122 if (inner_viewport_scroll_layer_) | 122 if (inner_viewport_scroll_layer_) |
123 inner_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL); | 123 inner_viewport_scroll_layer_->SetScrollOffsetDelegate(nullptr); |
124 if (outer_viewport_scroll_layer_) | 124 if (outer_viewport_scroll_layer_) |
125 outer_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL); | 125 outer_viewport_scroll_layer_->SetScrollOffsetDelegate(nullptr); |
126 inner_viewport_scroll_delegate_proxy_ = nullptr; | 126 inner_viewport_scroll_delegate_proxy_ = nullptr; |
127 outer_viewport_scroll_delegate_proxy_ = nullptr; | 127 outer_viewport_scroll_delegate_proxy_ = nullptr; |
128 | 128 |
129 root_layer_ = layer.Pass(); | 129 root_layer_ = layer.Pass(); |
130 currently_scrolling_layer_ = NULL; | 130 currently_scrolling_layer_ = nullptr; |
131 inner_viewport_scroll_layer_ = NULL; | 131 inner_viewport_scroll_layer_ = nullptr; |
132 outer_viewport_scroll_layer_ = NULL; | 132 outer_viewport_scroll_layer_ = nullptr; |
133 page_scale_layer_ = NULL; | 133 page_scale_layer_ = nullptr; |
134 | 134 |
135 layer_tree_host_impl_->OnCanDrawStateChangedForTree(); | 135 layer_tree_host_impl_->OnCanDrawStateChangedForTree(); |
136 } | 136 } |
137 | 137 |
138 LayerImpl* LayerTreeImpl::InnerViewportScrollLayer() const { | 138 LayerImpl* LayerTreeImpl::InnerViewportScrollLayer() const { |
139 return inner_viewport_scroll_layer_; | 139 return inner_viewport_scroll_layer_; |
140 } | 140 } |
141 | 141 |
142 LayerImpl* LayerTreeImpl::OuterViewportScrollLayer() const { | 142 LayerImpl* LayerTreeImpl::OuterViewportScrollLayer() const { |
143 return outer_viewport_scroll_layer_; | 143 return outer_viewport_scroll_layer_; |
(...skipping 30 matching lines...) Expand all Loading... |
174 delta += outer_viewport_scroll_layer_->ScrollDelta(); | 174 delta += outer_viewport_scroll_layer_->ScrollDelta(); |
175 | 175 |
176 return delta; | 176 return delta; |
177 } | 177 } |
178 | 178 |
179 scoped_ptr<LayerImpl> LayerTreeImpl::DetachLayerTree() { | 179 scoped_ptr<LayerImpl> LayerTreeImpl::DetachLayerTree() { |
180 // Clear all data structures that have direct references to the layer tree. | 180 // Clear all data structures that have direct references to the layer tree. |
181 scrolling_layer_id_from_previous_tree_ = | 181 scrolling_layer_id_from_previous_tree_ = |
182 currently_scrolling_layer_ ? currently_scrolling_layer_->id() : 0; | 182 currently_scrolling_layer_ ? currently_scrolling_layer_->id() : 0; |
183 if (inner_viewport_scroll_layer_) | 183 if (inner_viewport_scroll_layer_) |
184 inner_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL); | 184 inner_viewport_scroll_layer_->SetScrollOffsetDelegate(nullptr); |
185 if (outer_viewport_scroll_layer_) | 185 if (outer_viewport_scroll_layer_) |
186 outer_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL); | 186 outer_viewport_scroll_layer_->SetScrollOffsetDelegate(nullptr); |
187 inner_viewport_scroll_delegate_proxy_ = nullptr; | 187 inner_viewport_scroll_delegate_proxy_ = nullptr; |
188 outer_viewport_scroll_delegate_proxy_ = nullptr; | 188 outer_viewport_scroll_delegate_proxy_ = nullptr; |
189 inner_viewport_scroll_layer_ = NULL; | 189 inner_viewport_scroll_layer_ = nullptr; |
190 outer_viewport_scroll_layer_ = NULL; | 190 outer_viewport_scroll_layer_ = nullptr; |
191 page_scale_layer_ = NULL; | 191 page_scale_layer_ = nullptr; |
192 currently_scrolling_layer_ = NULL; | 192 currently_scrolling_layer_ = nullptr; |
193 | 193 |
194 render_surface_layer_list_.clear(); | 194 render_surface_layer_list_.clear(); |
195 set_needs_update_draw_properties(); | 195 set_needs_update_draw_properties(); |
196 return root_layer_.Pass(); | 196 return root_layer_.Pass(); |
197 } | 197 } |
198 | 198 |
199 void LayerTreeImpl::PushPropertiesTo(LayerTreeImpl* target_tree) { | 199 void LayerTreeImpl::PushPropertiesTo(LayerTreeImpl* target_tree) { |
200 // The request queue should have been processed and does not require a push. | 200 // The request queue should have been processed and does not require a push. |
201 DCHECK_EQ(ui_resource_request_queue_.size(), 0u); | 201 DCHECK_EQ(ui_resource_request_queue_.size(), 0u); |
202 | 202 |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
247 if (ViewportSizeInvalid()) | 247 if (ViewportSizeInvalid()) |
248 target_tree->SetViewportSizeInvalid(); | 248 target_tree->SetViewportSizeInvalid(); |
249 else | 249 else |
250 target_tree->ResetViewportSizeInvalid(); | 250 target_tree->ResetViewportSizeInvalid(); |
251 | 251 |
252 if (hud_layer()) | 252 if (hud_layer()) |
253 target_tree->set_hud_layer(static_cast<HeadsUpDisplayLayerImpl*>( | 253 target_tree->set_hud_layer(static_cast<HeadsUpDisplayLayerImpl*>( |
254 LayerTreeHostCommon::FindLayerInSubtree( | 254 LayerTreeHostCommon::FindLayerInSubtree( |
255 target_tree->root_layer(), hud_layer()->id()))); | 255 target_tree->root_layer(), hud_layer()->id()))); |
256 else | 256 else |
257 target_tree->set_hud_layer(NULL); | 257 target_tree->set_hud_layer(nullptr); |
258 | 258 |
259 target_tree->has_ever_been_drawn_ = false; | 259 target_tree->has_ever_been_drawn_ = false; |
260 } | 260 } |
261 | 261 |
262 LayerImpl* LayerTreeImpl::InnerViewportContainerLayer() const { | 262 LayerImpl* LayerTreeImpl::InnerViewportContainerLayer() const { |
263 return inner_viewport_scroll_layer_ | 263 return inner_viewport_scroll_layer_ |
264 ? inner_viewport_scroll_layer_->scroll_clip_layer() | 264 ? inner_viewport_scroll_layer_->scroll_clip_layer() |
265 : NULL; | 265 : nullptr; |
266 } | 266 } |
267 | 267 |
268 LayerImpl* LayerTreeImpl::CurrentlyScrollingLayer() const { | 268 LayerImpl* LayerTreeImpl::CurrentlyScrollingLayer() const { |
269 DCHECK(IsActiveTree()); | 269 DCHECK(IsActiveTree()); |
270 return currently_scrolling_layer_; | 270 return currently_scrolling_layer_; |
271 } | 271 } |
272 | 272 |
273 void LayerTreeImpl::SetCurrentlyScrollingLayer(LayerImpl* layer) { | 273 void LayerTreeImpl::SetCurrentlyScrollingLayer(LayerImpl* layer) { |
274 if (currently_scrolling_layer_ == layer) | 274 if (currently_scrolling_layer_ == layer) |
275 return; | 275 return; |
276 | 276 |
277 if (currently_scrolling_layer_ && | 277 if (currently_scrolling_layer_ && |
278 currently_scrolling_layer_->scrollbar_animation_controller()) | 278 currently_scrolling_layer_->scrollbar_animation_controller()) |
279 currently_scrolling_layer_->scrollbar_animation_controller() | 279 currently_scrolling_layer_->scrollbar_animation_controller() |
280 ->DidScrollEnd(); | 280 ->DidScrollEnd(); |
281 currently_scrolling_layer_ = layer; | 281 currently_scrolling_layer_ = layer; |
282 if (layer && layer->scrollbar_animation_controller()) | 282 if (layer && layer->scrollbar_animation_controller()) |
283 layer->scrollbar_animation_controller()->DidScrollBegin(); | 283 layer->scrollbar_animation_controller()->DidScrollBegin(); |
284 } | 284 } |
285 | 285 |
286 void LayerTreeImpl::ClearCurrentlyScrollingLayer() { | 286 void LayerTreeImpl::ClearCurrentlyScrollingLayer() { |
287 SetCurrentlyScrollingLayer(NULL); | 287 SetCurrentlyScrollingLayer(nullptr); |
288 scrolling_layer_id_from_previous_tree_ = 0; | 288 scrolling_layer_id_from_previous_tree_ = 0; |
289 } | 289 } |
290 | 290 |
291 namespace { | 291 namespace { |
292 | 292 |
293 void ForceScrollbarParameterUpdateAfterScaleChange(LayerImpl* current_layer) { | 293 void ForceScrollbarParameterUpdateAfterScaleChange(LayerImpl* current_layer) { |
294 if (!current_layer) | 294 if (!current_layer) |
295 return; | 295 return; |
296 | 296 |
297 while (current_layer) { | 297 while (current_layer) { |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
441 this)); | 441 this)); |
442 | 442 |
443 if (outer_viewport_scroll_layer_) | 443 if (outer_viewport_scroll_layer_) |
444 outer_viewport_scroll_delegate_proxy_ = make_scoped_ptr( | 444 outer_viewport_scroll_delegate_proxy_ = make_scoped_ptr( |
445 new LayerScrollOffsetDelegateProxy(outer_viewport_scroll_layer_, | 445 new LayerScrollOffsetDelegateProxy(outer_viewport_scroll_layer_, |
446 root_layer_scroll_offset_delegate_, | 446 root_layer_scroll_offset_delegate_, |
447 this)); | 447 this)); |
448 } | 448 } |
449 | 449 |
450 void LayerTreeImpl::ClearViewportLayers() { | 450 void LayerTreeImpl::ClearViewportLayers() { |
451 page_scale_layer_ = NULL; | 451 page_scale_layer_ = nullptr; |
452 inner_viewport_scroll_layer_ = NULL; | 452 inner_viewport_scroll_layer_ = nullptr; |
453 outer_viewport_scroll_layer_ = NULL; | 453 outer_viewport_scroll_layer_ = nullptr; |
454 } | 454 } |
455 | 455 |
456 bool LayerTreeImpl::UpdateDrawProperties() { | 456 bool LayerTreeImpl::UpdateDrawProperties() { |
457 if (!needs_update_draw_properties_) | 457 if (!needs_update_draw_properties_) |
458 return true; | 458 return true; |
459 | 459 |
460 // For max_texture_size. | 460 // For max_texture_size. |
461 if (!layer_tree_host_impl_->renderer()) | 461 if (!layer_tree_host_impl_->renderer()) |
462 return false; | 462 return false; |
463 | 463 |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
573 LayerImpl* root_scroll_layer = OuterViewportScrollLayer() | 573 LayerImpl* root_scroll_layer = OuterViewportScrollLayer() |
574 ? OuterViewportScrollLayer() | 574 ? OuterViewportScrollLayer() |
575 : InnerViewportScrollLayer(); | 575 : InnerViewportScrollLayer(); |
576 if (!root_scroll_layer || root_scroll_layer->children().empty()) | 576 if (!root_scroll_layer || root_scroll_layer->children().empty()) |
577 return gfx::Size(); | 577 return gfx::Size(); |
578 return root_scroll_layer->children()[0]->bounds(); | 578 return root_scroll_layer->children()[0]->bounds(); |
579 } | 579 } |
580 | 580 |
581 LayerImpl* LayerTreeImpl::LayerById(int id) { | 581 LayerImpl* LayerTreeImpl::LayerById(int id) { |
582 LayerIdMap::iterator iter = layer_id_map_.find(id); | 582 LayerIdMap::iterator iter = layer_id_map_.find(id); |
583 return iter != layer_id_map_.end() ? iter->second : NULL; | 583 return iter != layer_id_map_.end() ? iter->second : nullptr; |
584 } | 584 } |
585 | 585 |
586 void LayerTreeImpl::RegisterLayer(LayerImpl* layer) { | 586 void LayerTreeImpl::RegisterLayer(LayerImpl* layer) { |
587 DCHECK(!LayerById(layer->id())); | 587 DCHECK(!LayerById(layer->id())); |
588 layer_id_map_[layer->id()] = layer; | 588 layer_id_map_[layer->id()] = layer; |
589 } | 589 } |
590 | 590 |
591 void LayerTreeImpl::UnregisterLayer(LayerImpl* layer) { | 591 void LayerTreeImpl::UnregisterLayer(LayerImpl* layer) { |
592 DCHECK(LayerById(layer->id())); | 592 DCHECK(LayerById(layer->id())); |
593 layer_id_map_.erase(layer->id()); | 593 layer_id_map_.erase(layer->id()); |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
724 return layer_tree_host_impl_->pending_tree() == this; | 724 return layer_tree_host_impl_->pending_tree() == this; |
725 } | 725 } |
726 | 726 |
727 bool LayerTreeImpl::IsRecycleTree() const { | 727 bool LayerTreeImpl::IsRecycleTree() const { |
728 return layer_tree_host_impl_->recycle_tree() == this; | 728 return layer_tree_host_impl_->recycle_tree() == this; |
729 } | 729 } |
730 | 730 |
731 LayerImpl* LayerTreeImpl::FindActiveTreeLayerById(int id) { | 731 LayerImpl* LayerTreeImpl::FindActiveTreeLayerById(int id) { |
732 LayerTreeImpl* tree = layer_tree_host_impl_->active_tree(); | 732 LayerTreeImpl* tree = layer_tree_host_impl_->active_tree(); |
733 if (!tree) | 733 if (!tree) |
734 return NULL; | 734 return nullptr; |
735 return tree->LayerById(id); | 735 return tree->LayerById(id); |
736 } | 736 } |
737 | 737 |
738 LayerImpl* LayerTreeImpl::FindPendingTreeLayerById(int id) { | 738 LayerImpl* LayerTreeImpl::FindPendingTreeLayerById(int id) { |
739 LayerTreeImpl* tree = layer_tree_host_impl_->pending_tree(); | 739 LayerTreeImpl* tree = layer_tree_host_impl_->pending_tree(); |
740 if (!tree) | 740 if (!tree) |
741 return NULL; | 741 return nullptr; |
742 return tree->LayerById(id); | 742 return tree->LayerById(id); |
743 } | 743 } |
744 | 744 |
745 LayerImpl* LayerTreeImpl::FindRecycleTreeLayerById(int id) { | 745 LayerImpl* LayerTreeImpl::FindRecycleTreeLayerById(int id) { |
746 LayerTreeImpl* tree = layer_tree_host_impl_->recycle_tree(); | 746 LayerTreeImpl* tree = layer_tree_host_impl_->recycle_tree(); |
747 if (!tree) | 747 if (!tree) |
748 return NULL; | 748 return nullptr; |
749 return tree->LayerById(id); | 749 return tree->LayerById(id); |
750 } | 750 } |
751 | 751 |
752 bool LayerTreeImpl::PinchGestureActive() const { | 752 bool LayerTreeImpl::PinchGestureActive() const { |
753 return layer_tree_host_impl_->pinch_gesture_active(); | 753 return layer_tree_host_impl_->pinch_gesture_active(); |
754 } | 754 } |
755 | 755 |
756 BeginFrameArgs LayerTreeImpl::CurrentBeginFrameArgs() const { | 756 BeginFrameArgs LayerTreeImpl::CurrentBeginFrameArgs() const { |
757 return layer_tree_host_impl_->CurrentBeginFrameArgs(); | 757 return layer_tree_host_impl_->CurrentBeginFrameArgs(); |
758 } | 758 } |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
883 | 883 |
884 void LayerTreeImpl::SetRootLayerScrollOffsetDelegate( | 884 void LayerTreeImpl::SetRootLayerScrollOffsetDelegate( |
885 LayerScrollOffsetDelegate* root_layer_scroll_offset_delegate) { | 885 LayerScrollOffsetDelegate* root_layer_scroll_offset_delegate) { |
886 if (root_layer_scroll_offset_delegate_ == root_layer_scroll_offset_delegate) | 886 if (root_layer_scroll_offset_delegate_ == root_layer_scroll_offset_delegate) |
887 return; | 887 return; |
888 | 888 |
889 if (!root_layer_scroll_offset_delegate) { | 889 if (!root_layer_scroll_offset_delegate) { |
890 // Make sure we remove the proxies from their layers before | 890 // Make sure we remove the proxies from their layers before |
891 // releasing them. | 891 // releasing them. |
892 if (InnerViewportScrollLayer()) | 892 if (InnerViewportScrollLayer()) |
893 InnerViewportScrollLayer()->SetScrollOffsetDelegate(NULL); | 893 InnerViewportScrollLayer()->SetScrollOffsetDelegate(nullptr); |
894 if (OuterViewportScrollLayer()) | 894 if (OuterViewportScrollLayer()) |
895 OuterViewportScrollLayer()->SetScrollOffsetDelegate(NULL); | 895 OuterViewportScrollLayer()->SetScrollOffsetDelegate(nullptr); |
896 inner_viewport_scroll_delegate_proxy_ = nullptr; | 896 inner_viewport_scroll_delegate_proxy_ = nullptr; |
897 outer_viewport_scroll_delegate_proxy_ = nullptr; | 897 outer_viewport_scroll_delegate_proxy_ = nullptr; |
898 } | 898 } |
899 | 899 |
900 root_layer_scroll_offset_delegate_ = root_layer_scroll_offset_delegate; | 900 root_layer_scroll_offset_delegate_ = root_layer_scroll_offset_delegate; |
901 | 901 |
902 if (root_layer_scroll_offset_delegate_) { | 902 if (root_layer_scroll_offset_delegate_) { |
903 root_layer_scroll_offset_delegate_->UpdateRootLayerState( | 903 root_layer_scroll_offset_delegate_->UpdateRootLayerState( |
904 TotalScrollOffset(), | 904 TotalScrollOffset(), |
905 TotalMaxScrollOffset(), | 905 TotalMaxScrollOffset(), |
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1197 static bool PointIsClippedBySurfaceOrClipRect( | 1197 static bool PointIsClippedBySurfaceOrClipRect( |
1198 const gfx::PointF& screen_space_point, | 1198 const gfx::PointF& screen_space_point, |
1199 const LayerImpl* layer) { | 1199 const LayerImpl* layer) { |
1200 // Walk up the layer tree and hit-test any render_surfaces and any layer | 1200 // Walk up the layer tree and hit-test any render_surfaces and any layer |
1201 // clip rects that are active. | 1201 // clip rects that are active. |
1202 for (; layer; layer = GetNextClippingLayer(layer)) { | 1202 for (; layer; layer = GetNextClippingLayer(layer)) { |
1203 if (layer->render_surface() && | 1203 if (layer->render_surface() && |
1204 !PointHitsRect(screen_space_point, | 1204 !PointHitsRect(screen_space_point, |
1205 layer->render_surface()->screen_space_transform(), | 1205 layer->render_surface()->screen_space_transform(), |
1206 layer->render_surface()->content_rect(), | 1206 layer->render_surface()->content_rect(), |
1207 NULL)) | 1207 nullptr)) |
1208 return true; | 1208 return true; |
1209 | 1209 |
1210 if (LayerClipsSubtree(layer) && | 1210 if (LayerClipsSubtree(layer) && |
1211 !PointHitsRect(screen_space_point, | 1211 !PointHitsRect(screen_space_point, |
1212 layer->screen_space_transform(), | 1212 layer->screen_space_transform(), |
1213 gfx::Rect(layer->content_bounds()), | 1213 gfx::Rect(layer->content_bounds()), |
1214 NULL)) | 1214 nullptr)) |
1215 return true; | 1215 return true; |
1216 } | 1216 } |
1217 | 1217 |
1218 // If we have finished walking all ancestors without having already exited, | 1218 // If we have finished walking all ancestors without having already exited, |
1219 // then the point is not clipped by any ancestors. | 1219 // then the point is not clipped by any ancestors. |
1220 return false; | 1220 return false; |
1221 } | 1221 } |
1222 | 1222 |
1223 static bool PointHitsLayer(const LayerImpl* layer, | 1223 static bool PointHitsLayer(const LayerImpl* layer, |
1224 const gfx::PointF& screen_space_point, | 1224 const gfx::PointF& screen_space_point, |
(...skipping 13 matching lines...) Expand all Loading... |
1238 | 1238 |
1239 // Skip the HUD layer. | 1239 // Skip the HUD layer. |
1240 if (layer == layer->layer_tree_impl()->hud_layer()) | 1240 if (layer == layer->layer_tree_impl()->hud_layer()) |
1241 return false; | 1241 return false; |
1242 | 1242 |
1243 return true; | 1243 return true; |
1244 } | 1244 } |
1245 | 1245 |
1246 struct FindClosestMatchingLayerDataForRecursion { | 1246 struct FindClosestMatchingLayerDataForRecursion { |
1247 FindClosestMatchingLayerDataForRecursion() | 1247 FindClosestMatchingLayerDataForRecursion() |
1248 : closest_match(NULL), | 1248 : closest_match(nullptr), |
1249 closest_distance(-std::numeric_limits<float>::infinity()) {} | 1249 closest_distance(-std::numeric_limits<float>::infinity()) {} |
1250 LayerImpl* closest_match; | 1250 LayerImpl* closest_match; |
1251 // Note that the positive z-axis points towards the camera, so bigger means | 1251 // Note that the positive z-axis points towards the camera, so bigger means |
1252 // closer in this case, counterintuitively. | 1252 // closer in this case, counterintuitively. |
1253 float closest_distance; | 1253 float closest_distance; |
1254 }; | 1254 }; |
1255 | 1255 |
1256 template <typename Functor> | 1256 template <typename Functor> |
1257 static void FindClosestMatchingLayer( | 1257 static void FindClosestMatchingLayer( |
1258 const gfx::PointF& screen_space_point, | 1258 const gfx::PointF& screen_space_point, |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1312 return layer->IsDrawnRenderSurfaceLayerListMember() || | 1312 return layer->IsDrawnRenderSurfaceLayerListMember() || |
1313 ScrollsAnyDrawnRenderSurfaceLayerListMember(layer) || | 1313 ScrollsAnyDrawnRenderSurfaceLayerListMember(layer) || |
1314 !layer->touch_event_handler_region().IsEmpty() || | 1314 !layer->touch_event_handler_region().IsEmpty() || |
1315 layer->have_wheel_event_handlers(); | 1315 layer->have_wheel_event_handlers(); |
1316 } | 1316 } |
1317 }; | 1317 }; |
1318 | 1318 |
1319 LayerImpl* LayerTreeImpl::FindLayerThatIsHitByPoint( | 1319 LayerImpl* LayerTreeImpl::FindLayerThatIsHitByPoint( |
1320 const gfx::PointF& screen_space_point) { | 1320 const gfx::PointF& screen_space_point) { |
1321 if (!root_layer()) | 1321 if (!root_layer()) |
1322 return NULL; | 1322 return nullptr; |
1323 if (!UpdateDrawProperties()) | 1323 if (!UpdateDrawProperties()) |
1324 return NULL; | 1324 return nullptr; |
1325 FindClosestMatchingLayerDataForRecursion data_for_recursion; | 1325 FindClosestMatchingLayerDataForRecursion data_for_recursion; |
1326 FindClosestMatchingLayer(screen_space_point, | 1326 FindClosestMatchingLayer(screen_space_point, |
1327 root_layer(), | 1327 root_layer(), |
1328 HitTestVisibleScrollableOrTouchableFunctor(), | 1328 HitTestVisibleScrollableOrTouchableFunctor(), |
1329 &data_for_recursion); | 1329 &data_for_recursion); |
1330 return data_for_recursion.closest_match; | 1330 return data_for_recursion.closest_match; |
1331 } | 1331 } |
1332 | 1332 |
1333 static bool LayerHasTouchEventHandlersAt(const gfx::PointF& screen_space_point, | 1333 static bool LayerHasTouchEventHandlersAt(const gfx::PointF& screen_space_point, |
1334 LayerImpl* layer_impl) { | 1334 LayerImpl* layer_impl) { |
(...skipping 20 matching lines...) Expand all Loading... |
1355 struct FindTouchEventLayerFunctor { | 1355 struct FindTouchEventLayerFunctor { |
1356 bool operator()(LayerImpl* layer) const { | 1356 bool operator()(LayerImpl* layer) const { |
1357 return LayerHasTouchEventHandlersAt(screen_space_point, layer); | 1357 return LayerHasTouchEventHandlersAt(screen_space_point, layer); |
1358 } | 1358 } |
1359 const gfx::PointF screen_space_point; | 1359 const gfx::PointF screen_space_point; |
1360 }; | 1360 }; |
1361 | 1361 |
1362 LayerImpl* LayerTreeImpl::FindLayerThatIsHitByPointInTouchHandlerRegion( | 1362 LayerImpl* LayerTreeImpl::FindLayerThatIsHitByPointInTouchHandlerRegion( |
1363 const gfx::PointF& screen_space_point) { | 1363 const gfx::PointF& screen_space_point) { |
1364 if (!root_layer()) | 1364 if (!root_layer()) |
1365 return NULL; | 1365 return nullptr; |
1366 if (!UpdateDrawProperties()) | 1366 if (!UpdateDrawProperties()) |
1367 return NULL; | 1367 return nullptr; |
1368 FindTouchEventLayerFunctor func = {screen_space_point}; | 1368 FindTouchEventLayerFunctor func = {screen_space_point}; |
1369 FindClosestMatchingLayerDataForRecursion data_for_recursion; | 1369 FindClosestMatchingLayerDataForRecursion data_for_recursion; |
1370 FindClosestMatchingLayer( | 1370 FindClosestMatchingLayer( |
1371 screen_space_point, root_layer(), func, &data_for_recursion); | 1371 screen_space_point, root_layer(), func, &data_for_recursion); |
1372 return data_for_recursion.closest_match; | 1372 return data_for_recursion.closest_match; |
1373 } | 1373 } |
1374 | 1374 |
1375 void LayerTreeImpl::RegisterSelection(const LayerSelectionBound& start, | 1375 void LayerTreeImpl::RegisterSelection(const LayerSelectionBound& start, |
1376 const LayerSelectionBound& end) { | 1376 const LayerSelectionBound& end) { |
1377 selection_start_ = start; | 1377 selection_start_ = start; |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1423 PointHitsLayer(layer, visibility_point, &intersect_distance); | 1423 PointHitsLayer(layer, visibility_point, &intersect_distance); |
1424 | 1424 |
1425 return viewport_bound; | 1425 return viewport_bound; |
1426 } | 1426 } |
1427 | 1427 |
1428 void LayerTreeImpl::GetViewportSelection(ViewportSelectionBound* start, | 1428 void LayerTreeImpl::GetViewportSelection(ViewportSelectionBound* start, |
1429 ViewportSelectionBound* end) { | 1429 ViewportSelectionBound* end) { |
1430 DCHECK(start); | 1430 DCHECK(start); |
1431 DCHECK(end); | 1431 DCHECK(end); |
1432 | 1432 |
1433 *start = ComputeViewportSelection( | 1433 *start = ComputeViewportSelection(selection_start_, |
1434 selection_start_, | 1434 selection_start_.layer_id |
1435 selection_start_.layer_id ? LayerById(selection_start_.layer_id) : NULL, | 1435 ? LayerById(selection_start_.layer_id) |
1436 device_scale_factor()); | 1436 : nullptr, |
| 1437 device_scale_factor()); |
1437 if (start->type == SELECTION_BOUND_CENTER || | 1438 if (start->type == SELECTION_BOUND_CENTER || |
1438 start->type == SELECTION_BOUND_EMPTY) { | 1439 start->type == SELECTION_BOUND_EMPTY) { |
1439 *end = *start; | 1440 *end = *start; |
1440 } else { | 1441 } else { |
1441 *end = ComputeViewportSelection( | 1442 *end = ComputeViewportSelection( |
1442 selection_end_, | 1443 selection_end_, |
1443 selection_end_.layer_id ? LayerById(selection_end_.layer_id) : NULL, | 1444 selection_end_.layer_id ? LayerById(selection_end_.layer_id) : nullptr, |
1444 device_scale_factor()); | 1445 device_scale_factor()); |
1445 } | 1446 } |
1446 } | 1447 } |
1447 | 1448 |
1448 void LayerTreeImpl::RegisterPictureLayerImpl(PictureLayerImpl* layer) { | 1449 void LayerTreeImpl::RegisterPictureLayerImpl(PictureLayerImpl* layer) { |
1449 layer_tree_host_impl_->RegisterPictureLayerImpl(layer); | 1450 layer_tree_host_impl_->RegisterPictureLayerImpl(layer); |
1450 } | 1451 } |
1451 | 1452 |
1452 void LayerTreeImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) { | 1453 void LayerTreeImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) { |
1453 layer_tree_host_impl_->UnregisterPictureLayerImpl(layer); | 1454 layer_tree_host_impl_->UnregisterPictureLayerImpl(layer); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1500 page_scale, | 1501 page_scale, |
1501 duration.InSecondsF()); | 1502 duration.InSecondsF()); |
1502 } | 1503 } |
1503 } | 1504 } |
1504 | 1505 |
1505 scoped_ptr<PageScaleAnimation> LayerTreeImpl::TakePageScaleAnimation() { | 1506 scoped_ptr<PageScaleAnimation> LayerTreeImpl::TakePageScaleAnimation() { |
1506 return page_scale_animation_.Pass(); | 1507 return page_scale_animation_.Pass(); |
1507 } | 1508 } |
1508 | 1509 |
1509 } // namespace cc | 1510 } // namespace cc |
OLD | NEW |