Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(248)

Side by Side Diff: cc/trees/layer_tree_host_impl.cc

Issue 2243973002: Fix scroll chaining in CC for non-default RootScroller. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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_host_impl.h" 5 #include "cc/trees/layer_tree_host_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 2997 matching lines...) Expand 10 before | Expand all | Expand 10 after
3008 // TODO(majidvp): in Blink we compute scroll chain only at scroll begin which 3008 // TODO(majidvp): in Blink we compute scroll chain only at scroll begin which
3009 // is not the case here. We eventually want to have the same behaviour on both 3009 // is not the case here. We eventually want to have the same behaviour on both
3010 // sides but it may become a non issue if we get rid of scroll chaining (see 3010 // sides but it may become a non issue if we get rid of scroll chaining (see
3011 // crbug.com/526462) 3011 // crbug.com/526462)
3012 std::list<const ScrollNode*> current_scroll_chain; 3012 std::list<const ScrollNode*> current_scroll_chain;
3013 ScrollTree& scroll_tree = active_tree_->property_trees()->scroll_tree; 3013 ScrollTree& scroll_tree = active_tree_->property_trees()->scroll_tree;
3014 ScrollNode* scroll_node = scroll_tree.CurrentlyScrollingNode(); 3014 ScrollNode* scroll_node = scroll_tree.CurrentlyScrollingNode();
3015 if (scroll_node) { 3015 if (scroll_node) {
3016 for (; scroll_tree.parent(scroll_node); 3016 for (; scroll_tree.parent(scroll_node);
3017 scroll_node = scroll_tree.parent(scroll_node)) { 3017 scroll_node = scroll_tree.parent(scroll_node)) {
3018 // Skip the outer viewport scroll layer so that we try to scroll the 3018 if (scroll_node->is_outer_viewport_scroll_layer) {
3019 // viewport only once. i.e. The inner viewport layer represents the 3019 // Don't chain scrolls past the outer viewport scroll layer. Once we
3020 // viewport. 3020 // reach that, we should scroll the viewport, which is represented by
3021 if (!scroll_node->scrollable || 3021 // the inner viewport scroll layer.
3022 scroll_node->is_outer_viewport_scroll_layer) 3022 ScrollNode* inner_scroll_node =
tdresser 2016/08/15 13:37:41 Maybe inner_viewport_scroll_node?
bokan 2016/08/20 22:13:58 Done.
3023 scroll_tree.Node(InnerViewportScrollLayer()->scroll_tree_index());
3024 current_scroll_chain.push_front(inner_scroll_node);
3025 break;
3026 }
3027
3028 if (!scroll_node->scrollable)
3023 continue; 3029 continue;
3030
3024 current_scroll_chain.push_front(scroll_node); 3031 current_scroll_chain.push_front(scroll_node);
3025 } 3032 }
3026 } 3033 }
3027 scroll_state->set_scroll_chain_and_layer_tree(current_scroll_chain, 3034 scroll_state->set_scroll_chain_and_layer_tree(current_scroll_chain,
3028 active_tree()); 3035 active_tree());
3029 scroll_state->DistributeToScrollChainDescendant(); 3036 scroll_state->DistributeToScrollChainDescendant();
3030 } 3037 }
3031 3038
3032 InputHandlerScrollResult LayerTreeHostImpl::ScrollBy( 3039 InputHandlerScrollResult LayerTreeHostImpl::ScrollBy(
3033 ScrollState* scroll_state) { 3040 ScrollState* scroll_state) {
(...skipping 978 matching lines...) Expand 10 before | Expand all | Expand 10 after
4012 return task_runner_provider_->HasImplThread(); 4019 return task_runner_provider_->HasImplThread();
4013 } 4020 }
4014 4021
4015 bool LayerTreeHostImpl::CommitToActiveTree() const { 4022 bool LayerTreeHostImpl::CommitToActiveTree() const {
4016 // In single threaded mode we skip the pending tree and commit directly to the 4023 // In single threaded mode we skip the pending tree and commit directly to the
4017 // active tree. 4024 // active tree.
4018 return !task_runner_provider_->HasImplThread(); 4025 return !task_runner_provider_->HasImplThread();
4019 } 4026 }
4020 4027
4021 } // namespace cc 4028 } // namespace cc
OLDNEW
« no previous file with comments | « no previous file | cc/trees/layer_tree_host_impl_unittest.cc » ('j') | cc/trees/layer_tree_host_impl_unittest.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698