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_host_impl.h" | 5 #include "cc/trees/layer_tree_host_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 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
237 DCHECK(mutator_host_); | 237 DCHECK(mutator_host_); |
238 mutator_host_->SetMutatorHostClient(this); | 238 mutator_host_->SetMutatorHostClient(this); |
239 | 239 |
240 DCHECK(task_runner_provider_->IsImplThread()); | 240 DCHECK(task_runner_provider_->IsImplThread()); |
241 DidVisibilityChange(this, visible_); | 241 DidVisibilityChange(this, visible_); |
242 | 242 |
243 SetDebugState(settings.initial_debug_state); | 243 SetDebugState(settings.initial_debug_state); |
244 | 244 |
245 // LTHI always has an active tree. | 245 // LTHI always has an active tree. |
246 active_tree_ = base::MakeUnique<LayerTreeImpl>( | 246 active_tree_ = base::MakeUnique<LayerTreeImpl>( |
247 this, new SyncedProperty<ScaleGroup>, new SyncedBrowserControls, | 247 this, new SyncedProperty<ScaleGroup>, new SyncedProperty<ScaleGroup>, |
248 new SyncedElasticOverscroll); | 248 new SyncedBrowserControls, new SyncedElasticOverscroll); |
249 active_tree_->property_trees()->is_active = true; | 249 active_tree_->property_trees()->is_active = true; |
250 | 250 |
251 viewport_ = Viewport::Create(this); | 251 viewport_ = Viewport::Create(this); |
252 | 252 |
253 TRACE_EVENT_OBJECT_CREATED_WITH_ID(TRACE_DISABLED_BY_DEFAULT("cc.debug"), | 253 TRACE_EVENT_OBJECT_CREATED_WITH_ID(TRACE_DISABLED_BY_DEFAULT("cc.debug"), |
254 "cc::LayerTreeHostImpl", id_); | 254 "cc::LayerTreeHostImpl", id_); |
255 | 255 |
256 browser_controls_offset_manager_ = BrowserControlsOffsetManager::Create( | 256 browser_controls_offset_manager_ = BrowserControlsOffsetManager::Create( |
257 this, settings.top_controls_show_threshold, | 257 this, settings.top_controls_show_threshold, |
258 settings.top_controls_hide_threshold); | 258 settings.top_controls_hide_threshold); |
(...skipping 916 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1175 UpdateTileManagerMemoryPolicy(ManagedMemoryPolicy(0)); | 1175 UpdateTileManagerMemoryPolicy(ManagedMemoryPolicy(0)); |
1176 } | 1176 } |
1177 | 1177 |
1178 void LayerTreeHostImpl::BlockNotifyReadyToActivateForTesting(bool block) { | 1178 void LayerTreeHostImpl::BlockNotifyReadyToActivateForTesting(bool block) { |
1179 NOTREACHED(); | 1179 NOTREACHED(); |
1180 } | 1180 } |
1181 | 1181 |
1182 void LayerTreeHostImpl::ResetTreesForTesting() { | 1182 void LayerTreeHostImpl::ResetTreesForTesting() { |
1183 if (active_tree_) | 1183 if (active_tree_) |
1184 active_tree_->DetachLayers(); | 1184 active_tree_->DetachLayers(); |
1185 active_tree_ = | 1185 active_tree_ = base::MakeUnique<LayerTreeImpl>( |
1186 base::MakeUnique<LayerTreeImpl>(this, active_tree()->page_scale_factor(), | 1186 this, active_tree()->page_scale_factor(), |
1187 active_tree()->top_controls_shown_ratio(), | 1187 active_tree()->subframe_page_scale_factor(), |
1188 active_tree()->elastic_overscroll()); | 1188 active_tree()->top_controls_shown_ratio(), |
| 1189 active_tree()->elastic_overscroll()); |
1189 active_tree_->property_trees()->is_active = true; | 1190 active_tree_->property_trees()->is_active = true; |
1190 if (pending_tree_) | 1191 if (pending_tree_) |
1191 pending_tree_->DetachLayers(); | 1192 pending_tree_->DetachLayers(); |
1192 pending_tree_ = nullptr; | 1193 pending_tree_ = nullptr; |
1193 pending_tree_duration_timer_ = nullptr; | 1194 pending_tree_duration_timer_ = nullptr; |
1194 if (recycle_tree_) | 1195 if (recycle_tree_) |
1195 recycle_tree_->DetachLayers(); | 1196 recycle_tree_->DetachLayers(); |
1196 recycle_tree_ = nullptr; | 1197 recycle_tree_ = nullptr; |
1197 } | 1198 } |
1198 | 1199 |
(...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1519 void LayerTreeHostImpl::OnCanDrawStateChangedForTree() { | 1520 void LayerTreeHostImpl::OnCanDrawStateChangedForTree() { |
1520 client_->OnCanDrawStateChanged(CanDraw()); | 1521 client_->OnCanDrawStateChanged(CanDraw()); |
1521 } | 1522 } |
1522 | 1523 |
1523 CompositorFrameMetadata LayerTreeHostImpl::MakeCompositorFrameMetadata() const { | 1524 CompositorFrameMetadata LayerTreeHostImpl::MakeCompositorFrameMetadata() const { |
1524 CompositorFrameMetadata metadata; | 1525 CompositorFrameMetadata metadata; |
1525 metadata.device_scale_factor = active_tree_->painted_device_scale_factor() * | 1526 metadata.device_scale_factor = active_tree_->painted_device_scale_factor() * |
1526 active_tree_->device_scale_factor(); | 1527 active_tree_->device_scale_factor(); |
1527 | 1528 |
1528 metadata.page_scale_factor = active_tree_->current_page_scale_factor(); | 1529 metadata.page_scale_factor = active_tree_->current_page_scale_factor(); |
| 1530 // TODO(wjmaclean): Should we expose subframe PSF here? |
1529 metadata.scrollable_viewport_size = active_tree_->ScrollableViewportSize(); | 1531 metadata.scrollable_viewport_size = active_tree_->ScrollableViewportSize(); |
1530 metadata.root_layer_size = active_tree_->ScrollableSize(); | 1532 metadata.root_layer_size = active_tree_->ScrollableSize(); |
1531 metadata.min_page_scale_factor = active_tree_->min_page_scale_factor(); | 1533 metadata.min_page_scale_factor = active_tree_->min_page_scale_factor(); |
1532 metadata.max_page_scale_factor = active_tree_->max_page_scale_factor(); | 1534 metadata.max_page_scale_factor = active_tree_->max_page_scale_factor(); |
1533 metadata.top_controls_height = | 1535 metadata.top_controls_height = |
1534 browser_controls_offset_manager_->TopControlsHeight(); | 1536 browser_controls_offset_manager_->TopControlsHeight(); |
1535 metadata.top_controls_shown_ratio = | 1537 metadata.top_controls_shown_ratio = |
1536 browser_controls_offset_manager_->TopControlsShownRatio(); | 1538 browser_controls_offset_manager_->TopControlsShownRatio(); |
1537 metadata.bottom_controls_height = | 1539 metadata.bottom_controls_height = |
1538 browser_controls_offset_manager_->BottomControlsHeight(); | 1540 browser_controls_offset_manager_->BottomControlsHeight(); |
(...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1923 return did_lock_scrolling_layer_; | 1925 return did_lock_scrolling_layer_; |
1924 } | 1926 } |
1925 | 1927 |
1926 void LayerTreeHostImpl::CreatePendingTree() { | 1928 void LayerTreeHostImpl::CreatePendingTree() { |
1927 CHECK(!pending_tree_); | 1929 CHECK(!pending_tree_); |
1928 if (recycle_tree_) { | 1930 if (recycle_tree_) { |
1929 recycle_tree_.swap(pending_tree_); | 1931 recycle_tree_.swap(pending_tree_); |
1930 } else { | 1932 } else { |
1931 pending_tree_ = base::MakeUnique<LayerTreeImpl>( | 1933 pending_tree_ = base::MakeUnique<LayerTreeImpl>( |
1932 this, active_tree()->page_scale_factor(), | 1934 this, active_tree()->page_scale_factor(), |
| 1935 active_tree()->subframe_page_scale_factor(), |
1933 active_tree()->top_controls_shown_ratio(), | 1936 active_tree()->top_controls_shown_ratio(), |
1934 active_tree()->elastic_overscroll()); | 1937 active_tree()->elastic_overscroll()); |
1935 } | 1938 } |
1936 | 1939 |
1937 client_->OnCanDrawStateChanged(CanDraw()); | 1940 client_->OnCanDrawStateChanged(CanDraw()); |
1938 TRACE_EVENT_ASYNC_BEGIN0("cc", "PendingTree:waiting", pending_tree_.get()); | 1941 TRACE_EVENT_ASYNC_BEGIN0("cc", "PendingTree:waiting", pending_tree_.get()); |
1939 | 1942 |
1940 DCHECK(!pending_tree_duration_timer_); | 1943 DCHECK(!pending_tree_duration_timer_); |
1941 pending_tree_duration_timer_.reset(new PendingTreeDurationHistogramTimer()); | 1944 pending_tree_duration_timer_.reset(new PendingTreeDurationHistogramTimer()); |
1942 } | 1945 } |
(...skipping 1341 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3284 pinch_gesture_active_ = true; | 3287 pinch_gesture_active_ = true; |
3285 client_->RenewTreePriority(); | 3288 client_->RenewTreePriority(); |
3286 pinch_gesture_end_should_clear_scrolling_layer_ = !CurrentlyScrollingLayer(); | 3289 pinch_gesture_end_should_clear_scrolling_layer_ = !CurrentlyScrollingLayer(); |
3287 active_tree_->SetCurrentlyScrollingLayer(viewport()->MainScrollLayer()); | 3290 active_tree_->SetCurrentlyScrollingLayer(viewport()->MainScrollLayer()); |
3288 browser_controls_offset_manager_->PinchBegin(); | 3291 browser_controls_offset_manager_->PinchBegin(); |
3289 } | 3292 } |
3290 | 3293 |
3291 void LayerTreeHostImpl::PinchGestureUpdate(float magnify_delta, | 3294 void LayerTreeHostImpl::PinchGestureUpdate(float magnify_delta, |
3292 const gfx::Point& anchor) { | 3295 const gfx::Point& anchor) { |
3293 TRACE_EVENT0("cc", "LayerTreeHostImpl::PinchGestureUpdate"); | 3296 TRACE_EVENT0("cc", "LayerTreeHostImpl::PinchGestureUpdate"); |
3294 if (!InnerViewportScrollLayer()) | 3297 if (InnerViewportScrollLayer()) { |
3295 return; | 3298 viewport()->PinchUpdate(magnify_delta, anchor); |
3296 viewport()->PinchUpdate(magnify_delta, anchor); | 3299 } else { |
| 3300 float subframe_page_scale = active_tree_->GetSubframePageScaleFactor(); |
| 3301 subframe_page_scale *= magnify_delta; |
| 3302 active_tree_->SetSubframePageScaleOnActiveTree(subframe_page_scale); |
| 3303 } |
3297 client_->SetNeedsCommitOnImplThread(); | 3304 client_->SetNeedsCommitOnImplThread(); |
3298 SetNeedsRedraw(); | 3305 SetNeedsRedraw(); |
3299 client_->RenewTreePriority(); | 3306 client_->RenewTreePriority(); |
3300 // Pinching can change the root scroll offset, so inform the synchronous input | 3307 // Pinching can change the root scroll offset, so inform the synchronous input |
3301 // handler. | 3308 // handler. |
3302 UpdateRootLayerStateForSynchronousInputHandler(); | 3309 UpdateRootLayerStateForSynchronousInputHandler(); |
3303 } | 3310 } |
3304 | 3311 |
3305 void LayerTreeHostImpl::PinchGestureEnd() { | 3312 void LayerTreeHostImpl::PinchGestureEnd() { |
3306 pinch_gesture_active_ = false; | 3313 pinch_gesture_active_ = false; |
(...skipping 778 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4085 if (is_visible) { | 4092 if (is_visible) { |
4086 worker_context_visibility_ = | 4093 worker_context_visibility_ = |
4087 worker_context->CacheController()->ClientBecameVisible(); | 4094 worker_context->CacheController()->ClientBecameVisible(); |
4088 } else { | 4095 } else { |
4089 worker_context->CacheController()->ClientBecameNotVisible( | 4096 worker_context->CacheController()->ClientBecameNotVisible( |
4090 std::move(worker_context_visibility_)); | 4097 std::move(worker_context_visibility_)); |
4091 } | 4098 } |
4092 } | 4099 } |
4093 | 4100 |
4094 } // namespace cc | 4101 } // namespace cc |
OLD | NEW |