[Maintenance] Made the SkData object within URLDataManager const

Make the SkData object (fData) within the UrlDataManager and UrlData classes const. This prevents the editing of the underlying data in the cache.

Change-Id: Id8e7b32fa13f039eecf527e5f6f2a9f7c8b8375c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1287516
Commit-Queue: Alexis Cruz-Ayala <alexisdavidc@google.com>
Reviewed-by: Kaylee Lubick <kjlubick@google.com>
diff --git a/tools/UrlDataManager.cpp b/tools/UrlDataManager.cpp
index 2730298..7b82f92 100644
--- a/tools/UrlDataManager.cpp
+++ b/tools/UrlDataManager.cpp
@@ -12,15 +12,15 @@
 
 UrlDataManager::UrlDataManager(SkString rootUrl) : fRootUrl(rootUrl), fDataId(0) {}
 
-SkString UrlDataManager::addData(SkData* data, const char* contentType) {
+SkString UrlDataManager::addData(sk_sp<const SkData> data, const char* contentType) {
     UrlData* urlData = fCache.find(*data);
-    if (fCache.find(*data)) {
+    if (urlData) {
         SkASSERT(data->equals(urlData->fData.get()));
         return urlData->fUrl;
     }
 
     urlData = new UrlData;
-    urlData->fData.reset(SkRef(data));
+    urlData->fData = data;
     urlData->fContentType.set(contentType);
     urlData->fUrl.appendf("%s/%u", fRootUrl.c_str(), fDataId++);
 
diff --git a/tools/UrlDataManager.h b/tools/UrlDataManager.h
index 7ba8217..bad0423 100644
--- a/tools/UrlDataManager.h
+++ b/tools/UrlDataManager.h
@@ -26,12 +26,12 @@
      * Adds a data blob to the cache with a particular content type.  UrlDataManager will hash
      * the blob data to ensure uniqueness
      */
-    SkString addData(SkData*, const char* contentType);
+    SkString addData(sk_sp<const SkData>, const char* contentType);
 
     struct UrlData : public SkRefCnt {
         SkString fUrl;
         SkString fContentType;
-        sk_sp<SkData> fData;
+        sk_sp<const SkData> fData;
     };
 
     /*
diff --git a/tools/debugger/DrawCommand.cpp b/tools/debugger/DrawCommand.cpp
index 03c090b..354ecb0 100644
--- a/tools/debugger/DrawCommand.cpp
+++ b/tools/debugger/DrawCommand.cpp
@@ -599,8 +599,8 @@
     }
 }
 
-static SkString encode_data(SkData*         data,
-                            const char*     contentType,
+static SkString encode_data(sk_sp<const SkData> data,
+                            const char* contentType,
                             UrlDataManager& urlDataManager) {
     return urlDataManager.addData(data, contentType);
 }
@@ -611,7 +611,7 @@
     SkBinaryWriteBuffer buffer({});  // TODO(kjlubick, bungeman) feed SkSerialProcs through API
     flattenable->flatten(buffer);
     sk_sp<SkData> data = buffer.snapshotAsData();
-    SkString url = encode_data(data.get(), "application/octet-stream", urlDataManager);
+    SkString url = encode_data(data, "application/octet-stream", urlDataManager);
     writer.appendCString(DEBUGCANVAS_ATTRIBUTE_NAME, flattenable->getTypeName());
     writer.appendString(DEBUGCANVAS_ATTRIBUTE_DATA, url);
 
@@ -675,7 +675,7 @@
       writer.endObject();
       return false;
     }
-    SkString url = encode_data(encoded.get(), "image/png", urlDataManager);
+    SkString url = encode_data(encoded, "image/png", urlDataManager);
     writer.appendString(DEBUGCANVAS_ATTRIBUTE_DATA, url);
     writer.endObject();
     return true;
@@ -875,7 +875,7 @@
         }
         writer.beginObject(DEBUGCANVAS_ATTRIBUTE_TYPEFACE);
         sk_sp<SkData> data = buffer.detachAsData();
-        SkString url = encode_data(data.get(), "application/octet-stream", urlDataManager);
+        SkString url = encode_data(data, "application/octet-stream", urlDataManager);
         writer.appendString(DEBUGCANVAS_ATTRIBUTE_DATA, url);
         writer.endObject();
     }
diff --git a/tools/skp_parser.cpp b/tools/skp_parser.cpp
index e3fb057..f21e921 100644
--- a/tools/skp_parser.cpp
+++ b/tools/skp_parser.cpp
@@ -69,7 +69,7 @@
     if (argc > 2) {
         if (UrlDataManager::UrlData* data =
             dataManager.getDataFromUrl(SkString(argv[2]))) {
-            SkData* skdata = data->fData.get();
+            const SkData* skdata = data->fData.get();
             SkASSERT(skdata);
             #ifdef SK_BUILD_FOR_WIN
             fflush(stdout);