| Index: tests/RecordOptsTest.cpp
|
| diff --git a/tests/RecordOptsTest.cpp b/tests/RecordOptsTest.cpp
|
| index 90347eda1f5836a64b7cfa6d21bb9f2fe5e2c3df..33142c8a3d587f50a5419db045431520bf347bd4 100644
|
| --- a/tests/RecordOptsTest.cpp
|
| +++ b/tests/RecordOptsTest.cpp
|
| @@ -108,6 +108,28 @@ DEF_TEST(RecordOpts_TextBounding, r) {
|
| REPORTER_ASSERT(r, bounded->maxY >= SK_Scalar1 + defaults.getTextSize());
|
| }
|
|
|
| +DEF_TEST(RecordOpts_NoopDrawSaveRestore, r) {
|
| + SkRecord record;
|
| + SkRecorder recorder(SkRecorder::kWriteOnly_Mode, &record, W, H);
|
| +
|
| + // The save and restore are pointless if there's only draw commands in the middle.
|
| + recorder.save();
|
| + recorder.drawRect(SkRect::MakeWH(200, 200), SkPaint());
|
| + recorder.drawRect(SkRect::MakeWH(300, 300), SkPaint());
|
| + recorder.drawRect(SkRect::MakeWH(100, 100), SkPaint());
|
| + recorder.restore();
|
| +
|
| + record.replace<SkRecords::NoOp>(2); // NoOps should be allowed.
|
| +
|
| + SkRecordNoopSaveRestores(&record);
|
| +
|
| + assert_type<SkRecords::NoOp>(r, record, 0);
|
| + assert_type<SkRecords::DrawRect>(r, record, 1);
|
| + assert_type<SkRecords::NoOp>(r, record, 2);
|
| + assert_type<SkRecords::DrawRect>(r, record, 3);
|
| + assert_type<SkRecords::NoOp>(r, record, 4);
|
| +}
|
| +
|
| DEF_TEST(RecordOpts_SingleNoopSaveRestore, r) {
|
| SkRecord record;
|
| SkRecorder recorder(SkRecorder::kWriteOnly_Mode, &record, W, H);
|
| @@ -139,19 +161,10 @@ DEF_TEST(RecordOpts_NoopSaveRestores, r) {
|
| recorder.restore();
|
| recorder.restore();
|
|
|
| - // These will be kept (though some future optimization might noop the save and restore).
|
| - recorder.save();
|
| - recorder.drawRect(SkRect::MakeWH(200, 200), SkPaint());
|
| - recorder.restore();
|
| -
|
| SkRecordNoopSaveRestores(&record);
|
| -
|
| for (unsigned index = 0; index < 8; index++) {
|
| assert_type<SkRecords::NoOp>(r, record, index);
|
| }
|
| - assert_type<SkRecords::Save>(r, record, 8);
|
| - assert_type<SkRecords::DrawRect>(r, record, 9);
|
| - assert_type<SkRecords::Restore>(r, record, 10);
|
| }
|
|
|
| static void assert_savelayer_restore(skiatest::Reporter* r,
|
|
|