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 <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <algorithm> | 10 #include <algorithm> |
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
239 current_offset += InnerViewportScrollLayer()->CurrentScrollOffset(); | 239 current_offset += InnerViewportScrollLayer()->CurrentScrollOffset(); |
240 if (OuterViewportContainerLayer()) | 240 if (OuterViewportContainerLayer()) |
241 clip_size.SetToMin(OuterViewportContainerLayer()->BoundsForScrolling()); | 241 clip_size.SetToMin(OuterViewportContainerLayer()->BoundsForScrolling()); |
242 clip_size.Scale(1 / current_page_scale_factor()); | 242 clip_size.Scale(1 / current_page_scale_factor()); |
243 } | 243 } |
244 | 244 |
245 bool scrollbar_needs_animation = false; | 245 bool scrollbar_needs_animation = false; |
246 bool clip_layer_size_did_change = false; | 246 bool clip_layer_size_did_change = false; |
247 bool scroll_layer_size_did_change = false; | 247 bool scroll_layer_size_did_change = false; |
248 bool y_offset_did_change = false; | 248 bool y_offset_did_change = false; |
249 for (ScrollbarLayerImplBase* scrollbar : ScrollbarsFor(scroll_layer_id)) { | 249 for (auto* scrollbar : ScrollbarsFor(scroll_layer->element_id())) { |
250 if (scrollbar->orientation() == HORIZONTAL) { | 250 if (scrollbar->orientation() == HORIZONTAL) { |
251 scrollbar_needs_animation |= scrollbar->SetCurrentPos(current_offset.x()); | 251 scrollbar_needs_animation |= scrollbar->SetCurrentPos(current_offset.x()); |
252 clip_layer_size_did_change |= | 252 clip_layer_size_did_change |= |
253 scrollbar->SetClipLayerLength(clip_size.width()); | 253 scrollbar->SetClipLayerLength(clip_size.width()); |
254 scroll_layer_size_did_change |= | 254 scroll_layer_size_did_change |= |
255 scrollbar->SetScrollLayerLength(scroll_size.width()); | 255 scrollbar->SetScrollLayerLength(scroll_size.width()); |
256 } else { | 256 } else { |
257 scrollbar_needs_animation |= y_offset_did_change |= | 257 scrollbar_needs_animation |= y_offset_did_change |= |
258 scrollbar->SetCurrentPos(current_offset.y()); | 258 scrollbar->SetCurrentPos(current_offset.y()); |
259 clip_layer_size_did_change |= | 259 clip_layer_size_did_change |= |
(...skipping 1201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1461 | 1461 |
1462 gfx::Size LayerTreeImpl::DrawViewportSize() const { | 1462 gfx::Size LayerTreeImpl::DrawViewportSize() const { |
1463 return layer_tree_host_impl_->DrawViewportSize(); | 1463 return layer_tree_host_impl_->DrawViewportSize(); |
1464 } | 1464 } |
1465 | 1465 |
1466 const gfx::Rect LayerTreeImpl::ViewportRectForTilePriority() const { | 1466 const gfx::Rect LayerTreeImpl::ViewportRectForTilePriority() const { |
1467 return layer_tree_host_impl_->ViewportRectForTilePriority(); | 1467 return layer_tree_host_impl_->ViewportRectForTilePriority(); |
1468 } | 1468 } |
1469 | 1469 |
1470 std::unique_ptr<ScrollbarAnimationController> | 1470 std::unique_ptr<ScrollbarAnimationController> |
1471 LayerTreeImpl::CreateScrollbarAnimationController(int scroll_layer_id) { | 1471 LayerTreeImpl::CreateScrollbarAnimationController(ElementId scroll_element_id) { |
1472 DCHECK(!settings().scrollbar_fade_out_delay.is_zero()); | 1472 DCHECK(!settings().scrollbar_fade_out_delay.is_zero()); |
1473 DCHECK(!settings().scrollbar_fade_out_duration.is_zero()); | 1473 DCHECK(!settings().scrollbar_fade_out_duration.is_zero()); |
1474 base::TimeDelta fade_out_delay = settings().scrollbar_fade_out_delay; | 1474 base::TimeDelta fade_out_delay = settings().scrollbar_fade_out_delay; |
1475 base::TimeDelta fade_out_resize_delay = | 1475 base::TimeDelta fade_out_resize_delay = |
1476 settings().scrollbar_fade_out_resize_delay; | 1476 settings().scrollbar_fade_out_resize_delay; |
1477 base::TimeDelta fade_out_duration = settings().scrollbar_fade_out_duration; | 1477 base::TimeDelta fade_out_duration = settings().scrollbar_fade_out_duration; |
1478 switch (settings().scrollbar_animator) { | 1478 switch (settings().scrollbar_animator) { |
1479 case LayerTreeSettings::ANDROID_OVERLAY: { | 1479 case LayerTreeSettings::ANDROID_OVERLAY: { |
1480 return ScrollbarAnimationController:: | 1480 return ScrollbarAnimationController:: |
1481 CreateScrollbarAnimationControllerAndroid( | 1481 CreateScrollbarAnimationControllerAndroid( |
1482 scroll_layer_id, layer_tree_host_impl_, fade_out_delay, | 1482 scroll_element_id, layer_tree_host_impl_, fade_out_delay, |
1483 fade_out_resize_delay, fade_out_duration); | 1483 fade_out_resize_delay, fade_out_duration); |
1484 } | 1484 } |
1485 case LayerTreeSettings::AURA_OVERLAY: { | 1485 case LayerTreeSettings::AURA_OVERLAY: { |
1486 DCHECK(!settings().scrollbar_show_delay.is_zero()); | 1486 DCHECK(!settings().scrollbar_show_delay.is_zero()); |
1487 base::TimeDelta show_delay = settings().scrollbar_show_delay; | 1487 base::TimeDelta show_delay = settings().scrollbar_show_delay; |
1488 base::TimeDelta thinning_duration = | 1488 base::TimeDelta thinning_duration = |
1489 settings().scrollbar_thinning_duration; | 1489 settings().scrollbar_thinning_duration; |
1490 return ScrollbarAnimationController:: | 1490 return ScrollbarAnimationController:: |
1491 CreateScrollbarAnimationControllerAuraOverlay( | 1491 CreateScrollbarAnimationControllerAuraOverlay( |
1492 scroll_layer_id, layer_tree_host_impl_, show_delay, | 1492 scroll_element_id, layer_tree_host_impl_, show_delay, |
1493 fade_out_delay, fade_out_resize_delay, fade_out_duration, | 1493 fade_out_delay, fade_out_resize_delay, fade_out_duration, |
1494 thinning_duration); | 1494 thinning_duration); |
1495 } | 1495 } |
1496 case LayerTreeSettings::NO_ANIMATOR: | 1496 case LayerTreeSettings::NO_ANIMATOR: |
1497 NOTREACHED(); | 1497 NOTREACHED(); |
1498 break; | 1498 break; |
1499 } | 1499 } |
1500 return nullptr; | 1500 return nullptr; |
1501 } | 1501 } |
1502 | 1502 |
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1714 } | 1714 } |
1715 | 1715 |
1716 void LayerTreeImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) { | 1716 void LayerTreeImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) { |
1717 std::vector<PictureLayerImpl*>::iterator it = | 1717 std::vector<PictureLayerImpl*>::iterator it = |
1718 std::find(picture_layers_.begin(), picture_layers_.end(), layer); | 1718 std::find(picture_layers_.begin(), picture_layers_.end(), layer); |
1719 DCHECK(it != picture_layers_.end()); | 1719 DCHECK(it != picture_layers_.end()); |
1720 picture_layers_.erase(it); | 1720 picture_layers_.erase(it); |
1721 } | 1721 } |
1722 | 1722 |
1723 void LayerTreeImpl::RegisterScrollbar(ScrollbarLayerImplBase* scrollbar_layer) { | 1723 void LayerTreeImpl::RegisterScrollbar(ScrollbarLayerImplBase* scrollbar_layer) { |
1724 if (scrollbar_layer->ScrollLayerId() == Layer::INVALID_ID) | 1724 ElementId scroll_element_id = scrollbar_layer->scroll_element_id(); |
| 1725 if (!scroll_element_id) |
1725 return; | 1726 return; |
1726 | 1727 |
1727 scrollbar_map_.insert(std::pair<int, int>(scrollbar_layer->ScrollLayerId(), | 1728 scrollbar_map_.insert( |
1728 scrollbar_layer->id())); | 1729 std::pair<ElementId, int>(scroll_element_id, scrollbar_layer->id())); |
1729 if (IsActiveTree() && scrollbar_layer->is_overlay_scrollbar()) { | 1730 if (IsActiveTree() && scrollbar_layer->is_overlay_scrollbar()) { |
1730 auto scroll_layer_id = scrollbar_layer->ScrollLayerId(); | |
1731 layer_tree_host_impl_->RegisterScrollbarAnimationController( | 1731 layer_tree_host_impl_->RegisterScrollbarAnimationController( |
1732 scroll_layer_id, scrollbar_layer->scroll_element_id()); | 1732 scroll_element_id); |
1733 } | 1733 } |
1734 | 1734 |
1735 DidUpdateScrollState(scrollbar_layer->ScrollLayerId()); | 1735 DidUpdateScrollState(scrollbar_layer->ScrollLayerId()); |
1736 } | 1736 } |
1737 | 1737 |
1738 void LayerTreeImpl::UnregisterScrollbar( | 1738 void LayerTreeImpl::UnregisterScrollbar( |
1739 ScrollbarLayerImplBase* scrollbar_layer) { | 1739 ScrollbarLayerImplBase* scrollbar_layer) { |
1740 int scroll_layer_id = scrollbar_layer->ScrollLayerId(); | 1740 ElementId scroll_element_id = scrollbar_layer->scroll_element_id(); |
1741 if (scroll_layer_id == Layer::INVALID_ID) | 1741 if (!scroll_element_id) |
1742 return; | 1742 return; |
1743 | 1743 |
1744 auto scrollbar_range = scrollbar_map_.equal_range(scroll_layer_id); | 1744 auto scrollbar_range = scrollbar_map_.equal_range(scroll_element_id); |
1745 for (auto i = scrollbar_range.first; i != scrollbar_range.second; ++i) | 1745 for (auto i = scrollbar_range.first; i != scrollbar_range.second; ++i) |
1746 if (i->second == scrollbar_layer->id()) { | 1746 if (i->second == scrollbar_layer->id()) { |
1747 scrollbar_map_.erase(i); | 1747 scrollbar_map_.erase(i); |
1748 break; | 1748 break; |
1749 } | 1749 } |
1750 | 1750 |
1751 if (IsActiveTree() && scrollbar_map_.count(scroll_layer_id) == 0) { | 1751 if (IsActiveTree() && scrollbar_map_.count(scroll_element_id) == 0) { |
1752 layer_tree_host_impl_->UnregisterScrollbarAnimationController( | 1752 layer_tree_host_impl_->UnregisterScrollbarAnimationController( |
1753 scrollbar_layer->scroll_element_id()); | 1753 scroll_element_id); |
1754 } | 1754 } |
1755 } | 1755 } |
1756 | 1756 |
1757 ScrollbarSet LayerTreeImpl::ScrollbarsFor(int scroll_layer_id) const { | 1757 ScrollbarSet LayerTreeImpl::ScrollbarsFor(ElementId scroll_element_id) const { |
1758 ScrollbarSet scrollbars; | 1758 ScrollbarSet scrollbars; |
1759 auto scrollbar_range = scrollbar_map_.equal_range(scroll_layer_id); | 1759 auto scrollbar_range = scrollbar_map_.equal_range(scroll_element_id); |
1760 for (auto i = scrollbar_range.first; i != scrollbar_range.second; ++i) | 1760 for (auto i = scrollbar_range.first; i != scrollbar_range.second; ++i) |
1761 scrollbars.insert(LayerById(i->second)->ToScrollbarLayer()); | 1761 scrollbars.insert(LayerById(i->second)->ToScrollbarLayer()); |
1762 return scrollbars; | 1762 return scrollbars; |
1763 } | 1763 } |
1764 | 1764 |
1765 void LayerTreeImpl::RegisterScrollLayer(LayerImpl* layer) { | 1765 void LayerTreeImpl::RegisterScrollLayer(LayerImpl* layer) { |
1766 if (layer->scroll_clip_layer_id() == Layer::INVALID_ID) | 1766 if (layer->scroll_clip_layer_id() == Layer::INVALID_ID) |
1767 return; | 1767 return; |
1768 | 1768 |
1769 clip_scroll_map_.insert( | 1769 clip_scroll_map_.insert( |
(...skipping 412 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2182 | 2182 |
2183 void LayerTreeImpl::ResetAllChangeTracking() { | 2183 void LayerTreeImpl::ResetAllChangeTracking() { |
2184 layers_that_should_push_properties_.clear(); | 2184 layers_that_should_push_properties_.clear(); |
2185 // Iterate over all layers, including masks. | 2185 // Iterate over all layers, including masks. |
2186 for (auto& layer : *layers_) | 2186 for (auto& layer : *layers_) |
2187 layer->ResetChangeTracking(); | 2187 layer->ResetChangeTracking(); |
2188 property_trees_.ResetAllChangeTracking(); | 2188 property_trees_.ResetAllChangeTracking(); |
2189 } | 2189 } |
2190 | 2190 |
2191 } // namespace cc | 2191 } // namespace cc |
OLD | NEW |