integrated SkDebugCanvas JSON support with UrlDataManager
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1686143004

Review URL: https://codereview.chromium.org/1686143004
diff --git a/tools/debugger/SkDrawCommand.h b/tools/debugger/SkDrawCommand.h
index c0ab3a0..ff1e1c5 100644
--- a/tools/debugger/SkDrawCommand.h
+++ b/tools/debugger/SkDrawCommand.h
@@ -1,4 +1,3 @@
-
 /*
  * Copyright 2012 Google Inc.
  *
@@ -16,6 +15,7 @@
 #include "SkString.h"
 #include "SkTDArray.h"
 #include "SkJSONCPP.h"
+#include "UrlDataManager.h"
 
 class SK_API SkDrawCommand {
 public:
@@ -100,13 +100,13 @@
 
     virtual bool render(SkCanvas* canvas) const { return false; }
 
-    virtual Json::Value toJSON() const;
+    virtual Json::Value toJSON(UrlDataManager& urlDataManager) const;
 
     /* Converts a JSON representation of a command into a newly-allocated SkDrawCommand object. It
      * is the caller's responsibility to delete this object. This method may return null if an error
      * occurs.
      */
-    static SkDrawCommand* fromJSON(Json::Value& command);
+    static SkDrawCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager);
 
     static const char* GetCommandString(OpType type);
 
@@ -123,7 +123,7 @@
     SkRestoreCommand();
     void execute(SkCanvas* canvas) const override;
     Action action() const override { return kPopLayer_Action; }
-    static SkRestoreCommand* fromJSON(Json::Value& command);
+    static SkRestoreCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager);
 
 private:
     typedef SkDrawCommand INHERITED;
@@ -133,8 +133,8 @@
 public:
     SkClearCommand(SkColor color);
     void execute(SkCanvas* canvas) const override;
-    Json::Value toJSON() const override;
-    static SkClearCommand* fromJSON(Json::Value& command);
+    Json::Value toJSON(UrlDataManager& urlDataManager) const override;
+    static SkClearCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager);
 
 private:
     SkColor fColor;
@@ -147,8 +147,8 @@
     SkClipPathCommand(const SkPath& path, SkRegion::Op op, bool doAA);
     void execute(SkCanvas* canvas) const override;
     bool render(SkCanvas* canvas) const override;
-    Json::Value toJSON() const override;
-    static SkClipPathCommand* fromJSON(Json::Value& command);
+    Json::Value toJSON(UrlDataManager& urlDataManager) const override;
+    static SkClipPathCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager);
 
 private:
     SkPath       fPath;
@@ -162,8 +162,8 @@
 public:
     SkClipRegionCommand(const SkRegion& region, SkRegion::Op op);
     void execute(SkCanvas* canvas) const override;
-    Json::Value toJSON() const override;
-    static SkClipRegionCommand* fromJSON(Json::Value& command);
+    Json::Value toJSON(UrlDataManager& urlDataManager) const override;
+    static SkClipRegionCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager);
 
 private:
     SkRegion     fRegion;
@@ -176,8 +176,8 @@
 public:
     SkClipRectCommand(const SkRect& rect, SkRegion::Op op, bool doAA);
     void execute(SkCanvas* canvas) const override;
-    Json::Value toJSON() const override;
-    static SkClipRectCommand* fromJSON(Json::Value& command);
+    Json::Value toJSON(UrlDataManager& urlDataManager) const override;
+    static SkClipRectCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager);
 
     const SkRect& rect() const { return fRect; }
     SkRegion::Op op() const { return fOp; }
@@ -196,8 +196,8 @@
     SkClipRRectCommand(const SkRRect& rrect, SkRegion::Op op, bool doAA);
     void execute(SkCanvas* canvas) const override;
     bool render(SkCanvas* canvas) const override;
-    Json::Value toJSON() const override;
-    static SkClipRRectCommand* fromJSON(Json::Value& command);
+    Json::Value toJSON(UrlDataManager& urlDataManager) const override;
+    static SkClipRRectCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager);
 
     const SkRRect& rrect() const { return fRRect; }
     SkRegion::Op op() const { return fOp; }
@@ -215,8 +215,8 @@
 public:
     SkConcatCommand(const SkMatrix& matrix);
     void execute(SkCanvas* canvas) const override;
-    Json::Value toJSON() const override;
-    static SkConcatCommand* fromJSON(Json::Value& command);
+    Json::Value toJSON(UrlDataManager& urlDataManager) const override;
+    static SkConcatCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager);
 
 private:
     SkMatrix fMatrix;
@@ -230,8 +230,8 @@
                         const SkPaint* paint);
     void execute(SkCanvas* canvas) const override;
     bool render(SkCanvas* canvas) const override;
