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

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

Issue 476113004: Replace overdraw_bottom_height with top_controls_layout_height. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix ScrollViewportRounding test Created 6 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « cc/trees/layer_tree_host_impl.h ('k') | cc/trees/layer_tree_host_impl_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 paint_time_counter_(PaintTimeCounter::Create()), 243 paint_time_counter_(PaintTimeCounter::Create()),
244 memory_history_(MemoryHistory::Create()), 244 memory_history_(MemoryHistory::Create()),
245 debug_rect_history_(DebugRectHistory::Create()), 245 debug_rect_history_(DebugRectHistory::Create()),
246 texture_mailbox_deleter_(new TextureMailboxDeleter( 246 texture_mailbox_deleter_(new TextureMailboxDeleter(
247 proxy_->HasImplThread() ? proxy_->ImplThreadTaskRunner() 247 proxy_->HasImplThread() ? proxy_->ImplThreadTaskRunner()
248 : proxy_->MainThreadTaskRunner())), 248 : proxy_->MainThreadTaskRunner())),
249 max_memory_needed_bytes_(0), 249 max_memory_needed_bytes_(0),
250 zero_budget_(false), 250 zero_budget_(false),
251 device_scale_factor_(1.f), 251 device_scale_factor_(1.f),
252 overhang_ui_resource_id_(0), 252 overhang_ui_resource_id_(0),
253 overdraw_bottom_height_(0.f), 253 top_controls_layout_height_(0.f),
254 resourceless_software_draw_(false), 254 resourceless_software_draw_(false),
255 begin_impl_frame_interval_(BeginFrameArgs::DefaultInterval()), 255 begin_impl_frame_interval_(BeginFrameArgs::DefaultInterval()),
256 animation_registrar_(AnimationRegistrar::Create()), 256 animation_registrar_(AnimationRegistrar::Create()),
257 rendering_stats_instrumentation_(rendering_stats_instrumentation), 257 rendering_stats_instrumentation_(rendering_stats_instrumentation),
258 micro_benchmark_controller_(this), 258 micro_benchmark_controller_(this),
259 need_to_update_visible_tiles_before_draw_(false), 259 need_to_update_visible_tiles_before_draw_(false),
260 have_valid_output_surface_(false), 260 have_valid_output_surface_(false),
261 shared_bitmap_manager_(manager), 261 shared_bitmap_manager_(manager),
262 id_(id), 262 id_(id),
263 transfer_buffer_memory_limit_(0u) { 263 transfer_buffer_memory_limit_(0u) {
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
428 void LayerTreeHostImpl::StartPageScaleAnimation( 428 void LayerTreeHostImpl::StartPageScaleAnimation(
429 const gfx::Vector2d& target_offset, 429 const gfx::Vector2d& target_offset,
430 bool anchor_point, 430 bool anchor_point,
431 float page_scale, 431 float page_scale,
432 base::TimeDelta duration) { 432 base::TimeDelta duration) {
433 if (!InnerViewportScrollLayer()) 433 if (!InnerViewportScrollLayer())
434 return; 434 return;
435 435
436 gfx::Vector2dF scroll_total = active_tree_->TotalScrollOffset(); 436 gfx::Vector2dF scroll_total = active_tree_->TotalScrollOffset();
437 gfx::SizeF scaled_scrollable_size = active_tree_->ScrollableSize(); 437 gfx::SizeF scaled_scrollable_size = active_tree_->ScrollableSize();
438 gfx::SizeF viewport_size = UnscaledScrollableViewportSize(); 438 gfx::SizeF viewport_size =
439 active_tree_->InnerViewportContainerLayer()->bounds();
439 440
440 // Easing constants experimentally determined. 441 // Easing constants experimentally determined.
441 scoped_ptr<TimingFunction> timing_function = 442 scoped_ptr<TimingFunction> timing_function =
442 CubicBezierTimingFunction::Create(.8, 0, .3, .9).PassAs<TimingFunction>(); 443 CubicBezierTimingFunction::Create(.8, 0, .3, .9).PassAs<TimingFunction>();
443 444
444 page_scale_animation_ = 445 page_scale_animation_ =
445 PageScaleAnimation::Create(scroll_total, 446 PageScaleAnimation::Create(scroll_total,
446 active_tree_->total_page_scale_factor(), 447 active_tree_->total_page_scale_factor(),
447 viewport_size, 448 viewport_size,
448 scaled_scrollable_size, 449 scaled_scrollable_size,
(...skipping 1013 matching lines...) Expand 10 before | Expand all | Expand 10 after
1462 metadata.page_scale_factor = active_tree_->total_page_scale_factor(); 1463 metadata.page_scale_factor = active_tree_->total_page_scale_factor();
1463 metadata.scrollable_viewport_size = active_tree_->ScrollableViewportSize(); 1464 metadata.scrollable_viewport_size = active_tree_->ScrollableViewportSize();
1464 metadata.root_layer_size = active_tree_->ScrollableSize(); 1465 metadata.root_layer_size = active_tree_->ScrollableSize();
1465 metadata.min_page_scale_factor = active_tree_->min_page_scale_factor(); 1466 metadata.min_page_scale_factor = active_tree_->min_page_scale_factor();
1466 metadata.max_page_scale_factor = active_tree_->max_page_scale_factor(); 1467 metadata.max_page_scale_factor = active_tree_->max_page_scale_factor();
1467 if (top_controls_manager_) { 1468 if (top_controls_manager_) {
1468 metadata.location_bar_offset = 1469 metadata.location_bar_offset =
1469 gfx::Vector2dF(0.f, top_controls_manager_->controls_top_offset()); 1470 gfx::Vector2dF(0.f, top_controls_manager_->controls_top_offset());
1470 metadata.location_bar_content_translation = 1471 metadata.location_bar_content_translation =
1471 gfx::Vector2dF(0.f, top_controls_manager_->content_top_offset()); 1472 gfx::Vector2dF(0.f, top_controls_manager_->content_top_offset());
1472 metadata.overdraw_bottom_height = overdraw_bottom_height_;
1473 } 1473 }
1474 1474
1475 active_tree_->GetViewportSelection(&metadata.selection_start, 1475 active_tree_->GetViewportSelection(&metadata.selection_start,
1476 &metadata.selection_end); 1476 &metadata.selection_end);
1477 1477
1478 if (!InnerViewportScrollLayer()) 1478 if (!InnerViewportScrollLayer())
1479 return metadata; 1479 return metadata;
1480 1480
1481 metadata.root_scroll_offset = active_tree_->TotalScrollOffset(); 1481 metadata.root_scroll_offset = active_tree_->TotalScrollOffset();
1482 1482
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
1675 } 1675 }
1676 1676
1677 void LayerTreeHostImpl::WillBeginImplFrame(const BeginFrameArgs& args) { 1677 void LayerTreeHostImpl::WillBeginImplFrame(const BeginFrameArgs& args) {
1678 // Sample the frame time now. This time will be used for updating animations 1678 // Sample the frame time now. This time will be used for updating animations
1679 // when we draw. 1679 // when we draw.
1680 UpdateCurrentBeginFrameArgs(args); 1680 UpdateCurrentBeginFrameArgs(args);
1681 // Cache the begin impl frame interval 1681 // Cache the begin impl frame interval
1682 begin_impl_frame_interval_ = args.interval; 1682 begin_impl_frame_interval_ = args.interval;
1683 } 1683 }
1684 1684
1685 gfx::SizeF LayerTreeHostImpl::ComputeInnerViewportContainerSize() const {
1686 gfx::SizeF dip_size =
1687 gfx::ScaleSize(device_viewport_size_, 1.f / device_scale_factor());
1688
1689 float top_offset =
1690 top_controls_manager_ ? top_controls_manager_->content_top_offset() : 0.f;
1691
1692 return gfx::SizeF(dip_size.width(),
1693 dip_size.height() - top_offset - overdraw_bottom_height_);
1694 }
1695
1696 void LayerTreeHostImpl::UpdateInnerViewportContainerSize() { 1685 void LayerTreeHostImpl::UpdateInnerViewportContainerSize() {
1697 LayerImpl* container_layer = active_tree_->InnerViewportContainerLayer(); 1686 LayerImpl* container_layer = active_tree_->InnerViewportContainerLayer();
1698 if (!container_layer) 1687 if (!container_layer)
1699 return; 1688 return;
1700 1689
1701 // We pass the value returned from UnscaledScrollableViewportSize() here as 1690 if (top_controls_manager_)
1702 // it accounts for scrollbar dimensions when 1691 container_layer->SetBoundsDelta(
1703 // container_layer->masks_to_bounds() is set. 1692 gfx::Vector2dF(0,
1704 container_layer->SetTemporaryImplBounds(UnscaledScrollableViewportSize()); 1693 top_controls_layout_height_ -
1705 } 1694 top_controls_manager_->content_top_offset()));
1706
1707 gfx::SizeF LayerTreeHostImpl::UnscaledScrollableViewportSize() const {
1708 // Use the root container layer bounds if it clips to them, otherwise, the
1709 // true viewport size should be used.
1710 LayerImpl* container_layer = active_tree_->InnerViewportContainerLayer();
1711 if (container_layer && container_layer->masks_to_bounds()) {
1712 DCHECK(!top_controls_manager_);
1713 DCHECK_EQ(0, overdraw_bottom_height_);
1714 return container_layer->bounds();
1715 }
1716
1717 return ComputeInnerViewportContainerSize();
1718 }
1719
1720 float LayerTreeHostImpl::VerticalAdjust() const {
1721 if (!active_tree_->InnerViewportContainerLayer())
1722 return 0;
1723
1724 return active_tree_->InnerViewportContainerLayer()->BoundsDelta().y();
1725 } 1695 }
1726 1696
1727 void LayerTreeHostImpl::DidLoseOutputSurface() { 1697 void LayerTreeHostImpl::DidLoseOutputSurface() {
1728 if (!have_valid_output_surface_) 1698 if (!have_valid_output_surface_)
1729 return; 1699 return;
1730 have_valid_output_surface_ = false; 1700 have_valid_output_surface_ = false;
1731 if (resource_provider_) 1701 if (resource_provider_)
1732 resource_provider_->DidLoseOutputSurface(); 1702 resource_provider_->DidLoseOutputSurface();
1733 // TODO(jamesr): The renderer_ check is needed to make some of the 1703 // TODO(jamesr): The renderer_ check is needed to make some of the
1734 // LayerTreeHostContextTest tests pass, but shouldn't be necessary (or 1704 // LayerTreeHostContextTest tests pass, but shouldn't be necessary (or
(...skipping 456 matching lines...) Expand 10 before | Expand all | Expand 10 after
2191 active_tree_->SetViewportSizeInvalid(); 2161 active_tree_->SetViewportSizeInvalid();
2192 2162
2193 device_viewport_size_ = device_viewport_size; 2163 device_viewport_size_ = device_viewport_size;
2194 2164
2195 UpdateInnerViewportContainerSize(); 2165 UpdateInnerViewportContainerSize();
2196 client_->OnCanDrawStateChanged(CanDraw()); 2166 client_->OnCanDrawStateChanged(CanDraw());
2197 SetFullRootLayerDamage(); 2167 SetFullRootLayerDamage();
2198 active_tree_->set_needs_update_draw_properties(); 2168 active_tree_->set_needs_update_draw_properties();
2199 } 2169 }
2200 2170
2201 void LayerTreeHostImpl::SetOverdrawBottomHeight(float overdraw_bottom_height) { 2171 void LayerTreeHostImpl::SetTopControlsLayoutHeight(
2202 if (overdraw_bottom_height == overdraw_bottom_height_) 2172 float top_controls_layout_height) {
2173 if (top_controls_layout_height_ == top_controls_layout_height)
2203 return; 2174 return;
2204 overdraw_bottom_height_ = overdraw_bottom_height; 2175 top_controls_layout_height_ = top_controls_layout_height;
2205 2176
2206 UpdateInnerViewportContainerSize(); 2177 UpdateInnerViewportContainerSize();
2207 SetFullRootLayerDamage(); 2178 SetFullRootLayerDamage();
2208 } 2179 }
2209 2180
2210 void LayerTreeHostImpl::SetOverhangUIResource( 2181 void LayerTreeHostImpl::SetOverhangUIResource(
2211 UIResourceId overhang_ui_resource_id, 2182 UIResourceId overhang_ui_resource_id,
2212 const gfx::Size& overhang_ui_resource_size) { 2183 const gfx::Size& overhang_ui_resource_size) {
2213 overhang_ui_resource_id_ = overhang_ui_resource_id; 2184 overhang_ui_resource_id_ = overhang_ui_resource_id;
2214 overhang_ui_resource_size_ = overhang_ui_resource_size; 2185 overhang_ui_resource_size_ = overhang_ui_resource_size;
2215 } 2186 }
2216 2187
2217 void LayerTreeHostImpl::SetDeviceScaleFactor(float device_scale_factor) { 2188 void LayerTreeHostImpl::SetDeviceScaleFactor(float device_scale_factor) {
2218 if (device_scale_factor == device_scale_factor_) 2189 if (device_scale_factor == device_scale_factor_)
2219 return; 2190 return;
2220 device_scale_factor_ = device_scale_factor; 2191 device_scale_factor_ = device_scale_factor;
2221 2192
2222 UpdateInnerViewportContainerSize();
2223 SetFullRootLayerDamage(); 2193 SetFullRootLayerDamage();
2224 } 2194 }
2225 2195
2226 const gfx::Rect LayerTreeHostImpl::ViewportRectForTilePriority() const { 2196 const gfx::Rect LayerTreeHostImpl::ViewportRectForTilePriority() const {
2227 if (viewport_rect_for_tile_priority_.IsEmpty()) 2197 if (viewport_rect_for_tile_priority_.IsEmpty())
2228 return DeviceViewport(); 2198 return DeviceViewport();
2229 2199
2230 return viewport_rect_for_tile_priority_; 2200 return viewport_rect_for_tile_priority_;
2231 } 2201 }
2232 2202
(...skipping 1179 matching lines...) Expand 10 before | Expand all | Expand 10 after
3412 } 3382 }
3413 3383
3414 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) { 3384 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) {
3415 std::vector<PictureLayerImpl*>::iterator it = 3385 std::vector<PictureLayerImpl*>::iterator it =
3416 std::find(picture_layers_.begin(), picture_layers_.end(), layer); 3386 std::find(picture_layers_.begin(), picture_layers_.end(), layer);
3417 DCHECK(it != picture_layers_.end()); 3387 DCHECK(it != picture_layers_.end());
3418 picture_layers_.erase(it); 3388 picture_layers_.erase(it);
3419 } 3389 }
3420 3390
3421 } // namespace cc 3391 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_impl.h ('k') | cc/trees/layer_tree_host_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698