| // 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 CC_TEST_FAKE_CONTENT_LAYER_CLIENT_H_ |
| #define CC_TEST_FAKE_CONTENT_LAYER_CLIENT_H_ |
| |
| #include <stddef.h> |
| |
| #include <utility> |
| #include <vector> |
| |
| #include "base/compiler_specific.h" |
| #include "cc/layers/content_layer_client.h" |
| #include "third_party/skia/include/core/SkImage.h" |
| #include "third_party/skia/include/core/SkPaint.h" |
| #include "third_party/skia/include/core/SkRefCnt.h" |
| #include "ui/gfx/geometry/rect.h" |
| #include "ui/gfx/geometry/rect_f.h" |
| #include "ui/gfx/transform.h" |
| |
| namespace cc { |
| |
| class FakeContentLayerClient : public ContentLayerClient { |
| public: |
| struct ImageData { |
| ImageData(sk_sp<const SkImage> image, |
| const gfx::Point& point, |
| const SkPaint& paint); |
| ImageData(sk_sp<const SkImage> image, |
| const gfx::Transform& transform, |
| const SkPaint& paint); |
| ImageData(const ImageData& other); |
| ~ImageData(); |
| sk_sp<const SkImage> image; |
| gfx::Point point; |
| gfx::Transform transform; |
| SkPaint paint; |
| }; |
| |
| FakeContentLayerClient(); |
| ~FakeContentLayerClient() override; |
| |
| gfx::Rect PaintableRegion() override; |
| scoped_refptr<DisplayItemList> PaintContentsToDisplayList( |
| PaintingControlSetting painting_control) override; |
| bool FillsBoundsCompletely() const override; |
| size_t GetApproximateUnsharedMemoryUsage() const override; |
| |
| void set_display_list_use_cached_picture(bool use_cached_picture) { |
| display_list_use_cached_picture_ = use_cached_picture; |
| } |
| |
| void set_fill_with_nonsolid_color(bool nonsolid) { |
| fill_with_nonsolid_color_ = nonsolid; |
| } |
| |
| void add_draw_rect(const gfx::Rect& rect, const SkPaint& paint) { |
| draw_rects_.push_back(std::make_pair(gfx::RectF(rect), paint)); |
| } |
| |
| void add_draw_rectf(const gfx::RectF& rect, const SkPaint& paint) { |
| draw_rects_.push_back(std::make_pair(rect, paint)); |
| } |
| |
| void add_draw_image(sk_sp<const SkImage> image, |
| const gfx::Point& point, |
| const SkPaint& paint) { |
| ImageData data(std::move(image), point, paint); |
| draw_images_.push_back(data); |
| } |
| |
| void add_draw_image_with_transform(sk_sp<const SkImage> image, |
| const gfx::Transform& transform, |
| const SkPaint& paint) { |
| ImageData data(std::move(image), transform, paint); |
| draw_images_.push_back(data); |
| } |
| |
| SkCanvas* last_canvas() const { return last_canvas_; } |
| |
| PaintingControlSetting last_painting_control() const { |
| return last_painting_control_; |
| } |
| |
| void set_reported_memory_usage(size_t reported_memory_usage) { |
| reported_memory_usage_ = reported_memory_usage; |
| } |
| |
| void set_bounds(gfx::Size bounds) { |
| bounds_ = bounds; |
| bounds_set_ = true; |
| } |
| |
| private: |
| typedef std::vector<std::pair<gfx::RectF, SkPaint>> RectPaintVector; |
| typedef std::vector<ImageData> ImageVector; |
| |
| bool display_list_use_cached_picture_; |
| bool fill_with_nonsolid_color_; |
| RectPaintVector draw_rects_; |
| ImageVector draw_images_; |
| SkCanvas* last_canvas_; |
| PaintingControlSetting last_painting_control_; |
| size_t reported_memory_usage_; |
| gfx::Size bounds_; |
| bool bounds_set_; |
| }; |
| |
| } // namespace cc |
| |
| #endif // CC_TEST_FAKE_CONTENT_LAYER_CLIENT_H_ |