Index: cc/scrollbar_geometry_fixed_thumb.h |
diff --git a/cc/scrollbar_geometry_fixed_thumb.h b/cc/scrollbar_geometry_fixed_thumb.h |
index 638cbb270ce9b24689d5095baf174ade4f4d1a13..fe0db12f263604fcffa097ec35e724771f7b9008 100644 |
--- a/cc/scrollbar_geometry_fixed_thumb.h |
+++ b/cc/scrollbar_geometry_fixed_thumb.h |
@@ -1,3 +1,39 @@ |
// Copyright 2012 The Chromium Authors. All rights reserved. |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+ |
+#ifndef CCScrollbarGeometryFixedThumb_h |
+#define CCScrollbarGeometryFixedThumb_h |
+ |
+#include "CCScrollbarGeometryStub.h" |
+#include "IntSize.h" |
+ |
+namespace cc { |
+ |
+// This scrollbar geometry class behaves exactly like a normal geometry except |
+// it always returns a fixed thumb length. This allows a page to zoom (changing |
+// the total size of the scrollable area, changing the thumb length) while not |
+// requiring the thumb resource to be repainted. |
+class CCScrollbarGeometryFixedThumb : public CCScrollbarGeometryStub { |
+public: |
+ static PassOwnPtr<CCScrollbarGeometryFixedThumb> create(PassOwnPtr<WebKit::WebScrollbarThemeGeometry>); |
+ virtual ~CCScrollbarGeometryFixedThumb(); |
+ |
+ // Update thumb length from scrollbar |
+ void update(WebKit::WebScrollbar*); |
+ |
+ // WebScrollbarThemeGeometry interface |
+ virtual WebKit::WebScrollbarThemeGeometry* clone() const OVERRIDE; |
+ virtual int thumbLength(WebKit::WebScrollbar*) OVERRIDE; |
+ virtual int thumbPosition(WebKit::WebScrollbar*) OVERRIDE; |
+ virtual void splitTrack(WebKit::WebScrollbar*, const WebKit::WebRect& track, WebKit::WebRect& startTrack, WebKit::WebRect& thumb, WebKit::WebRect& endTrack) OVERRIDE; |
+ |
+private: |
+ explicit CCScrollbarGeometryFixedThumb(PassOwnPtr<WebKit::WebScrollbarThemeGeometry>); |
+ |
+ IntSize m_thumbSize; |
+}; |
+ |
+} |
+ |
+#endif |