//gm/gm.h: Fold GM::onShortName() into GM::getName() and make it const.

This change is motivated by https://skia-review.googlesource.com/c/skia/+/741817, where I attempt to generate GM-related Gold keys from a const method in the GM class that calls GM::getName().

The original GM::getName() method returns the memoized result of GM::onShortName(). This CL eliminates the memoization as a prerequisite to marking GM::getName() as const. Given that most GMs today do simple SkString manipulations in their onShortName(), I believe this won't have any noticeable impact in performance or CQ time.

Most of the changes in this CL are the result of a simple multifile search/replace and clang-format.

Suggested review order:
- //gm/gm.h
- //gm/gm.cpp
- //gm/BazelGMRunner.cpp
- //bench/GMBench.cpp
- //modules/canvaskit/gm_bindings.cpp
- //tools/viewer/GMSlide.cpp
- //tools/viewer/Viewer.cpp
- Everything else.

Bug: b/40045301
Change-Id: Ifef0dcf6ccd4aac871e1aa6fe8342d28efcd146e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/742738
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Leandro Lovisolo <lovisolo@google.com>
diff --git a/bench/GMBench.cpp b/bench/GMBench.cpp
index 9f1228c..b385ef5 100644
--- a/bench/GMBench.cpp
+++ b/bench/GMBench.cpp
@@ -13,7 +13,7 @@
 GMBench::GMBench(std::unique_ptr<skiagm::GM> gm) : fGM(std::move(gm)) {
     fGM->setMode(skiagm::GM::kBench_Mode);
 
-    fName.printf("GM_%s", fGM->getName());
+    fName.printf("GM_%s", fGM->getName().c_str());
 }
 
 const char* GMBench::onGetName() {
diff --git a/gm/BazelGMRunner.cpp b/gm/BazelGMRunner.cpp
index 1f3175a..ec79622 100644
--- a/gm/BazelGMRunner.cpp
+++ b/gm/BazelGMRunner.cpp
@@ -146,7 +146,7 @@
 // Runs a GM under the given surface config, and saves its output PNG file (and accompanying JSON
 // file with metadata) to the given output directory.
 void run_gm(std::unique_ptr<skiagm::GM> gm, std::string config, std::string outputDir) {
-    SkDebugf("[%s] GM: %s\n", now().c_str(), gm->getName());
+    SkDebugf("[%s] GM: %s\n", now().c_str(), gm->getName().c_str());
 
     // Create surface and canvas.
     std::unique_ptr<SurfaceManager> surfaceManager =
@@ -198,11 +198,11 @@
 
     // Save PNG and JSON file with MD5 hash to disk if the GM was successful.
     if (result == skiagm::DrawResult::kOk) {
-        std::string name = std::string(gm->getName());
+        std::string name = std::string(gm->getName().c_str());
         SkString pngPath = SkOSPath::Join(outputDir.c_str(), (name + ".png").c_str());
         SkString jsonPath = SkOSPath::Join(outputDir.c_str(), (name + ".json").c_str());
 
-        std::string pngAndJSONResult = write_png_and_json_files(gm->getName(),
+        std::string pngAndJSONResult = write_png_and_json_files(gm->getName().c_str(),
                                                                 gm->getGoldKeys(),
                                                                 config,
                                                                 surfaceManager->getGoldKeys(),
diff --git a/gm/aaclip.cpp b/gm/aaclip.cpp
index f55ae91..1e3cf8b 100644
--- a/gm/aaclip.cpp
+++ b/gm/aaclip.cpp
@@ -177,9 +177,7 @@
     }
 
 protected:
-    SkString onShortName() override {
-        return SkString("clipcubic");
-    }
+    SkString getName() const override { return SkString("clipcubic"); }
 
     SkISize onISize() override {
         return SkISize::Make(400, 410);
diff --git a/gm/aarecteffect.cpp b/gm/aarecteffect.cpp
index c0f3b1f..437c1f8 100644
--- a/gm/aarecteffect.cpp
+++ b/gm/aarecteffect.cpp
@@ -40,7 +40,7 @@
     AARectEffect() { this->setBGColor(0xFFFFFFFF); }
 
 protected:
-    SkString onShortName() override { return SkString("aa_rect_effect"); }
+    SkString getName() const override { return SkString("aa_rect_effect"); }
 
     SkISize onISize() override { return SkISize::Make(210, 250); }
 
diff --git a/gm/aaxfermodes.cpp b/gm/aaxfermodes.cpp
index e93735c..cf2d7ec 100644
--- a/gm/aaxfermodes.cpp
+++ b/gm/aaxfermodes.cpp
@@ -66,9 +66,7 @@
         kShape_Pass
     };
 
-    SkString onShortName() override {
-        return SkString("aaxfermodes");
-    }
+    SkString getName() const override { return SkString("aaxfermodes"); }
 
     SkISize onISize() override {
         return SkISize::Make(2 * kMargin + 2 * kXfermodeTypeSpacing -
diff --git a/gm/addarc.cpp b/gm/addarc.cpp
index 5ec5600..0336a9a 100644
--- a/gm/addarc.cpp
+++ b/gm/addarc.cpp
@@ -27,7 +27,7 @@
     AddArcGM() : fRotate(0) {}
 
 protected:
-    SkString onShortName() override { return SkString("addarc"); }
+    SkString getName() const override { return SkString("addarc"); }
 
     SkISize onISize() override { return SkISize::Make(1040, 1040); }
 
@@ -117,7 +117,7 @@
     StrokeCircleGM() : fRotate(0) {}
 
 protected:
-    SkString onShortName() override { return SkString("strokecircle"); }
+    SkString getName() const override { return SkString("strokecircle"); }
 
     SkISize onISize() override { return SkISize::Make(520, 520); }
 
@@ -167,7 +167,7 @@
     FillCircleGM() : fRotate(0) {}
 
 protected:
-    SkString onShortName() override { return SkString("fillcircle"); }
+    SkString getName() const override { return SkString("fillcircle"); }
 
     SkISize onISize() override { return SkISize::Make(520, 520); }
 
diff --git a/gm/alphagradients.cpp b/gm/alphagradients.cpp
index 5122637..eceeac2 100644
--- a/gm/alphagradients.cpp
+++ b/gm/alphagradients.cpp
@@ -23,9 +23,7 @@
     AlphaGradientsGM() {}
 
 protected:
-    SkString onShortName() override {
-        return SkString("alphagradients");
-    }
+    SkString getName() const override { return SkString("alphagradients"); }
 
     SkISize onISize() override {
         return SkISize::Make(640, 480);
diff --git a/gm/analytic_gradients.cpp b/gm/analytic_gradients.cpp
index e37012c..60cdfe8 100644
--- a/gm/analytic_gradients.cpp
+++ b/gm/analytic_gradients.cpp
@@ -137,9 +137,7 @@
     }
 
 protected:
-    SkString onShortName() override {
-        return SkString("analytic_gradients");
-    }
+    SkString getName() const override { return SkString("analytic_gradients"); }
 
     SkISize onISize() override {
         return SkISize::Make(1024, 512);
diff --git a/gm/androidblendmodes.cpp b/gm/androidblendmodes.cpp
index b6fdd0f..9d6c782 100644
--- a/gm/androidblendmodes.cpp
+++ b/gm/androidblendmodes.cpp
@@ -32,9 +32,7 @@
     }
 
 protected:
-    SkString onShortName() override {
-        return SkString("androidblendmodes");
-    }
+    SkString getName() const override { return SkString("androidblendmodes"); }
 
     SkISize onISize() override {
         return SkISize::Make(kNumCols * kBitmapSize, kNumRows * kBitmapSize);
diff --git a/gm/animated_gif.cpp b/gm/animated_gif.cpp
index b3eb299..cf95f53 100644
--- a/gm/animated_gif.cpp
+++ b/gm/animated_gif.cpp
@@ -79,9 +79,7 @@
     , fTotalFrames (-1) {}
 
 private:
-    SkString onShortName() override {
-        return SkString("animatedGif");
-    }
+    SkString getName() const override { return SkString("animatedGif"); }
 
     SkISize onISize() override {
         if (this->initCodec()) {
@@ -201,9 +199,7 @@
     }
 
 private:
-    SkString onShortName() override {
-        return SkString("AnimCodecPlayer");
-    }
+    SkString getName() const override { return SkString("AnimCodecPlayer"); }
 
     SkISize onISize() override {
         return { 1024, 768 };
@@ -258,7 +254,7 @@
         }
     }
 
-    SkString onShortName() override {
+    SkString getName() const override {
         return SkStringPrintf("AnimCodecPlayerExif_%s", strrchr(fPath, '/') + 1);
     }
 
diff --git a/gm/animated_image_orientation.cpp b/gm/animated_image_orientation.cpp
index 52301dd..6d38ec7 100644
--- a/gm/animated_image_orientation.cpp
+++ b/gm/animated_image_orientation.cpp
@@ -75,9 +75,7 @@
     {}
     ~AnimatedImageGM() override = default;
 
-    SkString onShortName() override {
-        return SkStringPrintf("%s_animated_image", fName);
-    }
+    SkString getName() const override { return SkStringPrintf("%s_animated_image", fName); }
 
     SkISize onISize() override {
         this->init();
diff --git a/gm/animatedimageblurs.cpp b/gm/animatedimageblurs.cpp
index 7c9596b..9f81c04 100644
--- a/gm/animatedimageblurs.cpp
+++ b/gm/animatedimageblurs.cpp
@@ -37,7 +37,7 @@
 protected:
     bool runAsBench() const override { return true; }
 
-    SkString onShortName() override { return SkString("animated-image-blurs"); }
+    SkString getName() const override { return SkString("animated-image-blurs"); }
 
     SkISize onISize() override { return SkISize::Make(kWidth, kHeight); }
 
diff --git a/gm/anisotropic.cpp b/gm/anisotropic.cpp
index 01e3cc6..a76af3c 100644
--- a/gm/anisotropic.cpp
+++ b/gm/anisotropic.cpp
@@ -43,7 +43,7 @@
     }
 
 protected:
-    SkString onShortName() override {
+    SkString getName() const override {
         SkString name("anisotropic_image_scale_");
         switch (fMode) {
             case Mode::kLinear:
@@ -160,7 +160,7 @@
     AnisoMipsGM() = default;
 
 protected:
-    SkString onShortName() override { return SkString("anisomips"); }
+    SkString getName() const override { return SkString("anisomips"); }
 
     SkISize onISize() override { return SkISize::Make(520, 260); }
 
diff --git a/gm/arcofzorro.cpp b/gm/arcofzorro.cpp
index 9d4640e..7dc4f1f 100644
--- a/gm/arcofzorro.cpp
+++ b/gm/arcofzorro.cpp
@@ -27,10 +27,7 @@
     }
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("arcofzorro");
-    }
+    SkString getName() const override { return SkString("arcofzorro"); }
 
     SkISize onISize() override {
         return SkISize::Make(1000, 1000);
diff --git a/gm/arithmode.cpp b/gm/arithmode.cpp
index 8424b16..463de74 100644
--- a/gm/arithmode.cpp
+++ b/gm/arithmode.cpp
@@ -78,7 +78,7 @@
 }
 
 class ArithmodeGM : public skiagm::GM {
-    SkString onShortName() override { return SkString("arithmode"); }
+    SkString getName() const override { return SkString("arithmode"); }
 
     SkISize onISize() override { return {640, 572}; }
 
@@ -182,7 +182,7 @@
     sk_sp<SkShader>        fSrcShader, fDstShader;
     sk_sp<SkRuntimeEffect> fRuntimeEffect;
 
-    SkString onShortName() override { return SkString("arithmode_blender"); }
+    SkString getName() const override { return SkString("arithmode_blender"); }
 
     static constexpr int W = 200;
     static constexpr int H = 200;
diff --git a/gm/attributes.cpp b/gm/attributes.cpp
index 8a11a21..dc6460d 100644
--- a/gm/attributes.cpp
+++ b/gm/attributes.cpp
@@ -275,7 +275,7 @@
  * strides.
  */
 class AttributesGM : public GpuGM {
-    SkString onShortName() override { return SkString("attributes"); }
+    SkString getName() const override { return SkString("attributes"); }
     SkISize onISize() override { return {120, 340}; }
     DrawResult onDraw(GrRecordingContext*, SkCanvas*, SkString* errorMsg) override;
 };
diff --git a/gm/badpaint.cpp b/gm/badpaint.cpp
index 2850555..6465b92 100644
--- a/gm/badpaint.cpp
+++ b/gm/badpaint.cpp
@@ -25,7 +25,7 @@
     BadPaintGM() {}
 
 protected:
-    SkString onShortName() override { return SkString("badpaint"); }
+    SkString getName() const override { return SkString("badpaint"); }
 
     SkISize onISize() override { return SkISize::Make(100, 100); }
 
diff --git a/gm/batchedconvexpaths.cpp b/gm/batchedconvexpaths.cpp
index b9552b3..3788632 100644
--- a/gm/batchedconvexpaths.cpp
+++ b/gm/batchedconvexpaths.cpp
@@ -16,7 +16,7 @@
 
 class BatchedConvexPathsGM : public GM {
 private:
-    SkString onShortName() override { return SkString("batchedconvexpaths"); }
+    SkString getName() const override { return SkString("batchedconvexpaths"); }
     SkISize onISize() override { return SkISize::Make(512, 512); }
 
     void modifyGrContextOptions(GrContextOptions* ctxOptions) override {
diff --git a/gm/bc1_transparency.cpp b/gm/bc1_transparency.cpp
index 675e348..56dfaa8 100644
--- a/gm/bc1_transparency.cpp
+++ b/gm/bc1_transparency.cpp
@@ -164,10 +164,7 @@
     }
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("bc1_transparency");
-    }
+    SkString getName() const override { return SkString("bc1_transparency"); }
 
     SkISize onISize() override {
         return SkISize::Make(kImgWidth + 2 * kPad, 2 * kImgHeight + 3 * kPad);
diff --git a/gm/beziereffects.cpp b/gm/beziereffects.cpp
index 4cf8cf0..b1b7fc4 100644
--- a/gm/beziereffects.cpp
+++ b/gm/beziereffects.cpp
@@ -220,9 +220,7 @@
     static const int kCellWidth = 128;
     static const int kCellHeight = 128;
 
-    SkString onShortName() override {
-        return SkString("bezier_conic_effects");
-    }
+    SkString getName() const override { return SkString("bezier_conic_effects"); }
 
     SkISize onISize() override {
         return SkISize::Make(kCellWidth, kNumConics*kCellHeight);
@@ -426,9 +424,7 @@
     static const int kCellWidth = 128;
     static const int kCellHeight = 128;
 
-    SkString onShortName() override {
-        return SkString("bezier_quad_effects");
-    }
+    SkString getName() const override { return SkString("bezier_quad_effects"); }
 
     SkISize onISize() override {
         return SkISize::Make(kCellWidth, kNumQuads*kCellHeight);
diff --git a/gm/beziers.cpp b/gm/beziers.cpp
index 82bcc34..cf52099 100644
--- a/gm/beziers.cpp
+++ b/gm/beziers.cpp
@@ -69,10 +69,7 @@
     BeziersGM() {}
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("beziers");
-    }
+    SkString getName() const override { return SkString("beziers"); }
 
     SkISize onISize() override {
         return SkISize::Make(W, H*2);
diff --git a/gm/bigblurs.cpp b/gm/bigblurs.cpp
index 7e1ef2e..3dd2e0f 100644
--- a/gm/bigblurs.cpp
+++ b/gm/bigblurs.cpp
@@ -33,9 +33,7 @@
     }
 
 protected:
-    SkString onShortName() override {
-        return SkString("bigblurs");
-    }
+    SkString getName() const override { return SkString("bigblurs"); }
 
     SkISize onISize() override {
         return SkISize::Make(kWidth, kHeight);
diff --git a/gm/bigrrectaaeffect.cpp b/gm/bigrrectaaeffect.cpp
index 213fea2..90d0961 100644
--- a/gm/bigrrectaaeffect.cpp
+++ b/gm/bigrrectaaeffect.cpp
@@ -58,7 +58,7 @@
     }
 
 protected:
-    SkString onShortName() override {
+    SkString getName() const override {
         SkString name;
         name.printf("big_rrect_%s_aa_effect", fName);
         return name;
diff --git a/gm/bigtext.cpp b/gm/bigtext.cpp
index c4fd10b..c4aaf44 100644
--- a/gm/bigtext.cpp
+++ b/gm/bigtext.cpp
@@ -29,10 +29,7 @@
     BigTextGM() {}
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("bigtext");
-    }
+    SkString getName() const override { return SkString("bigtext"); }
 
     SkISize onISize() override {
         return SkISize::Make(640, 480);
diff --git a/gm/bigtileimagefilter.cpp b/gm/bigtileimagefilter.cpp
index f91fa2b..e5c5f74 100644
--- a/gm/bigtileimagefilter.cpp
+++ b/gm/bigtileimagefilter.cpp
@@ -46,10 +46,7 @@
     }
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("bigtileimagefilter");
-    }
+    SkString getName() const override { return SkString("bigtileimagefilter"); }
 
     SkISize onISize() override {
         return SkISize::Make(kWidth, kHeight);
diff --git a/gm/bitmapcopy.cpp b/gm/bitmapcopy.cpp
index 0618c2a..9c8ec7a 100644
--- a/gm/bitmapcopy.cpp
+++ b/gm/bitmapcopy.cpp
@@ -83,7 +83,7 @@
 
     void onOnceBeforeDraw() override { this->setBGColor(0xFFDDDDDD); }
 
-    SkString onShortName() override { return SkString("bitmapcopy"); }
+    SkString getName() const override { return SkString("bitmapcopy"); }
 
     SkISize onISize() override { return {540, 330}; }
 
diff --git a/gm/bitmapfilters.cpp b/gm/bitmapfilters.cpp
index 9e8fc63..77c543f 100644
--- a/gm/bitmapfilters.cpp
+++ b/gm/bitmapfilters.cpp
@@ -92,9 +92,7 @@
     }
 
 protected:
-    SkString onShortName() override {
-        return SkString("bitmapfilters");
-    }
+    SkString getName() const override { return SkString("bitmapfilters"); }
 
     SkISize onISize() override {
         return SkISize::Make(540, 250);
@@ -141,9 +139,7 @@
     SkBitmap fBitmap, fAlpha;
 
 protected:
-    SkString onShortName() override {
-        return SkString("extractalpha");
-    }
+    SkString getName() const override { return SkString("extractalpha"); }
 
     SkISize onISize() override {
         return SkISize::Make(540, 330);
diff --git a/gm/bitmapimage.cpp b/gm/bitmapimage.cpp
index c2c8dd5..11795a1 100644
--- a/gm/bitmapimage.cpp
+++ b/gm/bitmapimage.cpp
@@ -27,10 +27,7 @@
     BitmapImageGM() {}
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("bitmap-image-srgb-legacy");
-    }
+    SkString getName() const override { return SkString("bitmap-image-srgb-legacy"); }
 
     SkISize onISize() override {
         return SkISize::Make(2*kSize, 2*kSize);
diff --git a/gm/bitmappremul.cpp b/gm/bitmappremul.cpp
index 240fdb6..e59c5f0 100644
--- a/gm/bitmappremul.cpp
+++ b/gm/bitmappremul.cpp
@@ -95,9 +95,7 @@
     }
 
 protected:
-    SkString onShortName() override {
-        return SkString("bitmap_premul");
-    }
+    SkString getName() const override { return SkString("bitmap_premul"); }
 
     SkISize onISize() override {
         return SkISize::Make(SLIDE_SIZE * 2, SLIDE_SIZE * 2);
diff --git a/gm/bitmaprect.cpp b/gm/bitmaprect.cpp
index e38499d..fd3f9dd 100644
--- a/gm/bitmaprect.cpp
+++ b/gm/bitmaprect.cpp
@@ -49,7 +49,7 @@
     }
 
 protected:
-    SkString onShortName() override {
+    SkString getName() const override {
         SkString str;
         str.printf("bitmaprect_%s", fUseIRect ? "i" : "s");
         return str;
@@ -140,7 +140,7 @@
     }
 
 protected:
-    SkString onShortName() override {
+    SkString getName() const override {
         SkString str;
         str.printf("3x3bitmaprect");
         return str;
@@ -204,7 +204,7 @@
     }
 
 protected:
-    SkString onShortName() override {
+    SkString getName() const override {
         SkString str;
         str.printf("bigbitmaprect_%s", fUseIRect ? "i" : "s");
         return str;
@@ -254,7 +254,7 @@
     BitmapRectRounding() {}
 
 protected:
-    SkString onShortName() override {
+    SkString getName() const override {
         SkString str;
         str.printf("bitmaprect_rounding");
         return str;
diff --git a/gm/bitmapshader.cpp b/gm/bitmapshader.cpp
index 7ee6aad..3c35772 100644
--- a/gm/bitmapshader.cpp
+++ b/gm/bitmapshader.cpp
@@ -55,9 +55,7 @@
         fMask = draw_mask();
     }
 
-    SkString onShortName() override {
-        return SkString("bitmapshaders");
-    }
+    SkString getName() const override { return SkString("bitmapshaders"); }
 
     SkISize onISize() override {
         return SkISize::Make(150, 100);
diff --git a/gm/bleed.cpp b/gm/bleed.cpp
index 3fa3213..8699872 100644
--- a/gm/bleed.cpp
+++ b/gm/bleed.cpp
@@ -126,7 +126,7 @@
     }
 
 protected:
-    SkString onShortName() override { return fShortName; }
+    SkString getName() const override { return fShortName; }
     SkISize onISize() override { return SkISize::Make(800, 1000); }
 
     void drawImage(SkCanvas* canvas, sk_sp<SkImage> image, SkRect srcRect, SkRect dstRect,
diff --git a/gm/blurcircles.cpp b/gm/blurcircles.cpp
index f369eb4..e436b73 100644
--- a/gm/blurcircles.cpp
+++ b/gm/blurcircles.cpp
@@ -25,9 +25,7 @@
 protected:
     bool runAsBench() const override { return true; }
 
-    SkString onShortName() override {
-        return SkString("blurcircles");
-    }
+    SkString getName() const override { return SkString("blurcircles"); }
 
     SkISize onISize() override {
         return SkISize::Make(950, 950);
diff --git a/gm/blurcircles2.cpp b/gm/blurcircles2.cpp
index 529b320..cbd70b6 100644
--- a/gm/blurcircles2.cpp
+++ b/gm/blurcircles2.cpp
@@ -46,7 +46,7 @@
 protected:
     bool runAsBench() const override { return true; }
 
-    SkString onShortName() override { return SkString("blurcircles2"); }
+    SkString getName() const override { return SkString("blurcircles2"); }
 
     SkISize onISize() override {
         return SkISize::Make(730, 1350);
diff --git a/gm/blurignorexform.cpp b/gm/blurignorexform.cpp
index 58cdd38..fa291e2 100644
--- a/gm/blurignorexform.cpp
+++ b/gm/blurignorexform.cpp
@@ -38,7 +38,7 @@
 protected:
     bool runAsBench() const override { return true; }
 
-    SkString onShortName() override {
+    SkString getName() const override {
         SkString name;
         name.printf("blur_ignore_xform_%s",
                     DrawType::kCircle == fDrawType ? "circle"
diff --git a/gm/blurquickreject.cpp b/gm/blurquickreject.cpp
index 851a183..71b7c8f 100644
--- a/gm/blurquickreject.cpp
+++ b/gm/blurquickreject.cpp
@@ -30,9 +30,7 @@
     BlurQuickRejectGM() {}
 
 protected:
-    SkString onShortName() override {
-        return SkString("blurquickreject");
-    }
+    SkString getName() const override { return SkString("blurquickreject"); }
 
     SkISize onISize() override {
         return SkISize::Make(kWidth, kHeight);
diff --git a/gm/blurrect.cpp b/gm/blurrect.cpp
index 089f3fb..0d761a5 100644
--- a/gm/blurrect.cpp
+++ b/gm/blurrect.cpp
@@ -122,7 +122,7 @@
         }
     }
 
-    SkString onShortName() override { return SkString(fName); }
+    SkString getName() const override { return SkString(fName); }
 
     SkISize onISize() override { return {860, 820}; }
 
@@ -248,7 +248,7 @@
 // Compares actual blur rects with reference masks created by the GM. Animates sigma in viewer.
 class BlurRectCompareGM : public GM {
 protected:
-    SkString onShortName() override { return SkString("blurrect_compare"); }
+    SkString getName() const override { return SkString("blurrect_compare"); }
 
     SkISize onISize() override { return {900, 1220}; }
 
diff --git a/gm/blurredclippedcircle.cpp b/gm/blurredclippedcircle.cpp
index 2754927..5f9371a 100644
--- a/gm/blurredclippedcircle.cpp
+++ b/gm/blurredclippedcircle.cpp
@@ -30,10 +30,7 @@
     }
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("blurredclippedcircle");
-    }
+    SkString getName() const override { return SkString("blurredclippedcircle"); }
 
     SkISize onISize() override {
         return SkISize::Make(kWidth, kHeight);
diff --git a/gm/blurroundrect.cpp b/gm/blurroundrect.cpp
index 5875a9a..1f72ed5 100644
--- a/gm/blurroundrect.cpp
+++ b/gm/blurroundrect.cpp
@@ -54,7 +54,7 @@
 
 // Simpler blurred RR test cases where all the radii are the same.
 class SimpleBlurRoundRectGM : public skiagm::GM {
-    SkString onShortName() override { return SkString("simpleblurroundrect"); }
+    SkString getName() const override { return SkString("simpleblurroundrect"); }
 
     SkISize onISize() override { return {1000, 500}; }
 
diff --git a/gm/bmpfilterqualityrepeat.cpp b/gm/bmpfilterqualityrepeat.cpp
index aa27d70..5c15a44 100644
--- a/gm/bmpfilterqualityrepeat.cpp
+++ b/gm/bmpfilterqualityrepeat.cpp
@@ -45,7 +45,7 @@
         canvas.drawImage(colorBmp.asImage(), 20, 20);
     }
 
-    SkString onShortName() override { return SkString("bmp_filter_quality_repeat"); }
+    SkString getName() const override { return SkString("bmp_filter_quality_repeat"); }
 
     SkISize onISize() override { return SkISize::Make(1000, 400); }
 
diff --git a/gm/circularclips.cpp b/gm/circularclips.cpp
index 697e7b8..411ea57 100644
--- a/gm/circularclips.cpp
+++ b/gm/circularclips.cpp
@@ -34,9 +34,7 @@
 
     bool runAsBench() const override { return true; }
 
-    SkString onShortName() override {
-        return SkString("circular-clips");
-    }
+    SkString getName() const override { return SkString("circular-clips"); }
 
     SkISize onISize() override {
         return SkISize::Make(800, 200);
diff --git a/gm/clip_error.cpp b/gm/clip_error.cpp
index f496ca1..20b5c99 100644
--- a/gm/clip_error.cpp
+++ b/gm/clip_error.cpp
@@ -46,7 +46,7 @@
     ClipErrorGM() {}
 
 protected:
-    SkString onShortName() override { return SkString("cliperror"); }
+    SkString getName() const override { return SkString("cliperror"); }
 
     SkISize onISize() override { return SkISize::Make(WIDTH, HEIGHT); }
 
diff --git a/gm/clip_strokerect.cpp b/gm/clip_strokerect.cpp
index 5ca3093..1d0687f 100644
--- a/gm/clip_strokerect.cpp
+++ b/gm/clip_strokerect.cpp
@@ -20,9 +20,7 @@
     }
 
 protected:
-    SkString onShortName() override {
-        return SkString("clip_strokerect");
-    }
+    SkString getName() const override { return SkString("clip_strokerect"); }
 
     SkISize onISize() override {
         return SkISize::Make(200, 400);
diff --git a/gm/clippedbitmapshaders.cpp b/gm/clippedbitmapshaders.cpp
index 7487ef17..174f24c 100644
--- a/gm/clippedbitmapshaders.cpp
+++ b/gm/clippedbitmapshaders.cpp
@@ -58,7 +58,7 @@
     SkTileMode fMode;
     bool fHQ;
 
-    SkString onShortName() override {
+    SkString getName() const override {
         SkString descriptor;
         switch (fMode) {
             case SkTileMode::kRepeat:
diff --git a/gm/clockwise.cpp b/gm/clockwise.cpp
index e581373..ea1d109 100644
--- a/gm/clockwise.cpp
+++ b/gm/clockwise.cpp
@@ -254,7 +254,7 @@
  * target origins. We draw clockwise triangles green and counter-clockwise red.
  */
 class ClockwiseGM : public GpuGM {
-    SkString onShortName() override { return SkString("clockwise"); }
+    SkString getName() const override { return SkString("clockwise"); }
     SkISize onISize() override { return {300, 200}; }
     DrawResult onDraw(GrRecordingContext*, SkCanvas*, SkString* errorMsg) override;
 };
diff --git a/gm/coloremoji.cpp b/gm/coloremoji.cpp
index 6d6e1a0..09be2cf 100644
--- a/gm/coloremoji.cpp
+++ b/gm/coloremoji.cpp
@@ -79,9 +79,7 @@
         emojiFont.text     = ToolUtils::emoji_sample_text();
     }
 
-    SkString onShortName() override {
-        return SkString("coloremoji");
-    }
+    SkString getName() const override { return SkString("coloremoji"); }
 
     SkISize onISize() override { return SkISize::Make(650, 1200); }
 
diff --git a/gm/coloremoji_blendmodes.cpp b/gm/coloremoji_blendmodes.cpp
index 81013ed..dfcd704 100644
--- a/gm/coloremoji_blendmodes.cpp
+++ b/gm/coloremoji_blendmodes.cpp
@@ -65,9 +65,7 @@
                                             kOpaque_SkAlphaType), gData, 4);
     }
 
-    SkString onShortName() override {
-        return SkString("coloremoji_blendmodes");
-    }
+    SkString getName() const override { return SkString("coloremoji_blendmodes"); }
 
     SkISize onISize() override {
         return {400, 640};
diff --git a/gm/colorfilteralpha8.cpp b/gm/colorfilteralpha8.cpp
index 5929042..8abb340 100644
--- a/gm/colorfilteralpha8.cpp
+++ b/gm/colorfilteralpha8.cpp
@@ -21,9 +21,7 @@
     ColorFilterAlpha8() {}
 
 protected:
-    SkString onShortName() override {
-        return SkString("colorfilteralpha8");
-    }
+    SkString getName() const override { return SkString("colorfilteralpha8"); }
 
     SkISize onISize() override {
         return SkISize::Make(400, 400);
diff --git a/gm/colorfilters.cpp b/gm/colorfilters.cpp
index 43ad198..3f015ab 100644
--- a/gm/colorfilters.cpp
+++ b/gm/colorfilters.cpp
@@ -48,7 +48,7 @@
 }
 
 class ColorFiltersGM : public skiagm::GM {
-    SkString onShortName() override { return SkString("lightingcolorfilter"); }
+    SkString getName() const override { return SkString("lightingcolorfilter"); }
 
     SkISize onISize() override { return {620, 430}; }
 
@@ -84,7 +84,7 @@
 
 class HSLColorFilterGM : public skiagm::GM {
 protected:
-    SkString onShortName() override { return SkString("hslcolorfilter"); }
+    SkString getName() const override { return SkString("hslcolorfilter"); }
 
     SkISize onISize() override { return { 840, 1100 }; }
 
diff --git a/gm/colormatrix.cpp b/gm/colormatrix.cpp
index c49c6be..c40cbc6 100644
--- a/gm/colormatrix.cpp
+++ b/gm/colormatrix.cpp
@@ -43,9 +43,7 @@
     }
 
 protected:
-    SkString onShortName() override {
-        return SkString("colormatrix");
-    }
+    SkString getName() const override { return SkString("colormatrix"); }
 
     SkISize onISize() override {
         return SkISize::Make(WIDTH, HEIGHT);
diff --git a/gm/colrv1.cpp b/gm/colrv1.cpp
index 44e7504..7cb1f0b 100644
--- a/gm/colrv1.cpp
+++ b/gm/colrv1.cpp
@@ -65,7 +65,7 @@
         fVariationSliders = ToolUtils::VariationSliders(fTypeface.get(), fVariationPosition);
     }
 
-    SkString onShortName() override {
+    SkString getName() const override {
         SkASSERT(!fTestName.isEmpty());
         SkString gm_name = SkStringPrintf("colrv1_%s", fTestName.c_str());
 
diff --git a/gm/complexclip.cpp b/gm/complexclip.cpp
index 5668119..8333b8e 100644
--- a/gm/complexclip.cpp
+++ b/gm/complexclip.cpp
@@ -43,7 +43,7 @@
     }
 
 protected:
-    SkString onShortName() override {
+    SkString getName() const override {
         SkString str;
         str.printf("complexclip_%s%s%s",
                    fDoAAClip ? "aa" : "bw",
diff --git a/gm/complexclip2.cpp b/gm/complexclip2.cpp
index 14d8c7d..8906a72 100644
--- a/gm/complexclip2.cpp
+++ b/gm/complexclip2.cpp
@@ -122,7 +122,7 @@
         return "";
     }
 
-    SkString onShortName() override {
+    SkString getName() const override {
         if (kRect_Clip == fClip && !fAntiAlias) {
             return SkString("complexclip2");
         }
diff --git a/gm/complexclip3.cpp b/gm/complexclip3.cpp
index fd59c74..c2d7bc4 100644
--- a/gm/complexclip3.cpp
+++ b/gm/complexclip3.cpp
@@ -34,8 +34,7 @@
     }
 
 protected:
-
-    SkString onShortName() override {
+    SkString getName() const override {
         SkString str;
         str.printf("complexclip3_%s", fDoSimpleClipFirst ? "simple" : "complex");
         return str;
diff --git a/gm/complexclip4.cpp b/gm/complexclip4.cpp
index 0416963..3c54c9e 100644
--- a/gm/complexclip4.cpp
+++ b/gm/complexclip4.cpp
@@ -28,7 +28,7 @@
     }
 
 protected:
-    SkString onShortName() override {
+    SkString getName() const override {
         SkString str;
         str.printf("complexclip4_%s",
                    fDoAAClip ? "aa" : "bw");
diff --git a/gm/complexclip_blur_tiled.cpp b/gm/complexclip_blur_tiled.cpp
index 8e710cd..3e1f6e7 100644
--- a/gm/complexclip_blur_tiled.cpp
+++ b/gm/complexclip_blur_tiled.cpp
@@ -31,9 +31,7 @@
     }
 
 protected:
-    SkString onShortName() override {
-        return SkString("complexclip_blur_tiled");
-    }
+    SkString getName() const override { return SkString("complexclip_blur_tiled"); }
 
     SkISize onISize() override {
         return SkISize::Make(WIDTH, HEIGHT);
diff --git a/gm/composeshader.cpp b/gm/composeshader.cpp
index 1a22137..27c55f1 100644
--- a/gm/composeshader.cpp
+++ b/gm/composeshader.cpp
@@ -56,9 +56,7 @@
         fShader = make_shader(SkBlendMode::kDstIn);
     }
 
-    SkString onShortName() override {
-        return SkString("composeshader");
-    }
+    SkString getName() const override { return SkString("composeshader"); }
 
     SkISize onISize() override {
         return SkISize::Make(120, 120);
@@ -85,9 +83,7 @@
     ComposeShaderAlphaGM() {}
 
 protected:
-    SkString onShortName() override {
-        return SkString("composeshader_alpha");
-    }
+    SkString getName() const override { return SkString("composeshader_alpha"); }
 
     SkISize onISize() override {
         return SkISize::Make(750, 220);
@@ -170,7 +166,7 @@
     ComposeShaderBitmapGM(bool use_lm) : fUseLocalMatrix(use_lm) {}
 
 protected:
-    SkString onShortName() override {
+    SkString getName() const override {
         return SkStringPrintf("composeshader_bitmap%s", fUseLocalMatrix ? "_lm" : "");
     }
 
diff --git a/gm/compositor_quads.cpp b/gm/compositor_quads.cpp
index 28e498e..6facc44 100644
--- a/gm/compositor_quads.cpp
+++ b/gm/compositor_quads.cpp
@@ -439,7 +439,7 @@
                              SkScalarRoundToInt(kCellHeight * fRenderers.size() + 75.f));
     }
 
-    SkString onShortName() override {
+    SkString getName() const override {
         SkString fullName;
         fullName.appendf("compositor_quads_%s", fName.c_str());
         return fullName;
diff --git a/gm/compressed_textures.cpp b/gm/compressed_textures.cpp
index 771f588..723dacf 100644
--- a/gm/compressed_textures.cpp
+++ b/gm/compressed_textures.cpp
@@ -201,7 +201,7 @@
     }
 
 protected:
-    SkString onShortName() override {
+    SkString getName() const override {
         SkString name("compressed_textures");
 
         if (fType == Type::kNonPowerOfTwo) {
diff --git a/gm/conicpaths.cpp b/gm/conicpaths.cpp
index 0a1ec8b..1db9cb3 100644
--- a/gm/conicpaths.cpp
+++ b/gm/conicpaths.cpp
@@ -23,10 +23,7 @@
 
 class ConicPathsGM : public skiagm::GM {
 protected:
-
-    SkString onShortName() override {
-        return SkString("conicpaths");
-    }
+    SkString getName() const override { return SkString("conicpaths"); }
 
     SkISize onISize() override {
         return SkISize::Make(920, 960);
diff --git a/gm/constcolorprocessor.cpp b/gm/constcolorprocessor.cpp
index eb7c59a..6f1576a 100644
--- a/gm/constcolorprocessor.cpp
+++ b/gm/constcolorprocessor.cpp
@@ -58,7 +58,7 @@
     }
 
 protected:
-    SkString onShortName() override {
+    SkString getName() const override {
         switch (fMode) {
             case TestMode::kConstColor:    return SkString("const_color_processor");
             case TestMode::kModulateRGBA:  return SkString("modulate_rgba");
diff --git a/gm/convex_all_line_paths.cpp b/gm/convex_all_line_paths.cpp
index cafa77f..a911d76 100644
--- a/gm/convex_all_line_paths.cpp
+++ b/gm/convex_all_line_paths.cpp
@@ -174,7 +174,7 @@
     }
 
 protected:
-    SkString onShortName() override {
+    SkString getName() const override {
         if (fDoStrokeAndFill) {
             return SkString("convex-lineonly-paths-stroke-and-fill");
         }
diff --git a/gm/convexpaths.cpp b/gm/convexpaths.cpp
index 3b44d7c..fee6abb 100644
--- a/gm/convexpaths.cpp
+++ b/gm/convexpaths.cpp
@@ -47,8 +47,7 @@
 
     void onOnceBeforeDraw() override { this->setBGColor(0xFF000000); }
 
-    SkString onShortName() override { return SkString("convexpaths"); }
-
+    SkString getName() const override { return SkString("convexpaths"); }
 
     SkISize onISize() override { return {1200, 1100}; }
 
diff --git a/gm/convexpolyclip.cpp b/gm/convexpolyclip.cpp
index 6bb3a52..930d934 100644
--- a/gm/convexpolyclip.cpp
+++ b/gm/convexpolyclip.cpp
@@ -97,9 +97,7 @@
     }
 
 protected:
-    SkString onShortName() override {
-        return SkString("convex_poly_clip");
-    }
+    SkString getName() const override { return SkString("convex_poly_clip"); }
 
     SkISize onISize() override {
         // When benchmarking the saveLayer set of draws is skipped.
diff --git a/gm/convexpolyeffect.cpp b/gm/convexpolyeffect.cpp
index 8d6d4c2..4bd72db 100644
--- a/gm/convexpolyeffect.cpp
+++ b/gm/convexpolyeffect.cpp
@@ -45,9 +45,7 @@
     }
 
 protected:
-    SkString onShortName() override {
-        return SkString("convex_poly_effect");
-    }
+    SkString getName() const override { return SkString("convex_poly_effect"); }
 
     SkISize onISize() override { return SkISize::Make(720, 550); }
 
diff --git a/gm/copy_to_4444.cpp b/gm/copy_to_4444.cpp
index aaa7349..368cf7f 100644
--- a/gm/copy_to_4444.cpp
+++ b/gm/copy_to_4444.cpp
@@ -23,7 +23,7 @@
  *  Test copying an image from 8888 to 4444.
  */
 class CopyTo4444GM : public skiagm::GM {
-    SkString onShortName() override { return SkString("copyTo4444"); }
+    SkString getName() const override { return SkString("copyTo4444"); }
 
     SkISize onISize() override { return {360, 180}; }
 
diff --git a/gm/crbug_224618.cpp b/gm/crbug_224618.cpp
index 0824c0e..75133a8 100644
--- a/gm/crbug_224618.cpp
+++ b/gm/crbug_224618.cpp
@@ -20,9 +20,7 @@
     CrBug224618GM() : fTime(0.f) {}
 
 protected:
-    SkString onShortName() override {
-        return SkString("crbug_224618");
-    }
+    SkString getName() const override { return SkString("crbug_224618"); }
 
     SkISize onISize() override {
         return SkISize::Make(kMaxVW, kMaxVW);
diff --git a/gm/crop_imagefilter.cpp b/gm/crop_imagefilter.cpp
index ea261e5..44e50a8 100644
--- a/gm/crop_imagefilter.cpp
+++ b/gm/crop_imagefilter.cpp
@@ -348,7 +348,7 @@
         return {SkScalarRoundToInt(4.f * (kExampleBounds.fRight + 1.f) - 1.f),
                 SkScalarRoundToInt(5.f * (kExampleBounds.fBottom + 1.f) - 1.f)};
     }
-    SkString onShortName() override {
+    SkString getName() const override {
         SkString name("crop_imagefilter_");
         switch(fInputMode) {
             case SkTileMode::kDecal:  name.append("decal");  break;
diff --git a/gm/croppedrects.cpp b/gm/croppedrects.cpp
index f8cf184..327b1a4 100644
--- a/gm/croppedrects.cpp
+++ b/gm/croppedrects.cpp
@@ -55,7 +55,7 @@
  */
 class CroppedRectsGM : public GM {
 private:
-    SkString onShortName() final { return SkString("croppedrects"); }
+    SkString getName() const override { return SkString("croppedrects"); }
     SkISize onISize() override { return SkISize::Make(500, 500); }
 
     void onDraw(SkCanvas* canvas) override {
diff --git a/gm/cubicpaths.cpp b/gm/cubicpaths.cpp
index ad3f252..2a60765 100644
--- a/gm/cubicpaths.cpp
+++ b/gm/cubicpaths.cpp
@@ -26,7 +26,7 @@
 // https://bug.skia.org/1316 shows that this cubic, when slightly clipped, creates big
 // (incorrect) changes to its control points.
 class ClippedCubicGM : public skiagm::GM {
-    SkString onShortName() override { return SkString("clippedcubic"); }
+    SkString getName() const override { return SkString("clippedcubic"); }
 
     SkISize onISize() override { return {1240, 390}; }
 
@@ -57,7 +57,7 @@
 
 
 class ClippedCubic2GM : public skiagm::GM {
-    SkString onShortName() override { return SkString("clippedcubic2"); }
+    SkString getName() const override { return SkString("clippedcubic2"); }
 
     SkISize onISize() override { return {1240, 390}; }
 
@@ -119,7 +119,7 @@
 };
 
 class CubicPathGM : public skiagm::GM {
-    SkString onShortName() override { return SkString("cubicpath"); }
+    SkString getName() const override { return SkString("cubicpath"); }
 
     SkISize onISize() override { return {1240, 390}; }
 
@@ -238,7 +238,7 @@
 };
 
 class CubicClosePathGM : public skiagm::GM {
-    SkString onShortName() override { return SkString("cubicclosepath"); }
+    SkString getName() const override { return SkString("cubicclosepath"); }
 
     SkISize onISize() override { return {1240, 390}; }
 
@@ -359,7 +359,7 @@
 };
 
 class CubicPathShaderGM : public skiagm::GM {
-    SkString onShortName() override { return SkString("cubicpath_shader"); }
+    SkString getName() const override { return SkString("cubicpath_shader"); }
 
     SkISize onISize() override { return {1240, 390}; }
 
diff --git a/gm/dashcircle.cpp b/gm/dashcircle.cpp
index fd51401..d79e7c2 100644
--- a/gm/dashcircle.cpp
+++ b/gm/dashcircle.cpp
@@ -42,7 +42,7 @@
     DashCircleGM() : fRotation(0) { }
 
 protected:
-    SkString onShortName() override { return SkString("dashcircle"); }
+    SkString getName() const override { return SkString("dashcircle"); }
 
     SkISize onISize() override { return SkISize::Make(900, 1200); }
 
@@ -124,7 +124,7 @@
     DashCircle2GM() {}
 
 protected:
-    SkString onShortName() override { return SkString("dashcircle2"); }
+    SkString getName() const override { return SkString("dashcircle2"); }
 
     SkISize onISize() override { return SkISize::Make(635, 900); }
 
diff --git a/gm/dashcubics.cpp b/gm/dashcubics.cpp
index 91d7c17..1d521ef 100644
--- a/gm/dashcubics.cpp
+++ b/gm/dashcubics.cpp
@@ -104,7 +104,7 @@
     }
 
 protected:
-    SkString onShortName() override { return SkString("trimpatheffect"); }
+    SkString getName() const override { return SkString("trimpatheffect"); }
 
     SkISize onISize() override {
         return SkISize::Make(1400, 1000);
diff --git a/gm/dashing.cpp b/gm/dashing.cpp
index d63f6ac..540e952 100644
--- a/gm/dashing.cpp
+++ b/gm/dashing.cpp
@@ -61,7 +61,7 @@
 }
 
 class DashingGM : public skiagm::GM {
-    SkString onShortName() override { return SkString("dashing"); }
+    SkString getName() const override { return SkString("dashing"); }
 
     SkISize onISize() override { return {640, 340}; }
 
@@ -139,7 +139,7 @@
 }
 
 class Dashing2GM : public skiagm::GM {
-    SkString onShortName() override { return SkString("dashing2"); }
+    SkString getName() const override { return SkString("dashing2"); }
 
     SkISize onISize() override { return {640, 480}; }
 
@@ -189,7 +189,7 @@
 
 // Test out the on/off line dashing Chrome if fond of
 class Dashing3GM : public skiagm::GM {
-    SkString onShortName() override { return SkString("dashing3"); }
+    SkString getName() const override { return SkString("dashing3"); }
 
     SkISize onISize() override { return {640, 480}; }
 
@@ -312,7 +312,7 @@
 //////////////////////////////////////////////////////////////////////////////
 
 class Dashing4GM : public skiagm::GM {
-    SkString onShortName() override { return SkString("dashing4"); }
+    SkString getName() const override { return SkString("dashing4"); }
 
     SkISize onISize() override { return {640, 1100}; }
 
@@ -410,7 +410,7 @@
 private:
     bool runAsBench() const override { return true; }
 
-    SkString onShortName() override { return SkString(fDoAA ?  "dashing5_aa" : "dashing5_bw"); }
+    SkString getName() const override { return SkString(fDoAA ? "dashing5_aa" : "dashing5_bw"); }
 
     SkISize onISize() override { return {400, 200}; }
 
diff --git a/gm/degeneratesegments.cpp b/gm/degeneratesegments.cpp
index 31dba34..b2fc5f5 100644
--- a/gm/degeneratesegments.cpp
+++ b/gm/degeneratesegments.cpp
@@ -30,7 +30,7 @@
         const char* fName2;
     };
 
-    SkString onShortName() override { return SkString("degeneratesegments"); }
+    SkString getName() const override { return SkString("degeneratesegments"); }
 
     SkISize onISize() override { return {896, 930}; }
 
diff --git a/gm/dftext.cpp b/gm/dftext.cpp
index 9dc4f8a..1105b1b 100644
--- a/gm/dftext.cpp
+++ b/gm/dftext.cpp
@@ -48,9 +48,7 @@
         fEmojiText     = ToolUtils::emoji_sample_text();
     }
 
-    SkString onShortName() override {
-        return SkString("dftext");
-    }
+    SkString getName() const override { return SkString("dftext"); }
 
     SkISize onISize() override {
         return SkISize::Make(1024, 768);
diff --git a/gm/dftext_blob_persp.cpp b/gm/dftext_blob_persp.cpp
index ea4aba0..ad3aeb4 100644
--- a/gm/dftext_blob_persp.cpp
+++ b/gm/dftext_blob_persp.cpp
@@ -41,9 +41,7 @@
     DFTextBlobPerspGM() { this->setBGColor(0xFFFFFFFF); }
 
 protected:
-    SkString onShortName() override {
-        return SkString("dftext_blob_persp");
-    }
+    SkString getName() const override { return SkString("dftext_blob_persp"); }
 
     SkISize onISize() override { return SkISize::Make(900, 350); }
 
diff --git a/gm/discard.cpp b/gm/discard.cpp
index 3224cc8..59400d3 100644
--- a/gm/discard.cpp
+++ b/gm/discard.cpp
@@ -38,9 +38,7 @@
     DiscardGM() {}
 
 protected:
-    SkString onShortName() override {
-        return SkString("discard");
-    }
+    SkString getName() const override { return SkString("discard"); }
 
     SkISize onISize() override {
         return SkISize::Make(100, 100);
diff --git a/gm/displacement.cpp b/gm/displacement.cpp
index e96d5ea..3eef30d 100644
--- a/gm/displacement.cpp
+++ b/gm/displacement.cpp
@@ -31,9 +31,7 @@
     }
 
 protected:
-    SkString onShortName() override {
-        return SkString("displacement");
-    }
+    SkString getName() const override { return SkString("displacement"); }
 
     void onOnceBeforeDraw() override {
         fImage = ToolUtils::create_string_image(80, 80, 0xFF884422, 15, 55, 96, "g");
diff --git a/gm/distantclip.cpp b/gm/distantclip.cpp
index a21567e..525fc87 100644
--- a/gm/distantclip.cpp
+++ b/gm/distantclip.cpp
@@ -21,7 +21,7 @@
 namespace skiagm {
 
 class DistantClipGM : public GM {
-    SkString onShortName() override { return SkString("distantclip"); }
+    SkString getName() const override { return SkString("distantclip"); }
 
     SkISize onISize() override { return {100, 100}; }
 
diff --git a/gm/drawatlas.cpp b/gm/drawatlas.cpp
index 76fc852..c29b898 100644
--- a/gm/drawatlas.cpp
+++ b/gm/drawatlas.cpp
@@ -69,10 +69,7 @@
     DrawAtlasGM() {}
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("draw-atlas");
-    }
+    SkString getName() const override { return SkString("draw-atlas"); }
 
     SkISize onISize() override {
         return SkISize::Make(640, 480);
diff --git a/gm/drawatlascolor.cpp b/gm/drawatlascolor.cpp
index 6775529..ac7df68 100644
--- a/gm/drawatlascolor.cpp
+++ b/gm/drawatlascolor.cpp
@@ -71,9 +71,7 @@
     }
 
 protected:
-    SkString onShortName() override {
-        return SkString("draw-atlas-colors");
-    }
+    SkString getName() const override { return SkString("draw-atlas-colors"); }
 
     SkISize onISize() override {
         return SkISize::Make(kNumXferModes * (kAtlasSize + kPad) + kPad,
diff --git a/gm/drawbitmaprect.cpp b/gm/drawbitmaprect.cpp
index 0d21104..d74c27f 100644
--- a/gm/drawbitmaprect.cpp
+++ b/gm/drawbitmaprect.cpp
@@ -178,7 +178,7 @@
     SkString            fName;
 
 protected:
-    SkString onShortName() override { return fName; }
+    SkString getName() const override { return fName; }
 
     SkISize onISize() override { return SkISize::Make(gSize, gSize); }
 
diff --git a/gm/drawglyphs.cpp b/gm/drawglyphs.cpp
index 1bd9627..400bda9 100644
--- a/gm/drawglyphs.cpp
+++ b/gm/drawglyphs.cpp
@@ -47,9 +47,7 @@
         }
     }
 
-    SkString onShortName() override {
-        return SkString("drawglyphs");
-    }
+    SkString getName() const override { return SkString("drawglyphs"); }
 
     SkISize onISize() override {
         return SkISize::Make(640, 480);
diff --git a/gm/drawimageset.cpp b/gm/drawimageset.cpp
index c45dbf4..9ec7eb6 100644
--- a/gm/drawimageset.cpp
+++ b/gm/drawimageset.cpp
@@ -106,7 +106,7 @@
 
 class DrawImageSetGM : public GM {
 private:
-    SkString onShortName() override { return SkString("draw_image_set"); }
+    SkString getName() const override { return SkString("draw_image_set"); }
     SkISize onISize() override { return {1000, 725}; }
     void onOnceBeforeDraw() override {
         static constexpr SkColor kColors[] = {SK_ColorCYAN,    SK_ColorBLACK,
@@ -209,7 +209,7 @@
 // incorrectly disabled.
 class DrawImageSetRectToRectGM : public GM {
 private:
-    SkString onShortName() override { return SkString("draw_image_set_rect_to_rect"); }
+    SkString getName() const override { return SkString("draw_image_set_rect_to_rect"); }
     SkISize onISize() override { return {1250, 850}; }
     void onOnceBeforeDraw() override {
         static constexpr SkColor kColors[] = {SK_ColorBLUE, SK_ColorWHITE,
@@ -294,7 +294,7 @@
 // This GM exercises alpha-only and color textures being combined correctly with the paint's color.
 class DrawImageSetAlphaOnlyGM : public GM {
 private:
-    SkString onShortName() override { return SkString("draw_image_set_alpha_only"); }
+    SkString getName() const override { return SkString("draw_image_set_alpha_only"); }
     SkISize onISize() override { return {kM*kTileW, 2*kN*kTileH}; }
 
     DrawResult onGpuSetup(SkCanvas* canvas, SkString*) override {
diff --git a/gm/drawminibitmaprect.cpp b/gm/drawminibitmaprect.cpp
index 9f9c084..d19e871 100644
--- a/gm/drawminibitmaprect.cpp
+++ b/gm/drawminibitmaprect.cpp
@@ -85,7 +85,7 @@
     }
 
 protected:
-    SkString onShortName() override { return fName; }
+    SkString getName() const override { return fName; }
 
     SkISize onISize() override { return SkISize::Make(gSize, gSize); }
 
diff --git a/gm/drawquadset.cpp b/gm/drawquadset.cpp
index 55ac7f6..7d3f157 100644
--- a/gm/drawquadset.cpp
+++ b/gm/drawquadset.cpp
@@ -179,7 +179,7 @@
 
 class DrawQuadSetGM : public GM {
 private:
-    SkString onShortName() override { return SkString("draw_quad_set"); }
+    SkString getName() const override { return SkString("draw_quad_set"); }
     SkISize onISize() override { return SkISize::Make(800, 800); }
 
     void onDraw(SkCanvas* canvas) override {
diff --git a/gm/drawregion.cpp b/gm/drawregion.cpp
index 44a3c28..c00e308 100644
--- a/gm/drawregion.cpp
+++ b/gm/drawregion.cpp
@@ -21,9 +21,7 @@
     DrawRegionGM() {}
 
 protected:
-    SkString onShortName() override {
-        return SkString("drawregion");
-    }
+    SkString getName() const override { return SkString("drawregion"); }
 
     SkISize onISize() override {
         return SkISize::Make(500, 500);
diff --git a/gm/drawregionmodes.cpp b/gm/drawregionmodes.cpp
index d476324..f2c4cd7 100644
--- a/gm/drawregionmodes.cpp
+++ b/gm/drawregionmodes.cpp
@@ -28,9 +28,7 @@
     DrawRegionModesGM() {}
 
 protected:
-    SkString onShortName() override {
-        return SkString("drawregionmodes");
-    }
+    SkString getName() const override { return SkString("drawregionmodes"); }
 
     SkISize onISize() override {
         return SkISize::Make(375, 500);
diff --git a/gm/drrect.cpp b/gm/drrect.cpp
index f716870..076890c 100644
--- a/gm/drrect.cpp
+++ b/gm/drrect.cpp
@@ -21,10 +21,7 @@
     DRRectGM() {}
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("drrect");
-    }
+    SkString getName() const override { return SkString("drrect"); }
 
     SkISize onISize() override {
         return SkISize::Make(640, 480);
diff --git a/gm/dstreadshuffle.cpp b/gm/dstreadshuffle.cpp
index a27afca..678113d 100644
--- a/gm/dstreadshuffle.cpp
+++ b/gm/dstreadshuffle.cpp
@@ -47,9 +47,7 @@
         kNumShapeTypes
     };
 
-    SkString onShortName() override {
-        return SkString("dstreadshuffle");
-    }
+    SkString getName() const override { return SkString("dstreadshuffle"); }
 
     SkISize onISize() override {
         return SkISize::Make(530, 680);
diff --git a/gm/emboss.cpp b/gm/emboss.cpp
index d5fa01b..299c671 100644
--- a/gm/emboss.cpp
+++ b/gm/emboss.cpp
@@ -38,9 +38,7 @@
     }
 
 protected:
-    SkString onShortName() override {
-        return SkString("emboss");
-    }
+    SkString getName() const override { return SkString("emboss"); }
 
     SkISize onISize() override {
         return SkISize::Make(600, 120);
diff --git a/gm/emptypath.cpp b/gm/emptypath.cpp
index 32b1816..827f04b 100644
--- a/gm/emptypath.cpp
+++ b/gm/emptypath.cpp
@@ -24,7 +24,7 @@
 namespace skiagm {
 
 class EmptyPathGM : public GM {
-    SkString onShortName() override { return SkString("emptypath"); }
+    SkString getName() const override { return SkString("emptypath"); }
 
     SkISize onISize() override { return {600, 280}; }
 
@@ -157,7 +157,7 @@
 }
 
 class EmptyStrokeGM : public GM {
-    SkString onShortName() override { return SkString("emptystroke"); }
+    SkString getName() const override { return SkString("emptystroke"); }
 
     SkISize onISize() override { return {200, 240}; }
 
diff --git a/gm/encode.cpp b/gm/encode.cpp
index 78e979b..ecc3bb7 100644
--- a/gm/encode.cpp
+++ b/gm/encode.cpp
@@ -28,9 +28,7 @@
     EncodeGM() {}
 
 protected:
-    SkString onShortName() override {
-        return SkString("encode");
-    }
+    SkString getName() const override { return SkString("encode"); }
 
     SkISize onISize() override {
         return SkISize::Make(1024, 600);
diff --git a/gm/encode_alpha_jpeg.cpp b/gm/encode_alpha_jpeg.cpp
index 56a5334..e4460db 100644
--- a/gm/encode_alpha_jpeg.cpp
+++ b/gm/encode_alpha_jpeg.cpp
@@ -45,9 +45,7 @@
     EncodeJpegAlphaOptsGM() {}
 
 protected:
-    SkString onShortName() override {
-        return SkString("encode-alpha-jpeg");
-    }
+    SkString getName() const override { return SkString("encode-alpha-jpeg"); }
 
     SkISize onISize() override {
         return SkISize::Make(400, 200);
diff --git a/gm/encode_color_types.cpp b/gm/encode_color_types.cpp
index 4a1d5ae..72e2186 100644
--- a/gm/encode_color_types.cpp
+++ b/gm/encode_color_types.cpp
@@ -82,7 +82,7 @@
     {}
 
 protected:
-    SkString onShortName() override {
+    SkString getName() const override {
         const char* variant = fVariant == Variant::kOpaque ? "opaque-":
                               fVariant == Variant::kGray   ? "gray-"  :
                                                              ""       ;
diff --git a/gm/encode_platform.cpp b/gm/encode_platform.cpp
index b6860c0..b068f2c 100644
--- a/gm/encode_platform.cpp
+++ b/gm/encode_platform.cpp
@@ -75,9 +75,7 @@
     EncodePlatformGM() {}
 
 protected:
-    SkString onShortName() override {
-        return SkString("encode-platform");
-    }
+    SkString getName() const override { return SkString("encode-platform"); }
 
     SkISize onISize() override {
         return SkISize::Make(256 * std::size(gRecs), 256 * 3);
diff --git a/gm/encode_srgb.cpp b/gm/encode_srgb.cpp
index a7ad9c5..4381d2a 100644
--- a/gm/encode_srgb.cpp
+++ b/gm/encode_srgb.cpp
@@ -93,7 +93,7 @@
     {}
 
 protected:
-    SkString onShortName() override {
+    SkString getName() const override {
         const char* format = nullptr;
         switch (fEncodedFormat) {
             case SkEncodedImageFormat::kPNG:
diff --git a/gm/exoticformats.cpp b/gm/exoticformats.cpp
index 4c1a61f..693e558 100644
--- a/gm/exoticformats.cpp
+++ b/gm/exoticformats.cpp
@@ -334,9 +334,7 @@
     }
 
 protected:
-    SkString onShortName() override {
-        return SkString("exoticformats");
-    }
+    SkString getName() const override { return SkString("exoticformats"); }
 
     SkISize onISize() override {
         return SkISize::Make(2*kImgWidthHeight + 3 * kPad, kImgWidthHeight + 2 * kPad);
diff --git a/gm/fillrect_gradient.cpp b/gm/fillrect_gradient.cpp
index cd22ab7..f2c7a53 100644
--- a/gm/fillrect_gradient.cpp
+++ b/gm/fillrect_gradient.cpp
@@ -41,9 +41,7 @@
         SkColor color;
     };
 
-    SkString onShortName() override {
-        return SkString("fillrect_gradient");
-    }
+    SkString getName() const override { return SkString("fillrect_gradient"); }
 
     SkISize onISize() override {
         return SkISize::Make(kNumColumns * (kCellSize + kPadSize),
diff --git a/gm/filltypes.cpp b/gm/filltypes.cpp
index 0817a60..0c562e3 100644
--- a/gm/filltypes.cpp
+++ b/gm/filltypes.cpp
@@ -34,10 +34,7 @@
     }
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("filltypes");
-    }
+    SkString getName() const override { return SkString("filltypes"); }
 
     SkISize onISize() override {
         return SkISize::Make(835, 840);
diff --git a/gm/filltypespersp.cpp b/gm/filltypespersp.cpp
index bb25b37..aef0baf 100644
--- a/gm/filltypespersp.cpp
+++ b/gm/filltypespersp.cpp
@@ -38,10 +38,7 @@
     }
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("filltypespersp");
-    }
+    SkString getName() const override { return SkString("filltypespersp"); }
 
     SkISize onISize() override {
         return SkISize::Make(835, 840);
diff --git a/gm/filterbug.cpp b/gm/filterbug.cpp
index 5d83fcd..9fc524f 100644
--- a/gm/filterbug.cpp
+++ b/gm/filterbug.cpp
@@ -46,7 +46,7 @@
     FilterBugGM() { this->setBGColor(SK_ColorRED); }
 
 protected:
-    SkString onShortName() override { return SkString("filterbug"); }
+    SkString getName() const override { return SkString("filterbug"); }
 
     SkISize onISize() override { return SkISize::Make(150, 150); }
 
diff --git a/gm/filterfastbounds.cpp b/gm/filterfastbounds.cpp
index 55c8c3e..71756b1 100644
--- a/gm/filterfastbounds.cpp
+++ b/gm/filterfastbounds.cpp
@@ -164,7 +164,7 @@
     inline static constexpr int kNumVertTiles = 7;
     inline static constexpr int kNumXtraCols = 2;
 
-    SkString onShortName() override { return SkString("filterfastbounds"); }
+    SkString getName() const override { return SkString("filterfastbounds"); }
 
     SkISize onISize() override {
         return SkISize::Make((std::size(gDrawMthds) + kNumXtraCols) * kTileWidth,
diff --git a/gm/filterindiabox.cpp b/gm/filterindiabox.cpp
index cd5690f..09d9898 100644
--- a/gm/filterindiabox.cpp
+++ b/gm/filterindiabox.cpp
@@ -65,7 +65,7 @@
         fMatrix[1].setRotate(30, cx, cy); fMatrix[1].postScale(horizScale, vertScale);
     }
 
-    SkString onShortName() override { return SkString("filterindiabox"); }
+    SkString getName() const override { return SkString("filterindiabox"); }
 
     SkISize onISize() override { return {680, 130}; }
 
diff --git a/gm/flippity.cpp b/gm/flippity.cpp
index dd5cadf..ffc625d 100644
--- a/gm/flippity.cpp
+++ b/gm/flippity.cpp
@@ -177,9 +177,7 @@
     }
 
 private:
-    SkString onShortName() override {
-        return SkString("flippity");
-    }
+    SkString getName() const override { return SkString("flippity"); }
 
     SkISize onISize() override {
         return SkISize::Make(kGMWidth, kGMHeight);
diff --git a/gm/fontations.cpp b/gm/fontations.cpp
index 8cd90cb..4b7f16a 100644
--- a/gm/fontations.cpp
+++ b/gm/fontations.cpp
@@ -119,7 +119,7 @@
                 SkTypeface_Make_Fontations(GetResourceAsStream(kReportFontName), SkFontArguments());
     }
 
-    SkString onShortName() override {
+    SkString getName() const override {
         return SkStringPrintf("typeface_fontations_%s", fTestName.c_str());
     }
 
diff --git a/gm/fontcache.cpp b/gm/fontcache.cpp
index 16fd827..0fe7f9b 100644
--- a/gm/fontcache.cpp
+++ b/gm/fontcache.cpp
@@ -48,7 +48,7 @@
     }
 
 protected:
-    SkString onShortName() override {
+    SkString getName() const override {
         SkString name("fontcache");
         if (GrContextOptions::Enable::kYes == fAllowMultipleTextures) {
             name.append("-mt");
diff --git a/gm/fontmgr.cpp b/gm/fontmgr.cpp
index d7c1bda..ece9243 100644
--- a/gm/fontmgr.cpp
+++ b/gm/fontmgr.cpp
@@ -78,7 +78,7 @@
         fFM = SkFontMgr::RefDefault();
     }
 
-    SkString onShortName() override { return SkString("fontmgr_iter"); }
+    SkString getName() const override { return SkString("fontmgr_iter"); }
 
     SkISize onISize() override { return {1536, 768}; }
 
@@ -129,7 +129,7 @@
         SkGraphics::SetFontCacheLimit(16 * 1024 * 1024);
     }
 
-    SkString onShortName() override { return SkString("fontmgr_match"); }
+    SkString getName() const override { return SkString("fontmgr_match"); }
 
     SkISize onISize() override { return {640, 1024}; }
 
@@ -204,7 +204,7 @@
     FontMgrBoundsGM(float scale, float skew) : fScaleX(scale) , fSkewX(skew) {}
 
 private:
-    SkString onShortName() override {
+    SkString getName() const override {
         if (fScaleX != 1 || fSkewX != 0) {
             return SkStringPrintf("fontmgr_bounds_%g_%g", fScaleX, fSkewX);
         }
diff --git a/gm/fontregen.cpp b/gm/fontregen.cpp
index 2913763..d7d36be 100644
--- a/gm/fontregen.cpp
+++ b/gm/fontregen.cpp
@@ -67,7 +67,7 @@
     }
 #endif
 
-    SkString onShortName() override { return SkString("fontregen"); }
+    SkString getName() const override { return SkString("fontregen"); }
 
     SkISize onISize() override { return {kSize, kSize}; }
 
@@ -135,8 +135,7 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 class BadAppleGM : public skiagm::GM {
-
-    SkString onShortName() override { return SkString("badapple"); }
+    SkString getName() const override { return SkString("badapple"); }
 
     SkISize onISize() override { return {kSize, kSize}; }
 
diff --git a/gm/fontscaler.cpp b/gm/fontscaler.cpp
index 9e6cc0f..239bc4f 100644
--- a/gm/fontscaler.cpp
+++ b/gm/fontscaler.cpp
@@ -26,10 +26,7 @@
     }
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("fontscaler");
-    }
+    SkString getName() const override { return SkString("fontscaler"); }
 
     SkISize onISize() override {
         return SkISize::Make(1450, 750);
diff --git a/gm/fontscalerdistortable.cpp b/gm/fontscalerdistortable.cpp
index d6a8001..1cfea84 100644
--- a/gm/fontscalerdistortable.cpp
+++ b/gm/fontscalerdistortable.cpp
@@ -37,10 +37,7 @@
     }
 
 private:
-
-    SkString onShortName() override {
-        return SkString("fontscalerdistortable");
-    }
+    SkString getName() const override { return SkString("fontscalerdistortable"); }
 
     SkISize onISize() override {
         return SkISize::Make(550, 700);
diff --git a/gm/gammatext.cpp b/gm/gammatext.cpp
index 3f8576a..2f6810a 100644
--- a/gm/gammatext.cpp
+++ b/gm/gammatext.cpp
@@ -40,9 +40,7 @@
 
 class GammaTextGM : public skiagm::GM {
 protected:
-    SkString onShortName() override {
-        return SkString("gammatext");
-    }
+    SkString getName() const override { return SkString("gammatext"); }
 
     SkISize onISize() override {
         return SkISize::Make(1024, HEIGHT);
@@ -129,9 +127,7 @@
     }
 
 protected:
-    SkString onShortName() override {
-        return SkString("gammagradienttext");
-    }
+    SkString getName() const override { return SkString("gammagradienttext"); }
 
     SkISize onISize() override {
         return SkISize::Make(300, 300);
diff --git a/gm/giantbitmap.cpp b/gm/giantbitmap.cpp
index d2caac5..431254a 100644
--- a/gm/giantbitmap.cpp
+++ b/gm/giantbitmap.cpp
@@ -76,8 +76,7 @@
     ~GiantBitmapGM() override { delete fBM; }
 
 protected:
-
-    SkString onShortName() override {
+    SkString getName() const override {
         SkString str("giantbitmap_");
         switch (fMode) {
             case SkTileMode::kClamp:
diff --git a/gm/gm.cpp b/gm/gm.cpp
index 3d3b9f8..941f0bb 100644
--- a/gm/gm.cpp
+++ b/gm/gm.cpp
@@ -87,7 +87,7 @@
 GM::~GM() {}
 
 DrawResult GM::gpuSetup(SkCanvas* canvas, SkString* errorMsg) {
-    TRACE_EVENT1("GM", TRACE_FUNC, "name", TRACE_STR_COPY(this->getName()));
+    TRACE_EVENT1("GM", TRACE_FUNC, "name", TRACE_STR_COPY(this->getName().c_str()));
     if (!fGpuSetup) {
         // When drawn in viewer, gpuSetup will be called multiple times with the same
         // GrContext.
@@ -110,7 +110,7 @@
 }
 
 DrawResult GM::draw(SkCanvas* canvas, SkString* errorMsg) {
-    TRACE_EVENT1("GM", TRACE_FUNC, "name", TRACE_STR_COPY(this->getName()));
+    TRACE_EVENT1("GM", TRACE_FUNC, "name", TRACE_STR_COPY(this->getName().c_str()));
     this->drawBackground(canvas);
     return this->drawContent(canvas, errorMsg);
 }
@@ -140,26 +140,19 @@
 
 
 SkISize SimpleGM::onISize() { return fSize; }
-SkString SimpleGM::onShortName() { return fName; }
+SkString SimpleGM::getName() const { return fName; }
 DrawResult SimpleGM::onDraw(SkCanvas* canvas, SkString* errorMsg) {
     return fDrawProc(canvas, errorMsg);
 }
 
 #if defined(SK_GANESH)
 SkISize SimpleGpuGM::onISize() { return fSize; }
-SkString SimpleGpuGM::onShortName() { return fName; }
+SkString SimpleGpuGM::getName() const { return fName; }
 DrawResult SimpleGpuGM::onDraw(GrRecordingContext* rContext, SkCanvas* canvas, SkString* errorMsg) {
     return fDrawProc(rContext, canvas, errorMsg);
 }
 #endif
 
-const char* GM::getName() {
-    if (fShortName.size() == 0) {
-        fShortName = this->onShortName();
-    }
-    return fShortName.c_str();
-}
-
 void GM::setBGColor(SkColor color) {
     fBGColor = color;
 }
diff --git a/gm/gm.h b/gm/gm.h
index ae77e58..1a3c15c 100644
--- a/gm/gm.h
+++ b/gm/gm.h
@@ -150,7 +150,7 @@
         DrawResult drawContent(SkCanvas*, SkString* errorMsg);
 
         SkISize getISize() { return this->onISize(); }
-        const char* getName();
+        virtual SkString getName() const = 0;
 
         virtual bool runAsBench() const;
 
@@ -218,15 +218,13 @@
         virtual void onDraw(SkCanvas*);
 
         virtual SkISize onISize() = 0;
-        virtual SkString onShortName() = 0;
 
         virtual bool onAnimate(double /*nanos*/);
         virtual bool onGetControls(SkMetaData*);
         virtual void onSetControls(const SkMetaData&);
 
     private:
-        Mode       fMode;
-        SkString   fShortName;
+        Mode fMode;
         SkColor    fBGColor;
         bool       fHaveCalledOnceBeforeDraw = false;
         bool       fGpuSetup = false;
@@ -282,9 +280,10 @@
         SimpleGM(SkColor bgColor, const SkString& name, const SkISize& size, DrawProc drawProc)
                 : GM(bgColor), fName(name), fSize(size), fDrawProc(drawProc) {}
 
+        SkString getName() const override;
+
     private:
         SkISize onISize() override;
-        SkString onShortName() override;
         DrawResult onDraw(SkCanvas* canvas, SkString* errorMsg) override;
 
         const SkString fName;
@@ -300,9 +299,10 @@
         SimpleGpuGM(SkColor bgColor, const SkString& name, const SkISize& size, DrawProc drawProc)
                 : GpuGM(bgColor), fName(name), fSize(size), fDrawProc(drawProc) {}
 
+        SkString getName() const override;
+
     private:
         SkISize onISize() override;
-        SkString onShortName() override;
         DrawResult onDraw(GrRecordingContext*, SkCanvas*, SkString* errorMsg) override;
 
         const SkString fName;
diff --git a/gm/gradient_dirty_laundry.cpp b/gm/gradient_dirty_laundry.cpp
index f7efdfb..e8f127c 100644
--- a/gm/gradient_dirty_laundry.cpp
+++ b/gm/gradient_dirty_laundry.cpp
@@ -77,7 +77,7 @@
     }
 
 protected:
-    SkString onShortName() override { return SkString("gradient_dirty_laundry"); }
+    SkString getName() const override { return SkString("gradient_dirty_laundry"); }
     SkISize onISize() override { return SkISize::Make(640, 615); }
 
     void onDraw(SkCanvas* canvas) override {
diff --git a/gm/gradients.cpp b/gm/gradients.cpp
index 92538e3..68b4d5b 100644
--- a/gm/gradients.cpp
+++ b/gm/gradients.cpp
@@ -227,7 +227,7 @@
 private:
     void onOnceBeforeDraw() override { this->setBGColor(0xFFDDDDDD); }
 
-    SkString onShortName() override {
+    SkString getName() const override {
         return SkString(fDither ? "gradients" : "gradients_nodither");
     }
 
@@ -244,7 +244,7 @@
 private:
     void onOnceBeforeDraw() override { this->setBGColor(0xFFDDDDDD); }
 
-    SkString onShortName() override {
+    SkString getName() const override {
         return SkString(fDither ? "gradients4f" : "gradients4f_nodither");
     }
 
@@ -295,7 +295,7 @@
     }
 
 private:
-    SkString onShortName() override {
+    SkString getName() const override {
         return SkString(fDither ? "gradients_local_perspective" :
                                   "gradients_local_perspective_nodither");
     }
@@ -344,7 +344,7 @@
     GradientsViewPerspectiveGM(bool dither) : INHERITED(dither) { }
 
 private:
-    SkString onShortName() override {
+    SkString getName() const override {
         return SkString(fDither ? "gradients_view_perspective" :
                                   "gradients_view_perspective_nodither");
     }
@@ -387,7 +387,7 @@
     GradientsDegenrate2PointGM(bool dither) : fDither(dither) {}
 
 private:
-    SkString onShortName() override {
+    SkString getName() const override {
         return SkString(fDither ? "gradients_degenerate_2pt" : "gradients_degenerate_2pt_nodither");
     }
 
@@ -460,7 +460,7 @@
     ClampedGradientsGM(bool dither) : fDither(dither) {}
 
 private:
-    SkString onShortName() override {
+    SkString getName() const override {
         return SkString(fDither ? "clamped_gradients" : "clamped_gradients_nodither");
     }
 
@@ -493,7 +493,7 @@
 /// some banding.
 
 class RadialGradientGM : public skiagm::GM {
-    SkString onShortName() override { return SkString("radial_gradient"); }
+    SkString getName() const override { return SkString("radial_gradient"); }
 
     SkISize onISize() override { return {1280, 1280}; }
 
@@ -527,7 +527,7 @@
     RadialGradient2GM(bool dither) : fDither(dither) {}
 
 private:
-    SkString onShortName() override {
+    SkString getName() const override {
         return SkString(fDither ? "radial_gradient2" : "radial_gradient2_nodither");
     }
 
@@ -591,7 +591,7 @@
     RadialGradient3GM(bool dither) : fDither(dither) { }
 
 private:
-    SkString onShortName() override {
+    SkString getName() const override {
         return SkString(fDither ? "radial_gradient3" : "radial_gradient3_nodither");
     }
 
@@ -628,7 +628,7 @@
     RadialGradient4GM(bool dither) : fDither(dither) { }
 
 private:
-    SkString onShortName() override {
+    SkString getName() const override {
         return SkString(fDither ? "radial_gradient4" : "radial_gradient4_nodither");
     }
 
@@ -666,7 +666,7 @@
     LinearGradientGM(bool dither) : fDither(dither) { }
 
 private:
-    SkString onShortName() override {
+    SkString getName() const override {
         return SkString(fDither ? "linear_gradient" : "linear_gradient_nodither");
     }
 
@@ -716,7 +716,7 @@
 class LinearGradientTinyGM : public skiagm::GM {
     inline static constexpr uint32_t kFlags = 0;
 
-    SkString onShortName() override { return SkString("linear_gradient_tiny"); }
+    SkString getName() const override { return SkString("linear_gradient_tiny"); }
 
     SkISize onISize() override { return {600, 500}; }
 
diff --git a/gm/gradients_2pt_conical.cpp b/gm/gradients_2pt_conical.cpp
index e2c342f..4efd01c 100644
--- a/gm/gradients_2pt_conical.cpp
+++ b/gm/gradients_2pt_conical.cpp
@@ -344,7 +344,7 @@
 private:
     void onOnceBeforeDraw() override { this->setBGColor(0xFFDDDDDD); }
 
-    SkString onShortName() override { return fName; }
+    SkString getName() const override { return fName; }
 
     SkISize onISize() override { return {840, 815}; }
 
diff --git a/gm/gradients_degenerate.cpp b/gm/gradients_degenerate.cpp
index 93d53a2..dac5a60 100644
--- a/gm/gradients_degenerate.cpp
+++ b/gm/gradients_degenerate.cpp
@@ -131,9 +131,7 @@
     }
 
 protected:
-    SkString onShortName() override {
-        return SkString("degenerate_gradients");
-    }
+    SkString getName() const override { return SkString("degenerate_gradients"); }
 
     SkISize onISize() override {
         return SkISize::Make(800, 800);
diff --git a/gm/gradients_no_texture.cpp b/gm/gradients_no_texture.cpp
index 8ec01f4..63014f7 100644
--- a/gm/gradients_no_texture.cpp
+++ b/gm/gradients_no_texture.cpp
@@ -99,8 +99,7 @@
     }
 
 protected:
-
-    SkString onShortName() override {
+    SkString getName() const override {
         return SkString(fDither ? "gradients_no_texture" : "gradients_no_texture_nodither");
     }
 
@@ -237,8 +236,7 @@
     GradientsManyColorsGM(bool dither) : fDither(dither) {}
 
 protected:
-
-    SkString onShortName() override {
+    SkString getName() const override {
         return SkString(fDither ? "gradients_many" : "gradients_many_nodither");
     }
 
diff --git a/gm/gradtext.cpp b/gm/gradtext.cpp
index 6d31648..f7463f8 100644
--- a/gm/gradtext.cpp
+++ b/gm/gradtext.cpp
@@ -49,7 +49,7 @@
 
 // Replicate chrome layout test - clipped pathed gradient-shaded text
 class ChromeGradTextGM1 : public skiagm::GM {
-    SkString onShortName() override { return SkString("chrome_gradtext1"); }
+    SkString getName() const override { return SkString("chrome_gradtext1"); }
 
     SkISize onISize() override { return {500, 480}; }
 
@@ -74,7 +74,7 @@
 
 // Replicate chrome layout test - switching between solid & gradient text
 class ChromeGradTextGM2 : public skiagm::GM {
-    SkString onShortName() override { return SkString("chrome_gradtext2"); }
+    SkString getName() const override { return SkString("chrome_gradtext2"); }
 
     SkISize onISize() override { return {500, 480}; }
 
diff --git a/gm/graphite_replay.cpp b/gm/graphite_replay.cpp
index 8a177fd..1e5c429 100644
--- a/gm/graphite_replay.cpp
+++ b/gm/graphite_replay.cpp
@@ -32,7 +32,7 @@
     }
 
 protected:
-    SkString onShortName() override { return SkString("graphite-replay"); }
+    SkString getName() const override { return SkString("graphite-replay"); }
 
     SkISize onISize() override { return SkISize::Make(kTileWidth * 3, kTileHeight * 2); }
 
diff --git a/gm/graphitestart.cpp b/gm/graphitestart.cpp
index fb4e3c0..dd37733 100644
--- a/gm/graphitestart.cpp
+++ b/gm/graphitestart.cpp
@@ -265,9 +265,7 @@
     static constexpr int kHeight = 3 * kTileHeight;
     static constexpr int kClipInset = 4;
 
-    SkString onShortName() override {
-        return SkString("graphitestart");
-    }
+    SkString getName() const override { return SkString("graphitestart"); }
 
     SkISize onISize() override {
         return SkISize::Make(kWidth, kHeight);
diff --git a/gm/hairlines.cpp b/gm/hairlines.cpp
index 2edd2d0..d5adac4 100644
--- a/gm/hairlines.cpp
+++ b/gm/hairlines.cpp
@@ -24,11 +24,7 @@
 
 class HairlinesGM : public GM {
 protected:
-
-
-    SkString onShortName() override {
-        return SkString("hairlines");
-    }
+    SkString getName() const override { return SkString("hairlines"); }
 
     SkISize onISize() override { return SkISize::Make(1250, 1250); }
 
diff --git a/gm/hairmodes.cpp b/gm/hairmodes.cpp
index 35d972e..0a81104 100644
--- a/gm/hairmodes.cpp
+++ b/gm/hairmodes.cpp
@@ -84,9 +84,7 @@
         SkPaint fBGPaint;
 
     protected:
-        SkString onShortName() override {
-            return SkString("hairmodes");
-        }
+        SkString getName() const override { return SkString("hairmodes"); }
 
         SkISize onISize() override { return SkISize::Make(640, 480); }
 
diff --git a/gm/hardstop_gradients.cpp b/gm/hardstop_gradients.cpp
index 9b65b70..f64d336 100644
--- a/gm/hardstop_gradients.cpp
+++ b/gm/hardstop_gradients.cpp
@@ -95,9 +95,7 @@
     }
 
 protected:
-    SkString onShortName() override {
-        return SkString("hardstop_gradients");
-    }
+    SkString getName() const override { return SkString("hardstop_gradients"); }
 
     SkISize onISize() override {
         return SkISize::Make(512, 512);
diff --git a/gm/hardstop_gradients_many.cpp b/gm/hardstop_gradients_many.cpp
index c8c6614..802ba2c 100644
--- a/gm/hardstop_gradients_many.cpp
+++ b/gm/hardstop_gradients_many.cpp
@@ -38,9 +38,7 @@
     HardstopGradientsManyGM() {}
 
 protected:
-    SkString onShortName() override {
-        return SkString("hardstop_gradients_many");
-    }
+    SkString getName() const override { return SkString("hardstop_gradients_many"); }
 
     SkISize onISize() override {
         return SkISize::Make(kWidth, kHeight);
diff --git a/gm/highcontrastfilter.cpp b/gm/highcontrastfilter.cpp
index 74c2a6a..b8a5a7a 100644
--- a/gm/highcontrastfilter.cpp
+++ b/gm/highcontrastfilter.cpp
@@ -122,9 +122,7 @@
             SkTileMode::kClamp);
     }
 
-    SkString onShortName() override {
-        return SkString("highcontrastfilter");
-    }
+    SkString getName() const override { return SkString("highcontrastfilter"); }
 
     SkISize onISize() override {
         return SkISize::Make(800, 420);
diff --git a/gm/image.cpp b/gm/image.cpp
index 98a94b3..d637205 100644
--- a/gm/image.cpp
+++ b/gm/image.cpp
@@ -145,9 +145,7 @@
     }
 
 protected:
-    SkString onShortName() override {
-        return SkString("image-surface");
-    }
+    SkString getName() const override { return SkString("image-surface"); }
 
     SkISize onISize() override {
         return SkISize::Make(960, 1200);
@@ -290,9 +288,7 @@
     ScalePixelsGM() {}
 
 protected:
-    SkString onShortName() override {
-        return SkString("scale-pixels");
-    }
+    SkString getName() const override { return SkString("scale-pixels"); }
 
     SkISize onISize() override {
         return SkISize::Make(960, 1200);
diff --git a/gm/image_pict.cpp b/gm/image_pict.cpp
index 449c7a4..a33c763 100644
--- a/gm/image_pict.cpp
+++ b/gm/image_pict.cpp
@@ -74,9 +74,7 @@
     ImagePictGM() {}
 
 protected:
-    SkString onShortName() override {
-        return SkString("image-picture");
-    }
+    SkString getName() const override { return SkString("image-picture"); }
 
     SkISize onISize() override {
         return SkISize::Make(850, 450);
@@ -268,9 +266,7 @@
     }
 
 protected:
-    SkString onShortName() override {
-        return fName;
-    }
+    SkString getName() const override { return fName; }
 
     SkISize onISize() override {
         return SkISize::Make(960, 450);
diff --git a/gm/image_shader.cpp b/gm/image_shader.cpp
index 0307a0a..4ddc1c1 100644
--- a/gm/image_shader.cpp
+++ b/gm/image_shader.cpp
@@ -113,9 +113,7 @@
     ImageShaderGM() {}
 
 protected:
-    SkString onShortName() override {
-        return SkString("image-shader");
-    }
+    SkString getName() const override { return SkString("image-shader"); }
 
     SkISize onISize() override {
         return SkISize::Make(850, 450);
diff --git a/gm/imageblurclampmode.cpp b/gm/imageblurclampmode.cpp
index eef4c50..2582f3d 100644
--- a/gm/imageblurclampmode.cpp
+++ b/gm/imageblurclampmode.cpp
@@ -62,10 +62,7 @@
     }
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("imageblurclampmode");
-    }
+    SkString getName() const override { return SkString("imageblurclampmode"); }
 
     SkISize onISize() override {
         return SkISize::Make(850, 920);
diff --git a/gm/imageblurrepeatmode.cpp b/gm/imageblurrepeatmode.cpp
index ac0aef4..2a3fcb6 100644
--- a/gm/imageblurrepeatmode.cpp
+++ b/gm/imageblurrepeatmode.cpp
@@ -81,10 +81,7 @@
     }
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("imageblurrepeatmode");
-    }
+    SkString getName() const override { return SkString("imageblurrepeatmode"); }
 
     SkISize onISize() override {
         return SkISize::Make(850, 920);
diff --git a/gm/imageblurtiled.cpp b/gm/imageblurtiled.cpp
index e7bd15a9..5cd9b3e 100644
--- a/gm/imageblurtiled.cpp
+++ b/gm/imageblurtiled.cpp
@@ -31,9 +31,7 @@
     }
 
 protected:
-    SkString onShortName() override {
-        return SkString("imageblurtiled");
-    }
+    SkString getName() const override { return SkString("imageblurtiled"); }
 
     SkISize onISize() override {
         return SkISize::Make(WIDTH, HEIGHT);
diff --git a/gm/imagefilters.cpp b/gm/imagefilters.cpp
index e6ca389..38e93c0 100644
--- a/gm/imagefilters.cpp
+++ b/gm/imagefilters.cpp
@@ -152,7 +152,7 @@
 class SaveLayerWithBackdropGM : public skiagm::GM {
 protected:
     bool runAsBench() const override { return true; }
-    SkString onShortName() override { return SkString("savelayer_with_backdrop"); }
+    SkString getName() const override { return SkString("savelayer_with_backdrop"); }
     SkISize onISize() override { return SkISize::Make(830, 550); }
 
     void onDraw(SkCanvas* canvas) override {
diff --git a/gm/imagefiltersbase.cpp b/gm/imagefiltersbase.cpp
index 695e6cf..8f9eec7 100644
--- a/gm/imagefiltersbase.cpp
+++ b/gm/imagefiltersbase.cpp
@@ -202,9 +202,7 @@
     ImageFiltersBaseGM () {}
 
 protected:
-    SkString onShortName() override {
-        return SkString("imagefiltersbase");
-    }
+    SkString getName() const override { return SkString("imagefiltersbase"); }
 
     SkISize onISize() override { return SkISize::Make(700, 500); }
 
@@ -291,7 +289,7 @@
     ImageFiltersTextBaseGM(const char suffix[]) : fSuffix(suffix) {}
 
 protected:
-    SkString onShortName() override {
+    SkString getName() const override {
         SkString name;
         name.printf("%s_%s", "textfilter", fSuffix.c_str());
         return name;
diff --git a/gm/imagefiltersclipped.cpp b/gm/imagefiltersclipped.cpp
index 43d7874..8755ec4 100644
--- a/gm/imagefiltersclipped.cpp
+++ b/gm/imagefiltersclipped.cpp
@@ -78,9 +78,7 @@
     }
 
 protected:
-    SkString onShortName() override {
-        return SkString("imagefiltersclipped");
-    }
+    SkString getName() const override { return SkString("imagefiltersclipped"); }
 
     SkISize onISize() override {
         return SkISize::Make(860, 500);
diff --git a/gm/imagefilterscropped.cpp b/gm/imagefilterscropped.cpp
index f70ecb9..62db19f 100644
--- a/gm/imagefilterscropped.cpp
+++ b/gm/imagefilterscropped.cpp
@@ -76,9 +76,7 @@
     ImageFiltersCroppedGM () {}
 
 protected:
-    SkString onShortName() override {
-        return SkString("imagefilterscropped");
-    }
+    SkString getName() const override { return SkString("imagefilterscropped"); }
 
     SkISize onISize() override { return SkISize::Make(400, 960); }
 
diff --git a/gm/imagefiltersgraph.cpp b/gm/imagefiltersgraph.cpp
index 793c69b..17185d5 100644
--- a/gm/imagefiltersgraph.cpp
+++ b/gm/imagefiltersgraph.cpp
@@ -30,10 +30,7 @@
     ImageFiltersGraphGM() {}
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("imagefiltersgraph");
-    }
+    SkString getName() const override { return SkString("imagefiltersgraph"); }
 
     SkISize onISize() override { return SkISize::Make(600, 150); }
 
diff --git a/gm/imagefiltersscaled.cpp b/gm/imagefiltersscaled.cpp
index ad8247d..61aed46 100644
--- a/gm/imagefiltersscaled.cpp
+++ b/gm/imagefiltersscaled.cpp
@@ -61,10 +61,7 @@
     }
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("imagefiltersscaled");
-    }
+    SkString getName() const override { return SkString("imagefiltersscaled"); }
 
     SkISize onISize() override {
         return SkISize::Make(1428, 500);
diff --git a/gm/imagefiltersstroked.cpp b/gm/imagefiltersstroked.cpp
index 07c77af..e810406 100644
--- a/gm/imagefiltersstroked.cpp
+++ b/gm/imagefiltersstroked.cpp
@@ -31,10 +31,7 @@
     }
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("imagefiltersstroked");
-    }
+    SkString getName() const override { return SkString("imagefiltersstroked"); }
 
     SkISize onISize() override {
         return SkISize::Make(860, 500);
diff --git a/gm/imagefilterstransformed.cpp b/gm/imagefilterstransformed.cpp
index e43f110..f415d43 100644
--- a/gm/imagefilterstransformed.cpp
+++ b/gm/imagefilterstransformed.cpp
@@ -64,8 +64,7 @@
     }
 
 protected:
-
-    SkString onShortName() override { return SkString("imagefilterstransformed"); }
+    SkString getName() const override { return SkString("imagefilterstransformed"); }
 
     SkISize onISize() override { return SkISize::Make(420, 240); }
 
@@ -174,9 +173,7 @@
     ImageFilterMatrixWLocalMatrix() : fDegrees(132.f) {}
 
 protected:
-    SkString onShortName() override {
-        return SkString("imagefilter_matrix_localmatrix");
-    }
+    SkString getName() const override { return SkString("imagefilter_matrix_localmatrix"); }
 
     SkISize onISize() override {
         return SkISize::Make(512, 512);
@@ -227,9 +224,7 @@
     ImageFilterComposedTransform() : fDegrees(70.f) {}
 
 protected:
-    SkString onShortName() override {
-        return SkString("imagefilter_composed_transform");
-    }
+    SkString getName() const override { return SkString("imagefilter_composed_transform"); }
 
     SkISize onISize() override {
         return SkISize::Make(512, 512);
diff --git a/gm/imagefromyuvtextures.cpp b/gm/imagefromyuvtextures.cpp
index 483e2f1..71a822d 100644
--- a/gm/imagefromyuvtextures.cpp
+++ b/gm/imagefromyuvtextures.cpp
@@ -42,9 +42,7 @@
     }
 
 protected:
-    SkString onShortName() override {
-        return SkString("image_from_yuv_textures");
-    }
+    SkString getName() const override { return SkString("image_from_yuv_textures"); }
 
     SkISize onISize() override { return {1420, 610}; }
 
diff --git a/gm/imagemagnifier.cpp b/gm/imagemagnifier.cpp
index 81c43f7..7c81c79 100644
--- a/gm/imagemagnifier.cpp
+++ b/gm/imagemagnifier.cpp
@@ -100,7 +100,7 @@
     ImageMagnifierBounds() : fX(0.f), fY(0.f) {}
 
 protected:
-    SkString onShortName() override { return SkString("imagemagnifier_bounds"); }
+    SkString getName() const override { return SkString("imagemagnifier_bounds"); }
     SkISize onISize() override { return SkISize::Make(768, 512); }
 
     bool onAnimate(double nanos) override {
diff --git a/gm/imagemakewithfilter.cpp b/gm/imagemakewithfilter.cpp
index dae6f36..15fd463 100644
--- a/gm/imagemakewithfilter.cpp
+++ b/gm/imagemakewithfilter.cpp
@@ -188,7 +188,7 @@
             , fAuxImage(nullptr) {}
 
 protected:
-    SkString onShortName() override {
+    SkString getName() const override {
         SkString name = SkString("imagemakewithfilter");
 
         if (fFilterWithCropRect) {
diff --git a/gm/imagesource.cpp b/gm/imagesource.cpp
index ca2d8b5..eaba97d 100644
--- a/gm/imagesource.cpp
+++ b/gm/imagesource.cpp
@@ -40,9 +40,7 @@
     ImageSourceGM() { }
 
 protected:
-    SkString onShortName() override {
-        return SkString("imagesource");
-    }
+    SkString getName() const override { return SkString("imagesource"); }
 
     SkISize onISize() override { return SkISize::Make(500, 150); }
 
diff --git a/gm/imagesource2.cpp b/gm/imagesource2.cpp
index 4045828..aff162f 100644
--- a/gm/imagesource2.cpp
+++ b/gm/imagesource2.cpp
@@ -32,7 +32,7 @@
     }
 
 protected:
-    SkString onShortName() override {
+    SkString getName() const override {
         SkString name("imagesrc2_");
         name.append(fSuffix);
         return name;
diff --git a/gm/internal_links.cpp b/gm/internal_links.cpp
index 058e17f..3e08435 100644
--- a/gm/internal_links.cpp
+++ b/gm/internal_links.cpp
@@ -31,7 +31,7 @@
 class InternalLinksGM : public skiagm::GM {
     void onOnceBeforeDraw() override { this->setBGColor(0xFFDDDDDD); }
 
-    SkString onShortName() override { return SkString("internal_links"); }
+    SkString getName() const override { return SkString("internal_links"); }
 
     SkISize onISize() override { return {700, 500}; }
 
diff --git a/gm/jpg_color_cube.cpp b/gm/jpg_color_cube.cpp
index b48c998..04d938f 100644
--- a/gm/jpg_color_cube.cpp
+++ b/gm/jpg_color_cube.cpp
@@ -29,9 +29,7 @@
     ColorCubeGM() {}
 
 protected:
-    SkString onShortName() override {
-        return SkString("jpg-color-cube");
-    }
+    SkString getName() const override { return SkString("jpg-color-cube"); }
 
     SkISize onISize() override {
         return SkISize::Make(512, 512);
diff --git a/gm/kawase_blur_rt.cpp b/gm/kawase_blur_rt.cpp
index 192f47d..ee5bb5a 100644
--- a/gm/kawase_blur_rt.cpp
+++ b/gm/kawase_blur_rt.cpp
@@ -173,7 +173,7 @@
 class KawaseBlurRT : public skiagm::GM {
 public:
     KawaseBlurRT() {}
-    SkString onShortName() override { return SkString("kawase_blur_rt"); }
+    SkString getName() const override { return SkString("kawase_blur_rt"); }
     SkISize onISize() override { return {1280, 768}; }
 
     void onOnceBeforeDraw() override {
diff --git a/gm/lattice.cpp b/gm/lattice.cpp
index 93101f6..8ae0f5c 100644
--- a/gm/lattice.cpp
+++ b/gm/lattice.cpp
@@ -96,9 +96,7 @@
     LatticeGM() {}
 
 protected:
-    SkString onShortName() override {
-        return SkString("lattice");
-    }
+    SkString getName() const override { return SkString("lattice"); }
 
     SkISize onISize() override {
         return SkISize::Make(800, 800);
@@ -230,9 +228,7 @@
 class LatticeGM2 : public skiagm::GM {
 public:
     LatticeGM2() {}
-    SkString onShortName() override {
-        return SkString("lattice2");
-    }
+    SkString getName() const override { return SkString("lattice2"); }
 
     SkISize onISize() override {
         return SkISize::Make(800, 800);
diff --git a/gm/lazytiling.cpp b/gm/lazytiling.cpp
index 97a3852..bdf086b 100644
--- a/gm/lazytiling.cpp
+++ b/gm/lazytiling.cpp
@@ -182,8 +182,7 @@
     }
 
 protected:
-
-    SkString onShortName() override {
+    SkString getName() const override {
         return SkStringPrintf("lazytiling_%s", fOrigin == kTopLeft_GrSurfaceOrigin ? "tl" : "bl");
     }
 
diff --git a/gm/lcdblendmodes.cpp b/gm/lcdblendmodes.cpp
index 67d4a60..a5b2da8 100644
--- a/gm/lcdblendmodes.cpp
+++ b/gm/lcdblendmodes.cpp
@@ -53,9 +53,7 @@
     }
 
 protected:
-    SkString onShortName() override {
-        return SkString("lcdblendmodes");
-    }
+    SkString getName() const override { return SkString("lcdblendmodes"); }
 
     void onOnceBeforeDraw() override {
         fCheckerboard = ToolUtils::create_checkerboard_shader(SK_ColorBLACK, SK_ColorWHITE, 4);
diff --git a/gm/lcdoverlap.cpp b/gm/lcdoverlap.cpp
index bcaccfb..f2f8c69 100644
--- a/gm/lcdoverlap.cpp
+++ b/gm/lcdoverlap.cpp
@@ -34,9 +34,7 @@
     }
 
 protected:
-    SkString onShortName() override {
-        return SkString("lcdoverlap");
-    }
+    SkString getName() const override { return SkString("lcdoverlap"); }
 
     void onOnceBeforeDraw() override {
         // build text blob
diff --git a/gm/lcdtext.cpp b/gm/lcdtext.cpp
index 8264a29..5bcd1c2 100644
--- a/gm/lcdtext.cpp
+++ b/gm/lcdtext.cpp
@@ -23,7 +23,7 @@
     static constexpr SkScalar kTextHeight = 36;
     SkScalar fY = kTextHeight;
 
-    SkString onShortName() override { return SkString("lcdtext"); }
+    SkString getName() const override { return SkString("lcdtext"); }
 
     SkISize onISize() override { return {640, 480}; }
 
@@ -69,7 +69,7 @@
         canvas->concat(m);
     }
 
-    SkString onShortName() override { return SkString("lcdtextsize"); }
+    SkString getName() const override { return SkString("lcdtextsize"); }
 
     SkISize onISize() override { return {320, 120}; }
 
@@ -107,7 +107,7 @@
 class SaveLayerPreserveLCDTextGM : public skiagm::GM {
     static constexpr SkScalar kTextHeight = 36;
 
-    SkString onShortName() override { return SkString("savelayerpreservelcdtext"); }
+    SkString getName() const override { return SkString("savelayerpreservelcdtext"); }
 
     SkISize onISize() override { return {620, 300}; }
 
diff --git a/gm/lighting.cpp b/gm/lighting.cpp
index 1d78234..2fb2a9b 100644
--- a/gm/lighting.cpp
+++ b/gm/lighting.cpp
@@ -34,10 +34,7 @@
     }
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("lighting");
-    }
+    SkString getName() const override { return SkString("lighting"); }
 
     SkISize onISize() override {
         return SkISize::Make(WIDTH, HEIGHT);
diff --git a/gm/localmatrixshader.cpp b/gm/localmatrixshader.cpp
index 42f8473..873dee2 100644
--- a/gm/localmatrixshader.cpp
+++ b/gm/localmatrixshader.cpp
@@ -222,9 +222,7 @@
     LocalMatrixOrder() {}
 
 protected:
-    SkString onShortName() override {
-        return SkString("localmatrix_order");
-    }
+    SkString getName() const override { return SkString("localmatrix_order"); }
 
     SkISize onISize() override { return SkISize::Make(500, 500); }
 
diff --git a/gm/lumafilter.cpp b/gm/lumafilter.cpp
index e9236f0..a68301e 100644
--- a/gm/lumafilter.cpp
+++ b/gm/lumafilter.cpp
@@ -114,9 +114,7 @@
                                             SkTileMode::kClamp);
     }
 
-    SkString onShortName() override {
-        return SkString("lumafilter");
-    }
+    SkString getName() const override { return SkString("lumafilter"); }
 
     SkISize onISize() override {
         return SkISize::Make(600, 420);
diff --git a/gm/mac_aa_explorer.cpp b/gm/mac_aa_explorer.cpp
index 45e51f0..3f20ab0 100644
--- a/gm/mac_aa_explorer.cpp
+++ b/gm/mac_aa_explorer.cpp
@@ -115,7 +115,7 @@
 
     SkISize onISize() override { return { 1024, 768 }; }
 
-    SkString onShortName() override { return SkString("macaatest"); }
+    SkString getName() const override { return SkString("macaatest"); }
 
     bool onChar(SkUnichar uni) override {
         switch (uni) {
diff --git a/gm/mandoline.cpp b/gm/mandoline.cpp
index cd9705c..f2d2fbf 100644
--- a/gm/mandoline.cpp
+++ b/gm/mandoline.cpp
@@ -142,9 +142,7 @@
     }
 
 protected:
-    SkString onShortName() override {
-        return SkString("mandoline");
-    }
+    SkString getName() const override { return SkString("mandoline"); }
 
     SkISize onISize() override {
         return SkISize::Make(560, 475);
diff --git a/gm/manypathatlases.cpp b/gm/manypathatlases.cpp
index da2ac65..68edc81 100644
--- a/gm/manypathatlases.cpp
+++ b/gm/manypathatlases.cpp
@@ -29,7 +29,9 @@
 public:
     ManyPathAtlasesGM(int maxAtlasSize) : fMaxAtlasSize(maxAtlasSize) {}
 private:
-    SkString onShortName() override { return SkStringPrintf("manypathatlases_%i", fMaxAtlasSize); }
+    SkString getName() const override {
+        return SkStringPrintf("manypathatlases_%i", fMaxAtlasSize);
+    }
     SkISize onISize() override { return SkISize::Make(128, 128); }
 
     void modifyGrContextOptions(GrContextOptions* ctxOptions) override {
diff --git a/gm/manypaths.cpp b/gm/manypaths.cpp
index f5f38fa..3241816 100644
--- a/gm/manypaths.cpp
+++ b/gm/manypaths.cpp
@@ -40,9 +40,7 @@
     static const int kWidth = 800;
     static const int kHeight = 600;
 
-    SkString onShortName() override {
-        return SkString("manycircles");
-    }
+    SkString getName() const override { return SkString("manycircles"); }
 
     SkISize onISize() override {
         return SkISize::Make(kWidth, kHeight);
@@ -78,10 +76,7 @@
     }
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("manyrrects");
-    }
+    SkString getName() const override { return SkString("manyrrects"); }
 
     SkISize onISize() override {
         return SkISize::Make(800, 300);
diff --git a/gm/matrixconvolution.cpp b/gm/matrixconvolution.cpp
index d1ba3b1..4d2de79 100644
--- a/gm/matrixconvolution.cpp
+++ b/gm/matrixconvolution.cpp
@@ -46,10 +46,7 @@
     }
 
 protected:
-
-    SkString onShortName() override {
-        return SkStringPrintf("matrixconvolution%s", fNameSuffix);
-    }
+    SkString getName() const override { return SkStringPrintf("matrixconvolution%s", fNameSuffix); }
 
     void makeBitmap() {
         // Draw our bitmap in N32, so legacy devices get "premul" values they understand
diff --git a/gm/mesh.cpp b/gm/mesh.cpp
index e5adc6c..20c0ef2 100644
--- a/gm/mesh.cpp
+++ b/gm/mesh.cpp
@@ -139,7 +139,7 @@
         this->ensureBuffers();
     }
 
-    SkString onShortName() override { return SkString("custommesh"); }
+    SkString getName() const override { return SkString("custommesh"); }
 
     DrawResult onDraw(SkCanvas* canvas, SkString*) override {
         int i = 0;
@@ -403,7 +403,7 @@
         fVB = SkMeshes::MakeVertexBuffer(kQuad, sizeof(kQuad));
     }
 
-    SkString onShortName() override { return SkString("custommesh_cs"); }
+    SkString getName() const override { return SkString("custommesh_cs"); }
 
     DrawResult onDraw(SkCanvas* canvas, SkString* error) override {
         // Force an intermediate surface if the canvas is in "legacy" mode
@@ -561,7 +561,7 @@
         fVB = SkMeshes::MakeVertexBuffer(kQuad, sizeof(kQuad));
     }
 
-    SkString onShortName() override { return SkString("custommesh_uniforms"); }
+    SkString getName() const override { return SkString("custommesh_uniforms"); }
 
     DrawResult onDraw(SkCanvas* canvas, SkString* error) override {
         SkMatrix matrices[] {
@@ -712,7 +712,7 @@
                 SkTileMode::kClamp, SkTileMode::kClamp, SkFilterMode::kLinear);
     }
 
-    SkString onShortName() override { return SkString("mesh_updates"); }
+    SkString getName() const override { return SkString("mesh_updates"); }
 
     DrawResult onDraw(SkCanvas* canvas, SkString* error) override {
         canvas->clear(SK_ColorBLACK);
@@ -931,7 +931,7 @@
         fSpec[1] = std::move(result.specification);
     }
 
-    SkString onShortName() override { return SkString("mesh_zero_init"); }
+    SkString getName() const override { return SkString("mesh_zero_init"); }
 
     DrawResult onDraw(SkCanvas* canvas, SkString* error) override {
         GrRecordingContext* rc = canvas->recordingContext();
@@ -1092,7 +1092,7 @@
                                               /*localMatrix=*/nullptr);
     }
 
-    SkString onShortName() override { return SkString("picture_mesh"); }
+    SkString getName() const override { return SkString("picture_mesh"); }
 
     DrawResult onDraw(SkCanvas* canvas, SkString* error) override {
         SkPaint paint;
diff --git a/gm/mixedtextblobs.cpp b/gm/mixedtextblobs.cpp
index a84726e..894062f 100644
--- a/gm/mixedtextblobs.cpp
+++ b/gm/mixedtextblobs.cpp
@@ -103,9 +103,7 @@
         fBlob = builder.make();
     }
 
-    SkString onShortName() override {
-        return SkString("mixedtextblobs");
-    }
+    SkString getName() const override { return SkString("mixedtextblobs"); }
 
     SkISize onISize() override {
         return SkISize::Make(kWidth, kHeight);
diff --git a/gm/mixercolorfilter.cpp b/gm/mixercolorfilter.cpp
index 0451369..042a62e 100644
--- a/gm/mixercolorfilter.cpp
+++ b/gm/mixercolorfilter.cpp
@@ -71,9 +71,7 @@
         , fTileCount(tileCount) {}
 
 protected:
-    SkString onShortName() override {
-        return SkString("mixerCF");
-    }
+    SkString getName() const override { return SkString("mixerCF"); }
 
     SkISize onISize() override {
         return SkISize::Make(fTileSize.width()  * 1.2f * fTileCount,
diff --git a/gm/modecolorfilters.cpp b/gm/modecolorfilters.cpp
index 9c17ed2..c0dc7a9 100644
--- a/gm/modecolorfilters.cpp
+++ b/gm/modecolorfilters.cpp
@@ -73,9 +73,7 @@
     }
 
 protected:
-    SkString onShortName() override  {
-        return SkString("modecolorfilters");
-    }
+    SkString getName() const override { return SkString("modecolorfilters"); }
 
     SkISize onISize() override  {
         return SkISize::Make(WIDTH, HEIGHT);
diff --git a/gm/morphology.cpp b/gm/morphology.cpp
index 6bb56a2..6c1f3b3 100644
--- a/gm/morphology.cpp
+++ b/gm/morphology.cpp
@@ -32,9 +32,7 @@
     }
 
 protected:
-    SkString onShortName() override {
-        return SkString("morphology");
-    }
+    SkString getName() const override { return SkString("morphology"); }
 
     void onOnceBeforeDraw() override {
         auto surf = SkSurfaces::Raster(SkImageInfo::MakeN32Premul(135, 135));
diff --git a/gm/nested.cpp b/gm/nested.cpp
index b50cd41..0210481 100644
--- a/gm/nested.cpp
+++ b/gm/nested.cpp
@@ -28,8 +28,7 @@
     }
 
 protected:
-
-    SkString onShortName() override {
+    SkString getName() const override {
         SkString name("nested");
         if (fFlipped) {
             name.append("_flipY");
diff --git a/gm/ninepatchstretch.cpp b/gm/ninepatchstretch.cpp
index 6ae717b..197de3c 100644
--- a/gm/ninepatchstretch.cpp
+++ b/gm/ninepatchstretch.cpp
@@ -61,9 +61,7 @@
     NinePatchStretchGM() {}
 
 protected:
-    SkString onShortName() override {
-        return SkString("ninepatch-stretch");
-    }
+    SkString getName() const override { return SkString("ninepatch-stretch"); }
 
     SkISize onISize() override {
         return SkISize::Make(760, 800);
diff --git a/gm/nonclosedpaths.cpp b/gm/nonclosedpaths.cpp
index 0551964..bf54278 100644
--- a/gm/nonclosedpaths.cpp
+++ b/gm/nonclosedpaths.cpp
@@ -37,10 +37,7 @@
     };
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("nonclosedpaths");
-    }
+    SkString getName() const override { return SkString("nonclosedpaths"); }
 
     // 12 * 18 + 3 cases, every case is 100 * 100 pixels.
     SkISize onISize() override {
diff --git a/gm/offsetimagefilter.cpp b/gm/offsetimagefilter.cpp
index 63908d8..a859873 100644
--- a/gm/offsetimagefilter.cpp
+++ b/gm/offsetimagefilter.cpp
@@ -35,9 +35,7 @@
     }
 
 protected:
-    SkString onShortName() override {
-        return SkString("offsetimagefilter");
-    }
+    SkString getName() const override { return SkString("offsetimagefilter"); }
 
     SkISize onISize() override {
         return SkISize::Make(WIDTH, HEIGHT);
@@ -107,9 +105,7 @@
     SimpleOffsetImageFilterGM() {}
 
 protected:
-    SkString onShortName() override {
-        return SkString("simple-offsetimagefilter");
-    }
+    SkString getName() const override { return SkString("simple-offsetimagefilter"); }
 
     SkISize onISize() override { return SkISize::Make(640, 200); }
 
diff --git a/gm/ovals.cpp b/gm/ovals.cpp
index 715091d..710de1a 100644
--- a/gm/ovals.cpp
+++ b/gm/ovals.cpp
@@ -36,10 +36,7 @@
     }
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("ovals");
-    }
+    SkString getName() const override { return SkString("ovals"); }
 
     SkISize onISize() override {
         return SkISize::Make(1200, 900);
diff --git a/gm/overdrawcolorfilter.cpp b/gm/overdrawcolorfilter.cpp
index fcf5337..6b76117 100644
--- a/gm/overdrawcolorfilter.cpp
+++ b/gm/overdrawcolorfilter.cpp
@@ -31,9 +31,7 @@
 }
 
 struct OverdrawColorFilter : public skiagm::GM {
-    SkString onShortName() override {
-        return SkString{"overdrawcolorfilter"};
-    }
+    SkString getName() const override { return SkString{"overdrawcolorfilter"}; }
 
     SkISize onISize() override { return {200, 400}; }
 
diff --git a/gm/palette.cpp b/gm/palette.cpp
index ae7dc54..8945eb0 100644
--- a/gm/palette.cpp
+++ b/gm/palette.cpp
@@ -92,7 +92,7 @@
                 GetResourceAsStream(kColrCpalTestFontPath), paletteArguments);
     }
 
-    SkString onShortName() override {
+    SkString getName() const override {
         SkString gm_name = SkStringPrintf("font_palette_%s", fName.c_str());
         return gm_name;
     }
diff --git a/gm/pathcontourstart.cpp b/gm/pathcontourstart.cpp
index cf92309..c0c1933 100644
--- a/gm/pathcontourstart.cpp
+++ b/gm/pathcontourstart.cpp
@@ -48,9 +48,7 @@
         fRect = SkRect::MakeLTRB(10, 10, 100, 70);
     }
 
-    SkString onShortName() override {
-        return SkString("contour_start");
-    }
+    SkString getName() const override { return SkString("contour_start"); }
 
     SkISize onISize() override { return SkISize::Make(kImageWidth, kImageHeight); }
 
diff --git a/gm/patheffects.cpp b/gm/patheffects.cpp
index 045b765..c1147e4 100644
--- a/gm/patheffects.cpp
+++ b/gm/patheffects.cpp
@@ -117,10 +117,7 @@
     PathEffectGM() {}
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("patheffect");
-    }
+    SkString getName() const override { return SkString("patheffect"); }
 
     SkISize onISize() override { return SkISize::Make(800, 600); }
 
@@ -184,10 +181,7 @@
     ComboPathEfectsGM() {}
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("combo-patheffects");
-    }
+    SkString getName() const override { return SkString("combo-patheffects"); }
 
     SkISize onISize() override { return SkISize::Make(360, 630); }
 
@@ -362,7 +356,7 @@
 
 class CTMPathEffectGM : public skiagm::GM {
 protected:
-    SkString onShortName() override { return SkString("ctmpatheffect"); }
+    SkString getName() const override { return SkString("ctmpatheffect"); }
 
     SkISize onISize() override { return SkISize::Make(800, 600); }
 
diff --git a/gm/pathfill.cpp b/gm/pathfill.cpp
index caa6641..f314739 100644
--- a/gm/pathfill.cpp
+++ b/gm/pathfill.cpp
@@ -317,10 +317,7 @@
         fVisualizerPath = make_visualizer();
     }
 
-
-    SkString onShortName() override {
-        return SkString("pathfill");
-    }
+    SkString getName() const override { return SkString("pathfill"); }
 
     SkISize onISize() override {
         return SkISize::Make(640, 480);
@@ -367,9 +364,7 @@
         }
     }
 
-    SkString onShortName() override {
-        return SkString("pathinvfill");
-    }
+    SkString getName() const override { return SkString("pathinvfill"); }
 
     SkISize onISize() override {
         return SkISize::Make(450, 220);
diff --git a/gm/pathinterior.cpp b/gm/pathinterior.cpp
index 636e5f5..691db013 100644
--- a/gm/pathinterior.cpp
+++ b/gm/pathinterior.cpp
@@ -33,9 +33,7 @@
         return SkISize::Make(770, 770);
     }
 
-    SkString onShortName() override {
-        return SkString("pathinterior");
-    }
+    SkString getName() const override { return SkString("pathinterior"); }
 
     void show(SkCanvas* canvas, const SkPath& path) {
         SkPaint paint;
diff --git a/gm/pathmaskcache.cpp b/gm/pathmaskcache.cpp
index 866df55..63f28a0 100644
--- a/gm/pathmaskcache.cpp
+++ b/gm/pathmaskcache.cpp
@@ -26,7 +26,7 @@
     PathMaskCache() {}
 
 protected:
-    SkString onShortName() override { return SkString("path_mask_cache"); }
+    SkString getName() const override { return SkString("path_mask_cache"); }
 
     SkISize onISize() override {
         return SkISize::Make(650, 950);
diff --git a/gm/pathopsinverse.cpp b/gm/pathopsinverse.cpp
index c52a88f..d944b65 100644
--- a/gm/pathopsinverse.cpp
+++ b/gm/pathopsinverse.cpp
@@ -57,9 +57,7 @@
         paint->setColor(color);
     }
 
-    SkString onShortName() override {
-        return SkString("pathopsinverse");
-    }
+    SkString getName() const override { return SkString("pathopsinverse"); }
 
     SkISize onISize() override {
         return SkISize::Make(1200, 900);
diff --git a/gm/perlinnoise.cpp b/gm/perlinnoise.cpp
index 438d85e..9a87301 100644
--- a/gm/perlinnoise.cpp
+++ b/gm/perlinnoise.cpp
@@ -55,7 +55,7 @@
 
     void onOnceBeforeDraw() override { this->setBGColor(0xFF000000); }
 
-    SkString onShortName() override { return SkString("perlinnoise"); }
+    SkString getName() const override { return SkString("perlinnoise"); }
 
     SkISize onISize() override { return {200, 500}; }
 
@@ -132,7 +132,7 @@
 class PerlinNoiseLocalMatrixGM : public skiagm::GM {
     SkISize fSize = {80, 80};
 
-    SkString onShortName() override { return SkString("perlinnoise_localmatrix"); }
+    SkString getName() const override { return SkString("perlinnoise_localmatrix"); }
 
     SkISize onISize() override { return {640, 480}; }
 
@@ -196,7 +196,7 @@
     static constexpr int kCellsX = 3;
     static constexpr int kCellsY = 2;
 
-    SkString onShortName() override { return SkString("perlinnoise_rotated"); }
+    SkString getName() const override { return SkString("perlinnoise_rotated"); }
 
     SkISize onISize() override { return { 2*kPad + kCellsX*kCellSize.width(),
                                           2*kPad + kCellsY*kCellSize.height() }; }
@@ -247,7 +247,7 @@
 
 // Demonstrate skbug.com/14411 (Intel GPUs show artifacts when applying perlin noise to layers)
 class PerlinNoiseLayeredGM : public skiagm::GM {
-    SkString onShortName() override { return SkString("perlinnoise_layered"); }
+    SkString getName() const override { return SkString("perlinnoise_layered"); }
 
     SkISize onISize() override { return {500, 500}; }
 
diff --git a/gm/perspimages.cpp b/gm/perspimages.cpp
index 3d5f9c4..b1b07b4 100644
--- a/gm/perspimages.cpp
+++ b/gm/perspimages.cpp
@@ -37,7 +37,7 @@
     PerspImages() = default;
 
 protected:
-    SkString onShortName() override { return SkString("persp_images"); }
+    SkString getName() const override { return SkString("persp_images"); }
 
     SkISize onISize() override { return SkISize::Make(1150, 1280); }
 
diff --git a/gm/perspshaders.cpp b/gm/perspshaders.cpp
index 7fd0dad..15327da 100644
--- a/gm/perspshaders.cpp
+++ b/gm/perspshaders.cpp
@@ -43,7 +43,7 @@
     PerspShadersGM(bool doAA) : fDoAA(doAA) { }
 
 protected:
-    SkString onShortName() override {
+    SkString getName() const override {
         SkString name;
         name.printf("persp_shaders_%s",
                      fDoAA ? "aa" : "bw");
diff --git a/gm/persptext.cpp b/gm/persptext.cpp
index e09d7fa..27ca39c 100644
--- a/gm/persptext.cpp
+++ b/gm/persptext.cpp
@@ -33,8 +33,7 @@
     }
 
 protected:
-
-    SkString onShortName() override {
+    SkString getName() const override {
         return SkString(fMinimal ? "persptext_minimal" : "persptext");
     }
 
diff --git a/gm/picture.cpp b/gm/picture.cpp
index 18c4d38..b3c0c0a 100644
--- a/gm/picture.cpp
+++ b/gm/picture.cpp
@@ -55,9 +55,7 @@
          fPicture = make_picture();
     }
 
-    SkString onShortName() override {
-        return SkString("pictures");
-    }
+    SkString getName() const override { return SkString("pictures"); }
 
     SkISize onISize() override {
         return SkISize::Make(450, 120);
@@ -123,9 +121,7 @@
         SkASSERT(fPicture->cullRect().top() == 80);
     }
 
-    SkString onShortName() override {
-        return SkString("picture_cull_rect");
-    }
+    SkString getName() const override { return SkString("picture_cull_rect"); }
 
     SkISize onISize() override {
         return SkISize::Make(120, 120);
diff --git a/gm/pictureimagefilter.cpp b/gm/pictureimagefilter.cpp
index 3ec0cba..48b96e7 100644
--- a/gm/pictureimagefilter.cpp
+++ b/gm/pictureimagefilter.cpp
@@ -66,9 +66,7 @@
     PictureImageFilterGM() { }
 
 protected:
-    SkString onShortName() override {
-        return SkString("pictureimagefilter");
-    }
+    SkString getName() const override { return SkString("pictureimagefilter"); }
 
     SkISize onISize() override { return SkISize::Make(600, 300); }
 
diff --git a/gm/pictureimagegenerator.cpp b/gm/pictureimagegenerator.cpp
index 685e3ca..57044b5 100644
--- a/gm/pictureimagegenerator.cpp
+++ b/gm/pictureimagegenerator.cpp
@@ -118,9 +118,7 @@
 // (in particular its matrix vs. bounds semantics).
 class PictureGeneratorGM : public skiagm::GM {
 protected:
-    SkString onShortName() override {
-        return SkString("pictureimagegenerator");
-    }
+    SkString getName() const override { return SkString("pictureimagegenerator"); }
 
     SkISize onISize() override {
         return SkISize::Make(1160, 860);
diff --git a/gm/pictureshader.cpp b/gm/pictureshader.cpp
index 2aca736..b1d40d3 100644
--- a/gm/pictureshader.cpp
+++ b/gm/pictureshader.cpp
@@ -59,8 +59,7 @@
         this->drawTile(&bitmapCanvas);
     }
 
-
-    SkString onShortName() override {
+    SkString getName() const override {
         return SkStringPrintf("pictureshader%s%s",
                               fUseLocalMatrixWrapper ? "_localwrapper" : "",
                               fAlpha < 1 ? "_alpha" : "");
diff --git a/gm/pictureshadercache.cpp b/gm/pictureshadercache.cpp
index cf79826..58b4a1a 100644
--- a/gm/pictureshadercache.cpp
+++ b/gm/pictureshadercache.cpp
@@ -57,9 +57,7 @@
         fPicture = recorder.finishRecordingAsPicture();
     }
 
-    SkString onShortName() override {
-        return SkString("pictureshadercache");
-    }
+    SkString getName() const override { return SkString("pictureshadercache"); }
 
     SkISize onISize() override {
         return SkISize::Make(100, 100);
diff --git a/gm/pictureshadertile.cpp b/gm/pictureshadertile.cpp
index 5d2a81a..c2548ca 100644
--- a/gm/pictureshadertile.cpp
+++ b/gm/pictureshadertile.cpp
@@ -93,10 +93,7 @@
 
 class PictureShaderTileGM : public skiagm::GM {
 protected:
-
-    SkString onShortName() override {
-        return SkString("pictureshadertile");
-    }
+    SkString getName() const override { return SkString("pictureshadertile"); }
 
     SkISize onISize() override {
         return SkISize::Make(800, 600);
diff --git a/gm/png_codec.cpp b/gm/png_codec.cpp
index d310856..b3c21e1 100644
--- a/gm/png_codec.cpp
+++ b/gm/png_codec.cpp
@@ -210,7 +210,7 @@
 protected:
     // Based on CodecSrc::name().
     // https://skia.googlesource.com/skia/+/ce49fc71bc7cc25244020cd3e64764a6d08e54fb/dm/DMSrcSink.cpp#828
-    SkString onShortName() override {
+    SkString getName() const override {
         SkString name = SkOSPath::Basename(fPath.c_str());
         return name;
     }
diff --git a/gm/points.cpp b/gm/points.cpp
index 0bf5cc1..b98af68 100644
--- a/gm/points.cpp
+++ b/gm/points.cpp
@@ -25,10 +25,7 @@
     PointsGM() {}
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("points");
-    }
+    SkString getName() const override { return SkString("points"); }
 
     SkISize onISize() override {
         return SkISize::Make(640, 490);
diff --git a/gm/poly2poly.cpp b/gm/poly2poly.cpp
index c8695b9..7a6aa21 100644
--- a/gm/poly2poly.cpp
+++ b/gm/poly2poly.cpp
@@ -30,10 +30,7 @@
     Poly2PolyGM() {}
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("poly2poly");
-    }
+    SkString getName() const override { return SkString("poly2poly"); }
 
     SkISize onISize() override {
         return SkISize::Make(835, 840);
diff --git a/gm/polygonoffset.cpp b/gm/polygonoffset.cpp
index f102711..cf6c755 100644
--- a/gm/polygonoffset.cpp
+++ b/gm/polygonoffset.cpp
@@ -429,7 +429,7 @@
     }
 
 protected:
-    SkString onShortName() override {
+    SkString getName() const override {
         if (fConvexOnly) {
             return SkString("convex-polygon-inset");
         } else {
diff --git a/gm/polygons.cpp b/gm/polygons.cpp
index 7112574..8ef9a15 100644
--- a/gm/polygons.cpp
+++ b/gm/polygons.cpp
@@ -30,10 +30,7 @@
     PolygonsGM() {}
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("polygons");
-    }
+    SkString getName() const override { return SkString("polygons"); }
 
     SkISize onISize() override {
         int width = kNumPolygons * kCellSize + 40;
diff --git a/gm/postercircle.cpp b/gm/postercircle.cpp
index a271ad0..3b4150a 100644
--- a/gm/postercircle.cpp
+++ b/gm/postercircle.cpp
@@ -31,10 +31,7 @@
     PosterCircleGM() : fTime(0.f) {}
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("poster_circle");
-    }
+    SkString getName() const override { return SkString("poster_circle"); }
 
     SkISize onISize() override {
         return SkISize::Make(kStageWidth, kStageHeight + 50);
diff --git a/gm/preservefillrule.cpp b/gm/preservefillrule.cpp
index 570c3ec..3996097 100644
--- a/gm/preservefillrule.cpp
+++ b/gm/preservefillrule.cpp
@@ -38,7 +38,7 @@
     PreserveFillRuleGM(bool big) : fBig(big) , fStarSize((big) ? 200 : 20) {}
 
 private:
-    SkString onShortName() override {
+    SkString getName() const override {
         SkString name("preservefillrule");
         name += (fBig) ? "_big" : "_little";
         return name;
diff --git a/gm/quadpaths.cpp b/gm/quadpaths.cpp
index 25fb68b..25b39a2 100644
--- a/gm/quadpaths.cpp
+++ b/gm/quadpaths.cpp
@@ -27,10 +27,7 @@
     QuadPathGM() {}
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("quadpath");
-    }
+    SkString getName() const override { return SkString("quadpath"); }
 
     SkISize onISize() override { return SkISize::Make(1240, 390); }
 
@@ -157,10 +154,7 @@
     QuadClosePathGM() {}
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("quadclosepath");
-    }
+    SkString getName() const override { return SkString("quadclosepath"); }
 
     SkISize onISize() override { return SkISize::Make(1240, 390); }
 
diff --git a/gm/readpixels.cpp b/gm/readpixels.cpp
index 3513530..595ac06 100644
--- a/gm/readpixels.cpp
+++ b/gm/readpixels.cpp
@@ -131,9 +131,7 @@
     ReadPixelsGM() {}
 
 protected:
-    SkString onShortName() override {
-        return SkString("readpixels");
-    }
+    SkString getName() const override { return SkString("readpixels"); }
 
     SkISize onISize() override {
         return SkISize::Make(6 * kWidth, 9 * kHeight);
@@ -191,9 +189,7 @@
     ReadPixelsCodecGM() {}
 
 protected:
-    SkString onShortName() override {
-        return SkString("readpixelscodec");
-    }
+    SkString getName() const override { return SkString("readpixelscodec"); }
 
     SkISize onISize() override {
         return SkISize::Make(3 * (kEncodedWidth + 1), 12 * (kEncodedHeight + 1));
@@ -255,9 +251,7 @@
     ReadPixelsPictureGM() {}
 
 protected:
-    SkString onShortName() override {
-        return SkString("readpixelspicture");
-    }
+    SkString getName() const override { return SkString("readpixelspicture"); }
 
     SkISize onISize() override {
         return SkISize::Make(3 * kWidth, 12 * kHeight);
diff --git a/gm/rectangletexture.cpp b/gm/rectangletexture.cpp
index 2b5aa81..9c68454 100644
--- a/gm/rectangletexture.cpp
+++ b/gm/rectangletexture.cpp
@@ -54,9 +54,7 @@
         k2x2
     };
 
-    SkString onShortName() override {
-        return SkString("rectangle_texture");
-    }
+    SkString getName() const override { return SkString("rectangle_texture"); }
 
     SkISize onISize() override { return SkISize::Make(1180, 710); }
 
diff --git a/gm/resizeimagefilter.cpp b/gm/resizeimagefilter.cpp
index 866c446..9d96399 100644
--- a/gm/resizeimagefilter.cpp
+++ b/gm/resizeimagefilter.cpp
@@ -31,9 +31,7 @@
     }
 
 protected:
-    SkString onShortName() override {
-        return SkString("resizeimagefilter");
-    }
+    SkString getName() const override { return SkString("resizeimagefilter"); }
 
     void draw(SkCanvas* canvas,
               const SkRect& rect,
diff --git a/gm/rippleshadergm.cpp b/gm/rippleshadergm.cpp
index ef1c5fa..910eeb7 100644
--- a/gm/rippleshadergm.cpp
+++ b/gm/rippleshadergm.cpp
@@ -52,7 +52,7 @@
         fEffect = std::move(effect);
     }
 
-    SkString onShortName() override { return SkString("rippleshader"); }
+    SkString getName() const override { return SkString("rippleshader"); }
     SkISize onISize() override { return kSize; }
     bool onAnimate(double nanos) override {
         fMillis = nanos / (1000. * 1000.);
diff --git a/gm/roundrects.cpp b/gm/roundrects.cpp
index 31c41d3..95a5504 100644
--- a/gm/roundrects.cpp
+++ b/gm/roundrects.cpp
@@ -46,10 +46,7 @@
     }
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("roundrects");
-    }
+    SkString getName() const override { return SkString("roundrects"); }
 
     SkISize onISize() override {
         return SkISize::Make(1200, 900);
diff --git a/gm/rrect.cpp b/gm/rrect.cpp
index b8c664c..49c1f42 100644
--- a/gm/rrect.cpp
+++ b/gm/rrect.cpp
@@ -134,10 +134,7 @@
     RRectGM() {}
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("rrect");
-    }
+    SkString getName() const override { return SkString("rrect"); }
 
     SkISize onISize() override {
         return SkISize::Make(820, 710);
diff --git a/gm/rrects.cpp b/gm/rrects.cpp
index 179f62a..e97c53c 100644
--- a/gm/rrects.cpp
+++ b/gm/rrects.cpp
@@ -55,7 +55,7 @@
         this->setUpRRects();
     }
 
-    SkString onShortName() override {
+    SkString getName() const override {
         SkString name("rrect");
         switch (fType) {
             case kBW_Draw_Type:
diff --git a/gm/rsxtext.cpp b/gm/rsxtext.cpp
index 9643b29..73c4fd3 100644
--- a/gm/rsxtext.cpp
+++ b/gm/rsxtext.cpp
@@ -19,9 +19,7 @@
 class RSXShaderGM : public skiagm::GM {
 public:
 private:
-    SkString onShortName() override {
-        return SkString("rsx_blob_shader");
-    }
+    SkString getName() const override { return SkString("rsx_blob_shader"); }
 
     SkISize onISize() override {
         return SkISize::Make(kSZ*kScale*2.1f, kSZ*kScale*2.1f);
diff --git a/gm/runtimecolorfilter.cpp b/gm/runtimecolorfilter.cpp
index ebde682..343fc12 100644
--- a/gm/runtimecolorfilter.cpp
+++ b/gm/runtimecolorfilter.cpp
@@ -90,9 +90,7 @@
     RuntimeColorFilterGM() = default;
 
 protected:
-    SkString onShortName() override {
-        return SkString("runtimecolorfilter");
-    }
+    SkString getName() const override { return SkString("runtimecolorfilter"); }
 
     SkISize onISize() override {
         return SkISize::Make(256 * 3, 256 * 2);
diff --git a/gm/runtimefunctions.cpp b/gm/runtimefunctions.cpp
index 4da6a97..67c214d 100644
--- a/gm/runtimefunctions.cpp
+++ b/gm/runtimefunctions.cpp
@@ -39,7 +39,7 @@
 class RuntimeFunctions : public skiagm::GM {
     bool runAsBench() const override { return true; }
 
-    SkString onShortName() override { return SkString("runtimefunctions"); }
+    SkString getName() const override { return SkString("runtimefunctions"); }
 
     SkISize onISize() override { return {256, 256}; }
 
diff --git a/gm/runtimeshader.cpp b/gm/runtimeshader.cpp
index ff0c013..8599935 100644
--- a/gm/runtimeshader.cpp
+++ b/gm/runtimeshader.cpp
@@ -45,7 +45,7 @@
     }
 
     bool runAsBench() const override { return SkToBool(fFlags & kBench_RTFlag); }
-    SkString onShortName() override { return fName; }
+    SkString getName() const override { return fName; }
     SkISize onISize() override { return fSize; }
 
     bool onAnimate(double nanos) override {
diff --git a/gm/samplerstress.cpp b/gm/samplerstress.cpp
index 0563b60..6107908 100644
--- a/gm/samplerstress.cpp
+++ b/gm/samplerstress.cpp
@@ -38,10 +38,7 @@
     }
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("gpusamplerstress");
-    }
+    SkString getName() const override { return SkString("gpusamplerstress"); }
 
     SkISize onISize() override {
         return SkISize::Make(640, 480);
diff --git a/gm/scaledemoji.cpp b/gm/scaledemoji.cpp
index 14ef8ac..d63b54d 100644
--- a/gm/scaledemoji.cpp
+++ b/gm/scaledemoji.cpp
@@ -52,9 +52,7 @@
         fEmojiFont.fText     = ToolUtils::emoji_sample_text();
     }
 
-    SkString onShortName() override {
-        return SkString("scaledemoji");
-    }
+    SkString getName() const override { return SkString("scaledemoji"); }
 
     SkISize onISize() override { return SkISize::Make(1200, 1200); }
 
@@ -101,9 +99,7 @@
         fEmojiFont.fText     = ToolUtils::emoji_sample_text();
     }
 
-    SkString onShortName() override {
-        return SkString("scaledemojipos");
-    }
+    SkString getName() const override { return SkString("scaledemojipos"); }
 
     SkISize onISize() override { return SkISize::Make(1200, 1200); }
 
@@ -169,9 +165,7 @@
         }
     }
 
-    SkString onShortName() override {
-        return SkString("scaledemojiperspective");
-    }
+    SkString getName() const override { return SkString("scaledemojiperspective"); }
 
     SkISize onISize() override { return SkISize::Make(1200, 1200); }
 
diff --git a/gm/scaledemoji_rendering.cpp b/gm/scaledemoji_rendering.cpp
index c854ccf..5997d495 100644
--- a/gm/scaledemoji_rendering.cpp
+++ b/gm/scaledemoji_rendering.cpp
@@ -58,9 +58,7 @@
         }
     }
 
-    SkString onShortName() override {
-        return SkString("scaledemoji_rendering");
-    }
+    SkString getName() const override { return SkString("scaledemoji_rendering"); }
 
     SkISize onISize() override { return SkISize::Make(1200, 1200); }
 
diff --git a/gm/scaledrects.cpp b/gm/scaledrects.cpp
index 81fb3e7..e980552 100644
--- a/gm/scaledrects.cpp
+++ b/gm/scaledrects.cpp
@@ -24,9 +24,7 @@
     }
 
 protected:
-    SkString onShortName() override {
-        return SkString("scaledrects");
-    }
+    SkString getName() const override { return SkString("scaledrects"); }
 
     SkISize onISize() override {
         return SkISize::Make(128, 64);
diff --git a/gm/scaledstrokes.cpp b/gm/scaledstrokes.cpp
index be8eb61..9476298 100644
--- a/gm/scaledstrokes.cpp
+++ b/gm/scaledstrokes.cpp
@@ -19,10 +19,7 @@
     ScaledStrokesGM() {}
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("scaledstrokes");
-    }
+    SkString getName() const override { return SkString("scaledstrokes"); }
 
     SkISize onISize() override {
         return SkISize::Make(640, 320);
diff --git a/gm/shaderpath.cpp b/gm/shaderpath.cpp
index d188aa6..a9eb334 100644
--- a/gm/shaderpath.cpp
+++ b/gm/shaderpath.cpp
@@ -67,10 +67,7 @@
     }
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("shaderpath");
-    }
+    SkString getName() const override { return SkString("shaderpath"); }
 
     SkISize onISize() override { return SkISize::Make(820, 930); }
 
diff --git a/gm/shadertext3.cpp b/gm/shadertext3.cpp
index 0e4450d..8e0b3374 100644
--- a/gm/shadertext3.cpp
+++ b/gm/shadertext3.cpp
@@ -67,10 +67,7 @@
     }
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("shadertext3");
-    }
+    SkString getName() const override { return SkString("shadertext3"); }
 
     SkISize onISize() override { return SkISize::Make(820, 930); }
 
diff --git a/gm/shallowgradient.cpp b/gm/shallowgradient.cpp
index bfe8c64..9319b03 100644
--- a/gm/shallowgradient.cpp
+++ b/gm/shallowgradient.cpp
@@ -52,7 +52,7 @@
     const char* fName;
     bool fDither;
 
-    SkString onShortName() override {
+    SkString getName() const override {
         return SkStringPrintf("shallow_gradient_%s%s", fName, fDither ? "" : "_nodither");
     }
 
diff --git a/gm/shapes.cpp b/gm/shapes.cpp
index 1c09c1a..5451a03 100644
--- a/gm/shapes.cpp
+++ b/gm/shapes.cpp
@@ -38,7 +38,7 @@
         }
     }
 
-    SkString onShortName() final { return fName; }
+    SkString getName() const override { return fName; }
     SkISize onISize() override { return SkISize::Make(500, 500); }
 
     void onOnceBeforeDraw() override {
diff --git a/gm/sharedcorners.cpp b/gm/sharedcorners.cpp
index 3a98b25..f54ee24 100644
--- a/gm/sharedcorners.cpp
+++ b/gm/sharedcorners.cpp
@@ -36,9 +36,7 @@
     SharedCornersGM() { this->setBGColor(ToolUtils::color_to_565(0xFF1A65D7)); }
 
 protected:
-    SkString onShortName() override {
-        return SkString("sharedcorners");
-    }
+    SkString getName() const override { return SkString("sharedcorners"); }
 
     SkISize onISize() override {
         constexpr int numRows = 3 * 2;
diff --git a/gm/showmiplevels.cpp b/gm/showmiplevels.cpp
index 150a0d8..65be225 100644
--- a/gm/showmiplevels.cpp
+++ b/gm/showmiplevels.cpp
@@ -30,7 +30,7 @@
 class ShowMipLevels3 : public skiagm::GM {
     sk_sp<SkImage> fImg;
 
-    SkString onShortName() override { return SkString("showmiplevels_explicit"); }
+    SkString getName() const override { return SkString("showmiplevels_explicit"); }
 
     SkISize onISize() override { return {1130, 970}; }
 
diff --git a/gm/simpleaaclip.cpp b/gm/simpleaaclip.cpp
index 718f8f4..a8d2b0b 100644
--- a/gm/simpleaaclip.cpp
+++ b/gm/simpleaaclip.cpp
@@ -141,7 +141,7 @@
         canvas->restore();
     }
 
-    SkString onShortName() override {
+    SkString getName() const override {
         SkString str;
         str.printf("simpleaaclip_%s",
                     kRect_GeomType == fGeomType ? "rect" :
diff --git a/gm/simplerect.cpp b/gm/simplerect.cpp
index 7436ba0..18912fc 100644
--- a/gm/simplerect.cpp
+++ b/gm/simplerect.cpp
@@ -20,7 +20,7 @@
     SimpleRectGM() {}
 
 protected:
-    SkString onShortName() override {
+    SkString getName() const override {
         SkString name;
         name.printf("simplerect");
         return name;
diff --git a/gm/slug.cpp b/gm/slug.cpp
index dd5d547..7b75687 100644
--- a/gm/slug.cpp
+++ b/gm/slug.cpp
@@ -57,9 +57,7 @@
         font.textToGlyphs(fText, txtLen, SkTextEncoding::kUTF8, fGlyphs.begin(), glyphCount);
     }
 
-    SkString onShortName() override {
-        return SkString("slug");
-    }
+    SkString getName() const override { return SkString("slug"); }
 
     SkISize onISize() override {
         return SkISize::Make(1000, 480);
diff --git a/gm/smallpaths.cpp b/gm/smallpaths.cpp
index 2c94c5d..1a605c4 100644
--- a/gm/smallpaths.cpp
+++ b/gm/smallpaths.cpp
@@ -333,9 +333,7 @@
         }
     }
 
-    SkString onShortName() override {
-        return SkString("smallpaths");
-    }
+    SkString getName() const override { return SkString("smallpaths"); }
 
     SkISize onISize() override {
         return SkISize::Make(640, 512);
diff --git a/gm/spritebitmap.cpp b/gm/spritebitmap.cpp
index 2f636a2..14118d8 100644
--- a/gm/spritebitmap.cpp
+++ b/gm/spritebitmap.cpp
@@ -65,10 +65,7 @@
     SpriteBitmapGM() {}
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("spritebitmap");
-    }
+    SkString getName() const override { return SkString("spritebitmap"); }
 
     SkISize onISize() override {
         return SkISize::Make(640, 480);
diff --git a/gm/srcmode.cpp b/gm/srcmode.cpp
index 2ad19bd..e42a76b 100644
--- a/gm/srcmode.cpp
+++ b/gm/srcmode.cpp
@@ -74,7 +74,7 @@
 
     void onOnceBeforeDraw() override { this->setBGColor(SK_ColorBLACK); }
 
-    SkString onShortName() override { return SkString("srcmode"); }
+    SkString getName() const override { return SkString("srcmode"); }
 
     SkISize onISize() override { return {640, 760}; }
 
diff --git a/gm/stlouisarch.cpp b/gm/stlouisarch.cpp
index a058b41..a9c427d 100644
--- a/gm/stlouisarch.cpp
+++ b/gm/stlouisarch.cpp
@@ -21,9 +21,7 @@
 // this GM tests hairlines which fill nearly the entire render target
 class StLouisArchGM : public GM {
 protected:
-    SkString onShortName() override {
-        return SkString("stlouisarch");
-    }
+    SkString getName() const override { return SkString("stlouisarch"); }
 
     SkISize onISize() override { return SkISize::Make((int)kWidth, (int)kHeight); }
 
diff --git a/gm/stringart.cpp b/gm/stringart.cpp
index 5d53026..5c0e131 100644
--- a/gm/stringart.cpp
+++ b/gm/stringart.cpp
@@ -32,10 +32,7 @@
     StringArtGM() : fNumSteps(kMaxNumSteps) {}
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("stringart");
-    }
+    SkString getName() const override { return SkString("stringart"); }
 
     SkISize onISize() override {
         return SkISize::Make(kWidth, kHeight);
@@ -120,7 +117,7 @@
 
 protected:
 
-    SkString onShortName() override { return SkString("skottie"); }
+    SkString getName() const override { return SkString("skottie"); }
 
     SkISize onISize() override { return SkISize::Make(kWidth, kHeight); }
 
diff --git a/gm/strokedlines.cpp b/gm/strokedlines.cpp
index 63c7a64..3c6d0a6 100644
--- a/gm/strokedlines.cpp
+++ b/gm/strokedlines.cpp
@@ -128,7 +128,7 @@
     }
 
 protected:
-    SkString onShortName() override {
+    SkString getName() const override {
         // To preserve history, useDrawPath==true has no suffix.
         SkString name{"strokedlines"};
         if (!fUseDrawPath) {
diff --git a/gm/strokerect.cpp b/gm/strokerect.cpp
index 0f04de9..5020f0a 100644
--- a/gm/strokerect.cpp
+++ b/gm/strokerect.cpp
@@ -60,10 +60,7 @@
     StrokeRectGM() {}
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("strokerect");
-    }
+    SkString getName() const override { return SkString("strokerect"); }
 
     SkISize onISize() override {
         return SkISize::Make(1400, 740);
diff --git a/gm/strokerect_anisotropic.cpp b/gm/strokerect_anisotropic.cpp
index 2123130..f7d6137 100644
--- a/gm/strokerect_anisotropic.cpp
+++ b/gm/strokerect_anisotropic.cpp
@@ -35,10 +35,7 @@
     StrokeRectAnisotropicGM() {}
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("strokerect_anisotropic");
-    }
+    SkString getName() const override { return SkString("strokerect_anisotropic"); }
 
     SkISize onISize() override {
         return SkISize::Make(160, 160);
diff --git a/gm/strokerects.cpp b/gm/strokerects.cpp
index 4798333..8dc9e9e 100644
--- a/gm/strokerects.cpp
+++ b/gm/strokerects.cpp
@@ -28,8 +28,7 @@
     StrokeRectsGM(bool rotated) : fRotated(rotated) {}
 
 protected:
-
-    SkString onShortName() override {
+    SkString getName() const override {
         if (fRotated) {
             return SkString("strokerects_rotated");
         } else {
diff --git a/gm/strokes.cpp b/gm/strokes.cpp
index 76293f5..b183df5 100644
--- a/gm/strokes.cpp
+++ b/gm/strokes.cpp
@@ -54,10 +54,7 @@
     StrokesGM() {}
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("strokes_round");
-    }
+    SkString getName() const override { return SkString("strokes_round"); }
 
     SkISize onISize() override {
         return SkISize::Make(W, H*2);
@@ -118,9 +115,7 @@
         }
     }
 
-    SkString onShortName() override {
-        return SkString("zeroPath");
-    }
+    SkString getName() const override { return SkString("zeroPath"); }
 
     SkISize onISize() override {
         return SkISize::Make(W, H*2);
@@ -174,10 +169,7 @@
 };
 
 class TeenyStrokesGM : public skiagm::GM {
-
-    SkString onShortName() override {
-        return SkString("teenyStrokes");
-    }
+    SkString getName() const override { return SkString("teenyStrokes"); }
 
     SkISize onISize() override {
         return SkISize::Make(W, H*2);
@@ -296,10 +288,7 @@
         }
     }
 
-
-    SkString onShortName() override {
-        return SkString("strokes_poly");
-    }
+    SkString getName() const override { return SkString("strokes_poly"); }
 
     SkISize onISize() override {
         return SkISize::Make(W, H*2);
@@ -388,10 +377,7 @@
     Strokes3GM() {}
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("strokes3");
-    }
+    SkString getName() const override { return SkString("strokes3"); }
 
     SkISize onISize() override {
         return SkISize::Make(1500, 1500);
@@ -445,10 +431,7 @@
     Strokes4GM() {}
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("strokes_zoomed");
-    }
+    SkString getName() const override { return SkString("strokes_zoomed"); }
 
     SkISize onISize() override {
         return SkISize::Make(W, H*2);
@@ -473,10 +456,7 @@
     Strokes5GM() {}
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("zero_control_stroke");
-    }
+    SkString getName() const override { return SkString("zero_control_stroke"); }
 
     SkISize onISize() override {
         return SkISize::Make(W, H*2);
diff --git a/gm/surface.cpp b/gm/surface.cpp
index 3ffef34..fb00859 100644
--- a/gm/surface.cpp
+++ b/gm/surface.cpp
@@ -78,9 +78,7 @@
     SurfacePropsGM() {}
 
 protected:
-    SkString onShortName() override {
-        return SkString("surfaceprops");
-    }
+    SkString getName() const override { return SkString("surfaceprops"); }
 
     SkISize onISize() override {
         return SkISize::Make(W, H * 5);
@@ -133,9 +131,7 @@
     NewSurfaceGM() {}
 
 protected:
-    SkString onShortName() override {
-        return SkString("surfacenew");
-    }
+    SkString getName() const override { return SkString("surfacenew"); }
 
     SkISize onISize() override {
         return SkISize::Make(300, 140);
diff --git a/gm/tablecolorfilter.cpp b/gm/tablecolorfilter.cpp
index 2b44811..84336d5 100644
--- a/gm/tablecolorfilter.cpp
+++ b/gm/tablecolorfilter.cpp
@@ -118,9 +118,7 @@
     TableColorFilterGM() {}
 
 protected:
-    SkString onShortName() override {
-        return SkString("tablecolorfilter");
-    }
+    SkString getName() const override { return SkString("tablecolorfilter"); }
 
     SkISize onISize() override {
         return {700, 1650};
@@ -225,7 +223,7 @@
         : fColors(colors), fModes(modes), fName(name) {}
 
 private:
-    SkString onShortName() override { return SkString(fName); }
+    SkString getName() const override { return SkString(fName); }
 
     SkISize onISize() override { return {790, 790}; }
 
diff --git a/gm/tallstretchedbitmaps.cpp b/gm/tallstretchedbitmaps.cpp
index c573b0f..cc9fdff 100644
--- a/gm/tallstretchedbitmaps.cpp
+++ b/gm/tallstretchedbitmaps.cpp
@@ -67,9 +67,7 @@
     TallStretchedBitmapsGM() {}
 
 protected:
-    SkString onShortName() override {
-        return SkString("tall_stretched_bitmaps");
-    }
+    SkString getName() const override { return SkString("tall_stretched_bitmaps"); }
 
     SkISize onISize() override {
         return SkISize::Make(730, 690);
diff --git a/gm/testgradient.cpp b/gm/testgradient.cpp
index 808815c8..a6bc04c 100644
--- a/gm/testgradient.cpp
+++ b/gm/testgradient.cpp
@@ -23,9 +23,7 @@
     TestGradientGM() {}
 
 protected:
-    SkString onShortName() override {
-        return SkString("testgradient");
-    }
+    SkString getName() const override { return SkString("testgradient"); }
 
     SkISize onISize() override {
         return SkISize::Make(800, 800);
diff --git a/gm/texelsubset.cpp b/gm/texelsubset.cpp
index a40e778..76da527 100644
--- a/gm/texelsubset.cpp
+++ b/gm/texelsubset.cpp
@@ -50,7 +50,7 @@
     }
 
 protected:
-    SkString onShortName() override {
+    SkString getName() const override {
         SkString name("texel_subset");
         switch (fFilter) {
             case Filter::kNearest:
diff --git a/gm/textblob.cpp b/gm/textblob.cpp
index 04d83e1..84b05f8 100644
--- a/gm/textblob.cpp
+++ b/gm/textblob.cpp
@@ -95,9 +95,7 @@
         font.textToGlyphs(fText, txtLen, SkTextEncoding::kUTF8, fGlyphs.begin(), glyphCount);
     }
 
-    SkString onShortName() override {
-        return SkString("textblob");
-    }
+    SkString getName() const override { return SkString("textblob"); }
 
     SkISize onISize() override {
         return SkISize::Make(640, 480);
diff --git a/gm/textblobblockreordering.cpp b/gm/textblobblockreordering.cpp
index 2f93503..41a154b 100644
--- a/gm/textblobblockreordering.cpp
+++ b/gm/textblobblockreordering.cpp
@@ -50,9 +50,7 @@
         fBlob = builder.make();
     }
 
-    SkString onShortName() override {
-        return SkString("textblobblockreordering");
-    }
+    SkString getName() const override { return SkString("textblobblockreordering"); }
 
     SkISize onISize() override {
         return SkISize::Make(kWidth, kHeight);
diff --git a/gm/textblobcolortrans.cpp b/gm/textblobcolortrans.cpp
index a9a013c..44774ff 100644
--- a/gm/textblobcolortrans.cpp
+++ b/gm/textblobcolortrans.cpp
@@ -57,9 +57,7 @@
         fBlob = builder.make();
     }
 
-    SkString onShortName() override {
-        return SkString("textblobcolortrans");
-    }
+    SkString getName() const override { return SkString("textblobcolortrans"); }
 
     SkISize onISize() override {
         return SkISize::Make(kWidth, kHeight);
diff --git a/gm/textblobgeometrychange.cpp b/gm/textblobgeometrychange.cpp
index 26c0b9d..79e710f 100644
--- a/gm/textblobgeometrychange.cpp
+++ b/gm/textblobgeometrychange.cpp
@@ -29,9 +29,7 @@
     TextBlobGeometryChange() { }
 
 protected:
-    SkString onShortName() override {
-        return SkString("textblobgeometrychange");
-    }
+    SkString getName() const override { return SkString("textblobgeometrychange"); }
 
     SkISize onISize() override {
         return SkISize::Make(kWidth, kHeight);
diff --git a/gm/textblobmixedsizes.cpp b/gm/textblobmixedsizes.cpp
index d29d4e7..cfb4893 100644
--- a/gm/textblobmixedsizes.cpp
+++ b/gm/textblobmixedsizes.cpp
@@ -93,7 +93,7 @@
         fBlob = builder.make();
     }
 
-    SkString onShortName() override {
+    SkString getName() const override {
         return SkStringPrintf("textblobmixedsizes%s",
                               fUseDFT ? "_df" : "");
     }
diff --git a/gm/textblobrandomfont.cpp b/gm/textblobrandomfont.cpp
index 7c4a8202..5bb1b3f 100644
--- a/gm/textblobrandomfont.cpp
+++ b/gm/textblobrandomfont.cpp
@@ -97,9 +97,7 @@
         fBlob = builder.make();
     }
 
-    SkString onShortName() override {
-        return SkString("textblobrandomfont");
-    }
+    SkString getName() const override { return SkString("textblobrandomfont"); }
 
     SkISize onISize() override {
         return SkISize::Make(kWidth, kHeight);
diff --git a/gm/textblobshader.cpp b/gm/textblobshader.cpp
index bfad0b4..4909fc1 100644
--- a/gm/textblobshader.cpp
+++ b/gm/textblobshader.cpp
@@ -88,9 +88,7 @@
                                                SkTileMode::kRepeat);
     }
 
-    SkString onShortName() override {
-        return SkString("textblobshader");
-    }
+    SkString getName() const override { return SkString("textblobshader"); }
 
     SkISize onISize() override {
         return SkISize::Make(640, 480);
diff --git a/gm/textblobtransforms.cpp b/gm/textblobtransforms.cpp
index b5e9f83..a28d675 100644
--- a/gm/textblobtransforms.cpp
+++ b/gm/textblobtransforms.cpp
@@ -59,9 +59,7 @@
         fBlob = builder.make();
     }
 
-    SkString onShortName() override {
-        return SkString("textblobtransforms");
-    }
+    SkString getName() const override { return SkString("textblobtransforms"); }
 
     SkISize onISize() override {
         return SkISize::Make(kWidth, kHeight);
diff --git a/gm/textblobuseaftergpufree.cpp b/gm/textblobuseaftergpufree.cpp
index 947f6bf..fee06e7 100644
--- a/gm/textblobuseaftergpufree.cpp
+++ b/gm/textblobuseaftergpufree.cpp
@@ -27,9 +27,7 @@
     TextBlobUseAfterGpuFree() { }
 
 protected:
-    SkString onShortName() override {
-        return SkString("textblobuseaftergpufree");
-    }
+    SkString getName() const override { return SkString("textblobuseaftergpufree"); }
 
     SkISize onISize() override {
         return SkISize::Make(kWidth, kHeight);
diff --git a/gm/thinrects.cpp b/gm/thinrects.cpp
index 8f62719..b8ba274 100644
--- a/gm/thinrects.cpp
+++ b/gm/thinrects.cpp
@@ -27,9 +27,7 @@
     }
 
 protected:
-    SkString onShortName() override {
-        return SkString(fRound ? "thinroundrects" : "thinrects");
-    }
+    SkString getName() const override { return SkString(fRound ? "thinroundrects" : "thinrects"); }
 
     SkISize onISize() override {
         return SkISize::Make(240, 320);
diff --git a/gm/thinstrokedrects.cpp b/gm/thinstrokedrects.cpp
index f6d765e..4446b2b 100644
--- a/gm/thinstrokedrects.cpp
+++ b/gm/thinstrokedrects.cpp
@@ -25,9 +25,7 @@
     }
 
 protected:
-    SkString onShortName() override {
-        return SkString("thinstrokedrects");
-    }
+    SkString getName() const override { return SkString("thinstrokedrects"); }
 
     SkISize onISize() override {
         return SkISize::Make(240, 320);
diff --git a/gm/tiledscaledbitmap.cpp b/gm/tiledscaledbitmap.cpp
index ca880b7..ab4f1fb 100644
--- a/gm/tiledscaledbitmap.cpp
+++ b/gm/tiledscaledbitmap.cpp
@@ -32,9 +32,7 @@
     }
 
 protected:
-    SkString onShortName() override {
-        return SkString("tiledscaledbitmap");
-    }
+    SkString getName() const override { return SkString("tiledscaledbitmap"); }
 
     SkISize onISize() override {
         return SkISize::Make(1016, 616);
diff --git a/gm/tileimagefilter.cpp b/gm/tileimagefilter.cpp
index 815836b..bdd341d5 100644
--- a/gm/tileimagefilter.cpp
+++ b/gm/tileimagefilter.cpp
@@ -38,9 +38,7 @@
     }
 
 protected:
-    SkString onShortName() override {
-        return SkString("tileimagefilter");
-    }
+    SkString getName() const override { return SkString("tileimagefilter"); }
 
     SkISize onISize() override {
         return SkISize::Make(WIDTH, HEIGHT);
diff --git a/gm/tilemodes.cpp b/gm/tilemodes.cpp
index 9b4b448..c503266 100644
--- a/gm/tilemodes.cpp
+++ b/gm/tilemodes.cpp
@@ -76,7 +76,7 @@
         kNPOTSize = 21,
     };
 
-    SkString onShortName() override {
+    SkString getName() const override {
         SkString name("tilemodes");
         if (!fPowerOfTwoSize) {
             name.append("_npot");
@@ -205,7 +205,7 @@
     Tiling2GM(ShaderProc proc, const char name[]) : fProc(proc), fName(name) {}
 
 private:
-    SkString onShortName() override { return SkString(fName); }
+    SkString getName() const override { return SkString(fName); }
 
     SkISize onISize() override { return SkISize::Make(650, 610); }
 
diff --git a/gm/tilemodes_scaled.cpp b/gm/tilemodes_scaled.cpp
index 9da0db4..002f332 100644
--- a/gm/tilemodes_scaled.cpp
+++ b/gm/tilemodes_scaled.cpp
@@ -74,7 +74,7 @@
         kNPOTSize = 3,
     };
 
-    SkString onShortName() override {
+    SkString getName() const override {
         SkString name("scaled_tilemodes");
         if (!fPowerOfTwoSize) {
             name.append("_npot");
@@ -200,7 +200,7 @@
     ScaledTiling2GM(ShaderProc proc, const char name[]) : fProc(proc), fName(name) {}
 
 private:
-    SkString onShortName() override { return SkString(fName); }
+    SkString getName() const override { return SkString(fName); }
 
     SkISize onISize() override { return SkISize::Make(650, 610); }
 
diff --git a/gm/tinybitmap.cpp b/gm/tinybitmap.cpp
index 470358f..7cc19d9 100644
--- a/gm/tinybitmap.cpp
+++ b/gm/tinybitmap.cpp
@@ -19,7 +19,7 @@
 class TinyBitmapGM : public skiagm::GM {
     void onOnceBeforeDraw() override { this->setBGColor(0xFFDDDDDD); }
 
-    SkString onShortName() override { return SkString("tinybitmap"); }
+    SkString getName() const override { return SkString("tinybitmap"); }
 
     SkISize onISize() override { return SkISize::Make(100, 100); }
 
diff --git a/gm/typeface.cpp b/gm/typeface.cpp
index 4bfd2ec..ad30f59 100644
--- a/gm/typeface.cpp
+++ b/gm/typeface.cpp
@@ -107,7 +107,7 @@
         }
     }
 
-    SkString onShortName() override {
+    SkString getName() const override {
         SkString name("typefacestyles");
         if (fApplyKerning) {
             name.append("_kerning");
diff --git a/gm/userfont.cpp b/gm/userfont.cpp
index 8e9b93d..5ca76ff 100644
--- a/gm/userfont.cpp
+++ b/gm/userfont.cpp
@@ -102,7 +102,7 @@
 
     bool runAsBench() const override { return true; }
 
-    SkString onShortName() override { return SkString("user_typeface"); }
+    SkString getName() const override { return SkString("user_typeface"); }
 
     SkISize onISize() override { return {810, 452}; }
 
diff --git a/gm/variedtext.cpp b/gm/variedtext.cpp
index 9755ce1..6ba9f54 100644
--- a/gm/variedtext.cpp
+++ b/gm/variedtext.cpp
@@ -36,7 +36,7 @@
     }
 
 protected:
-    SkString onShortName() override {
+    SkString getName() const override {
         SkString name("varied_text");
         if (fEffectiveClip) {
             name.append("_clipped");
diff --git a/gm/vertices.cpp b/gm/vertices.cpp
index 7a12fab..58cc0e0 100644
--- a/gm/vertices.cpp
+++ b/gm/vertices.cpp
@@ -124,7 +124,7 @@
         fColorFilter = make_color_filter();
     }
 
-    SkString onShortName() override {
+    SkString getName() const override {
         SkString name("vertices");
         if (fShaderScale != 1) {
             name.append("_scaled_shader");
diff --git a/gm/verylargebitmap.cpp b/gm/verylargebitmap.cpp
index 041df77..c054384 100644
--- a/gm/verylargebitmap.cpp
+++ b/gm/verylargebitmap.cpp
@@ -113,7 +113,7 @@
             , fManuallyTile(manuallyTile) {}
 
 private:
-    SkString onShortName() override {
+    SkString getName() const override {
         SkString name(fBaseName);
 
         if (fManuallyTile) {
diff --git a/gm/video_decoder.cpp b/gm/video_decoder.cpp
index 107f8eb..6fe405a 100644
--- a/gm/video_decoder.cpp
+++ b/gm/video_decoder.cpp
@@ -17,10 +17,7 @@
     VideoDecoderGM() {}
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("videodecoder");
-    }
+    SkString getName() const override { return SkString("videodecoder"); }
 
     SkISize onISize() override {
         return SkISize::Make(1024, 768);
diff --git a/gm/wacky_yuv_formats.cpp b/gm/wacky_yuv_formats.cpp
index a322b9a..ba56d15 100644
--- a/gm/wacky_yuv_formats.cpp
+++ b/gm/wacky_yuv_formats.cpp
@@ -771,7 +771,7 @@
     }
 
 protected:
-    SkString onShortName() override {
+    SkString getName() const override {
         SkString name("wacky_yuv_formats");
         if (fUseTargetColorSpace) {
             name += "_cs";
@@ -1024,9 +1024,7 @@
     }
 
 protected:
-    SkString onShortName() override {
-        return SkString("yuv_make_color_space");
-    }
+    SkString getName() const override { return SkString("yuv_make_color_space"); }
 
     SkISize onISize() override {
         int numCols = 4; // (transparent, opaque) x (untagged, tagged)
@@ -1212,10 +1210,7 @@
     YUVSplitterGM() {}
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("yuv_splitter");
-    }
+    SkString getName() const override { return SkString("yuv_splitter"); }
 
     SkISize onISize() override {
         return SkISize::Make(1280, 768);
diff --git a/gm/windowrectangles.cpp b/gm/windowrectangles.cpp
index 75f2319..a9ae3c3 100644
--- a/gm/windowrectangles.cpp
+++ b/gm/windowrectangles.cpp
@@ -42,7 +42,7 @@
     DrawResult coverClipStack(const SkClipStack&, SkCanvas*, SkString* errorMsg);
 
     SkISize onISize() override { return SkISize::Make(kDeviceRect.width(), kDeviceRect.height()); }
-    SkString onShortName() override { return SkString("windowrectangles"); }
+    SkString getName() const override { return SkString("windowrectangles"); }
     DrawResult onDraw(SkCanvas*, SkString* errorMsg) override;
 };
 
diff --git a/gm/xfermodeimagefilter.cpp b/gm/xfermodeimagefilter.cpp
index ee997af..33e5f1f 100644
--- a/gm/xfermodeimagefilter.cpp
+++ b/gm/xfermodeimagefilter.cpp
@@ -37,9 +37,7 @@
     }
 
 protected:
-    SkString onShortName() override {
-        return SkString("xfermodeimagefilter");
-    }
+    SkString getName() const override { return SkString("xfermodeimagefilter"); }
 
     SkISize onISize() override {
         return SkISize::Make(WIDTH, HEIGHT);
diff --git a/gm/xfermodes.cpp b/gm/xfermodes.cpp
index 54a2283..1f6c51c 100644
--- a/gm/xfermodes.cpp
+++ b/gm/xfermodes.cpp
@@ -222,9 +222,7 @@
     XfermodesGM() {}
 
 protected:
-    SkString onShortName() override {
-        return SkString("xfermodes");
-    }
+    SkString getName() const override { return SkString("xfermodes"); }
 
     SkISize onISize() override {
         return SkISize::Make(1990, 570);
diff --git a/gm/xfermodes2.cpp b/gm/xfermodes2.cpp
index 9d334c9..219bb40 100644
--- a/gm/xfermodes2.cpp
+++ b/gm/xfermodes2.cpp
@@ -34,7 +34,7 @@
     Xfermodes2GM(bool grayscale) : fGrayscale(grayscale) {}
 
 protected:
-    SkString onShortName() override {
+    SkString getName() const override {
         return fGrayscale ? SkString("xfermodes2_gray") : SkString("xfermodes2");
     }
 
diff --git a/gm/xfermodes3.cpp b/gm/xfermodes3.cpp
index 58ba19a..aefa7e7 100644
--- a/gm/xfermodes3.cpp
+++ b/gm/xfermodes3.cpp
@@ -43,9 +43,7 @@
     Xfermodes3GM() { this->setBGColor(ToolUtils::color_to_565(0xFF70D0E0)); }
 
 protected:
-    SkString onShortName() override {
-        return SkString("xfermodes3");
-    }
+    SkString getName() const override { return SkString("xfermodes3"); }
 
     SkISize onISize() override {
         return SkISize::Make(630, 1215);
diff --git a/gm/ycbcrimage.cpp b/gm/ycbcrimage.cpp
index 3d2b40b..236bbd3 100644
--- a/gm/ycbcrimage.cpp
+++ b/gm/ycbcrimage.cpp
@@ -35,10 +35,7 @@
     }
 
 protected:
-
-    SkString onShortName() override {
-        return SkString("ycbcrimage");
-    }
+    SkString getName() const override { return SkString("ycbcrimage"); }
 
     SkISize onISize() override {
         return SkISize::Make(2*kPad+kImageSize, 2*kPad+kImageSize);
diff --git a/gm/yuvtorgbsubset.cpp b/gm/yuvtorgbsubset.cpp
index 0f0c451..60be9ce 100644
--- a/gm/yuvtorgbsubset.cpp
+++ b/gm/yuvtorgbsubset.cpp
@@ -47,9 +47,7 @@
     }
 
 protected:
-    SkString onShortName() override {
-        return SkString("yuv_to_rgb_subset_effect");
-    }
+    SkString getName() const override { return SkString("yuv_to_rgb_subset_effect"); }
 
     SkISize onISize() override { return {1310, 540}; }
 
diff --git a/modules/canvaskit/gm_bindings.cpp b/modules/canvaskit/gm_bindings.cpp
index 4e425ff..e5ec1de 100644
--- a/modules/canvaskit/gm_bindings.cpp
+++ b/modules/canvaskit/gm_bindings.cpp
@@ -45,8 +45,8 @@
     JSArray gms = emscripten::val::array();
     for (const skiagm::GMFactory& fact : skiagm::GMRegistry::Range()) {
         std::unique_ptr<skiagm::GM> gm(fact());
-        SkDebugf("gm %s\n", gm->getName());
-        gms.call<void>("push", std::string(gm->getName()));
+        SkDebugf("gm %s\n", gm->getName().c_str());
+        gms.call<void>("push", std::string(gm->getName().c_str()));
     }
     return gms;
 }
@@ -54,7 +54,7 @@
 static std::unique_ptr<skiagm::GM> getGMWithName(std::string name) {
     for (const skiagm::GMFactory& fact : skiagm::GMRegistry::Range()) {
         std::unique_ptr<skiagm::GM> gm(fact());
-        if (gm->getName() == name) {
+        if (gm->getName().c_str() == name) {
             return gm;
         }
     }
diff --git a/modules/skottie/gm/ExternalProperties.cpp b/modules/skottie/gm/ExternalProperties.cpp
index 95e0736..0f10577 100644
--- a/modules/skottie/gm/ExternalProperties.cpp
+++ b/modules/skottie/gm/ExternalProperties.cpp
@@ -44,9 +44,7 @@
 class SkottieExternalPropsGM : public skiagm::GM {
 public:
 protected:
-    SkString onShortName() override {
-        return SkString("skottie_external_props");
-    }
+    SkString getName() const override { return SkString("skottie_external_props"); }
 
     SkISize onISize() override {
         return SkISize::Make(kSize, kSize);
diff --git a/modules/skottie/gm/SkottieGM.cpp b/modules/skottie/gm/SkottieGM.cpp
index 7319275..7541592 100644
--- a/modules/skottie/gm/SkottieGM.cpp
+++ b/modules/skottie/gm/SkottieGM.cpp
@@ -44,9 +44,7 @@
 class SkottieWebFontGM : public skiagm::GM {
 public:
 protected:
-    SkString onShortName() override {
-        return SkString("skottie_webfont");
-    }
+    SkString getName() const override { return SkString("skottie_webfont"); }
 
     SkISize onISize() override {
         return SkISize::Make(kSize, kSize);
@@ -99,9 +97,7 @@
     {}
 
 protected:
-    SkString onShortName() override {
-        return SkStringPrintf("skottie_colorize_%s", fName);
-    }
+    SkString getName() const override { return SkStringPrintf("skottie_colorize_%s", fName); }
 
     SkISize onISize() override {
         return SkISize::Make(kSize, kSize);
@@ -185,9 +181,7 @@
 class SkottieMultiFrameGM : public skiagm::GM {
 public:
 protected:
-    SkString onShortName() override {
-        return SkString("skottie_multiframe");
-    }
+    SkString getName() const override { return SkString("skottie_multiframe"); }
 
     SkISize onISize() override {
         return SkISize::Make(kSize, kSize);
diff --git a/modules/skparagraph/gm/simple_gm.cpp b/modules/skparagraph/gm/simple_gm.cpp
index ba482bd..33b6a3c 100644
--- a/modules/skparagraph/gm/simple_gm.cpp
+++ b/modules/skparagraph/gm/simple_gm.cpp
@@ -76,7 +76,7 @@
         this->buildParagraph();
     }
 
-    SkString onShortName() override {
+    SkString getName() const override {
         SkString name;
         name.printf("paragraph%s_%s",
                     fFlags & kTimeLayout   ? "_layout"    : "",
diff --git a/tools/viewer/GMSlide.cpp b/tools/viewer/GMSlide.cpp
index c98d433..0c6511c 100644
--- a/tools/viewer/GMSlide.cpp
+++ b/tools/viewer/GMSlide.cpp
@@ -22,7 +22,7 @@
 GMSlide::GMSlide(std::unique_ptr<skiagm::GM> gm) : fGM(std::move(gm)) {
     fGM->setMode(skiagm::GM::kSample_Mode);
 
-    fName.printf("GM_%s", fGM->getName());
+    fName.printf("GM_%s", fGM->getName().c_str());
 }
 
 GMSlide::~GMSlide() = default;
diff --git a/tools/viewer/Viewer.cpp b/tools/viewer/Viewer.cpp
index e77adc1..e735fb5 100644
--- a/tools/viewer/Viewer.cpp
+++ b/tools/viewer/Viewer.cpp
@@ -951,7 +951,7 @@
     int firstGM = fSlides.size();
     for (const skiagm::GMFactory& gmFactory : skiagm::GMRegistry::Range()) {
         std::unique_ptr<skiagm::GM> gm = gmFactory();
-        if (!CommandLineFlags::ShouldSkip(FLAGS_match, gm->getName())) {
+        if (!CommandLineFlags::ShouldSkip(FLAGS_match, gm->getName().c_str())) {
             auto slide = sk_make_sp<GMSlide>(std::move(gm));
             fSlides.push_back(std::move(slide));
         }