diff options
author | piotaixr <piotaixr@chromium.org> | 2014-10-16 11:58:39 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-10-16 11:58:39 -0700 |
commit | 65151754b9fdb6a968d7307764c20655d1b680a0 (patch) | |
tree | 497bb3e2990cd595755e896d1eb7b8ca164b508b /tests/RecorderTest.cpp | |
parent | 687732fe046c9cfec940f2d7f661cd97651d10a8 (diff) |
Override SkCanvas::drawImage() in SkRecorder.
BUG=skia:2947
Review URL: https://codereview.chromium.org/610003002
Diffstat (limited to 'tests/RecorderTest.cpp')
-rw-r--r-- | tests/RecorderTest.cpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/tests/RecorderTest.cpp b/tests/RecorderTest.cpp index aced54f7a9..d81bf059ef 100644 --- a/tests/RecorderTest.cpp +++ b/tests/RecorderTest.cpp @@ -12,6 +12,7 @@ #include "SkRecorder.h" #include "SkRecords.h" #include "SkShader.h" +#include "SkSurface.h" #define COUNT(T) + 1 static const int kRecordTypes = SK_RECORD_TYPES(COUNT); @@ -150,3 +151,41 @@ DEF_TEST(Recorder_IsDrawingToLayer, r) { REPORTER_ASSERT(r, !recorder.isDrawingToLayer()); } +DEF_TEST(Recorder_drawImage_takeReference, reporter) { + + SkAutoTUnref<SkImage> image; + { + SkAutoTUnref<SkSurface> surface(SkSurface::NewRasterPMColor(100, 100)); + surface->getCanvas()->clear(SK_ColorGREEN); + image.reset(surface->newImageSnapshot()); + } + { + SkRecord record; + SkRecorder recorder(&record, 100, 100); + + // DrawImage is supposed to take a reference + recorder.drawImage(image.get(), 0, 0); + REPORTER_ASSERT(reporter, !image->unique()); + + Tally tally; + tally.apply(record); + + REPORTER_ASSERT(reporter, 1 == tally.count<SkRecords::DrawImage>()); + } + REPORTER_ASSERT(reporter, image->unique()); + + { + SkRecord record; + SkRecorder recorder(&record, 100, 100); + + // DrawImageRect is supposed to take a reference + recorder.drawImageRect(image.get(), 0, SkRect::MakeWH(100, 100)); + REPORTER_ASSERT(reporter, !image->unique()); + + Tally tally; + tally.apply(record); + + REPORTER_ASSERT(reporter, 1 == tally.count<SkRecords::DrawImageRect>()); + } + REPORTER_ASSERT(reporter, image->unique()); +} |