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#include "cc/test/fake_scrollbar.h"
6
7#include "third_party/skia/include/core/SkCanvas.h"
8#include "ui/gfx/skia_util.h"
9
10namespace cc {
11
12FakeScrollbar::FakeScrollbar()
13    : paint_(false),
14      has_thumb_(false),
15      is_overlay_(false),
16      thumb_thickness_(10),
17      thumb_length_(5),
18      track_rect_(0, 0, 100, 10),
19      fill_color_(SK_ColorGREEN) {}
20
21FakeScrollbar::FakeScrollbar(bool paint, bool has_thumb, bool is_overlay)
22    : paint_(paint),
23      has_thumb_(has_thumb),
24      is_overlay_(is_overlay),
25      thumb_thickness_(10),
26      thumb_length_(5),
27      track_rect_(0, 0, 100, 10),
28      fill_color_(SK_ColorGREEN) {}
29
30FakeScrollbar::~FakeScrollbar() {}
31
32ScrollbarOrientation FakeScrollbar::Orientation() const {
33  return HORIZONTAL;
34}
35
36bool FakeScrollbar::IsLeftSideVerticalScrollbar() const {
37  return false;
38}
39
40gfx::Point FakeScrollbar::Location() const { return location_; }
41
42bool FakeScrollbar::IsOverlay() const { return is_overlay_; }
43
44bool FakeScrollbar::HasThumb() const { return has_thumb_; }
45
46int FakeScrollbar::ThumbThickness() const {
47  return thumb_thickness_;
48}
49
50int FakeScrollbar::ThumbLength() const {
51  return thumb_length_;
52}
53
54gfx::Rect FakeScrollbar::TrackRect() const {
55  return track_rect_;
56}
57
58void FakeScrollbar::PaintPart(SkCanvas* canvas,
59                             ScrollbarPart part,
60                             const gfx::Rect& content_rect) {
61  if (!paint_)
62    return;
63
64  // Fill the scrollbar with a different color each time.
65  fill_color_++;
66  SkPaint paint;
67  paint.setAntiAlias(false);
68  paint.setColor(paint_fill_color());
69  paint.setStyle(SkPaint::kFill_Style);
70
71  // Emulate the how the real scrollbar works by using scrollbar's rect for
72  // TRACK and the given content_rect for the THUMB
73  SkRect rect = part == TRACK ? RectToSkRect(TrackRect())
74                              : RectToSkRect(content_rect);
75  canvas->drawRect(rect, paint);
76}
77
78}  // namespace cc
79