skia_paint_canvas_unittest.cc 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. // Copyright 2018 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. #include "cc/paint/skia_paint_canvas.h"
  5. #include "cc/paint/paint_recorder.h"
  6. #include "cc/test/test_skcanvas.h"
  7. #include "testing/gtest/include/gtest/gtest.h"
  8. using ::testing::_;
  9. using ::testing::StrictMock;
  10. using ::testing::Return;
  11. namespace cc {
  12. TEST(SkiaPaintCanvasTest, ContextFlushesDirect) {
  13. StrictMock<MockCanvas> mock_canvas;
  14. EXPECT_CALL(mock_canvas, onFlush()).Times(2);
  15. EXPECT_CALL(mock_canvas, OnDrawRectWithColor(_)).Times(11);
  16. SkiaPaintCanvas::ContextFlushes context_flushes;
  17. context_flushes.enable = true;
  18. context_flushes.max_draws_before_flush = 4;
  19. SkiaPaintCanvas paint_canvas(&mock_canvas, nullptr, context_flushes);
  20. SkRect rect = SkRect::MakeWH(10, 10);
  21. PaintFlags flags;
  22. for (int i = 0; i < 11; i++)
  23. paint_canvas.drawRect(rect, flags);
  24. }
  25. TEST(SkiaPaintCanvasTest, ContextFlushesRecording) {
  26. StrictMock<MockCanvas> mock_canvas;
  27. EXPECT_CALL(mock_canvas, onFlush()).Times(2);
  28. EXPECT_CALL(mock_canvas, OnDrawRectWithColor(_)).Times(11);
  29. PaintRecorder recorder;
  30. SkRect rect = SkRect::MakeWH(10, 10);
  31. PaintFlags flags;
  32. recorder.beginRecording(rect);
  33. for (int i = 0; i < 11; i++)
  34. recorder.getRecordingCanvas()->drawRect(rect, flags);
  35. auto record = recorder.finishRecordingAsPicture();
  36. SkiaPaintCanvas::ContextFlushes context_flushes;
  37. context_flushes.enable = true;
  38. context_flushes.max_draws_before_flush = 4;
  39. SkiaPaintCanvas paint_canvas(&mock_canvas, nullptr, context_flushes);
  40. paint_canvas.drawPicture(record);
  41. }
  42. TEST(SkiaPaintCanvasTest, ContextFlushesDisabled) {
  43. StrictMock<MockCanvas> mock_canvas;
  44. EXPECT_CALL(mock_canvas, OnDrawRectWithColor(_)).Times(11);
  45. SkiaPaintCanvas::ContextFlushes context_flushes;
  46. SkiaPaintCanvas paint_canvas(&mock_canvas, nullptr, context_flushes);
  47. SkRect rect = SkRect::MakeWH(10, 10);
  48. PaintFlags flags;
  49. for (int i = 0; i < 11; i++)
  50. paint_canvas.drawRect(rect, flags);
  51. }
  52. } // namespace cc