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 |