| Index: tests/CanvasTest.cpp | 
| diff --git a/tests/CanvasTest.cpp b/tests/CanvasTest.cpp | 
| index 970a37074f4124ebdda500fee94a20986bd33343..26f270eaeebb884ea1cf56b7ee485bf8d276c050 100644 | 
| --- a/tests/CanvasTest.cpp | 
| +++ b/tests/CanvasTest.cpp | 
| @@ -52,6 +52,7 @@ | 
| #include "SkMatrix.h" | 
| #include "SkNWayCanvas.h" | 
| #include "SkPaint.h" | 
| +#include "SkPaintFilterCanvas.h" | 
| #include "SkPath.h" | 
| #include "SkPicture.h" | 
| #include "SkPictureRecord.h" | 
| @@ -774,3 +775,38 @@ DEF_TEST(Canvas_ClipEmptyPath, reporter) { | 
| canvas.clipPath(path);  // should not assert here | 
| canvas.restore(); | 
| } | 
| + | 
| +namespace { | 
| + | 
| +class MockFilterCanvas : public SkPaintFilterCanvas { | 
| +public: | 
| +    MockFilterCanvas(SkCanvas* canvas) : INHERITED(canvas) { } | 
| + | 
| +protected: | 
| +    void onFilterPaint(SkPaint *paint, Type type) const override { } | 
| + | 
| +private: | 
| +    typedef SkPaintFilterCanvas INHERITED; | 
| +}; | 
| + | 
| +} // anonymous namespace | 
| + | 
| +// SkPaintFilterCanvas should inherit the initial target canvas state. | 
| +DEF_TEST(PaintFilterCanvas_ConsistentState, reporter) { | 
| +    SkCanvas canvas(100, 100); | 
| +    canvas.clipRect(SkRect::MakeXYWH(12.7f, 12.7f, 75, 75)); | 
| +    canvas.scale(0.5f, 0.75f); | 
| + | 
| +    SkRect clip1, clip2; | 
| + | 
| +    MockFilterCanvas filterCanvas(&canvas); | 
| +    REPORTER_ASSERT(reporter, canvas.getTotalMatrix() == filterCanvas.getTotalMatrix()); | 
| +    REPORTER_ASSERT(reporter, canvas.getClipBounds(&clip1) == filterCanvas.getClipBounds(&clip2)); | 
| +    REPORTER_ASSERT(reporter, clip1 == clip2); | 
| + | 
| +    filterCanvas.clipRect(SkRect::MakeXYWH(30.5f, 30.7f, 100, 100)); | 
| +    filterCanvas.scale(0.75f, 0.5f); | 
| +    REPORTER_ASSERT(reporter, canvas.getTotalMatrix() == filterCanvas.getTotalMatrix()); | 
| +    REPORTER_ASSERT(reporter, canvas.getClipBounds(&clip1) == filterCanvas.getClipBounds(&clip2)); | 
| +    REPORTER_ASSERT(reporter, clip1 == clip2); | 
| +} | 
|  |