| Index: cc/trees/layer_tree_impl.h
 | 
| diff --git a/cc/trees/layer_tree_impl.h b/cc/trees/layer_tree_impl.h
 | 
| index 232913933965f14c223c1ba7e83579783ebdecad..54c86604d3435edd63f9d5343787185d09307400 100644
 | 
| --- a/cc/trees/layer_tree_impl.h
 | 
| +++ b/cc/trees/layer_tree_impl.h
 | 
| @@ -22,13 +22,7 @@ namespace base {
 | 
|  namespace trace_event {
 | 
|  class TracedValue;
 | 
|  }
 | 
| -
 | 
| -// TODO(ssid): remove these aliases after the tracing clients are moved to the
 | 
| -// new trace_event namespace. See crbug.com/451032. ETA: March 2015
 | 
| -namespace debug {
 | 
| -using ::base::trace_event::TracedValue;
 | 
|  }
 | 
| -}  // namespace base
 | 
|  
 | 
|  namespace cc {
 | 
|  
 | 
| @@ -55,6 +49,7 @@ struct RendererCapabilities;
 | 
|  struct SelectionHandle;
 | 
|  
 | 
|  typedef std::vector<UIResourceRequest> UIResourceRequestQueue;
 | 
| +typedef SyncedProperty<AdditionGroup<float>> SyncedTopControls;
 | 
|  typedef SyncedProperty<AdditionGroup<gfx::Vector2dF>> SyncedElasticOverscroll;
 | 
|  
 | 
|  class CC_EXPORT LayerTreeImpl {
 | 
| @@ -62,9 +57,11 @@ class CC_EXPORT LayerTreeImpl {
 | 
|    static scoped_ptr<LayerTreeImpl> create(
 | 
|        LayerTreeHostImpl* layer_tree_host_impl,
 | 
|        scoped_refptr<SyncedProperty<ScaleGroup>> page_scale_factor,
 | 
| +      scoped_refptr<SyncedTopControls> top_controls_shown_ratio,
 | 
|        scoped_refptr<SyncedElasticOverscroll> elastic_overscroll) {
 | 
| -    return make_scoped_ptr(new LayerTreeImpl(
 | 
| -        layer_tree_host_impl, page_scale_factor, elastic_overscroll));
 | 
| +    return make_scoped_ptr(
 | 
| +        new LayerTreeImpl(layer_tree_host_impl, page_scale_factor,
 | 
| +                          top_controls_shown_ratio, elastic_overscroll));
 | 
|    }
 | 
|    virtual ~LayerTreeImpl();
 | 
|  
 | 
| @@ -75,6 +72,7 @@ class CC_EXPORT LayerTreeImpl {
 | 
|    // Methods called by the layer tree that pass-through or access LTHI.
 | 
|    // ---------------------------------------------------------------------------
 | 
|    const LayerTreeSettings& settings() const;
 | 
| +  const LayerTreeDebugState& debug_state() const;
 | 
|    const RendererCapabilitiesImpl& GetRendererCapabilities() const;
 | 
|    ContextProvider* context_provider() const;
 | 
|    OutputSurface* output_surface() const;
 | 
| @@ -84,6 +82,8 @@ class CC_EXPORT LayerTreeImpl {
 | 
|    PaintTimeCounter* paint_time_counter() const;
 | 
|    MemoryHistory* memory_history() const;
 | 
|    gfx::Size device_viewport_size() const;
 | 
| +  float device_scale_factor() const;
 | 
| +  DebugRectHistory* debug_rect_history() const;
 | 
|    bool IsActiveTree() const;
 | 
|    bool IsPendingTree() const;
 | 
|    bool IsRecycleTree() const;
 | 
| @@ -111,13 +111,10 @@ class CC_EXPORT LayerTreeImpl {
 | 
|    // ---------------------------------------------------------------------------
 | 
|    void SetNeedsRedraw();
 | 
|  
 | 
| -  // TODO(nduca): These are implemented in cc files temporarily, but will become
 | 
| -  // trivial accessors in a followup patch.
 | 
| -  const LayerTreeDebugState& debug_state() const;
 | 
| -  float device_scale_factor() const;
 | 
| -  DebugRectHistory* debug_rect_history() const;
 | 
| +  // Tracing methods.
 | 
| +  // ---------------------------------------------------------------------------
 | 
|    void GetAllTilesForTracing(std::set<const Tile*>* tiles) const;
 | 
| -  void AsValueInto(base::debug::TracedValue* dict) const;
 | 
| +  void AsValueInto(base::trace_event::TracedValue* dict) const;
 | 
|  
 | 
|    // Other public methods
 | 
|    // ---------------------------------------------------------------------------
 | 
| @@ -192,6 +189,13 @@ class CC_EXPORT LayerTreeImpl {
 | 
|      return elastic_overscroll_.get();
 | 
|    }
 | 
|  
 | 
| +  SyncedTopControls* top_controls_shown_ratio() {
 | 
| +    return top_controls_shown_ratio_.get();
 | 
| +  }
 | 
| +  const SyncedTopControls* top_controls_shown_ratio() const {
 | 
| +    return top_controls_shown_ratio_.get();
 | 
| +  }
 | 
| +
 | 
|    // Updates draw properties and render surface layer list, as well as tile
 | 
|    // priorities. Returns false if it was unable to update.
 | 
|    bool UpdateDrawProperties();
 | 
| @@ -216,6 +220,7 @@ class CC_EXPORT LayerTreeImpl {
 | 
|    void set_ui_resource_request_queue(const UIResourceRequestQueue& queue);
 | 
|  
 | 
|    const LayerImplList& RenderSurfaceLayerList() const;
 | 
| +  const Region& UnoccludedScreenSpaceRegion() const;
 | 
|  
 | 
|    // These return the size of the root scrollable area and the size of
 | 
|    // the user-visible scrolling viewport, in CSS layout coordinates.
 | 
| @@ -273,6 +278,12 @@ class CC_EXPORT LayerTreeImpl {
 | 
|  
 | 
|    bool IsUIResourceOpaque(UIResourceId uid) const;
 | 
|  
 | 
| +  void RegisterPictureLayerImpl(PictureLayerImpl* layer);
 | 
| +  void UnregisterPictureLayerImpl(PictureLayerImpl* layer);
 | 
| +  const std::vector<PictureLayerImpl*>& picture_layers() const {
 | 
| +    return picture_layers_;
 | 
| +  }
 | 
| +
 | 
|    void AddLayerWithCopyOutputRequest(LayerImpl* layer);
 | 
|    void RemoveLayerWithCopyOutputRequest(LayerImpl* layer);
 | 
|    const std::vector<LayerImpl*>& LayersWithCopyOutputRequest() const;
 | 
| @@ -300,39 +311,17 @@ class CC_EXPORT LayerTreeImpl {
 | 
|    void GetViewportSelection(ViewportSelectionBound* start,
 | 
|                              ViewportSelectionBound* end);
 | 
|  
 | 
| -  void RegisterPictureLayerImpl(PictureLayerImpl* layer);
 | 
| -  void UnregisterPictureLayerImpl(PictureLayerImpl* layer);
 | 
| -
 | 
| -  void set_top_controls_shrink_blink_size(bool shrink) {
 | 
| -    top_controls_shrink_blink_size_ = shrink;
 | 
| -  }
 | 
| -  void set_top_controls_height(float height) { top_controls_height_ = height; }
 | 
| -  void set_top_controls_content_offset(float offset) {
 | 
| -    top_controls_content_offset_ = offset;
 | 
| -  }
 | 
| -  void set_top_controls_delta(float delta) {
 | 
| -    top_controls_delta_ = delta;
 | 
| -  }
 | 
| -  void set_sent_top_controls_delta(float sent_delta) {
 | 
| -    sent_top_controls_delta_ = sent_delta;
 | 
| -  }
 | 
| -
 | 
| +  void set_top_controls_shrink_blink_size(bool shrink);
 | 
|    bool top_controls_shrink_blink_size() const {
 | 
|      return top_controls_shrink_blink_size_;
 | 
|    }
 | 
| -  float top_controls_height() const { return top_controls_height_; }
 | 
| -  float top_controls_content_offset() const {
 | 
| -    return top_controls_content_offset_;
 | 
| -  }
 | 
| -  float top_controls_delta() const {
 | 
| -    return top_controls_delta_;
 | 
| -  }
 | 
| -  float sent_top_controls_delta() const {
 | 
| -    return sent_top_controls_delta_;
 | 
| -  }
 | 
| -  float total_top_controls_content_offset() const {
 | 
| -    return top_controls_content_offset_ + top_controls_delta_;
 | 
| +  bool SetCurrentTopControlsShownRatio(float ratio);
 | 
| +  float CurrentTopControlsShownRatio() const {
 | 
| +    return top_controls_shown_ratio_->Current(IsActiveTree());
 | 
|    }
 | 
| +  void set_top_controls_height(float top_controls_height);
 | 
| +  float top_controls_height() const { return top_controls_height_; }
 | 
| +  void PushTopControlsFromMainThread(float top_controls_shown_ratio);
 | 
|  
 | 
|    void SetPendingPageScaleAnimation(
 | 
|        scoped_ptr<PendingPageScaleAnimation> pending_animation);
 | 
| @@ -342,6 +331,7 @@ class CC_EXPORT LayerTreeImpl {
 | 
|    explicit LayerTreeImpl(
 | 
|        LayerTreeHostImpl* layer_tree_host_impl,
 | 
|        scoped_refptr<SyncedProperty<ScaleGroup>> page_scale_factor,
 | 
| +      scoped_refptr<SyncedTopControls> top_controls_shown_ratio,
 | 
|        scoped_refptr<SyncedElasticOverscroll> elastic_overscroll);
 | 
|    void ProcessLayersRecursive(LayerImpl* current,
 | 
|                                void (LayerImpl::*function)());
 | 
| @@ -353,7 +343,7 @@ class CC_EXPORT LayerTreeImpl {
 | 
|                                  float max_page_scale_factor);
 | 
|    void DidUpdatePageScale();
 | 
|    void HideInnerViewportScrollbarsIfNearMinimumScale();
 | 
| -
 | 
| +  void PushTopControls(const float* top_controls_shown_ratio);
 | 
|    LayerTreeHostImpl* layer_tree_host_impl_;
 | 
|    int source_frame_number_;
 | 
|    scoped_ptr<LayerImpl> root_layer_;
 | 
| @@ -384,6 +374,7 @@ class CC_EXPORT LayerTreeImpl {
 | 
|    typedef base::hash_map<int, LayerImpl*> LayerIdMap;
 | 
|    LayerIdMap layer_id_map_;
 | 
|  
 | 
| +  std::vector<PictureLayerImpl*> picture_layers_;
 | 
|    std::vector<LayerImpl*> layers_with_copy_output_request_;
 | 
|  
 | 
|    // Persisted state for non-impl-side-painting.
 | 
| @@ -391,6 +382,9 @@ class CC_EXPORT LayerTreeImpl {
 | 
|  
 | 
|    // List of visible layers for the most recently prepared frame.
 | 
|    LayerImplList render_surface_layer_list_;
 | 
| +  // After drawing the |render_surface_layer_list_| the areas in this region
 | 
| +  // would not be fully covered by opaque content.
 | 
| +  Region unoccluded_screen_space_region_;
 | 
|  
 | 
|    bool contents_textures_purged_;
 | 
|    bool viewport_size_invalid_;
 | 
| @@ -416,11 +410,9 @@ class CC_EXPORT LayerTreeImpl {
 | 
|  
 | 
|    float top_controls_height_;
 | 
|  
 | 
| -  // The up-to-date content offset of the top controls, i.e. the amount that the
 | 
| -  // web contents have been shifted down from the top of the device viewport.
 | 
| -  float top_controls_content_offset_;
 | 
| -  float top_controls_delta_;
 | 
| -  float sent_top_controls_delta_;
 | 
| +  // The amount that the top controls are shown from 0 (hidden) to 1 (fully
 | 
| +  // shown).
 | 
| +  scoped_refptr<SyncedTopControls> top_controls_shown_ratio_;
 | 
|  
 | 
|    scoped_ptr<PendingPageScaleAnimation> pending_page_scale_animation_;
 | 
|  
 | 
| 
 |