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

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

Issue 2824693002: Refactor LayerTreeImpl's scrollbar map to be keyed on element ids (Closed)
Patch Set: Address reviewer comments Created 3 years, 8 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 3435 matching lines...) Expand 10 before | Expand all | Expand 10 after
3446 old_animation_controller->DidMouseLeave(); 3446 old_animation_controller->DidMouseLeave();
3447 } 3447 }
3448 scroll_element_id_mouse_currently_over_ = new_element_id; 3448 scroll_element_id_mouse_currently_over_ = new_element_id;
3449 } 3449 }
3450 3450
3451 ScrollbarAnimationController* new_animation_controller = 3451 ScrollbarAnimationController* new_animation_controller =
3452 ScrollbarAnimationControllerForElementId(new_element_id); 3452 ScrollbarAnimationControllerForElementId(new_element_id);
3453 if (!new_animation_controller) 3453 if (!new_animation_controller)
3454 return; 3454 return;
3455 3455
3456 int new_layer_id = active_tree_->LayerIdByElementId(new_element_id); 3456 for (auto* scrollbar : active_tree_->ScrollbarsFor(new_element_id)) {
3457 for (ScrollbarLayerImplBase* scrollbar :
3458 active_tree_->ScrollbarsFor(new_layer_id)) {
3459 new_animation_controller->DidMouseMoveNear( 3457 new_animation_controller->DidMouseMoveNear(
3460 scrollbar->orientation(), 3458 scrollbar->orientation(),
3461 DeviceSpaceDistanceToLayer(device_viewport_point, scrollbar) / 3459 DeviceSpaceDistanceToLayer(device_viewport_point, scrollbar) /
3462 active_tree_->device_scale_factor()); 3460 active_tree_->device_scale_factor());
3463 } 3461 }
3464 } 3462 }
3465 3463
3466 void LayerTreeHostImpl::MouseLeave() { 3464 void LayerTreeHostImpl::MouseLeave() {
3467 for (auto& pair : scrollbar_animation_controllers_) 3465 for (auto& pair : scrollbar_animation_controllers_)
3468 pair.second->DidMouseLeave(); 3466 pair.second->DidMouseLeave();
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
3674 if (active_tree_->root_layer_for_testing()) { 3672 if (active_tree_->root_layer_for_testing()) {
3675 std::unique_ptr<base::Value> json( 3673 std::unique_ptr<base::Value> json(
3676 active_tree_->root_layer_for_testing()->LayerTreeAsJson()); 3674 active_tree_->root_layer_for_testing()->LayerTreeAsJson());
3677 base::JSONWriter::WriteWithOptions( 3675 base::JSONWriter::WriteWithOptions(
3678 *json, base::JSONWriter::OPTIONS_PRETTY_PRINT, &str); 3676 *json, base::JSONWriter::OPTIONS_PRETTY_PRINT, &str);
3679 } 3677 }
3680 return str; 3678 return str;
3681 } 3679 }
3682 3680
3683 void LayerTreeHostImpl::RegisterScrollbarAnimationController( 3681 void LayerTreeHostImpl::RegisterScrollbarAnimationController(
3684 int scroll_layer_id,
3685 ElementId scroll_element_id) { 3682 ElementId scroll_element_id) {
3686 if (settings().scrollbar_animator == LayerTreeSettings::NO_ANIMATOR) 3683 if (settings().scrollbar_animator == LayerTreeSettings::NO_ANIMATOR)
3687 return; 3684 return;
3688 if (ScrollbarAnimationControllerForElementId(scroll_element_id)) 3685 if (ScrollbarAnimationControllerForElementId(scroll_element_id))
3689 return; 3686 return;
3690 scrollbar_animation_controllers_[scroll_element_id] = 3687 scrollbar_animation_controllers_[scroll_element_id] =
3691 active_tree_->CreateScrollbarAnimationController(scroll_layer_id); 3688 active_tree_->CreateScrollbarAnimationController(scroll_element_id);
3692 } 3689 }
3693 3690
3694 void LayerTreeHostImpl::UnregisterScrollbarAnimationController( 3691 void LayerTreeHostImpl::UnregisterScrollbarAnimationController(
3695 ElementId scroll_element_id) { 3692 ElementId scroll_element_id) {
3696 scrollbar_animation_controllers_.erase(scroll_element_id); 3693 scrollbar_animation_controllers_.erase(scroll_element_id);
3697 } 3694 }
3698 3695
3699 ScrollbarAnimationController* 3696 ScrollbarAnimationController*
3700 LayerTreeHostImpl::ScrollbarAnimationControllerForElementId( 3697 LayerTreeHostImpl::ScrollbarAnimationControllerForElementId(
3701 ElementId scroll_element_id) const { 3698 ElementId scroll_element_id) const {
(...skipping 20 matching lines...) Expand all
3722 TRACE_EVENT0("cc", "LayerTreeHostImpl::SetNeedsAnimateForScrollbarAnimation"); 3719 TRACE_EVENT0("cc", "LayerTreeHostImpl::SetNeedsAnimateForScrollbarAnimation");
3723 SetNeedsOneBeginImplFrame(); 3720 SetNeedsOneBeginImplFrame();
3724 } 3721 }
3725 3722
3726 // TODO(danakj): Make this a return value from the Animate() call instead of an 3723 // TODO(danakj): Make this a return value from the Animate() call instead of an
3727 // interface on LTHI. (Also, crbug.com/551138.) 3724 // interface on LTHI. (Also, crbug.com/551138.)
3728 void LayerTreeHostImpl::SetNeedsRedrawForScrollbarAnimation() { 3725 void LayerTreeHostImpl::SetNeedsRedrawForScrollbarAnimation() {
3729 SetNeedsRedraw(); 3726 SetNeedsRedraw();
3730 } 3727 }
3731 3728
3732 ScrollbarSet LayerTreeHostImpl::ScrollbarsFor(int scroll_layer_id) const { 3729 ScrollbarSet LayerTreeHostImpl::ScrollbarsFor(ElementId id) const {
3733 return active_tree_->ScrollbarsFor(scroll_layer_id); 3730 return active_tree_->ScrollbarsFor(id);
3734 } 3731 }
3735 3732
3736 void LayerTreeHostImpl::AddVideoFrameController( 3733 void LayerTreeHostImpl::AddVideoFrameController(
3737 VideoFrameController* controller) { 3734 VideoFrameController* controller) {
3738 bool was_empty = video_frame_controllers_.empty(); 3735 bool was_empty = video_frame_controllers_.empty();
3739 video_frame_controllers_.insert(controller); 3736 video_frame_controllers_.insert(controller);
3740 if (current_begin_frame_tracker_.DangerousMethodHasStarted() && 3737 if (current_begin_frame_tracker_.DangerousMethodHasStarted() &&
3741 !current_begin_frame_tracker_.DangerousMethodHasFinished()) 3738 !current_begin_frame_tracker_.DangerousMethodHasFinished())
3742 controller->OnBeginFrame(current_begin_frame_tracker_.Current()); 3739 controller->OnBeginFrame(current_begin_frame_tracker_.Current());
3743 if (was_empty) 3740 if (was_empty)
(...skipping 542 matching lines...) Expand 10 before | Expand all | Expand 10 after
4286 } 4283 }
4287 4284
4288 void LayerTreeHostImpl::UpdateScrollSourceInfo(bool is_wheel_scroll) { 4285 void LayerTreeHostImpl::UpdateScrollSourceInfo(bool is_wheel_scroll) {
4289 if (is_wheel_scroll) 4286 if (is_wheel_scroll)
4290 has_scrolled_by_wheel_ = true; 4287 has_scrolled_by_wheel_ = true;
4291 else 4288 else
4292 has_scrolled_by_touch_ = true; 4289 has_scrolled_by_touch_ = true;
4293 } 4290 }
4294 4291
4295 } // namespace cc 4292 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698