-    Json::Value toJSON() const override;
-    static SkDrawBitmapCommand* fromJSON(Json::Value& command);
+    Json::Value toJSON(UrlDataManager& urlDataManager) const override;
+    static SkDrawBitmapCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager);
 
 private:
     SkBitmap fBitmap;
@@ -249,8 +249,8 @@
                             const SkRect& dst, const SkPaint* paint);
     void execute(SkCanvas* canvas) const override;
     bool render(SkCanvas* canvas) const override;
-    Json::Value toJSON() const override;
-    static SkDrawBitmapNineCommand* fromJSON(Json::Value& command);
+    Json::Value toJSON(UrlDataManager& urlDataManager) const override;
+    static SkDrawBitmapNineCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager);
 
 private:
     SkBitmap fBitmap;
@@ -269,8 +269,8 @@
                             SkCanvas::SrcRectConstraint);
     void execute(SkCanvas* canvas) const override;
     bool render(SkCanvas* canvas) const override;
-    Json::Value toJSON() const override;
-    static SkDrawBitmapRectCommand* fromJSON(Json::Value& command);
+    Json::Value toJSON(UrlDataManager& urlDataManager) const override;
+    static SkDrawBitmapRectCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager);
 
     const SkBitmap& bitmap() const { return fBitmap; }
 
@@ -308,8 +308,8 @@
     SkDrawImageCommand(const SkImage* image, SkScalar left, SkScalar top, const SkPaint* paint);
     void execute(SkCanvas* canvas) const override;
     bool render(SkCanvas* canvas) const override;
-    Json::Value toJSON() const override;
-    static SkDrawImageCommand* fromJSON(Json::Value& command);
+    Json::Value toJSON(UrlDataManager& urlDataManager) const override;
+    static SkDrawImageCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager);
 
 private:
     SkAutoTUnref<const SkImage> fImage;
@@ -326,8 +326,8 @@
                            const SkPaint* paint, SkCanvas::SrcRectConstraint constraint);
     void execute(SkCanvas* canvas) const override;
     bool render(SkCanvas* canvas) const override;
-    Json::Value toJSON() const override;
-    static SkDrawImageRectCommand* fromJSON(Json::Value& command);
+    Json::Value toJSON(UrlDataManager& urlDataManager) const override;
+    static SkDrawImageRectCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager);
 
 private:
     SkAutoTUnref<const SkImage> fImage;
@@ -344,8 +344,8 @@
     SkDrawOvalCommand(const SkRect& oval, const SkPaint& paint);
     void execute(SkCanvas* canvas) const override;
     bool render(SkCanvas* canvas) const override;
-    Json::Value toJSON() const override;
-    static SkDrawOvalCommand* fromJSON(Json::Value& command);
+    Json::Value toJSON(UrlDataManager& urlDataManager) const override;
+    static SkDrawOvalCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager);
 
 private:
     SkRect  fOval;
@@ -359,8 +359,8 @@
     SkDrawPaintCommand(const SkPaint& paint);
     void execute(SkCanvas* canvas) const override;
     bool render(SkCanvas* canvas) const override;
-    Json::Value toJSON() const override;
-    static SkDrawPaintCommand* fromJSON(Json::Value& command);
+    Json::Value toJSON(UrlDataManager& urlDataManager) const override;
+    static SkDrawPaintCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager);
 
 private:
     SkPaint fPaint;
@@ -373,8 +373,8 @@
     SkDrawPathCommand(const SkPath& path, const SkPaint& paint);
     void execute(SkCanvas* canvas) const override;
     bool render(SkCanvas* canvas) const override;
-    Json::Value toJSON() const override;
-    static SkDrawPathCommand* fromJSON(Json::Value& command);
+    Json::Value toJSON(UrlDataManager& urlDataManager) const override;
+    static SkDrawPathCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager);
 
 private:
     SkPath   fPath;
@@ -419,8 +419,8 @@
     virtual ~SkDrawPointsCommand() { delete [] fPts; }
     void execute(SkCanvas* canvas) const override;
     bool render(SkCanvas* canvas) const override;
-    Json::Value toJSON() const override;
-    static SkDrawPointsCommand* fromJSON(Json::Value& command);
+    Json::Value toJSON(UrlDataManager& urlDataManager) const override;
+    static SkDrawPointsCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager);
 
 private:
     SkCanvas::PointMode fMode;
@@ -437,8 +437,8 @@
                       const SkPaint& paint);
     virtual ~SkDrawTextCommand() { delete [] fText; }
     void execute(SkCanvas* canvas) const override;
-    Json::Value toJSON() const override;
-    static SkDrawTextCommand* fromJSON(Json::Value& command);
+    Json::Value toJSON(UrlDataManager& urlDataManager) const override;
+    static SkDrawTextCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager);
 
 private:
     char*    fText;
@@ -456,8 +456,8 @@
                          const SkPaint& paint);
     virtual ~SkDrawPosTextCommand() { delete [] fPos; delete [] fText; }
     void execute(SkCanvas* canvas) const override;
