// Copyright 2013 The Flutter 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 FLOW_TESTING_MOCK_RASTER_CACHE_H_ #define FLOW_TESTING_MOCK_RASTER_CACHE_H_ #include "flutter/flow/raster_cache.h" #include "third_party/skia/include/core/SkImage.h" #include "third_party/skia/include/core/SkPicture.h" namespace flutter { namespace testing { /** * @brief A RasterCacheResult implementation that represents a cached Layer or * SkPicture without the overhead of storage. * * This implementation is used by MockRasterCache only for testing proper usage * of the RasterCache in layer unit tests. */ class MockRasterCacheResult : public RasterCacheResult { public: MockRasterCacheResult(SkIRect device_rect); void draw(SkCanvas& canvas, const SkPaint* paint = nullptr) const override{}; SkISize image_dimensions() const override { return device_rect_.size(); }; int64_t image_bytes() const override { return image_dimensions().area() * SkColorTypeBytesPerPixel(kBGRA_8888_SkColorType); } private: SkIRect device_rect_; }; /** * @brief A RasterCache implementation that simulates the act of rendering a * Layer or SkPicture without the overhead of rasterization or pixel storage. * This implementation is used only for testing proper usage of the RasterCache * in layer unit tests. */ class MockRasterCache : public RasterCache { public: std::unique_ptr RasterizePicture( SkPicture* picture, GrDirectContext* context, const SkMatrix& ctm, SkColorSpace* dst_color_space, bool checkerboard) const override; std::unique_ptr RasterizeLayer( PrerollContext* context, Layer* layer, const SkMatrix& ctm, bool checkerboard) const override; }; } // namespace testing } // namespace flutter #endif // FLOW_TESTING_MOCK_RASTER_CACHE_H_