Index: cc/trees/layer_tree_host.h |
diff --git a/cc/trees/layer_tree_host.h b/cc/trees/layer_tree_host.h |
index f424cee382ff8e4de3fd7695c4a7cfd72c27c035..d7bb89dc03bae623b977c3fe29d96299e0401739 100644 |
--- a/cc/trees/layer_tree_host.h |
+++ b/cc/trees/layer_tree_host.h |
@@ -128,7 +128,7 @@ |
virtual ~LayerTreeHost(); |
- // LayerTreeHost interface to Proxy |
+ // LayerTreeHost interface to Proxy. |
void WillBeginMainFrame(); |
void DidBeginMainFrame(); |
void BeginMainFrame(const BeginFrameArgs& args); |
@@ -151,14 +151,15 @@ |
void DidCommitAndDrawFrame() { client_->DidCommitAndDrawFrame(); } |
void DidCompleteSwapBuffers() { client_->DidCompleteSwapBuffers(); } |
bool UpdateLayers(); |
- // Called when the compositor completed page scale animation. |
- void DidCompletePageScaleAnimation(); |
LayerListIterator<Layer> begin() const; |
LayerListIterator<Layer> end() const; |
LayerListReverseIterator<Layer> rbegin(); |
LayerListReverseIterator<Layer> rend(); |
+ // Called when the compositor completed page scale animation. |
+ void DidCompletePageScaleAnimation(); |
+ |
LayerTreeHostClient* client() { return client_; } |
const base::WeakPtr<InputHandler>& GetInputHandler() { |
return input_handler_weak_ptr_; |
@@ -190,6 +191,9 @@ |
void SetNeedsAnimate(); |
virtual void SetNeedsUpdateLayers(); |
virtual void SetNeedsCommit(); |
+ virtual void SetNeedsFullTreeSync(); |
+ virtual void SetNeedsMetaInfoRecomputation( |
+ bool needs_meta_info_recomputation); |
void SetNeedsRedraw(); |
void SetNeedsRedrawRect(const gfx::Rect& damage_rect); |
bool CommitRequested() const; |
@@ -201,6 +205,38 @@ |
void SetAnimationEvents(std::unique_ptr<AnimationEvents> events); |
+ void SetRootLayer(scoped_refptr<Layer> root_layer); |
+ Layer* root_layer() { return root_layer_.get(); } |
+ const Layer* root_layer() const { return root_layer_.get(); } |
+ const Layer* overscroll_elasticity_layer() const { |
+ return overscroll_elasticity_layer_.get(); |
+ } |
+ const Layer* page_scale_layer() const { return page_scale_layer_.get(); } |
+ void RegisterViewportLayers(scoped_refptr<Layer> overscroll_elasticity_layer, |
+ scoped_refptr<Layer> page_scale_layer, |
+ scoped_refptr<Layer> inner_viewport_scroll_layer, |
+ scoped_refptr<Layer> outer_viewport_scroll_layer); |
+ Layer* inner_viewport_scroll_layer() const { |
+ return inner_viewport_scroll_layer_.get(); |
+ } |
+ Layer* outer_viewport_scroll_layer() const { |
+ return outer_viewport_scroll_layer_.get(); |
+ } |
+ |
+ void RegisterSelection(const LayerSelection& selection); |
+ |
+ bool have_scroll_event_handlers() const { |
+ return have_scroll_event_handlers_; |
+ } |
+ void SetHaveScrollEventHandlers(bool have_event_handlers); |
+ |
+ void SetEventListenerProperties(EventListenerClass event_class, |
+ EventListenerProperties event_properties); |
+ EventListenerProperties event_listener_properties( |
+ EventListenerClass event_class) const { |
+ return event_listener_properties_[static_cast<size_t>(event_class)]; |
+ } |
+ |
const LayerTreeSettings& settings() const { return settings_; } |
void SetDebugState(const LayerTreeDebugState& debug_state); |
@@ -211,16 +247,48 @@ |
} |
void SetHasGpuRasterizationTrigger(bool has_trigger); |
+ void SetViewportSize(const gfx::Size& device_viewport_size); |
+ void SetTopControlsHeight(float height, bool shrink); |
+ void SetTopControlsShownRatio(float ratio); |
+ |
+ gfx::Size device_viewport_size() const { return device_viewport_size_; } |
+ |
void ApplyPageScaleDeltaFromImplSide(float page_scale_delta); |
+ void SetPageScaleFactorAndLimits(float page_scale_factor, |
+ float min_page_scale_factor, |
+ float max_page_scale_factor); |
+ float page_scale_factor() const { return page_scale_factor_; } |
+ gfx::Vector2dF elastic_overscroll() const { return elastic_overscroll_; } |
+ |
+ SkColor background_color() const { return background_color_; } |
+ void set_background_color(SkColor color) { background_color_ = color; } |
+ |
+ void set_has_transparent_background(bool transparent) { |
+ has_transparent_background_ = transparent; |
+ } |
void SetVisible(bool visible); |
bool visible() const { return visible_; } |
+ void StartPageScaleAnimation(const gfx::Vector2d& target_offset, |
+ bool use_anchor, |
+ float scale, |
+ base::TimeDelta duration); |
+ bool HasPendingPageScaleAnimation() const; |
+ |
void ApplyScrollAndScale(ScrollAndScaleSet* info); |
+ void SetImplTransform(const gfx::Transform& transform); |
+ |
+ void SetDeviceScaleFactor(float device_scale_factor); |
+ void SetPaintedDeviceScaleFactor(float painted_device_scale_factor); |
+ |
+ float device_scale_factor() const { return device_scale_factor_; } |
void UpdateTopControlsState(TopControlsState constraints, |
TopControlsState current, |
bool animate); |
+ |
+ HeadsUpDisplayLayer* hud_layer() const { return hud_layer_.get(); } |
Proxy* proxy() const { return proxy_.get(); } |
TaskRunnerProvider* task_runner_provider() const { |
@@ -272,6 +340,11 @@ |
void set_surface_client_id(uint32_t client_id); |
SurfaceSequence CreateSurfaceSequence(); |
+ |
+ PropertyTrees* property_trees() { return &property_trees_; } |
+ bool needs_meta_info_recomputation() { |
+ return needs_meta_info_recomputation_; |
+ } |
void SetLayerTreeMutator(std::unique_ptr<LayerTreeMutator> mutator); |
@@ -349,18 +422,11 @@ |
return client_picture_cache_ ? client_picture_cache_.get() : nullptr; |
} |
- LayerTree* GetLayerTree() { return layer_tree_.get(); } |
- const LayerTree* GetLayerTree() const { return layer_tree_.get(); } |
- |
- void ResetGpuRasterizationTracking(); |
+ LayerTree* GetLayerTree() { return &layer_tree_; } |
+ const LayerTree* GetLayerTree() const { return &layer_tree_; } |
protected: |
- // Allow tests to inject the LayerTree. |
- LayerTreeHost(InitParams* params, |
- CompositorMode mode, |
- std::unique_ptr<LayerTree> layer_tree); |
LayerTreeHost(InitParams* params, CompositorMode mode); |
- |
void InitializeThreaded( |
scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, |
scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner, |
@@ -398,13 +464,11 @@ |
} |
TaskGraphRunner* task_graph_runner() const { return task_graph_runner_; } |
+ MicroBenchmarkController micro_benchmark_controller_; |
+ |
void OnCommitForSwapPromises(); |
void RecordGpuRasterizationHistogram(); |
- |
- MicroBenchmarkController micro_benchmark_controller_; |
- |
- std::unique_ptr<LayerTree> layer_tree_; |
private: |
friend class LayerTreeHostSerializationTest; |
@@ -443,6 +507,9 @@ |
void SetPropertyTreesNeedRebuild(); |
const CompositorMode compositor_mode_; |
+ |
+ bool needs_full_tree_sync_; |
+ bool needs_meta_info_recomputation_; |
LayerTreeHostClient* client_; |
std::unique_ptr<Proxy> proxy_; |
@@ -461,18 +528,39 @@ |
std::unique_ptr<OutputSurface> current_output_surface_; |
bool output_surface_lost_; |
+ scoped_refptr<Layer> root_layer_; |
+ scoped_refptr<HeadsUpDisplayLayer> hud_layer_; |
+ |
base::WeakPtr<InputHandler> input_handler_weak_ptr_; |
const LayerTreeSettings settings_; |
LayerTreeDebugState debug_state_; |
+ gfx::Size device_viewport_size_; |
+ bool top_controls_shrink_blink_size_; |
+ float top_controls_height_; |
+ float top_controls_shown_ratio_; |
+ float device_scale_factor_; |
+ float painted_device_scale_factor_; |
+ |
bool visible_; |
+ float page_scale_factor_; |
+ float min_page_scale_factor_; |
+ float max_page_scale_factor_; |
+ gfx::Vector2dF elastic_overscroll_; |
bool has_gpu_rasterization_trigger_; |
bool content_is_suitable_for_gpu_rasterization_; |
bool gpu_rasterization_histogram_recorded_; |
- gfx::Vector2dF elastic_overscroll_; |
+ SkColor background_color_; |
+ bool has_transparent_background_; |
+ |
+ bool have_scroll_event_handlers_; |
+ EventListenerProperties event_listener_properties_[static_cast<size_t>( |
+ EventListenerClass::kNumClasses)]; |
+ |
+ std::unique_ptr<PendingPageScaleAnimation> pending_page_scale_animation_; |
// If set, then page scale animation has completed, but the client hasn't been |
// notified about it yet. |
@@ -481,6 +569,13 @@ |
int id_; |
bool next_commit_forces_redraw_; |
+ scoped_refptr<Layer> overscroll_elasticity_layer_; |
+ scoped_refptr<Layer> page_scale_layer_; |
+ scoped_refptr<Layer> inner_viewport_scroll_layer_; |
+ scoped_refptr<Layer> outer_viewport_scroll_layer_; |
+ |
+ LayerSelection selection_; |
+ |
SharedBitmapManager* shared_bitmap_manager_; |
gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager_; |
TaskGraphRunner* task_graph_runner_; |
@@ -492,6 +587,8 @@ |
std::vector<std::unique_ptr<SwapPromise>> swap_promise_list_; |
std::set<SwapPromiseMonitor*> swap_promise_monitor_; |
+ PropertyTrees property_trees_; |
+ |
using ElementLayersMap = std::unordered_map<ElementId, Layer*, ElementIdHash>; |
ElementLayersMap element_layers_map_; |
@@ -499,6 +596,9 @@ |
uint32_t next_surface_sequence_; |
uint32_t num_consecutive_frames_suitable_for_gpu_ = 0; |
+ // Layer tree that hold layers. |
+ LayerTree layer_tree_; |
+ |
DISALLOW_COPY_AND_ASSIGN(LayerTreeHost); |
}; |