| 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 <limits> | 7 #include <limits> |
| 8 #include <set> | 8 #include <set> |
| 9 | 9 |
| 10 #include "base/debug/trace_event.h" | 10 #include "base/debug/trace_event.h" |
| 11 #include "base/debug/trace_event_argument.h" | 11 #include "base/debug/trace_event_argument.h" |
| 12 #include "cc/animation/keyframed_animation_curve.h" | 12 #include "cc/animation/keyframed_animation_curve.h" |
| 13 #include "cc/animation/scrollbar_animation_controller.h" | 13 #include "cc/animation/scrollbar_animation_controller.h" |
| 14 #include "cc/animation/scrollbar_animation_controller_linear_fade.h" | 14 #include "cc/animation/scrollbar_animation_controller_linear_fade.h" |
| 15 #include "cc/animation/scrollbar_animation_controller_thinning.h" | 15 #include "cc/animation/scrollbar_animation_controller_thinning.h" |
| 16 #include "cc/base/math_util.h" | 16 #include "cc/base/math_util.h" |
| 17 #include "cc/base/synced_property.h" |
| 17 #include "cc/base/util.h" | 18 #include "cc/base/util.h" |
| 18 #include "cc/debug/devtools_instrumentation.h" | 19 #include "cc/debug/devtools_instrumentation.h" |
| 19 #include "cc/debug/traced_value.h" | 20 #include "cc/debug/traced_value.h" |
| 20 #include "cc/input/page_scale_animation.h" | 21 #include "cc/input/page_scale_animation.h" |
| 21 #include "cc/layers/heads_up_display_layer_impl.h" | 22 #include "cc/layers/heads_up_display_layer_impl.h" |
| 22 #include "cc/layers/layer.h" | 23 #include "cc/layers/layer.h" |
| 23 #include "cc/layers/layer_iterator.h" | 24 #include "cc/layers/layer_iterator.h" |
| 24 #include "cc/layers/render_surface_impl.h" | 25 #include "cc/layers/render_surface_impl.h" |
| 25 #include "cc/layers/scrollbar_layer_impl_base.h" | 26 #include "cc/layers/scrollbar_layer_impl_base.h" |
| 26 #include "cc/resources/ui_resource_request.h" | 27 #include "cc/resources/ui_resource_request.h" |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 65 layer_tree_impl_->UpdateScrollOffsetDelegate(); | 66 layer_tree_impl_->UpdateScrollOffsetDelegate(); |
| 66 } | 67 } |
| 67 | 68 |
| 68 private: | 69 private: |
| 69 LayerImpl* layer_; | 70 LayerImpl* layer_; |
| 70 LayerScrollOffsetDelegate* delegate_; | 71 LayerScrollOffsetDelegate* delegate_; |
| 71 LayerTreeImpl* layer_tree_impl_; | 72 LayerTreeImpl* layer_tree_impl_; |
| 72 gfx::ScrollOffset last_set_scroll_offset_; | 73 gfx::ScrollOffset last_set_scroll_offset_; |
| 73 }; | 74 }; |
| 74 | 75 |
| 75 LayerTreeImpl::LayerTreeImpl(LayerTreeHostImpl* layer_tree_host_impl) | 76 LayerTreeImpl::LayerTreeImpl( |
| 77 LayerTreeHostImpl* layer_tree_host_impl, |
| 78 scoped_refptr<SyncedProperty<ScaleGroup>> page_scale_factor) |
| 76 : layer_tree_host_impl_(layer_tree_host_impl), | 79 : layer_tree_host_impl_(layer_tree_host_impl), |
| 77 source_frame_number_(-1), | 80 source_frame_number_(-1), |
| 78 hud_layer_(0), | 81 hud_layer_(0), |
| 79 currently_scrolling_layer_(NULL), | 82 currently_scrolling_layer_(NULL), |
| 80 root_layer_scroll_offset_delegate_(NULL), | 83 root_layer_scroll_offset_delegate_(NULL), |
| 81 background_color_(0), | 84 background_color_(0), |
| 82 has_transparent_background_(false), | 85 has_transparent_background_(false), |
| 83 page_scale_layer_(NULL), | 86 page_scale_layer_(NULL), |
| 84 inner_viewport_scroll_layer_(NULL), | 87 inner_viewport_scroll_layer_(NULL), |
| 85 outer_viewport_scroll_layer_(NULL), | 88 outer_viewport_scroll_layer_(NULL), |
| 86 page_scale_factor_(1), | 89 page_scale_factor_(page_scale_factor), |
| 87 page_scale_delta_(1), | |
| 88 sent_page_scale_delta_(1), | |
| 89 min_page_scale_factor_(0), | 90 min_page_scale_factor_(0), |
| 90 max_page_scale_factor_(0), | 91 max_page_scale_factor_(0), |
| 91 scrolling_layer_id_from_previous_tree_(0), | 92 scrolling_layer_id_from_previous_tree_(0), |
| 92 contents_textures_purged_(false), | 93 contents_textures_purged_(false), |
| 93 viewport_size_invalid_(false), | 94 viewport_size_invalid_(false), |
| 94 needs_update_draw_properties_(true), | 95 needs_update_draw_properties_(true), |
| 95 needs_full_tree_sync_(true), | 96 needs_full_tree_sync_(true), |
| 96 next_activation_forces_redraw_(false), | 97 next_activation_forces_redraw_(false), |
| 97 has_ever_been_drawn_(false), | 98 has_ever_been_drawn_(false), |
| 98 render_surface_layer_list_id_(0), | 99 render_surface_layer_list_id_(0), |
| 99 top_controls_layout_height_(0), | 100 top_controls_shrink_blink_size_(false), |
| 101 top_controls_height_(0), |
| 100 top_controls_content_offset_(0), | 102 top_controls_content_offset_(0), |
| 101 top_controls_delta_(0), | 103 top_controls_delta_(0), |
| 102 sent_top_controls_delta_(0) { | 104 sent_top_controls_delta_(0) { |
| 103 } | 105 } |
| 104 | 106 |
| 105 LayerTreeImpl::~LayerTreeImpl() { | 107 LayerTreeImpl::~LayerTreeImpl() { |
| 106 BreakSwapPromises(SwapPromise::SWAP_FAILS); | 108 BreakSwapPromises(SwapPromise::SWAP_FAILS); |
| 107 | 109 |
| 108 // Need to explicitly clear the tree prior to destroying this so that | 110 // Need to explicitly clear the tree prior to destroying this so that |
| 109 // the LayerTreeImpl pointer is still valid in the LayerImpl dtor. | 111 // the LayerTreeImpl pointer is still valid in the LayerImpl dtor. |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 202 // The request queue should have been processed and does not require a push. | 204 // The request queue should have been processed and does not require a push. |
| 203 DCHECK_EQ(ui_resource_request_queue_.size(), 0u); | 205 DCHECK_EQ(ui_resource_request_queue_.size(), 0u); |
| 204 | 206 |
| 205 if (next_activation_forces_redraw_) { | 207 if (next_activation_forces_redraw_) { |
| 206 target_tree->ForceRedrawNextActivation(); | 208 target_tree->ForceRedrawNextActivation(); |
| 207 next_activation_forces_redraw_ = false; | 209 next_activation_forces_redraw_ = false; |
| 208 } | 210 } |
| 209 | 211 |
| 210 target_tree->PassSwapPromises(&swap_promise_list_); | 212 target_tree->PassSwapPromises(&swap_promise_list_); |
| 211 | 213 |
| 212 target_tree->top_controls_layout_height_ = top_controls_layout_height_; | 214 // Track the change in top controls height to offset the top_controls_delta |
| 215 // properly. This is so that the top controls offset will be maintained |
| 216 // across height changes. |
| 217 float top_controls_height_delta = |
| 218 target_tree->top_controls_height_ - top_controls_height_; |
| 219 |
| 220 target_tree->top_controls_shrink_blink_size_ = |
| 221 top_controls_shrink_blink_size_; |
| 222 target_tree->top_controls_height_ = top_controls_height_; |
| 213 target_tree->top_controls_content_offset_ = top_controls_content_offset_; | 223 target_tree->top_controls_content_offset_ = top_controls_content_offset_; |
| 214 target_tree->top_controls_delta_ = | 224 target_tree->top_controls_delta_ = target_tree->top_controls_delta_ - |
| 215 target_tree->top_controls_delta_ - | 225 target_tree->sent_top_controls_delta_ - |
| 216 target_tree->sent_top_controls_delta_; | 226 top_controls_height_delta; |
| 217 target_tree->sent_top_controls_delta_ = 0.f; | 227 target_tree->sent_top_controls_delta_ = 0.f; |
| 218 | 228 |
| 219 target_tree->SetPageScaleValues( | 229 // Active tree already shares the page_scale_factor object with pending |
| 220 page_scale_factor(), min_page_scale_factor(), max_page_scale_factor(), | 230 // tree so only the limits need to be provided. |
| 221 target_tree->page_scale_delta() / target_tree->sent_page_scale_delta()); | 231 target_tree->PushPageScaleFactorAndLimits(nullptr, min_page_scale_factor(), |
| 222 target_tree->set_sent_page_scale_delta(1); | 232 max_page_scale_factor()); |
| 223 | 233 |
| 224 target_tree->pending_page_scale_animation_ = | 234 target_tree->pending_page_scale_animation_ = |
| 225 pending_page_scale_animation_.Pass(); | 235 pending_page_scale_animation_.Pass(); |
| 226 | 236 |
| 227 if (page_scale_layer_ && inner_viewport_scroll_layer_) { | 237 if (page_scale_layer_ && inner_viewport_scroll_layer_) { |
| 228 target_tree->SetViewportLayersFromIds( | 238 target_tree->SetViewportLayersFromIds( |
| 229 overscroll_elasticity_layer_ ? overscroll_elasticity_layer_->id() | 239 overscroll_elasticity_layer_ ? overscroll_elasticity_layer_->id() |
| 230 : Layer::INVALID_ID, | 240 : Layer::INVALID_ID, |
| 231 page_scale_layer_->id(), inner_viewport_scroll_layer_->id(), | 241 page_scale_layer_->id(), inner_viewport_scroll_layer_->id(), |
| 232 outer_viewport_scroll_layer_ ? outer_viewport_scroll_layer_->id() | 242 outer_viewport_scroll_layer_ ? outer_viewport_scroll_layer_->id() |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 305 return; | 315 return; |
| 306 | 316 |
| 307 while (current_layer) { | 317 while (current_layer) { |
| 308 current_layer->ScrollbarParametersDidChange(false); | 318 current_layer->ScrollbarParametersDidChange(false); |
| 309 current_layer = current_layer->parent(); | 319 current_layer = current_layer->parent(); |
| 310 } | 320 } |
| 311 } | 321 } |
| 312 | 322 |
| 313 } // namespace | 323 } // namespace |
| 314 | 324 |
| 315 void LayerTreeImpl::SetPageScaleFactorAndLimits(float page_scale_factor, | 325 float LayerTreeImpl::ClampPageScaleFactorToLimits( |
| 316 float min_page_scale_factor, float max_page_scale_factor) { | 326 float page_scale_factor) const { |
| 317 SetPageScaleValues(page_scale_factor, min_page_scale_factor, | 327 if (min_page_scale_factor_ && page_scale_factor < min_page_scale_factor_) |
| 318 max_page_scale_factor, page_scale_delta_); | 328 page_scale_factor = min_page_scale_factor_; |
| 329 else if (max_page_scale_factor_ && page_scale_factor > max_page_scale_factor_) |
| 330 page_scale_factor = max_page_scale_factor_; |
| 331 return page_scale_factor; |
| 319 } | 332 } |
| 320 | 333 |
| 321 void LayerTreeImpl::SetPageScaleDelta(float delta) { | 334 void LayerTreeImpl::SetPageScaleOnActiveTree(float active_page_scale) { |
| 322 SetPageScaleValues(page_scale_factor_, min_page_scale_factor_, | 335 DCHECK(IsActiveTree()); |
| 323 max_page_scale_factor_, delta); | 336 if (page_scale_factor()->SetCurrent( |
| 337 ClampPageScaleFactorToLimits(active_page_scale))) |
| 338 DidUpdatePageScale(); |
| 324 } | 339 } |
| 325 | 340 |
| 326 void LayerTreeImpl::SetPageScaleValues(float page_scale_factor, | 341 void LayerTreeImpl::PushPageScaleFromMainThread(float page_scale_factor, |
| 327 float min_page_scale_factor, float max_page_scale_factor, | 342 float min_page_scale_factor, |
| 328 float page_scale_delta) { | 343 float max_page_scale_factor) { |
| 329 bool page_scale_changed = | 344 PushPageScaleFactorAndLimits(&page_scale_factor, min_page_scale_factor, |
| 330 min_page_scale_factor != min_page_scale_factor_ || | 345 max_page_scale_factor); |
| 331 max_page_scale_factor != max_page_scale_factor_ || | 346 } |
| 332 page_scale_factor != page_scale_factor_; | 347 |
| 348 void LayerTreeImpl::PushPageScaleFactorAndLimits(const float* page_scale_factor, |
| 349 float min_page_scale_factor, |
| 350 float max_page_scale_factor) { |
| 351 DCHECK(page_scale_factor || IsActiveTree()); |
| 352 bool changed_page_scale = false; |
| 353 if (page_scale_factor) { |
| 354 DCHECK(!IsActiveTree() || !layer_tree_host_impl_->pending_tree()); |
| 355 changed_page_scale |= |
| 356 page_scale_factor_->PushFromMainThread(*page_scale_factor); |
| 357 } |
| 358 if (IsActiveTree()) |
| 359 changed_page_scale |= page_scale_factor_->PushPendingToActive(); |
| 360 changed_page_scale |= |
| 361 SetPageScaleFactorLimits(min_page_scale_factor, max_page_scale_factor); |
| 362 |
| 363 if (changed_page_scale) |
| 364 DidUpdatePageScale(); |
| 365 } |
| 366 |
| 367 bool LayerTreeImpl::SetPageScaleFactorLimits(float min_page_scale_factor, |
| 368 float max_page_scale_factor) { |
| 369 if (min_page_scale_factor == min_page_scale_factor_ && |
| 370 max_page_scale_factor == max_page_scale_factor_) |
| 371 return false; |
| 333 | 372 |
| 334 min_page_scale_factor_ = min_page_scale_factor; | 373 min_page_scale_factor_ = min_page_scale_factor; |
| 335 max_page_scale_factor_ = max_page_scale_factor; | 374 max_page_scale_factor_ = max_page_scale_factor; |
| 336 page_scale_factor_ = page_scale_factor; | |
| 337 | 375 |
| 338 float total = page_scale_factor_ * page_scale_delta; | 376 return true; |
| 339 if (min_page_scale_factor_ && total < min_page_scale_factor_) | 377 } |
| 340 page_scale_delta = min_page_scale_factor_ / page_scale_factor_; | |
| 341 else if (max_page_scale_factor_ && total > max_page_scale_factor_) | |
| 342 page_scale_delta = max_page_scale_factor_ / page_scale_factor_; | |
| 343 | 378 |
| 344 if (page_scale_delta_ == page_scale_delta && !page_scale_changed) | 379 void LayerTreeImpl::DidUpdatePageScale() { |
| 345 return; | 380 if (IsActiveTree()) |
| 381 page_scale_factor()->SetCurrent( |
| 382 ClampPageScaleFactorToLimits(current_page_scale_factor())); |
| 346 | 383 |
| 347 if (page_scale_delta_ != page_scale_delta) { | 384 set_needs_update_draw_properties(); |
| 348 page_scale_delta_ = page_scale_delta; | |
| 349 | |
| 350 if (IsActiveTree()) { | |
| 351 LayerTreeImpl* pending_tree = layer_tree_host_impl_->pending_tree(); | |
| 352 if (pending_tree) { | |
| 353 DCHECK_EQ(1, pending_tree->sent_page_scale_delta()); | |
| 354 pending_tree->SetPageScaleDelta( | |
| 355 page_scale_delta_ / sent_page_scale_delta_); | |
| 356 } | |
| 357 } | |
| 358 | |
| 359 set_needs_update_draw_properties(); | |
| 360 } | |
| 361 | 385 |
| 362 if (root_layer_scroll_offset_delegate_) { | 386 if (root_layer_scroll_offset_delegate_) { |
| 363 root_layer_scroll_offset_delegate_->UpdateRootLayerState( | 387 root_layer_scroll_offset_delegate_->UpdateRootLayerState( |
| 364 TotalScrollOffset(), | 388 TotalScrollOffset(), TotalMaxScrollOffset(), ScrollableSize(), |
| 365 TotalMaxScrollOffset(), | 389 current_page_scale_factor(), min_page_scale_factor_, |
| 366 ScrollableSize(), | |
| 367 total_page_scale_factor(), | |
| 368 min_page_scale_factor_, | |
| 369 max_page_scale_factor_); | 390 max_page_scale_factor_); |
| 370 } | 391 } |
| 371 | 392 |
| 372 ForceScrollbarParameterUpdateAfterScaleChange(page_scale_layer()); | 393 ForceScrollbarParameterUpdateAfterScaleChange(page_scale_layer()); |
| 373 } | 394 } |
| 374 | 395 |
| 396 SyncedProperty<ScaleGroup>* LayerTreeImpl::page_scale_factor() { |
| 397 return page_scale_factor_.get(); |
| 398 } |
| 399 |
| 400 const SyncedProperty<ScaleGroup>* LayerTreeImpl::page_scale_factor() const { |
| 401 return page_scale_factor_.get(); |
| 402 } |
| 403 |
| 375 gfx::SizeF LayerTreeImpl::ScrollableViewportSize() const { | 404 gfx::SizeF LayerTreeImpl::ScrollableViewportSize() const { |
| 376 if (!InnerViewportContainerLayer()) | 405 if (!InnerViewportContainerLayer()) |
| 377 return gfx::SizeF(); | 406 return gfx::SizeF(); |
| 378 | 407 |
| 379 return gfx::ScaleSize(InnerViewportContainerLayer()->BoundsForScrolling(), | 408 return gfx::ScaleSize(InnerViewportContainerLayer()->BoundsForScrolling(), |
| 380 1.0f / total_page_scale_factor()); | 409 1.0f / current_page_scale_factor()); |
| 381 } | 410 } |
| 382 | 411 |
| 383 gfx::Rect LayerTreeImpl::RootScrollLayerDeviceViewportBounds() const { | 412 gfx::Rect LayerTreeImpl::RootScrollLayerDeviceViewportBounds() const { |
| 384 LayerImpl* root_scroll_layer = OuterViewportScrollLayer() | 413 LayerImpl* root_scroll_layer = OuterViewportScrollLayer() |
| 385 ? OuterViewportScrollLayer() | 414 ? OuterViewportScrollLayer() |
| 386 : InnerViewportScrollLayer(); | 415 : InnerViewportScrollLayer(); |
| 387 if (!root_scroll_layer || root_scroll_layer->children().empty()) | 416 if (!root_scroll_layer || root_scroll_layer->children().empty()) |
| 388 return gfx::Rect(); | 417 return gfx::Rect(); |
| 389 LayerImpl* layer = root_scroll_layer->children()[0]; | 418 LayerImpl* layer = root_scroll_layer->children()[0]; |
| 390 return MathUtil::MapEnclosingClippedRect(layer->screen_space_transform(), | 419 return MathUtil::MapEnclosingClippedRect(layer->screen_space_transform(), |
| 391 gfx::Rect(layer->content_bounds())); | 420 gfx::Rect(layer->content_bounds())); |
| 392 } | 421 } |
| 393 | 422 |
| 394 static void ApplySentScrollDeltasFromAbortedCommitTo(LayerImpl* layer) { | 423 static void ApplySentScrollDeltasFromAbortedCommitTo(LayerImpl* layer) { |
| 395 layer->ApplySentScrollDeltasFromAbortedCommit(); | 424 layer->ApplySentScrollDeltasFromAbortedCommit(); |
| 396 } | 425 } |
| 397 | 426 |
| 398 void LayerTreeImpl::ApplySentScrollAndScaleDeltasFromAbortedCommit() { | 427 void LayerTreeImpl::ApplySentScrollAndScaleDeltasFromAbortedCommit() { |
| 399 DCHECK(IsActiveTree()); | 428 DCHECK(IsActiveTree()); |
| 400 | 429 |
| 401 page_scale_factor_ *= sent_page_scale_delta_; | 430 page_scale_factor()->AbortCommit(); |
| 402 page_scale_delta_ /= sent_page_scale_delta_; | |
| 403 sent_page_scale_delta_ = 1.f; | |
| 404 | 431 |
| 405 top_controls_content_offset_ += sent_top_controls_delta_; | 432 top_controls_content_offset_ += sent_top_controls_delta_; |
| 406 top_controls_delta_ -= sent_top_controls_delta_; | 433 top_controls_delta_ -= sent_top_controls_delta_; |
| 407 sent_top_controls_delta_ = 0.f; | 434 sent_top_controls_delta_ = 0.f; |
| 408 | 435 |
| 409 if (!root_layer()) | 436 if (!root_layer()) |
| 410 return; | 437 return; |
| 411 | 438 |
| 412 LayerTreeHostCommon::CallFunctionForSubtree( | 439 LayerTreeHostCommon::CallFunctionForSubtree( |
| 413 root_layer(), base::Bind(&ApplySentScrollDeltasFromAbortedCommitTo)); | 440 root_layer(), base::Bind(&ApplySentScrollDeltasFromAbortedCommitTo)); |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 489 LayerImpl* page_scale_layer = | 516 LayerImpl* page_scale_layer = |
| 490 page_scale_layer_ ? page_scale_layer_ : InnerViewportContainerLayer(); | 517 page_scale_layer_ ? page_scale_layer_ : InnerViewportContainerLayer(); |
| 491 bool can_render_to_separate_surface = | 518 bool can_render_to_separate_surface = |
| 492 (layer_tree_host_impl_->GetDrawMode() != | 519 (layer_tree_host_impl_->GetDrawMode() != |
| 493 DRAW_MODE_RESOURCELESS_SOFTWARE); | 520 DRAW_MODE_RESOURCELESS_SOFTWARE); |
| 494 | 521 |
| 495 ++render_surface_layer_list_id_; | 522 ++render_surface_layer_list_id_; |
| 496 LayerTreeHostCommon::CalcDrawPropsImplInputs inputs( | 523 LayerTreeHostCommon::CalcDrawPropsImplInputs inputs( |
| 497 root_layer(), DrawViewportSize(), | 524 root_layer(), DrawViewportSize(), |
| 498 layer_tree_host_impl_->DrawTransform(), device_scale_factor(), | 525 layer_tree_host_impl_->DrawTransform(), device_scale_factor(), |
| 499 total_page_scale_factor(), page_scale_layer, | 526 current_page_scale_factor(), page_scale_layer, |
| 500 resource_provider()->max_texture_size(), settings().can_use_lcd_text, | 527 resource_provider()->max_texture_size(), settings().can_use_lcd_text, |
| 501 settings().layers_always_allowed_lcd_text, | 528 settings().layers_always_allowed_lcd_text, |
| 502 can_render_to_separate_surface, | 529 can_render_to_separate_surface, |
| 503 settings().layer_transforms_should_scale_layer_contents, | 530 settings().layer_transforms_should_scale_layer_contents, |
| 504 &render_surface_layer_list_, render_surface_layer_list_id_); | 531 &render_surface_layer_list_, render_surface_layer_list_id_); |
| 505 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | 532 LayerTreeHostCommon::CalculateDrawProperties(&inputs); |
| 506 } | 533 } |
| 507 | 534 |
| 508 { | 535 { |
| 509 TRACE_EVENT_BEGIN2("cc", "LayerTreeImpl::UpdateTilePriorities", "IsActive", | 536 TRACE_EVENT_BEGIN2("cc", "LayerTreeImpl::UpdateTilePriorities", "IsActive", |
| (...skipping 393 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 903 if (OuterViewportScrollLayer()) | 930 if (OuterViewportScrollLayer()) |
| 904 OuterViewportScrollLayer()->SetScrollOffsetDelegate(NULL); | 931 OuterViewportScrollLayer()->SetScrollOffsetDelegate(NULL); |
| 905 inner_viewport_scroll_delegate_proxy_ = nullptr; | 932 inner_viewport_scroll_delegate_proxy_ = nullptr; |
| 906 outer_viewport_scroll_delegate_proxy_ = nullptr; | 933 outer_viewport_scroll_delegate_proxy_ = nullptr; |
| 907 } | 934 } |
| 908 | 935 |
| 909 root_layer_scroll_offset_delegate_ = root_layer_scroll_offset_delegate; | 936 root_layer_scroll_offset_delegate_ = root_layer_scroll_offset_delegate; |
| 910 | 937 |
| 911 if (root_layer_scroll_offset_delegate_) { | 938 if (root_layer_scroll_offset_delegate_) { |
| 912 root_layer_scroll_offset_delegate_->UpdateRootLayerState( | 939 root_layer_scroll_offset_delegate_->UpdateRootLayerState( |
| 913 TotalScrollOffset(), | 940 TotalScrollOffset(), TotalMaxScrollOffset(), ScrollableSize(), |
| 914 TotalMaxScrollOffset(), | 941 current_page_scale_factor(), min_page_scale_factor(), |
| 915 ScrollableSize(), | |
| 916 total_page_scale_factor(), | |
| 917 min_page_scale_factor(), | |
| 918 max_page_scale_factor()); | 942 max_page_scale_factor()); |
| 919 | 943 |
| 920 if (inner_viewport_scroll_layer_) { | 944 if (inner_viewport_scroll_layer_) { |
| 921 inner_viewport_scroll_delegate_proxy_ = make_scoped_ptr( | 945 inner_viewport_scroll_delegate_proxy_ = make_scoped_ptr( |
| 922 new LayerScrollOffsetDelegateProxy(InnerViewportScrollLayer(), | 946 new LayerScrollOffsetDelegateProxy(InnerViewportScrollLayer(), |
| 923 root_layer_scroll_offset_delegate_, | 947 root_layer_scroll_offset_delegate_, |
| 924 this)); | 948 this)); |
| 925 inner_viewport_scroll_layer_->SetScrollOffsetDelegate( | 949 inner_viewport_scroll_layer_->SetScrollOffsetDelegate( |
| 926 inner_viewport_scroll_delegate_proxy_.get()); | 950 inner_viewport_scroll_delegate_proxy_.get()); |
| 927 } | 951 } |
| (...skipping 27 matching lines...) Expand all Loading... |
| 955 DCHECK(!OuterViewportScrollLayer() || outer_viewport_scroll_delegate_proxy_); | 979 DCHECK(!OuterViewportScrollLayer() || outer_viewport_scroll_delegate_proxy_); |
| 956 DCHECK(root_layer_scroll_offset_delegate_); | 980 DCHECK(root_layer_scroll_offset_delegate_); |
| 957 | 981 |
| 958 gfx::ScrollOffset offset = | 982 gfx::ScrollOffset offset = |
| 959 inner_viewport_scroll_delegate_proxy_->last_set_scroll_offset(); | 983 inner_viewport_scroll_delegate_proxy_->last_set_scroll_offset(); |
| 960 | 984 |
| 961 if (OuterViewportScrollLayer()) | 985 if (OuterViewportScrollLayer()) |
| 962 offset += outer_viewport_scroll_delegate_proxy_->last_set_scroll_offset(); | 986 offset += outer_viewport_scroll_delegate_proxy_->last_set_scroll_offset(); |
| 963 | 987 |
| 964 root_layer_scroll_offset_delegate_->UpdateRootLayerState( | 988 root_layer_scroll_offset_delegate_->UpdateRootLayerState( |
| 965 offset, | 989 offset, TotalMaxScrollOffset(), ScrollableSize(), |
| 966 TotalMaxScrollOffset(), | 990 current_page_scale_factor(), min_page_scale_factor(), |
| 967 ScrollableSize(), | |
| 968 total_page_scale_factor(), | |
| 969 min_page_scale_factor(), | |
| 970 max_page_scale_factor()); | 991 max_page_scale_factor()); |
| 971 } | 992 } |
| 972 | 993 |
| 973 gfx::ScrollOffset LayerTreeImpl::GetDelegatedScrollOffset(LayerImpl* layer) { | 994 gfx::ScrollOffset LayerTreeImpl::GetDelegatedScrollOffset(LayerImpl* layer) { |
| 974 DCHECK(root_layer_scroll_offset_delegate_); | 995 DCHECK(root_layer_scroll_offset_delegate_); |
| 975 DCHECK(InnerViewportScrollLayer()); | 996 DCHECK(InnerViewportScrollLayer()); |
| 976 if (layer == InnerViewportScrollLayer() && !OuterViewportScrollLayer()) | 997 if (layer == InnerViewportScrollLayer() && !OuterViewportScrollLayer()) |
| 977 return root_layer_scroll_offset_delegate_->GetTotalScrollOffset(); | 998 return root_layer_scroll_offset_delegate_->GetTotalScrollOffset(); |
| 978 | 999 |
| 979 // If we get here, we have both inner/outer viewports, and need to distribute | 1000 // If we get here, we have both inner/outer viewports, and need to distribute |
| (...skipping 512 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1492 scoped_ptr<PendingPageScaleAnimation> pending_animation) { | 1513 scoped_ptr<PendingPageScaleAnimation> pending_animation) { |
| 1493 pending_page_scale_animation_ = pending_animation.Pass(); | 1514 pending_page_scale_animation_ = pending_animation.Pass(); |
| 1494 } | 1515 } |
| 1495 | 1516 |
| 1496 scoped_ptr<PendingPageScaleAnimation> | 1517 scoped_ptr<PendingPageScaleAnimation> |
| 1497 LayerTreeImpl::TakePendingPageScaleAnimation() { | 1518 LayerTreeImpl::TakePendingPageScaleAnimation() { |
| 1498 return pending_page_scale_animation_.Pass(); | 1519 return pending_page_scale_animation_.Pass(); |
| 1499 } | 1520 } |
| 1500 | 1521 |
| 1501 } // namespace cc | 1522 } // namespace cc |
| OLD | NEW |