Index: cc/trees/layer_tree_impl.h |
diff --git a/cc/trees/layer_tree_impl.h b/cc/trees/layer_tree_impl.h |
index 46f57fda5b625c775e9c8d0bb1647948137ce6c7..ccff3c2447bfcb393ab6ae4e38a813d4c3dec2b4 100644 |
--- a/cc/trees/layer_tree_impl.h |
+++ b/cc/trees/layer_tree_impl.h |
@@ -578,13 +578,14 @@ class CC_EXPORT LayerTreeImpl { |
// derived from LayerImpl::scroll_clip_layer_ and exists to avoid O(n) walks.) |
std::unordered_map<int, int> clip_scroll_map_; |
- // Maps scroll element ids to scrollbar layer ids. For each scroll layer, |
- // there may be 1 or 2 scrollbar layers (for vertical and horizontal). (This |
- // is derived from ScrollbarLayerImplBase::scroll_element_id_ and exists to |
- // avoid O(n) walks.) |
- // TODO(pdr): Refactor this to be more efficient--likely a map where the value |
- // is a pair of scrollbar layer ids instead of using a multimap. |
- std::multimap<ElementId, int> element_id_to_scrollbar_layer_ids_; |
+ struct ScrollbarLayerIds { |
+ int horizontal = Layer::INVALID_ID; |
+ int vertical = Layer::INVALID_ID; |
+ }; |
+ // Each scroll layer can have up to two scrollbar layers (vertical and |
+ // horizontal). This mapping is maintained as part of scrollbar registration. |
+ base::flat_map<ElementId, ScrollbarLayerIds> |
+ element_id_to_scrollbar_layer_ids_; |
std::vector<PictureLayerImpl*> picture_layers_; |
LayerImplList surface_layers_; |