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_TEST_FAKE_PAINTED_SCROLLBAR_LAYER_H_
6#define CC_TEST_FAKE_PAINTED_SCROLLBAR_LAYER_H_
7
8#include "base/memory/scoped_ptr.h"
9#include "cc/layers/painted_scrollbar_layer.h"
10#include "cc/test/fake_scrollbar.h"
11
12namespace base { template<typename T> class AutoReset; }
13
14namespace cc {
15
16class FakePaintedScrollbarLayer : public PaintedScrollbarLayer {
17 public:
18  static scoped_refptr<FakePaintedScrollbarLayer>
19      Create(bool paint_during_update, bool has_thumb, int scrolling_layer_id);
20  int update_count() const { return update_count_; }
21  void reset_update_count() { update_count_ = 0; }
22
23  virtual bool Update(ResourceUpdateQueue* queue,
24                      const OcclusionTracker<Layer>* occlusion) OVERRIDE;
25
26  virtual void PushPropertiesTo(LayerImpl* layer) OVERRIDE;
27
28  scoped_ptr<base::AutoReset<bool> > IgnoreSetNeedsCommit();
29
30  size_t push_properties_count() const { return push_properties_count_; }
31  void reset_push_properties_count() { push_properties_count_ = 0; }
32
33  // For unit tests
34  UIResourceId track_resource_id() {
35    return PaintedScrollbarLayer::track_resource_id();
36  }
37  UIResourceId thumb_resource_id() {
38    return PaintedScrollbarLayer::thumb_resource_id();
39  }
40  FakeScrollbar* fake_scrollbar() {
41    return fake_scrollbar_;
42  }
43  using PaintedScrollbarLayer::UpdateThumbAndTrackGeometry;
44
45 private:
46  FakePaintedScrollbarLayer(FakeScrollbar* fake_scrollbar,
47                            int scrolling_layer_id);
48  virtual ~FakePaintedScrollbarLayer();
49
50  int update_count_;
51  size_t push_properties_count_;
52  FakeScrollbar* fake_scrollbar_;
53};
54
55}  // namespace cc
56
57#endif  // CC_TEST_FAKE_PAINTED_SCROLLBAR_LAYER_H_
58