| 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/layer_tree_impl.h" | 5 #include "cc/layer_tree_impl.h" | 
| 6 | 6 | 
| 7 #include "base/debug/trace_event.h" | 7 #include "base/debug/trace_event.h" | 
| 8 #include "cc/layer_tree_host_common.h" | 8 #include "cc/layer_tree_host_common.h" | 
| 9 #include "cc/layer_tree_host_impl.h" | 9 #include "cc/layer_tree_host_impl.h" | 
| 10 #include "ui/gfx/vector2d_conversions.h" | 10 #include "ui/gfx/vector2d_conversions.h" | 
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 87 LayerImpl* LayerTreeImpl::CurrentlyScrollingLayer() { | 87 LayerImpl* LayerTreeImpl::CurrentlyScrollingLayer() { | 
| 88   DCHECK(IsActiveTree()); | 88   DCHECK(IsActiveTree()); | 
| 89   return currently_scrolling_layer_; | 89   return currently_scrolling_layer_; | 
| 90 } | 90 } | 
| 91 | 91 | 
| 92 void LayerTreeImpl::ClearCurrentlyScrollingLayer() { | 92 void LayerTreeImpl::ClearCurrentlyScrollingLayer() { | 
| 93   currently_scrolling_layer_ = NULL; | 93   currently_scrolling_layer_ = NULL; | 
| 94   scrolling_layer_id_from_previous_tree_ = 0; | 94   scrolling_layer_id_from_previous_tree_ = 0; | 
| 95 } | 95 } | 
| 96 | 96 | 
|  | 97 gfx::SizeF LayerTreeImpl::ScrollableViewportSize() const { | 
|  | 98   gfx::SizeF view_bounds; | 
|  | 99   // The clip layer should be used for scrolling bounds if available since it | 
|  | 100   // adjusts for non-overlay scrollbars. Otherwise, fall back to our knowledge | 
|  | 101   // of the physical viewport size. | 
|  | 102   LayerImpl* clip_layer = NULL; | 
|  | 103   if (root_scroll_layer_) | 
|  | 104     clip_layer = root_scroll_layer_->parent(); | 
|  | 105   if (clip_layer && clip_layer->masksToBounds()) { | 
|  | 106     view_bounds = clip_layer->bounds(); | 
|  | 107   } else { | 
|  | 108     view_bounds = gfx::ScaleSize(device_viewport_size(), | 
|  | 109         1 / device_scale_factor()); | 
|  | 110   } | 
|  | 111   view_bounds.Scale(1 / pinch_zoom_viewport().total_page_scale_factor()); | 
|  | 112 | 
|  | 113   return view_bounds; | 
|  | 114 } | 
|  | 115 | 
| 97 void LayerTreeImpl::UpdateMaxScrollOffset() { | 116 void LayerTreeImpl::UpdateMaxScrollOffset() { | 
| 98   if (!root_scroll_layer_ || !root_scroll_layer_->children().size()) | 117   if (!root_scroll_layer_ || !root_scroll_layer_->children().size()) | 
| 99     return; | 118     return; | 
| 100 | 119 | 
| 101   gfx::SizeF view_bounds; |  | 
| 102   if (!settings().pageScalePinchZoomEnabled) { |  | 
| 103     view_bounds = device_viewport_size(); |  | 
| 104     if (LayerImpl* clip_layer = root_scroll_layer_->parent()) { |  | 
| 105       // Compensate for non-overlay scrollbars. |  | 
| 106       if (clip_layer->masksToBounds()) |  | 
| 107         view_bounds = gfx::ScaleSize(clip_layer->bounds(), device_scale_factor()
     ); |  | 
| 108     } |  | 
| 109     view_bounds.Scale(1 / pinch_zoom_viewport().page_scale_delta()); |  | 
| 110   } else { |  | 
| 111     view_bounds = layout_viewport_size(); |  | 
| 112   } |  | 
| 113 |  | 
| 114   gfx::Vector2dF max_scroll = gfx::Rect(ScrollableSize()).bottom_right() - | 120   gfx::Vector2dF max_scroll = gfx::Rect(ScrollableSize()).bottom_right() - | 
| 115       gfx::RectF(view_bounds).bottom_right(); | 121       gfx::RectF(ScrollableViewportSize()).bottom_right(); | 
| 116 | 122 | 
| 117   // The viewport may be larger than the contents in some cases, such as | 123   // The viewport may be larger than the contents in some cases, such as | 
| 118   // having a vertical scrollbar but no horizontal overflow. | 124   // having a vertical scrollbar but no horizontal overflow. | 
| 119   max_scroll.ClampToMin(gfx::Vector2dF()); | 125   max_scroll.ClampToMin(gfx::Vector2dF()); | 
| 120 | 126 | 
| 121   root_scroll_layer_->setMaxScrollOffset(gfx::ToFlooredVector2d(max_scroll)); | 127   root_scroll_layer_->setMaxScrollOffset(gfx::ToFlooredVector2d(max_scroll)); | 
| 122 } | 128 } | 
| 123 | 129 | 
| 124 struct UpdateTilePrioritiesForLayer { | 130 struct UpdateTilePrioritiesForLayer { | 
| 125   void operator()(LayerImpl *layer) { | 131   void operator()(LayerImpl *layer) { | 
| (...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 359 | 365 | 
| 360 AnimationRegistrar* LayerTreeImpl::animationRegistrar() const { | 366 AnimationRegistrar* LayerTreeImpl::animationRegistrar() const { | 
| 361   return layer_tree_host_impl_->animationRegistrar(); | 367   return layer_tree_host_impl_->animationRegistrar(); | 
| 362 } | 368 } | 
| 363 | 369 | 
| 364 const PinchZoomViewport& LayerTreeImpl::pinch_zoom_viewport() const { | 370 const PinchZoomViewport& LayerTreeImpl::pinch_zoom_viewport() const { | 
| 365   return layer_tree_host_impl_->pinchZoomViewport(); | 371   return layer_tree_host_impl_->pinchZoomViewport(); | 
| 366 } | 372 } | 
| 367 | 373 | 
| 368 } // namespace cc | 374 } // namespace cc | 
| OLD | NEW | 
|---|