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

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

Issue 1675963002: Move MaxScrollOffset to property_trees (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix trybot failure, remove unnecessary code Created 4 years, 10 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_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 282 matching lines...) Expand 10 before | Expand all | Expand 10 after
293 LayerImpl* inner_container = InnerViewportContainerLayer(); 293 LayerImpl* inner_container = InnerViewportContainerLayer();
294 LayerImpl* outer_container = OuterViewportContainerLayer(); 294 LayerImpl* outer_container = OuterViewportContainerLayer();
295 295
296 UpdateClipTreeForBoundsDeltaOnLayer(inner_container, 296 UpdateClipTreeForBoundsDeltaOnLayer(inner_container,
297 &property_trees_.clip_tree); 297 &property_trees_.clip_tree);
298 UpdateClipTreeForBoundsDeltaOnLayer(InnerViewportScrollLayer(), 298 UpdateClipTreeForBoundsDeltaOnLayer(InnerViewportScrollLayer(),
299 &property_trees_.clip_tree); 299 &property_trees_.clip_tree);
300 UpdateClipTreeForBoundsDeltaOnLayer(outer_container, 300 UpdateClipTreeForBoundsDeltaOnLayer(outer_container,
301 &property_trees_.clip_tree); 301 &property_trees_.clip_tree);
302 302
303 TransformTree& transform_tree = property_trees_.transform_tree;
304 if (inner_container) 303 if (inner_container)
305 transform_tree.SetInnerViewportBoundsDelta(inner_container->bounds_delta()); 304 property_trees_.SetInnerViewportContainerBoundsDelta(
305 inner_container->bounds_delta());
306 if (outer_container) 306 if (outer_container)
307 transform_tree.SetOuterViewportBoundsDelta(outer_container->bounds_delta()); 307 property_trees_.SetOuterViewportContainerBoundsDelta(
308 outer_container->bounds_delta());
308 } 309 }
309 310
310 void LayerTreeImpl::PushPropertiesTo(LayerTreeImpl* target_tree) { 311 void LayerTreeImpl::PushPropertiesTo(LayerTreeImpl* target_tree) {
311 // The request queue should have been processed and does not require a push. 312 // The request queue should have been processed and does not require a push.
312 DCHECK_EQ(ui_resource_request_queue_.size(), 0u); 313 DCHECK_EQ(ui_resource_request_queue_.size(), 0u);
313 314
314 target_tree->SetPropertyTrees(property_trees_); 315 target_tree->SetPropertyTrees(property_trees_);
316 target_tree->property_trees()->SetupInternalPointers();
315 317
316 if (next_activation_forces_redraw_) { 318 if (next_activation_forces_redraw_) {
317 target_tree->ForceRedrawNextActivation(); 319 target_tree->ForceRedrawNextActivation();
318 next_activation_forces_redraw_ = false; 320 next_activation_forces_redraw_ = false;
319 } 321 }
320 322
321 target_tree->PassSwapPromises(&swap_promise_list_); 323 target_tree->PassSwapPromises(&swap_promise_list_);
322 324
323 target_tree->set_top_controls_shrink_blink_size( 325 target_tree->set_top_controls_shrink_blink_size(
324 top_controls_shrink_blink_size_); 326 top_controls_shrink_blink_size_);
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
477 // after begin frame and updates from animations that have ticked since begin 479 // after begin frame and updates from animations that have ticked since begin
478 // frame to a newly-committed property tree. 480 // frame to a newly-committed property tree.
479 if (!root_layer()) 481 if (!root_layer())
480 return; 482 return;
481 LayerTreeHostCommon::CallFunctionForSubtree( 483 LayerTreeHostCommon::CallFunctionForSubtree(
482 root_layer(), [](LayerImpl* layer) { 484 root_layer(), [](LayerImpl* layer) {
483 layer->UpdatePropertyTreeForScrollingAndAnimationIfNeeded(); 485 layer->UpdatePropertyTreeForScrollingAndAnimationIfNeeded();
484 }); 486 });
485 } 487 }
486 488
487 void LayerTreeImpl::SetPageScaleOnActiveTree(float active_page_scale) { 489 void LayerTreeImpl::SetPageScaleOnActiveTreeForTesting(
ajuma 2016/02/09 16:27:13 Can callers of this just call SetPageScaleOnActive
490 float active_page_scale) {
488 DCHECK(IsActiveTree()); 491 DCHECK(IsActiveTree());
489 if (page_scale_factor()->SetCurrent( 492 if (page_scale_factor()->SetCurrent(
490 ClampPageScaleFactorToLimits(active_page_scale))) 493 ClampPageScaleFactorToLimits(active_page_scale)))
491 DidUpdatePageScale(); 494 DidUpdatePageScale();
492 } 495 }
493 496
497 void LayerTreeImpl::SetPageScaleOnActiveTree(float active_page_scale) {
498 DCHECK(IsActiveTree());
499 if (page_scale_factor()->SetCurrent(
500 ClampPageScaleFactorToLimits(active_page_scale))) {
501 gfx::Transform identity_transform;
502 UpdatePageScaleFactorInPropertyTrees(
503 property_trees(), PageScaleLayer(),
504 ClampPageScaleFactorToLimits(active_page_scale), device_scale_factor(),
505 identity_transform);
506 DidUpdatePageScale();
507 }
508 }
509
494 void LayerTreeImpl::PushPageScaleFromMainThread(float page_scale_factor, 510 void LayerTreeImpl::PushPageScaleFromMainThread(float page_scale_factor,
495 float min_page_scale_factor, 511 float min_page_scale_factor,
496 float max_page_scale_factor) { 512 float max_page_scale_factor) {
497 PushPageScaleFactorAndLimits(&page_scale_factor, min_page_scale_factor, 513 PushPageScaleFactorAndLimits(&page_scale_factor, min_page_scale_factor,
498 max_page_scale_factor); 514 max_page_scale_factor);
499 } 515 }
500 516
501 void LayerTreeImpl::PushPageScaleFactorAndLimits(const float* page_scale_factor, 517 void LayerTreeImpl::PushPageScaleFactorAndLimits(const float* page_scale_factor,
502 float min_page_scale_factor, 518 float min_page_scale_factor,
503 float max_page_scale_factor) { 519 float max_page_scale_factor) {
504 DCHECK(page_scale_factor || IsActiveTree()); 520 DCHECK(page_scale_factor || IsActiveTree());
505 bool changed_page_scale = false; 521 bool changed_page_scale = false;
522
523 changed_page_scale |=
524 SetPageScaleFactorLimits(min_page_scale_factor, max_page_scale_factor);
525
506 if (page_scale_factor) { 526 if (page_scale_factor) {
507 DCHECK(!IsActiveTree() || !layer_tree_host_impl_->pending_tree()); 527 DCHECK(!IsActiveTree() || !layer_tree_host_impl_->pending_tree());
508 changed_page_scale |= page_scale_factor_->Delta() != 1.f; 528 changed_page_scale |= page_scale_factor_->Delta() != 1.f;
509 // TODO(enne): Once CDP goes away, ignore this call below. The only time 529 // TODO(enne): Once CDP goes away, ignore this call below. The only time
510 // the property trees will differ is if there's been a page scale on the 530 // the property trees will differ is if there's been a page scale on the
511 // compositor thread after the begin frame, which is the delta check above. 531 // compositor thread after the begin frame, which is the delta check above.
512 changed_page_scale |= 532 changed_page_scale |=
513 page_scale_factor_->PushFromMainThread(*page_scale_factor); 533 page_scale_factor_->PushFromMainThread(*page_scale_factor);
534 if (PageScaleLayer()) {
535 gfx::Transform identity_transform;
536 UpdatePageScaleFactorInPropertyTrees(
537 property_trees(), PageScaleLayer(),
538 ClampPageScaleFactorToLimits(*page_scale_factor),
539 device_scale_factor(), identity_transform);
540 } else {
541 property_trees()->transform_tree.set_page_scale_factor(
542 ClampPageScaleFactorToLimits(*page_scale_factor));
543 }
544 } else {
545 // Active tree already knows the page_scale_factor, needs to update the
546 // factor in transform tree.
ajuma 2016/02/09 16:27:13 I'm not sure I follow this comment. We could be pu
547 if (PageScaleLayer()) {
548 gfx::Transform identity_transform;
549 UpdatePageScaleFactorInPropertyTrees(
550 property_trees(), PageScaleLayer(),
551 ClampPageScaleFactorToLimits(
552 page_scale_factor_->Current(IsActiveTree())),
553 device_scale_factor(), identity_transform);
554 } else {
555 property_trees()->transform_tree.set_page_scale_factor(
556 ClampPageScaleFactorToLimits(
557 page_scale_factor_->Current(IsActiveTree())));
558 }
ajuma 2016/02/09 16:27:13 What goes wrong if we wait till UpdateDrawProperti
514 } 559 }
560
515 if (IsActiveTree()) { 561 if (IsActiveTree()) {
516 // TODO(enne): Pushing from pending to active should never require 562 // TODO(enne): Pushing from pending to active should never require
517 // DidUpdatePageScale. The values should already be set by the fully 563 // DidUpdatePageScale. The values should already be set by the fully
518 // computed property trees being synced from one tree to another. Remove 564 // computed property trees being synced from one tree to another. Remove
519 // this once CDP goes away. 565 // this once CDP goes away.
520 changed_page_scale |= page_scale_factor_->PushPendingToActive(); 566 changed_page_scale |= page_scale_factor_->PushPendingToActive();
521 } 567 }
522 568
523 changed_page_scale |=
524 SetPageScaleFactorLimits(min_page_scale_factor, max_page_scale_factor);
525
526 if (changed_page_scale) 569 if (changed_page_scale)
527 DidUpdatePageScale(); 570 DidUpdatePageScale();
528 } 571 }
529 572
530 void LayerTreeImpl::set_top_controls_shrink_blink_size(bool shrink) { 573 void LayerTreeImpl::set_top_controls_shrink_blink_size(bool shrink) {
531 if (top_controls_shrink_blink_size_ == shrink) 574 if (top_controls_shrink_blink_size_ == shrink)
532 return; 575 return;
533 576
534 top_controls_shrink_blink_size_ = shrink; 577 top_controls_shrink_blink_size_ = shrink;
535 if (IsActiveTree()) 578 if (IsActiveTree())
(...skipping 1514 matching lines...) Expand 10 before | Expand all | Expand 10 after
2050 const gfx::BoxF& box, 2093 const gfx::BoxF& box,
2051 gfx::BoxF* bounds) const { 2094 gfx::BoxF* bounds) const {
2052 *bounds = gfx::BoxF(); 2095 *bounds = gfx::BoxF();
2053 return layer_tree_host_impl_->animation_host() 2096 return layer_tree_host_impl_->animation_host()
2054 ? layer_tree_host_impl_->animation_host() 2097 ? layer_tree_host_impl_->animation_host()
2055 ->TransformAnimationBoundsForBox(layer->id(), box, bounds) 2098 ->TransformAnimationBoundsForBox(layer->id(), box, bounds)
2056 : true; 2099 : true;
2057 } 2100 }
2058 2101
2059 } // namespace cc 2102 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698