| Index: tests/PathTest.cpp
|
| diff --git a/tests/PathTest.cpp b/tests/PathTest.cpp
|
| index 313d84a142bc9c84a029c8968df0ef64d693b408..65b09e782d972448511ed5b979ba828ddf3d358f 100644
|
| --- a/tests/PathTest.cpp
|
| +++ b/tests/PathTest.cpp
|
| @@ -3678,6 +3678,21 @@ static void test_dump(skiatest::Reporter* reporter) {
|
| "path.lineTo(3, 4);\n");
|
| }
|
|
|
| +namespace {
|
| +
|
| +class ChangeListener : public SkPathRef::GenIDChangeListener {
|
| +public:
|
| + ChangeListener(bool *changed) : fChanged(changed) { *fChanged = false; }
|
| + virtual ~ChangeListener() {}
|
| + void onChange() override {
|
| + *fChanged = true;
|
| + }
|
| +private:
|
| + bool* fChanged;
|
| +};
|
| +
|
| +}
|
| +
|
| class PathTest_Private {
|
| public:
|
| static void TestPathTo(skiatest::Reporter* reporter) {
|
| @@ -3697,6 +3712,49 @@ public:
|
| SkRect reverseExpected = {-4, -4, 8, 8};
|
| REPORTER_ASSERT(reporter, p.getBounds() == reverseExpected);
|
| }
|
| +
|
| + static void TestPathrefListeners(skiatest::Reporter* reporter) {
|
| + SkPath p;
|
| +
|
| + bool changed = false;
|
| + p.moveTo(0, 0);
|
| +
|
| + // Check that listener is notified on moveTo().
|
| + p.pathRef()->addGenIDChangeListener(SkNEW(ChangeListener(&changed)));
|
| + REPORTER_ASSERT(reporter, !changed);
|
| + p.moveTo(10, 0);
|
| + REPORTER_ASSERT(reporter, changed);
|
| +
|
| + // Check that listener is notified on lineTo().
|
| + p.pathRef()->addGenIDChangeListener(SkNEW(ChangeListener(&changed)));
|
| + REPORTER_ASSERT(reporter, !changed);
|
| + p.lineTo(20, 0);
|
| + REPORTER_ASSERT(reporter, changed);
|
| +
|
| + // Check that listener is notified on reset().
|
| + p.pathRef()->addGenIDChangeListener(SkNEW(ChangeListener(&changed)));
|
| + REPORTER_ASSERT(reporter, !changed);
|
| + p.reset();
|
| + REPORTER_ASSERT(reporter, changed);
|
| +
|
| + p.moveTo(0, 0);
|
| +
|
| + // Check that listener is notified on rewind().
|
| + p.pathRef()->addGenIDChangeListener(SkNEW(ChangeListener(&changed)));
|
| + REPORTER_ASSERT(reporter, !changed);
|
| + p.rewind();
|
| + REPORTER_ASSERT(reporter, changed);
|
| +
|
| + // Check that listener is notified when pathref is deleted.
|
| + {
|
| + SkPath q;
|
| + q.moveTo(10, 10);
|
| + q.pathRef()->addGenIDChangeListener(SkNEW(ChangeListener(&changed)));
|
| + REPORTER_ASSERT(reporter, !changed);
|
| + }
|
| + // q went out of scope.
|
| + REPORTER_ASSERT(reporter, changed);
|
| + }
|
| };
|
|
|
| DEF_TEST(Paths, reporter) {
|
| @@ -3843,6 +3901,7 @@ DEF_TEST(Paths, reporter) {
|
| test_contains(reporter);
|
| PathTest_Private::TestPathTo(reporter);
|
| PathRefTest_Private::TestPathRef(reporter);
|
| + PathTest_Private::TestPathrefListeners(reporter);
|
| test_dump(reporter);
|
| test_path_crbug389050(reporter);
|
| test_path_crbugskia2820(reporter);
|
|
|