1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CC_INPUT_LAYER_SCROLL_OFFSET_DELEGATE_H_ 6 #define CC_INPUT_LAYER_SCROLL_OFFSET_DELEGATE_H_ 7 8 #include "base/basictypes.h" 9 #include "ui/gfx/size_f.h" 10 #include "ui/gfx/vector2d_f.h" 11 12 namespace cc { 13 14 // The LayerScrollOffsetDelegate allows for the embedder to take ownership of 15 // the scroll offset of the root layer. 16 // 17 // The LayerScrollOffsetDelegate is only used on the impl thread. 18 class LayerScrollOffsetDelegate { 19 public: 20 // This is called by the compositor to query the current scroll offset of the 21 // layer. 22 // There is no requirement that the return values of this method are 23 // stable in time (two subsequent calls may yield different results). 24 // The return value is not required to be related to the values passed in to 25 // the SetTotalScrollOffset method in any way however it is required to be no 26 // more than the value passed to the most recent SetMaxScrollOffset call. 27 virtual gfx::Vector2dF GetTotalScrollOffset() = 0; 28 29 // This is called by the compositor to notify the delegate of any change to 30 // the following parameters: 31 // |total_scroll_offset| current scroll offset of the root layer, 32 // |max_scroll_offset| total scroll offset upper bound for the root layer, 33 // |scrollable_size| root layer scrollable size, 34 // |page_scale_factor| current page scale, 35 // |min_page_scale_factor| page scale lower limit, 36 // |max_page_scale_factor| page scale upper limit. 37 virtual void UpdateRootLayerState(const gfx::Vector2dF& total_scroll_offset, 38 const gfx::Vector2dF& max_scroll_offset, 39 const gfx::SizeF& scrollable_size, 40 float page_scale_factor, 41 float min_page_scale_factor, 42 float max_page_scale_factor) = 0; 43 44 // This is called by the compositor to check whether a delegate-managed fling 45 // is active or not. 46 virtual bool IsExternalFlingActive() const = 0; 47 48 protected: 49 LayerScrollOffsetDelegate() {} 50 virtual ~LayerScrollOffsetDelegate() {} 51 52 private: 53 DISALLOW_COPY_AND_ASSIGN(LayerScrollOffsetDelegate); 54 }; 55 56 } // namespace cc 57 58 #endif // CC_INPUT_LAYER_SCROLL_OFFSET_DELEGATE_H_ 59