-    Json::Value toJSON() const override;
-    static SkDrawPosTextCommand* fromJSON(Json::Value& command);
+    Json::Value toJSON(UrlDataManager& urlDataManager) const override;
+    static SkDrawPosTextCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager);
 
 private:
     char*    fText;
@@ -474,8 +474,8 @@
                             const SkMatrix* matrix, const SkPaint& paint);
     virtual ~SkDrawTextOnPathCommand() { delete [] fText; }
     void execute(SkCanvas* canvas) const override;
-    Json::Value toJSON() const override;
-    static SkDrawTextOnPathCommand* fromJSON(Json::Value& command);
+    Json::Value toJSON(UrlDataManager& urlDataManager) const override;
+    static SkDrawTextOnPathCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager);
 
 private:
     char*    fText;
@@ -510,8 +510,8 @@
 
     void execute(SkCanvas* canvas) const override;
     bool render(SkCanvas* canvas) const override;
-    Json::Value toJSON() const override;
-    static SkDrawTextBlobCommand* fromJSON(Json::Value& command);
+    Json::Value toJSON(UrlDataManager& urlDataManager) const override;
+    static SkDrawTextBlobCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager);
 
 private:
     SkAutoTUnref<const SkTextBlob> fBlob;
@@ -528,8 +528,8 @@
                        const SkPoint texCoords[4], SkXfermode* xmode,
                        const SkPaint& paint);
     void execute(SkCanvas* canvas) const override;
-    Json::Value toJSON() const override;
-    static SkDrawPatchCommand* fromJSON(Json::Value& command);
+    Json::Value toJSON(UrlDataManager& urlDataManager) const override;
+    static SkDrawPatchCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager);
 
 private:
     SkPoint fCubics[12];
@@ -548,8 +548,8 @@
 public:
     SkDrawRectCommand(const SkRect& rect, const SkPaint& paint);
     void execute(SkCanvas* canvas) const override;
-    Json::Value toJSON() const override;
-    static SkDrawRectCommand* fromJSON(Json::Value& command);
+    Json::Value toJSON(UrlDataManager& urlDataManager) const override;
+    static SkDrawRectCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager);
 
     const SkRect& rect() const   { return fRect; }
     const SkPaint& paint() const { return fPaint; }
@@ -565,8 +565,8 @@
     SkDrawRRectCommand(const SkRRect& rrect, const SkPaint& paint);
     void execute(SkCanvas* canvas) const override;
     bool render(SkCanvas* canvas) const override;
-    Json::Value toJSON() const override;
-    static SkDrawRRectCommand* fromJSON(Json::Value& command);
+    Json::Value toJSON(UrlDataManager& urlDataManager) const override;
+    static SkDrawRRectCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager);
 
 private:
     SkRRect fRRect;
@@ -581,8 +581,8 @@
                         const SkPaint& paint);
     void execute(SkCanvas* canvas) const override;
     bool render(SkCanvas* canvas) const override;
-    Json::Value toJSON() const override;
-    static SkDrawDRRectCommand* fromJSON(Json::Value& command);
+    Json::Value toJSON(UrlDataManager& urlDataManager) const override;
+    static SkDrawDRRectCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager);
 
 private:
     SkRRect fOuter;
@@ -621,7 +621,7 @@
     SkSaveCommand();
     void execute(SkCanvas* canvas) const override;
     Action action() const override { return kPushLayer_Action; }
-    static SkSaveCommand* fromJSON(Json::Value& command);
+    static SkSaveCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager);
 
 private:
     typedef SkDrawCommand INHERITED;
@@ -632,8 +632,8 @@
     SkSaveLayerCommand(const SkCanvas::SaveLayerRec&);
     virtual ~SkSaveLayerCommand();
     void execute(SkCanvas* canvas) const override;
-    Json::Value toJSON() const override;
-    static SkSaveLayerCommand* fromJSON(Json::Value& command);
+    Json::Value toJSON(UrlDataManager& urlDataManager) const override;
+    static SkSaveLayerCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager);
     void vizExecute(SkCanvas* canvas) const override;
     Action action() const override{ return kPushLayer_Action; }
     void setActive(bool active) override { fActive = active; }
@@ -658,8 +658,8 @@
     SkSetMatrixCommand(const SkMatrix& matrix);
     void setUserMatrix(const SkMatrix&) override;
     void execute(SkCanvas* canvas) const override;
-    Json::Value toJSON() const override;
-    static SkSetMatrixCommand* fromJSON(Json::Value& command);
+    Json::Value toJSON(UrlDataManager& urlDataManager) const override;
+    static SkSetMatrixCommand* fromJSON(Json::Value& command, UrlDataManager& urlDataManager);
 
 private:
     SkMatrix fUserMatrix;