1// Copyright 2012 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_CONTENT_LAYER_CLIENT_H_
6#define CC_TEST_FAKE_CONTENT_LAYER_CLIENT_H_
7
8#include <utility>
9#include <vector>
10
11#include "base/compiler_specific.h"
12#include "cc/layers/content_layer_client.h"
13#include "third_party/skia/include/core/SkBitmap.h"
14#include "third_party/skia/include/core/SkPaint.h"
15#include "ui/gfx/rect.h"
16
17namespace cc {
18
19class FakeContentLayerClient : public cc::ContentLayerClient {
20 public:
21  struct BitmapData {
22    SkBitmap bitmap;
23    gfx::Point point;
24    SkPaint paint;
25  };
26
27  FakeContentLayerClient();
28  virtual ~FakeContentLayerClient();
29
30  virtual void PaintContents(SkCanvas* canvas,
31                             gfx::Rect rect,
32                             gfx::RectF* opaque_rect) OVERRIDE;
33  virtual void DidChangeLayerCanUseLCDText() OVERRIDE {}
34
35  void set_paint_all_opaque(bool opaque) { paint_all_opaque_ = opaque; }
36
37  void add_draw_rect(const gfx::RectF& rect, const SkPaint& paint) {
38    draw_rects_.push_back(std::make_pair(rect, paint));
39  }
40
41  void add_draw_bitmap(const SkBitmap& bitmap,
42                       gfx::Point point,
43                       const SkPaint& paint) {
44    BitmapData data;
45    data.bitmap = bitmap;
46    data.point = point;
47    data.paint = paint;
48    draw_bitmaps_.push_back(data);
49  }
50
51 private:
52  typedef std::vector<std::pair<gfx::RectF, SkPaint> > RectPaintVector;
53  typedef std::vector<BitmapData> BitmapVector;
54
55  bool paint_all_opaque_;
56  RectPaintVector draw_rects_;
57  BitmapVector draw_bitmaps_;
58};
59
60}  // namespace cc
61
62#endif  // CC_TEST_FAKE_CONTENT_LAYER_CLIENT_H_
63