diff options
author | reed <reed@google.com> | 2016-07-06 09:29:16 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-07-06 09:29:17 -0700 |
commit | 41c27e15ec2740850700f1b82038ce0f7a632481 (patch) | |
tree | 5830ed6b2047502cb68cf0e0a805a4d670f74c64 /tests/PictureTest.cpp | |
parent | 7ec92413307c9da43c013d1e4e15716a44059810 (diff) |
Experiment: add flag for finish-recording to return null
BUG=skia:5495
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2106843004
Review-Url: https://codereview.chromium.org/2106843004
Diffstat (limited to 'tests/PictureTest.cpp')
-rw-r--r-- | tests/PictureTest.cpp | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/tests/PictureTest.cpp b/tests/PictureTest.cpp index f109482311..eb0c6a8f0e 100644 --- a/tests/PictureTest.cpp +++ b/tests/PictureTest.cpp @@ -1447,3 +1447,63 @@ DEF_TEST(PictureGpuAnalyzer, r) { } #endif // SK_SUPPORT_GPU + +/////////////////////////////////////////////////////////////////////////////////////////////////// + +static void empty_ops(SkCanvas* canvas) { +} +static void clip_ops(SkCanvas* canvas) { + canvas->save(); + canvas->clipRect(SkRect::MakeWH(20, 20)); + canvas->restore(); +} +static void matrix_ops(SkCanvas* canvas) { + canvas->save(); + canvas->scale(2, 3); + canvas->restore(); +} +static void matrixclip_ops(SkCanvas* canvas) { + canvas->save(); + canvas->scale(2, 3); + canvas->clipRect(SkRect::MakeWH(20, 20)); + canvas->restore(); +} +typedef void (*CanvasProc)(SkCanvas*); + +// Test the kReturnNullForEmpty_FinishFlag option when recording +// +DEF_TEST(Picture_RecordEmpty, r) { + const SkRect cull = SkRect::MakeWH(100, 100); + + CanvasProc procs[] { empty_ops, clip_ops, matrix_ops, matrixclip_ops }; + + for (auto proc : procs) { + { + SkPictureRecorder rec; + proc(rec.beginRecording(cull)); + sk_sp<SkPicture> pic = rec.finishRecordingAsPicture(0); + REPORTER_ASSERT(r, pic.get()); + REPORTER_ASSERT(r, pic->approximateOpCount() == 0); + } + { + SkPictureRecorder rec; + proc(rec.beginRecording(cull)); + sk_sp<SkPicture> pic = rec.finishRecordingAsPicture( + SkPictureRecorder::kReturnNullForEmpty_FinishFlag); + REPORTER_ASSERT(r, !pic.get()); + } + { + SkPictureRecorder rec; + proc(rec.beginRecording(cull)); + sk_sp<SkDrawable> dr = rec.finishRecordingAsDrawable(0); + REPORTER_ASSERT(r, dr.get()); + } + { + SkPictureRecorder rec; + proc(rec.beginRecording(cull)); + sk_sp<SkDrawable> dr = rec.finishRecordingAsDrawable( + SkPictureRecorder::kReturnNullForEmpty_FinishFlag); + REPORTER_ASSERT(r, !dr.get()); + } + } +} |