Revert "remove SkClipVisitor"

This reverts commit 91b961d33d1d3e78c212be8738c1c7c468c358ca.

Reason for revert: need to update caller in android

Original change's description:
> remove SkClipVisitor
> 
> With new device clipping, this is unsupported on SkCanvas
> 
> BUG=skia:
> 
> Change-Id: I39443f213be1005b8b9208d604e4bfb31cbda424
> Reviewed-on: https://skia-review.googlesource.com/9349
> Commit-Queue: Mike Reed <reed@google.com>
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Reviewed-by: Robert Phillips <robertphillips@google.com>
> 

TBR=bsalomon@google.com,robertphillips@google.com,reed@google.com,reviews@skia.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Change-Id: I22df0c66ec564ca32355179d2ee5ea14bff7b1d5
Reviewed-on: https://skia-review.googlesource.com/9456
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
diff --git a/tools/debugger/SkDebugCanvas.cpp b/tools/debugger/SkDebugCanvas.cpp
index ace39a4..522f4ed 100644
--- a/tools/debugger/SkDebugCanvas.cpp
+++ b/tools/debugger/SkDebugCanvas.cpp
@@ -149,6 +149,39 @@
     return layer;
 }
 
+class SkDebugClipVisitor : public SkCanvas::ClipVisitor {
+public:
+    SkDebugClipVisitor(SkCanvas* canvas) : fCanvas(canvas) {}
+
+    void clipRect(const SkRect& r, SkClipOp, bool doAA) override {
+        SkPaint p;
+        p.setColor(SK_ColorRED);
+        p.setStyle(SkPaint::kStroke_Style);
+        p.setAntiAlias(doAA);
+        fCanvas->drawRect(r, p);
+    }
+    void clipRRect(const SkRRect& rr, SkClipOp, bool doAA) override {
+        SkPaint p;
+        p.setColor(SK_ColorGREEN);
+        p.setStyle(SkPaint::kStroke_Style);
+        p.setAntiAlias(doAA);
+        fCanvas->drawRRect(rr, p);
+    }
+    void clipPath(const SkPath& path, SkClipOp, bool doAA) override {
+        SkPaint p;
+        p.setColor(SK_ColorBLUE);
+        p.setStyle(SkPaint::kStroke_Style);
+        p.setAntiAlias(doAA);
+        fCanvas->drawPath(path, p);
+    }
+
+protected:
+    SkCanvas* fCanvas;
+
+private:
+    typedef SkCanvas::ClipVisitor INHERITED;
+};
+
 // set up the saveLayer commands so that the active ones
 // return true in their 'active' method
 void SkDebugCanvas::markActiveCommands(int index) {
@@ -265,6 +298,11 @@
             r.outset(SK_Scalar1, SK_Scalar1);
             filterCanvas.clipRect(r, kReplace_SkClipOp);
         }
+        // visualize existing clips
+        SkDebugClipVisitor visitor(&filterCanvas);
+
+        filterCanvas.replayClips(&visitor);
+
         filterCanvas.restore();
     }
     if (pathOpsMode) {