Replace 'typedef xxxxx INHERITED' with 'using INHERITED = xxxx;'.

Mechanically updated via Xcode "Replace Regular Expression":

  typedef (.*) INHERITED;
    -->
  using INHERITED = $1;

The ClangTidy approach generated an even larger CL which would have
required a significant amount of hand-tweaking to be usable.

Change-Id: I671dc9d9efdf6d60151325c8d4d13fad7e10a15b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/314999
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
diff --git a/bench/AAClipBench.cpp b/bench/AAClipBench.cpp
index d0e224f..b4be57e 100644
--- a/bench/AAClipBench.cpp
+++ b/bench/AAClipBench.cpp
@@ -78,7 +78,7 @@
         }
     }
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -165,7 +165,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -207,7 +207,7 @@
         }
     }
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -237,7 +237,7 @@
 
 private:
     SkRegion fRegion;
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 ////////////////////////////////////////////////////////////////////////////////
diff --git a/bench/AlternatingColorPatternBench.cpp b/bench/AlternatingColorPatternBench.cpp
index 06afe91..62e3ecc 100644
--- a/bench/AlternatingColorPatternBench.cpp
+++ b/bench/AlternatingColorPatternBench.cpp
@@ -160,7 +160,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 DEF_BENCH(return new AlternatingColorPatternBench(kWhite_ColorPattern,
diff --git a/bench/AndroidCodecBench.h b/bench/AndroidCodecBench.h
index 95c9781..dd2d8aa 100644
--- a/bench/AndroidCodecBench.h
+++ b/bench/AndroidCodecBench.h
@@ -35,6 +35,6 @@
     const int               fSampleSize;
     SkImageInfo             fInfo;          // Set in onDelayedSetup.
     SkAutoMalloc            fPixelStorage;  // Set in onDelayedSetup.
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 #endif // AndroidCodecBench_DEFINED
diff --git a/bench/Benchmark.h b/bench/Benchmark.h
index 58fa2c6..acda557 100644
--- a/bench/Benchmark.h
+++ b/bench/Benchmark.h
@@ -103,7 +103,7 @@
 private:
     int fUnits = 1;
 
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 };
 
 typedef sk_tools::Registry<Benchmark*(*)(void*)> BenchRegistry;
diff --git a/bench/BezierBench.cpp b/bench/BezierBench.cpp
index 64cc1fe..d1fe770 100644
--- a/bench/BezierBench.cpp
+++ b/bench/BezierBench.cpp
@@ -90,7 +90,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 DEF_BENCH( return new BezierBench(SkPaint::kButt_Cap, SkPaint::kRound_Join, 2, draw_quad); )
diff --git a/bench/BigPathBench.cpp b/bench/BigPathBench.cpp
index f3c5948..3b8449c 100644
--- a/bench/BigPathBench.cpp
+++ b/bench/BigPathBench.cpp
@@ -72,7 +72,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 DEF_BENCH( return new BigPathBench(kLeft_Align,     false); )
diff --git a/bench/BitmapBench.cpp b/bench/BitmapBench.cpp
index 113d985..71880c3 100644
--- a/bench/BitmapBench.cpp
+++ b/bench/BitmapBench.cpp
@@ -115,7 +115,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 /** Explicitly invoke some filter types to improve coverage of acceleration
@@ -202,7 +202,7 @@
 }
 
 private:
-    typedef BitmapBench INHERITED;
+    using INHERITED = BitmapBench;
 };
 
 /** Verify optimizations that test source alpha values. */
@@ -290,7 +290,7 @@
     }
 
 private:
-    typedef BitmapBench INHERITED;
+    using INHERITED = BitmapBench;
 };
 
 DEF_BENCH( return new BitmapBench(kN32_SkColorType, kPremul_SkAlphaType, false, false); )
diff --git a/bench/BitmapRectBench.cpp b/bench/BitmapRectBench.cpp
index 612d247..93ca5cf 100644
--- a/bench/BitmapRectBench.cpp
+++ b/bench/BitmapRectBench.cpp
@@ -103,7 +103,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 DEF_BENCH(return new BitmapRectBench(0xFF, kNone_SkFilterQuality, false))
diff --git a/bench/BitmapRegionDecoderBench.h b/bench/BitmapRegionDecoderBench.h
index 6dc0961..90ed374 100644
--- a/bench/BitmapRegionDecoderBench.h
+++ b/bench/BitmapRegionDecoderBench.h
@@ -46,7 +46,7 @@
     const SkColorType                                   fColorType;
     const uint32_t                                      fSampleSize;
     const SkIRect                                       fSubset;
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 #endif // SK_ENABLE_ANDROID_UTILS
 #endif // BitmapRegionDecoderBench_DEFINED
diff --git a/bench/BlendmodeBench.cpp b/bench/BlendmodeBench.cpp
index 5fb7a7b..0154e6e 100644
--- a/bench/BlendmodeBench.cpp
+++ b/bench/BlendmodeBench.cpp
@@ -66,7 +66,7 @@
     SkString    fName;
     bool        fAA;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/bench/BlurBench.cpp b/bench/BlurBench.cpp
index 06d19d6..df4cd8f 100644
--- a/bench/BlurBench.cpp
+++ b/bench/BlurBench.cpp
@@ -72,7 +72,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 DEF_BENCH(return new BlurBench(MINI, kNormal_SkBlurStyle);)
diff --git a/bench/BlurImageFilterBench.cpp b/bench/BlurImageFilterBench.cpp
index 4dadb76..1366db3 100644
--- a/bench/BlurImageFilterBench.cpp
+++ b/bench/BlurImageFilterBench.cpp
@@ -119,7 +119,7 @@
     bool fInitialized;
     SkBitmap fCheckerboard;
     SkScalar fSigmaX, fSigmaY;
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 DEF_BENCH(return new BlurImageFilterBench(BLUR_SIGMA_LARGE, 0, false, false, false);)
diff --git a/bench/BlurRectBench.cpp b/bench/BlurRectBench.cpp
index 807e426..2684223 100644
--- a/bench/BlurRectBench.cpp
+++ b/bench/BlurRectBench.cpp
@@ -70,7 +70,7 @@
     virtual void makeBlurryRect(const SkRect&) = 0;
     virtual void preBenchSetup(const SkRect&) {}
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 
@@ -97,7 +97,7 @@
         SkMask::FreeImage(mask.fImage);
     }
 private:
-    typedef BlurRectBench INHERITED;
+    using INHERITED = BlurRectBench;
 };
 
 class BlurRectSeparableBench: public BlurRectBench {
@@ -123,7 +123,7 @@
 
     SkMask fSrcMask;
 private:
-    typedef BlurRectBench INHERITED;
+    using INHERITED = BlurRectBench;
 };
 
 class BlurRectBoxFilterBench: public BlurRectSeparableBench {
@@ -151,7 +151,7 @@
         SkMask::FreeImage(mask.fImage);
     }
 private:
-    typedef BlurRectSeparableBench INHERITED;
+    using INHERITED = BlurRectSeparableBench;
 };
 
 class BlurRectGaussianBench: public BlurRectSeparableBench {
@@ -179,7 +179,7 @@
         SkMask::FreeImage(mask.fImage);
     }
 private:
-    typedef BlurRectSeparableBench INHERITED;
+    using INHERITED = BlurRectSeparableBench;
 };
 
 DEF_BENCH(return new BlurRectBoxFilterBench(SMALL);)
diff --git a/bench/BlurRectsBench.cpp b/bench/BlurRectsBench.cpp
index df1775c..20ae302 100644
--- a/bench/BlurRectsBench.cpp
+++ b/bench/BlurRectsBench.cpp
@@ -48,7 +48,7 @@
     SkRect      fInner;
     SkScalar    fRadius;
 
-    typedef     Benchmark INHERITED;
+    using INHERITED =     Benchmark;
 };
 
 class BlurRectsNinePatchBench: public BlurRectsBench {
@@ -58,7 +58,7 @@
         this->setName(SkString("blurrectsninepatch"));
     }
 private:
-    typedef BlurRectsBench INHERITED;
+    using INHERITED = BlurRectsBench;
 };
 
 class BlurRectsNonNinePatchBench: public BlurRectsBench {
@@ -69,7 +69,7 @@
         this->setName(SkString("blurrectsnonninepatch"));
     }
 private:
-    typedef BlurRectsBench INHERITED;
+    using INHERITED = BlurRectsBench;
 };
 
 DEF_BENCH(return new BlurRectsNinePatchBench(SkRect::MakeXYWH(10, 10, 100, 100),
diff --git a/bench/BulkRectBench.cpp b/bench/BulkRectBench.cpp
index 7d650ac..2509d61 100644
--- a/bench/BulkRectBench.cpp
+++ b/bench/BulkRectBench.cpp
@@ -257,7 +257,7 @@
         return { kWidth, kHeight };
     }
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 // constructor call is wrapped in () so the macro doesn't break parsing the commas in the template
diff --git a/bench/CTConvertBench.cpp b/bench/CTConvertBench.cpp
index a46c88c..fa3b9c1 100644
--- a/bench/CTConvertBench.cpp
+++ b/bench/CTConvertBench.cpp
@@ -75,7 +75,7 @@
     SkBitmap            fSrcBM;
     sk_sp<SkSurface>    fDstSurf;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 DEF_BENCH( return new CTConvertBench(kRGBA_8888_SkColorType, kBGRA_8888_SkColorType,
diff --git a/bench/ChartBench.cpp b/bench/ChartBench.cpp
index 2bdbbe1..42a9740 100644
--- a/bench/ChartBench.cpp
+++ b/bench/ChartBench.cpp
@@ -182,7 +182,7 @@
     SkTDArray<SkScalar> fData[kNumGraphs];
     bool                fAA;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/bench/ChecksumBench.cpp b/bench/ChecksumBench.cpp
index 03d8bef..de2daa9 100644
--- a/bench/ChecksumBench.cpp
+++ b/bench/ChecksumBench.cpp
@@ -67,7 +67,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/bench/ChromeBench.cpp b/bench/ChromeBench.cpp
index 56ba15f..88e6311 100644
--- a/bench/ChromeBench.cpp
+++ b/bench/ChromeBench.cpp
@@ -489,7 +489,7 @@
 
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 // Disabled this benchmark: it takes 15x longer than any other benchmark
diff --git a/bench/ClipStrategyBench.cpp b/bench/ClipStrategyBench.cpp
index 4110e3b..1622883 100644
--- a/bench/ClipStrategyBench.cpp
+++ b/bench/ClipStrategyBench.cpp
@@ -77,7 +77,7 @@
     SkString fName;
     SkPath   fClipPath;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 DEF_BENCH( return new ClipStrategyBench(ClipStrategyBench::Mode::kClipPath, 1  );)
diff --git a/bench/CmapBench.cpp b/bench/CmapBench.cpp
index 0c06aca..d8193b3 100644
--- a/bench/CmapBench.cpp
+++ b/bench/CmapBench.cpp
@@ -104,7 +104,7 @@
 
 private:
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/bench/CodecBench.h b/bench/CodecBench.h
index 78211d7..7b8188d 100644
--- a/bench/CodecBench.h
+++ b/bench/CodecBench.h
@@ -36,6 +36,6 @@
     sk_sp<SkData>           fData;
     SkImageInfo             fInfo;          // Set in onDelayedSetup.
     SkAutoMalloc            fPixelStorage;
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 #endif // CodecBench_DEFINED
diff --git a/bench/ColorFilterBench.cpp b/bench/ColorFilterBench.cpp
index 17a7bdf..8f81c38 100644
--- a/bench/ColorFilterBench.cpp
+++ b/bench/ColorFilterBench.cpp
@@ -76,7 +76,7 @@
     SkString fName;
     Type     fType;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 DEF_BENCH( return new FilteredRectBench(FilteredRectBench::kNoFilter_Type); )
diff --git a/bench/CompositingImagesBench.cpp b/bench/CompositingImagesBench.cpp
index 1a0b5fd..32d9d7c 100644
--- a/bench/CompositingImagesBench.cpp
+++ b/bench/CompositingImagesBench.cpp
@@ -314,7 +314,7 @@
     TransformMode fTransformMode;
     int fLayerCnt;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 // Subpixel = false; all of the draw commands align with integer pixels so AA will be automatically
diff --git a/bench/CoverageBench.cpp b/bench/CoverageBench.cpp
index c94fa50..75df6f0 100644
--- a/bench/CoverageBench.cpp
+++ b/bench/CoverageBench.cpp
@@ -67,7 +67,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/bench/CubicKLMBench.cpp b/bench/CubicKLMBench.cpp
index c60f8fe..d9ce672 100644
--- a/bench/CubicKLMBench.cpp
+++ b/bench/CubicKLMBench.cpp
@@ -54,7 +54,7 @@
     SkPoint     fPoints[4];
     SkString    fName;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 DEF_BENCH( return new CubicKLMBench(285.625f, 499.687f, 411.625f, 808.188f,
diff --git a/bench/CubicMapBench.cpp b/bench/CubicMapBench.cpp
index 1427a7e..0f51484 100644
--- a/bench/CubicMapBench.cpp
+++ b/bench/CubicMapBench.cpp
@@ -36,7 +36,7 @@
     SkCubicMap  fCMap;
     SkString    fName;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 DEF_BENCH( return new CubicMapBench({1, 0}, {0,0}); )
diff --git a/bench/DDLRecorderBench.cpp b/bench/DDLRecorderBench.cpp
index cf342b8..56077e1 100644
--- a/bench/DDLRecorderBench.cpp
+++ b/bench/DDLRecorderBench.cpp
@@ -88,7 +88,7 @@
     std::unique_ptr<SkDeferredDisplayListRecorder>      fRecorder = nullptr;
     std::vector<sk_sp<SkDeferredDisplayList>>           fDDLs;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 DEF_BENCH(return new DDLRecorderBench();)
diff --git a/bench/DashBench.cpp b/bench/DashBench.cpp
index c105cbe..91323b1 100644
--- a/bench/DashBench.cpp
+++ b/bench/DashBench.cpp
@@ -93,7 +93,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 class RectDashBench : public DashBench {
@@ -133,7 +133,7 @@
     }
 
 private:
-    typedef DashBench INHERITED;
+    using INHERITED = DashBench;
 };
 
 static void make_unit_star(SkPath* path, int n) {
@@ -201,7 +201,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 /*
@@ -241,7 +241,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 class DrawPointsDashingBench : public Benchmark {
@@ -288,7 +288,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 // Want to test how we handle dashing when 99% of the dash is clipped out
@@ -365,7 +365,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 // Want to test how we draw a dashed grid (like what is used in spreadsheets) of many
@@ -432,7 +432,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/bench/DisplacementBench.cpp b/bench/DisplacementBench.cpp
index 6c9a6bf..2e38696 100644
--- a/bench/DisplacementBench.cpp
+++ b/bench/DisplacementBench.cpp
@@ -85,7 +85,7 @@
 private:
     bool fInitialized;
     bool fIsSmall;
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 class DisplacementZeroBench : public DisplacementBaseBench {
@@ -110,7 +110,7 @@
     }
 
 private:
-    typedef DisplacementBaseBench INHERITED;
+    using INHERITED = DisplacementBaseBench;
 };
 
 class DisplacementAlphaBench : public DisplacementBaseBench {
@@ -134,7 +134,7 @@
     }
 
 private:
-    typedef DisplacementBaseBench INHERITED;
+    using INHERITED = DisplacementBaseBench;
 };
 
 class DisplacementFullBench : public DisplacementBaseBench {
@@ -158,7 +158,7 @@
     }
 
 private:
-    typedef DisplacementBaseBench INHERITED;
+    using INHERITED = DisplacementBaseBench;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/bench/DrawBitmapAABench.cpp b/bench/DrawBitmapAABench.cpp
index e57ecd9..7ba181b 100644
--- a/bench/DrawBitmapAABench.cpp
+++ b/bench/DrawBitmapAABench.cpp
@@ -51,7 +51,7 @@
     SkString fName;
     SkBitmap fBitmap;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 DEF_BENCH( return new DrawBitmapAABench(false, SkMatrix::I(), "ident"); )
diff --git a/bench/FSRectBench.cpp b/bench/FSRectBench.cpp
index 0307069..527df67 100644
--- a/bench/FSRectBench.cpp
+++ b/bench/FSRectBench.cpp
@@ -56,7 +56,7 @@
     SkColor fColors[N];
     bool fInit;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 DEF_BENCH(return new FSRectBench();)
diff --git a/bench/FilteringBench.cpp b/bench/FilteringBench.cpp
index 9465b5c..52ba266 100644
--- a/bench/FilteringBench.cpp
+++ b/bench/FilteringBench.cpp
@@ -52,7 +52,7 @@
     sk_sp<SkShader> fShader;
     SkFilterOptions fOptions;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 DEF_BENCH( return new FilteringBench({SkSamplingMode::kLinear,  SkMipmapMode::kLinear}); )
diff --git a/bench/FontCacheBench.cpp b/bench/FontCacheBench.cpp
index 40a9669..c85713e 100644
--- a/bench/FontCacheBench.cpp
+++ b/bench/FontCacheBench.cpp
@@ -50,7 +50,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -138,7 +138,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 DEF_BENCH( return new FontCacheBench(); )
 
@@ -193,7 +193,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 DEF_BENCH( return new FontPathBench(true); )
 DEF_BENCH( return new FontPathBench(false); )
diff --git a/bench/GMBench.h b/bench/GMBench.h
index 1c0219b..c9fb766 100644
--- a/bench/GMBench.h
+++ b/bench/GMBench.h
@@ -35,7 +35,7 @@
     SkString                    fName;
     bool                        fGpuSetupFailed = false;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 #endif
diff --git a/bench/GameBench.cpp b/bench/GameBench.cpp
index 680bb27..5dd7f60 100644
--- a/bench/GameBench.cpp
+++ b/bench/GameBench.cpp
@@ -303,7 +303,7 @@
         }
     }
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 // Partial clear
@@ -376,7 +376,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 DEF_BENCH(return new CanvasMatrixBench(CanvasMatrixBench::kTranslate_Type));
diff --git a/bench/GrMemoryPoolBench.cpp b/bench/GrMemoryPoolBench.cpp
index df4b5e0..cff8255 100644
--- a/bench/GrMemoryPoolBench.cpp
+++ b/bench/GrMemoryPoolBench.cpp
@@ -178,7 +178,7 @@
     int          fPoolSize;
     RunBenchProc fProc;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/bench/GrMipmapBench.cpp b/bench/GrMipmapBench.cpp
index 2378d5e..4b6cfc6 100644
--- a/bench/GrMipmapBench.cpp
+++ b/bench/GrMipmapBench.cpp
@@ -67,7 +67,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 // Build variants that exercise the width and heights being even or odd at each level, as the
diff --git a/bench/GrQuadBench.cpp b/bench/GrQuadBench.cpp
index 329431c..00d538a 100644
--- a/bench/GrQuadBench.cpp
+++ b/bench/GrQuadBench.cpp
@@ -65,7 +65,7 @@
     GrQuad       fQuads[kQuadCount];
     SkScalar     fArea;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/bench/GrResourceCacheBench.cpp b/bench/GrResourceCacheBench.cpp
index be3e18b..67a6590 100644
--- a/bench/GrResourceCacheBench.cpp
+++ b/bench/GrResourceCacheBench.cpp
@@ -37,7 +37,7 @@
 private:
     size_t onGpuMemorySize() const override { return 100; }
     const char* getResourceType() const override { return "bench"; }
-    typedef GrGpuResource INHERITED;
+    using INHERITED = GrGpuResource;
 };
 
 static void populate_cache(GrGpu* gpu, int resourceCount, int keyData32Count) {
@@ -93,7 +93,7 @@
 private:
     SkString fFullName;
     int fKeyData32Count;
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 class GrResourceCacheBenchFind : public Benchmark {
@@ -153,7 +153,7 @@
     sk_sp<GrDirectContext> fContext;
     SkString fFullName;
     int fKeyData32Count;
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 DEF_BENCH( return new GrResourceCacheBenchAdd(1); )
diff --git a/bench/GradientBench.cpp b/bench/GradientBench.cpp
index eebd55c..b8eb86a 100644
--- a/bench/GradientBench.cpp
+++ b/bench/GradientBench.cpp
@@ -237,7 +237,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 
     sk_sp<SkShader> MakeShader(GradType gradType, GradData data,
                                SkTileMode tm, float scale) {
@@ -348,7 +348,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 DEF_BENCH( return new Gradient2Bench(false); )
diff --git a/bench/HairlinePathBench.cpp b/bench/HairlinePathBench.cpp
index 5e29a13..dfafeeb 100644
--- a/bench/HairlinePathBench.cpp
+++ b/bench/HairlinePathBench.cpp
@@ -75,7 +75,7 @@
     SkPaint     fPaint;
     SkString    fName;
     Flags       fFlags;
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 class LinePathBench : public HairlinePathBench {
@@ -107,7 +107,7 @@
         }
     }
 private:
-    typedef HairlinePathBench INHERITED;
+    using INHERITED = HairlinePathBench;
 };
 
 class QuadPathBench : public HairlinePathBench {
@@ -139,7 +139,7 @@
         }
     }
 private:
-    typedef HairlinePathBench INHERITED;
+    using INHERITED = HairlinePathBench;
 };
 
 class ConicPathBench : public HairlinePathBench {
@@ -175,7 +175,7 @@
     }
 
 private:
-    typedef HairlinePathBench INHERITED;
+    using INHERITED = HairlinePathBench;
 };
 
 class CubicPathBench : public HairlinePathBench {
@@ -210,7 +210,7 @@
         }
     }
 private:
-    typedef HairlinePathBench INHERITED;
+    using INHERITED = HairlinePathBench;
 };
 
 // FLAG00 - no AA, small
diff --git a/bench/HardStopGradientBench_ScaleNumColors.cpp b/bench/HardStopGradientBench_ScaleNumColors.cpp
index 00990ea..66180c5 100644
--- a/bench/HardStopGradientBench_ScaleNumColors.cpp
+++ b/bench/HardStopGradientBench_ScaleNumColors.cpp
@@ -97,7 +97,7 @@
     int         fColorCount;
     SkPaint     fPaint;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 // Clamp
diff --git a/bench/HardStopGradientBench_ScaleNumHardStops.cpp b/bench/HardStopGradientBench_ScaleNumHardStops.cpp
index 150c7ba..d443a41 100644
--- a/bench/HardStopGradientBench_ScaleNumHardStops.cpp
+++ b/bench/HardStopGradientBench_ScaleNumHardStops.cpp
@@ -95,7 +95,7 @@
     int      fHardStopCount;
     SkPaint  fPaint;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 DEF_BENCH(return new HardStopGradientBench_ScaleNumHardStops(10, 1);)
diff --git a/bench/ImageBench.cpp b/bench/ImageBench.cpp
index a452903..cd1c756 100644
--- a/bench/ImageBench.cpp
+++ b/bench/ImageBench.cpp
@@ -60,6 +60,6 @@
     sk_sp<SkImage>   fImage;
     sk_sp<SkSurface> fRasterSurface;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 DEF_BENCH( return new Image2RasterBench; )
diff --git a/bench/ImageCacheBench.cpp b/bench/ImageCacheBench.cpp
index 4748dcf..fa62940 100644
--- a/bench/ImageCacheBench.cpp
+++ b/bench/ImageCacheBench.cpp
@@ -69,7 +69,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/bench/ImageCacheBudgetBench.cpp b/bench/ImageCacheBudgetBench.cpp
index 78875fe..eb70543 100644
--- a/bench/ImageCacheBudgetBench.cpp
+++ b/bench/ImageCacheBudgetBench.cpp
@@ -150,7 +150,7 @@
     std::unique_ptr<int[]>      fIndices;
     size_t                      fOldBytes;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 DEF_BENCH( return new ImageCacheBudgetBench(105, false); )
@@ -254,7 +254,7 @@
     size_t                      fOldBytes;
     int                         fOldCount;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 DEF_BENCH( return new ImageCacheBudgetDynamicBench(ImageCacheBudgetDynamicBench::Mode::kPingPong); )
diff --git a/bench/ImageCycleBench.cpp b/bench/ImageCycleBench.cpp
index 01009af..efd0432 100644
--- a/bench/ImageCycleBench.cpp
+++ b/bench/ImageCycleBench.cpp
@@ -92,7 +92,7 @@
     int fImageCnt;
     int fRepeatCnt;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 DEF_BENCH(return new ImageCycle(5, 10));
diff --git a/bench/ImageFilterDAGBench.cpp b/bench/ImageFilterDAGBench.cpp
index 3f69c9d..9ec4daa 100644
--- a/bench/ImageFilterDAGBench.cpp
+++ b/bench/ImageFilterDAGBench.cpp
@@ -52,7 +52,7 @@
 private:
     static const int kNumInputs = 5;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 class ImageMakeWithFilterDAGBench : public Benchmark {
@@ -100,7 +100,7 @@
     static const int kNumInputs = 5;
     sk_sp<SkImage> fImage;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 // Exercise a blur filter connected to both inputs of an SkDisplacementMapEffect.
@@ -132,7 +132,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 // Exercise an Xfermode kSrcIn filter compositing two inputs which have a small intersection.
@@ -161,7 +161,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 DEF_BENCH(return new ImageFilterDAGBench;)
diff --git a/bench/InterpBench.cpp b/bench/InterpBench.cpp
index 61c3de6..25f9acc 100644
--- a/bench/InterpBench.cpp
+++ b/bench/InterpBench.cpp
@@ -51,7 +51,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 class Fixed16D16Interp : public InterpBench {
@@ -70,7 +70,7 @@
         }
     }
 private:
-    typedef InterpBench INHERITED;
+    using INHERITED = InterpBench;
 };
 
 class Fixed32D32Interp : public InterpBench {
@@ -101,7 +101,7 @@
         }
     }
 private:
-    typedef InterpBench INHERITED;
+    using INHERITED = InterpBench;
 };
 
 class Fixed16D48Interp : public InterpBench {
@@ -121,7 +121,7 @@
         }
     }
 private:
-    typedef InterpBench INHERITED;
+    using INHERITED = InterpBench;
 };
 
 class FloatInterp : public InterpBench {
@@ -139,7 +139,7 @@
         }
     }
 private:
-    typedef InterpBench INHERITED;
+    using INHERITED = InterpBench;
 };
 
 class DoubleInterp : public InterpBench {
@@ -159,7 +159,7 @@
         }
     }
 private:
-    typedef InterpBench INHERITED;
+    using INHERITED = InterpBench;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/bench/LightingBench.cpp b/bench/LightingBench.cpp
index 06d72d0..88ed282 100644
--- a/bench/LightingBench.cpp
+++ b/bench/LightingBench.cpp
@@ -92,7 +92,7 @@
     }
 
     bool fIsSmall;
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 class LightingPointLitDiffuseBench : public LightingBaseBench {
@@ -110,7 +110,7 @@
     }
 
 private:
-    typedef LightingBaseBench INHERITED;
+    using INHERITED = LightingBaseBench;
 };
 
 class LightingDistantLitDiffuseBench : public LightingBaseBench {
@@ -128,7 +128,7 @@
     }
 
 private:
-    typedef LightingBaseBench INHERITED;
+    using INHERITED = LightingBaseBench;
 };
 
 class LightingSpotLitDiffuseBench : public LightingBaseBench {
@@ -147,7 +147,7 @@
     }
 
 private:
-    typedef LightingBaseBench INHERITED;
+    using INHERITED = LightingBaseBench;
 };
 
 class LightingPointLitSpecularBench : public LightingBaseBench {
@@ -166,7 +166,7 @@
     }
 
 private:
-    typedef LightingBaseBench INHERITED;
+    using INHERITED = LightingBaseBench;
 };
 
 class LightingDistantLitSpecularBench : public LightingBaseBench {
@@ -185,7 +185,7 @@
     }
 
 private:
-    typedef LightingBaseBench INHERITED;
+    using INHERITED = LightingBaseBench;
 };
 
 class LightingSpotLitSpecularBench : public LightingBaseBench {
@@ -204,7 +204,7 @@
     }
 
 private:
-    typedef LightingBaseBench INHERITED;
+    using INHERITED = LightingBaseBench;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/bench/LineBench.cpp b/bench/LineBench.cpp
index b904cb8..56f7f91 100644
--- a/bench/LineBench.cpp
+++ b/bench/LineBench.cpp
@@ -56,7 +56,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 DEF_BENCH(return new LineBench(0,            false);)
diff --git a/bench/MagnifierBench.cpp b/bench/MagnifierBench.cpp
index 9b09da9..209ddf4 100644
--- a/bench/MagnifierBench.cpp
+++ b/bench/MagnifierBench.cpp
@@ -77,7 +77,7 @@
     bool fIsSmall;
     bool fInitialized;
     SkBitmap fCheckerboard;
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/bench/MathBench.cpp b/bench/MathBench.cpp
index 49dc177..33660b2 100644
--- a/bench/MathBench.cpp
+++ b/bench/MathBench.cpp
@@ -63,7 +63,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 class MathBenchU32 : public MathBench {
@@ -81,7 +81,7 @@
         this->performITest(d, s, count);
     }
 private:
-    typedef MathBench INHERITED;
+    using INHERITED = MathBench;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -96,7 +96,7 @@
         }
     }
 private:
-    typedef MathBench INHERITED;
+    using INHERITED = MathBench;
 };
 
 class SkRSqrtMathBench : public MathBench {
@@ -109,7 +109,7 @@
         }
     }
 private:
-    typedef MathBench INHERITED;
+    using INHERITED = MathBench;
 };
 
 
@@ -123,7 +123,7 @@
         }
     }
 private:
-    typedef MathBench INHERITED;
+    using INHERITED = MathBench;
 };
 
 class FastISqrtMathBench : public MathBench {
@@ -136,7 +136,7 @@
         }
     }
 private:
-    typedef MathBench INHERITED;
+    using INHERITED = MathBench;
 };
 
 static inline uint32_t QMul64(uint32_t value, U8CPU alpha) {
@@ -161,7 +161,7 @@
         }
     }
 private:
-    typedef MathBenchU32 INHERITED;
+    using INHERITED = MathBenchU32;
 };
 
 class QMul32Bench : public MathBenchU32 {
@@ -176,7 +176,7 @@
         }
     }
 private:
-    typedef MathBenchU32 INHERITED;
+    using INHERITED = MathBenchU32;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -317,7 +317,7 @@
     IsFiniteProc    fProc;
     const char*     fName;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 class FloorBench : public Benchmark {
@@ -378,7 +378,7 @@
 private:
     const char*     fName;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 class CLZBench : public Benchmark {
@@ -438,7 +438,7 @@
 private:
     const char* fName;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 class CTZBench : public Benchmark {
@@ -498,7 +498,7 @@
 private:
     const char* fName;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -545,7 +545,7 @@
 private:
     const char* fName;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -589,7 +589,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -720,7 +720,7 @@
 private:
     const char* fName;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 DEF_BENCH( return new Floor2IntBench(false); )
 DEF_BENCH( return new Floor2IntBench(true); )
diff --git a/bench/Matrix44Bench.cpp b/bench/Matrix44Bench.cpp
index b346cdc..01817d4 100644
--- a/bench/Matrix44Bench.cpp
+++ b/bench/Matrix44Bench.cpp
@@ -47,7 +47,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 class M4NEQ : public M4Bench {
@@ -61,7 +61,7 @@
     }
 private:
     bool fEQ;
-    typedef M4Bench INHERITED;
+    using INHERITED = M4Bench;
 };
 
 class M4EQ : public M4Bench {
@@ -76,7 +76,7 @@
     }
 private:
     bool fEQ;
-    typedef M4Bench INHERITED;
+    using INHERITED = M4Bench;
 };
 
 class M4Concat : public M4Bench {
@@ -89,7 +89,7 @@
         }
     }
 private:
-    typedef M4Bench INHERITED;
+    using INHERITED = M4Bench;
 };
 
 class M4SetConcat : public M4Bench {
@@ -102,7 +102,7 @@
         }
     }
 private:
-    typedef M4Bench INHERITED;
+    using INHERITED = M4Bench;
 };
 
 DEF_BENCH( return new M4EQ(); )
@@ -122,7 +122,7 @@
     }
 private:
     SkV4 fV;
-    typedef M4Bench INHERITED;
+    using INHERITED = M4Bench;
 };
 DEF_BENCH( return new M4_map4(); )
 
@@ -139,6 +139,6 @@
     }
 private:
     SkPoint fV;
-    typedef M4Bench INHERITED;
+    using INHERITED = M4Bench;
 };
 DEF_BENCH( return new M4_map2(); )
diff --git a/bench/MatrixBench.cpp b/bench/MatrixBench.cpp
index 47eea15..4aa745e 100644
--- a/bench/MatrixBench.cpp
+++ b/bench/MatrixBench.cpp
@@ -37,7 +37,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 
@@ -59,7 +59,7 @@
         junk ^= (m2 == m0);
     }
 private:
-    typedef MatrixBench INHERITED;
+    using INHERITED = MatrixBench;
 };
 
 class ScaleMatrixBench : public MatrixBench {
@@ -80,7 +80,7 @@
 private:
     SkMatrix fM0, fM1, fM2;
     SkScalar fSX, fSY;
-    typedef MatrixBench INHERITED;
+    using INHERITED = MatrixBench;
 };
 
 // having unknown values in our arrays can throw off the timing a lot, perhaps
@@ -137,7 +137,7 @@
     SkMatrix fMatrix;
     float fArray[9];
     SkRandom fRnd;
-    typedef MatrixBench INHERITED;
+    using INHERITED = MatrixBench;
 };
 
 class DecomposeMatrixBench : public MatrixBench {
@@ -165,7 +165,7 @@
 private:
     SkMatrix fMatrix[10];
     SkRandom fRandom;
-    typedef MatrixBench INHERITED;
+    using INHERITED = MatrixBench;
 };
 
 class InvertMapRectMatrixBench : public MatrixBench {
@@ -220,7 +220,7 @@
     SkMatrix fMatrix;
     int fFlags;
     unsigned fIteration;
-    typedef MatrixBench INHERITED;
+    using INHERITED = MatrixBench;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/bench/MatrixConvolutionBench.cpp b/bench/MatrixConvolutionBench.cpp
index ca1cf44..6fa964f 100644
--- a/bench/MatrixConvolutionBench.cpp
+++ b/bench/MatrixConvolutionBench.cpp
@@ -71,7 +71,7 @@
     sk_sp<SkImageFilter> fFilter;
     SkString fName;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 DEF_BENCH( return new MatrixConvolutionBench(false, SkTileMode::kClamp, true); )
diff --git a/bench/MergeBench.cpp b/bench/MergeBench.cpp
index ddf52b7..19f81f3 100644
--- a/bench/MergeBench.cpp
+++ b/bench/MergeBench.cpp
@@ -83,7 +83,7 @@
     bool fInitialized;
     sk_sp<SkImage> fImage, fCheckerboard;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/bench/MipmapBench.cpp b/bench/MipmapBench.cpp
index bfd0e07..1af06d9 100644
--- a/bench/MipmapBench.cpp
+++ b/bench/MipmapBench.cpp
@@ -47,7 +47,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 // Build variants that exercise the width and heights being even or odd at each level, as the
diff --git a/bench/MorphologyBench.cpp b/bench/MorphologyBench.cpp
index ad18954..afc29b1 100644
--- a/bench/MorphologyBench.cpp
+++ b/bench/MorphologyBench.cpp
@@ -81,7 +81,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 DEF_BENCH( return new MorphologyBench(SMALL, kErode_MT); )
diff --git a/bench/MutexBench.cpp b/bench/MutexBench.cpp
index bb98368..707155e 100644
--- a/bench/MutexBench.cpp
+++ b/bench/MutexBench.cpp
@@ -31,7 +31,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
     SkString fBenchName;
     Mutex fMu;
 };
@@ -55,7 +55,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
     SkSharedMutex fMu;
 };
 
diff --git a/bench/PatchBench.cpp b/bench/PatchBench.cpp
index 7254fa7..2fb0579 100644
--- a/bench/PatchBench.cpp
+++ b/bench/PatchBench.cpp
@@ -153,7 +153,7 @@
     SkColor     fColors[4];
     VertexMode  fVertexMode;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 class SquarePatchBench : public PatchBench {
@@ -179,7 +179,7 @@
         memcpy(fCubics, points, SkPatchUtils::kNumCtrlPts * sizeof(SkPoint));
     }
 private:
-    typedef PatchBench INHERITED;
+    using INHERITED = PatchBench;
 };
 
 class LODDiffPatchBench : public PatchBench {
@@ -205,7 +205,7 @@
         memcpy(fCubics, points, SkPatchUtils::kNumCtrlPts * sizeof(SkPoint));
     }
 private:
-    typedef PatchBench INHERITED;
+    using INHERITED = PatchBench;
 };
 
 class LoopPatchBench : public PatchBench {
@@ -231,7 +231,7 @@
         memcpy(fCubics, points, SkPatchUtils::kNumCtrlPts * sizeof(SkPoint));
     }
 private:
-    typedef PatchBench INHERITED;
+    using INHERITED = PatchBench;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/bench/PathBench.cpp b/bench/PathBench.cpp
index 6ae3152..a2da0e2 100644
--- a/bench/PathBench.cpp
+++ b/bench/PathBench.cpp
@@ -70,7 +70,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 class TrianglePathBench : public PathBench {
@@ -90,7 +90,7 @@
         path->close();
     }
 private:
-    typedef PathBench INHERITED;
+    using INHERITED = PathBench;
 };
 
 class RectPathBench : public PathBench {
@@ -105,7 +105,7 @@
         path->addRect(r);
     }
 private:
-    typedef PathBench INHERITED;
+    using INHERITED = PathBench;
 };
 
 class RotatedRectBench : public PathBench {
@@ -134,7 +134,7 @@
         paint->setAntiAlias(fAA);
     }
 private:
-    typedef PathBench INHERITED;
+    using INHERITED = PathBench;
     int fDegrees;
     bool fAA;
 };
@@ -151,7 +151,7 @@
         path->addOval(r);
     }
 private:
-    typedef PathBench INHERITED;
+    using INHERITED = PathBench;
 };
 
 class CirclePathBench: public PathBench {
@@ -166,7 +166,7 @@
                         SkIntToScalar(10));
     }
 private:
-    typedef PathBench INHERITED;
+    using INHERITED = PathBench;
 };
 
 class NonAACirclePathBench: public CirclePathBench {
@@ -183,7 +183,7 @@
     }
 
 private:
-    typedef CirclePathBench INHERITED;
+    using INHERITED = CirclePathBench;
 };
 
 // Test max speedup of Analytic AA for concave paths
@@ -204,7 +204,7 @@
     }
 
 private:
-    typedef PathBench INHERITED;
+    using INHERITED = PathBench;
 };
 
 // Test max speedup of Analytic AA for convex paths
@@ -224,7 +224,7 @@
     }
 
 private:
-    typedef PathBench INHERITED;
+    using INHERITED = PathBench;
 };
 
 class SawToothPathBench : public PathBench {
@@ -254,7 +254,7 @@
     }
     int complexity() override { return 1; }
 private:
-    typedef PathBench INHERITED;
+    using INHERITED = PathBench;
 };
 
 class LongCurvedPathBench : public PathBench {
@@ -275,7 +275,7 @@
     }
     int complexity() override { return 2; }
 private:
-    typedef PathBench INHERITED;
+    using INHERITED = PathBench;
 };
 
 class LongLinePathBench : public PathBench {
@@ -294,7 +294,7 @@
     }
     int complexity() override { return 2; }
 private:
-    typedef PathBench INHERITED;
+    using INHERITED = PathBench;
 };
 
 class RandomPathBench : public Benchmark {
@@ -395,7 +395,7 @@
     int                         fCurrVerb;
     int                         fCurrPoint;
     SkRandom                    fRandom;
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 class PathCreateBench : public RandomPathBench {
@@ -425,7 +425,7 @@
 private:
     SkPath fPath;
 
-    typedef RandomPathBench INHERITED;
+    using INHERITED = RandomPathBench;
 };
 
 class PathCopyBench : public RandomPathBench {
@@ -461,7 +461,7 @@
     SkAutoTArray<SkPath> fPaths;
     SkAutoTArray<SkPath> fCopies;
 
-    typedef RandomPathBench INHERITED;
+    using INHERITED = RandomPathBench;
 };
 
 class PathTransformBench : public RandomPathBench {
@@ -509,7 +509,7 @@
 
     SkMatrix fMatrix;
     bool fInPlace;
-    typedef RandomPathBench INHERITED;
+    using INHERITED = RandomPathBench;
 };
 
 class PathEqualityBench : public RandomPathBench {
@@ -548,7 +548,7 @@
     };
     SkAutoTArray<SkPath> fPaths;
     SkAutoTArray<SkPath> fCopies;
-    typedef RandomPathBench INHERITED;
+    using INHERITED = RandomPathBench;
 };
 
 class SkBench_AddPathTest : public RandomPathBench {
@@ -646,7 +646,7 @@
     SkAutoTArray<SkPath> fPaths0;
     SkAutoTArray<SkPath> fPaths1;
     SkMatrix         fMatrix;
-    typedef RandomPathBench INHERITED;
+    using INHERITED = RandomPathBench;
 };
 
 
@@ -702,7 +702,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 
@@ -806,7 +806,7 @@
 private:
     bool fZeroRad;      // should 0 radius rounds rects be tested?
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 class ConservativelyContainsBench : public Benchmark {
@@ -882,7 +882,7 @@
     bool                fParity;
     SkTDArray<SkRect>   fQueryRects;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -914,7 +914,7 @@
         }
     }
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 DEF_BENCH( return new ConicBench_Chop; )
 
@@ -999,7 +999,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 DEF_BENCH( return new ConicBench_TinyError; )
 
@@ -1036,7 +1036,7 @@
     SkConic fConics[CONICS];
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 class ConicBench_ComputeError : public ConicBench {
@@ -1058,7 +1058,7 @@
     }
 
 private:
-    typedef ConicBench INHERITED;
+    using INHERITED = ConicBench;
 };
 
 class ConicBench_asQuadTol : public ConicBench {
@@ -1079,7 +1079,7 @@
     }
 
 private:
-    typedef ConicBench INHERITED;
+    using INHERITED = ConicBench;
 };
 
 class ConicBench_quadPow2 : public ConicBench {
@@ -1100,7 +1100,7 @@
     }
 
 private:
-    typedef ConicBench INHERITED;
+    using INHERITED = ConicBench;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -1141,7 +1141,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 
@@ -1267,7 +1267,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 DEF_BENCH( return new CommonConvexBench( 16, 16, false, false); )
diff --git a/bench/PathIterBench.cpp b/bench/PathIterBench.cpp
index fd61c13..09a5790 100644
--- a/bench/PathIterBench.cpp
+++ b/bench/PathIterBench.cpp
@@ -116,7 +116,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/bench/PathOpsBench.cpp b/bench/PathOpsBench.cpp
index b683ad1..7436fd7 100644
--- a/bench/PathOpsBench.cpp
+++ b/bench/PathOpsBench.cpp
@@ -45,7 +45,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 class PathOpsSimplifyBench : public Benchmark {
@@ -76,7 +76,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 DEF_BENCH( return new PathOpsBench("sect", kIntersect_SkPathOp); )
 DEF_BENCH( return new PathOpsBench("join", kUnion_SkPathOp); )
@@ -210,7 +210,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 DEF_BENCH( return new PathBuilderBench(MakeType::kPath, false); )
 DEF_BENCH( return new PathBuilderBench(MakeType::kSnapshot, false); )
diff --git a/bench/PathTextBench.cpp b/bench/PathTextBench.cpp
index 1ba6449..369f4a0 100644
--- a/bench/PathTextBench.cpp
+++ b/bench/PathTextBench.cpp
@@ -103,7 +103,7 @@
     SkMatrix fXforms[kNumDraws];
     SkPath fClipPath;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 DEF_BENCH(return new PathTextBench(false, false);)
diff --git a/bench/PerlinNoiseBench.cpp b/bench/PerlinNoiseBench.cpp
index 1d246b6..6c93e46 100644
--- a/bench/PerlinNoiseBench.cpp
+++ b/bench/PerlinNoiseBench.cpp
@@ -50,7 +50,7 @@
         }
     }
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/bench/PictureNestingBench.cpp b/bench/PictureNestingBench.cpp
index fab48f3..827e3ed 100644
--- a/bench/PictureNestingBench.cpp
+++ b/bench/PictureNestingBench.cpp
@@ -102,7 +102,7 @@
     SkString fName;
     SkPaint  fPaint;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 class PictureNestingRecording : public PictureNesting {
@@ -129,7 +129,7 @@
     }
 
 private:
-    typedef PictureNesting INHERITED;
+    using INHERITED = PictureNesting;
 };
 
 class PictureNestingPlayback : public PictureNesting {
@@ -159,7 +159,7 @@
 private:
     sk_sp<SkPicture> fPicture;
 
-    typedef PictureNesting INHERITED;
+    using INHERITED = PictureNesting;
 };
 
 DEF_BENCH( return new PictureNestingRecording(8, 0); )
diff --git a/bench/PolyUtilsBench.cpp b/bench/PolyUtilsBench.cpp
index ec96b47..14caee5 100644
--- a/bench/PolyUtilsBench.cpp
+++ b/bench/PolyUtilsBench.cpp
@@ -102,7 +102,7 @@
     SkString           fName;
     Type               fType;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 class StarPolyUtilsBench : public PolyUtilsBench {
@@ -128,7 +128,7 @@
         }
     }
 private:
-    typedef PolyUtilsBench INHERITED;
+    using INHERITED = PolyUtilsBench;
 };
 
 class CirclePolyUtilsBench : public PolyUtilsBench {
@@ -151,7 +151,7 @@
         }
     }
 private:
-    typedef PolyUtilsBench INHERITED;
+    using INHERITED = PolyUtilsBench;
 };
 
 class IntersectingPolyUtilsBench : public PolyUtilsBench {
@@ -176,7 +176,7 @@
         }
     }
 private:
-    typedef PolyUtilsBench INHERITED;
+    using INHERITED = PolyUtilsBench;
 };
 
 // familiar videogame character
@@ -202,7 +202,7 @@
         *poly->push() = SkPoint::Make(45, 45);
     }
 private:
-    typedef PolyUtilsBench INHERITED;
+    using INHERITED = PolyUtilsBench;
 };
 
 class IceCreamPolyUtilsBench : public PolyUtilsBench {
@@ -227,7 +227,7 @@
         *poly->push() = SkPoint::Make(90, 0);
     }
 private:
-    typedef PolyUtilsBench INHERITED;
+    using INHERITED = PolyUtilsBench;
 };
 
 DEF_BENCH(return new StarPolyUtilsBench(PolyUtilsBench::Type::kConvexCheck);)
diff --git a/bench/PremulAndUnpremulAlphaOpsBench.cpp b/bench/PremulAndUnpremulAlphaOpsBench.cpp
index b67098c..484ffb5 100644
--- a/bench/PremulAndUnpremulAlphaOpsBench.cpp
+++ b/bench/PremulAndUnpremulAlphaOpsBench.cpp
@@ -57,7 +57,7 @@
     SkColorType fColorType;
     SkString fName;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 
diff --git a/bench/RTreeBench.cpp b/bench/RTreeBench.cpp
index b36a06e..b8d93bf 100644
--- a/bench/RTreeBench.cpp
+++ b/bench/RTreeBench.cpp
@@ -51,7 +51,7 @@
 private:
     MakeRectProc fProc;
     SkString fName;
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 // Time how long it takes to perform queries on an R-Tree.
@@ -93,7 +93,7 @@
     SkRTree fTree;
     MakeRectProc fProc;
     SkString fName;
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 static inline SkRect make_XYordered_rects(SkRandom& rand, int index, int numRects) {
diff --git a/bench/ReadPixBench.cpp b/bench/ReadPixBench.cpp
index c940a9e..33c5b18 100644
--- a/bench/ReadPixBench.cpp
+++ b/bench/ReadPixBench.cpp
@@ -49,7 +49,7 @@
     SkAlphaType fAT;
     sk_sp<SkColorSpace> fCS;
     SkString fName;
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 DEF_BENCH( return new ReadPixBench(kRGBA_8888_SkColorType, kPremul_SkAlphaType, nullptr); )
 DEF_BENCH( return new ReadPixBench(kRGBA_8888_SkColorType, kUnpremul_SkAlphaType, nullptr); )
@@ -97,7 +97,7 @@
 private:
     SkBitmap fSrc, fDst;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 DEF_BENCH( return new PixmapOrientBench(); )
 
@@ -137,7 +137,7 @@
 private:
     SkBitmap fBM;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 DEF_BENCH( return new GetAlphafBench(kN32_SkColorType, "rgba"); )
 DEF_BENCH( return new GetAlphafBench(kRGB_888x_SkColorType, "rgbx"); )
diff --git a/bench/RecordingBench.h b/bench/RecordingBench.h
index 6a61e66..0fcf07f 100644
--- a/bench/RecordingBench.h
+++ b/bench/RecordingBench.h
@@ -24,7 +24,7 @@
     sk_sp<const SkPicture> fSrc;
     SkString fName;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 class RecordingBench : public PictureCentricBench {
@@ -37,7 +37,7 @@
 private:
     bool fUseBBH;
 
-    typedef PictureCentricBench INHERITED;
+    using INHERITED = PictureCentricBench;
 };
 
 class DeserializePictureBench : public Benchmark {
@@ -54,7 +54,7 @@
     SkString      fName;
     sk_sp<SkData> fEncodedPicture;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 #endif//RecordingBench_DEFINED
diff --git a/bench/RectBench.cpp b/bench/RectBench.cpp
index 7f9e0ce..1e94f6a 100644
--- a/bench/RectBench.cpp
+++ b/bench/RectBench.cpp
@@ -108,7 +108,7 @@
 
 private:
     SkString fBaseName;
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 class SrcModeRectBench : public RectBench {
@@ -135,7 +135,7 @@
     SkBlendMode fMode;
     SkString fName;
 
-    typedef RectBench INHERITED;
+    using INHERITED = RectBench;
 };
 
 class TransparentRectBench : public RectBench {
@@ -157,7 +157,7 @@
 
 private:
     SkString fName;
-    typedef RectBench INHERITED;
+    using INHERITED = RectBench;
 };
 
 // Adds a shader to the paint that requires local coordinates to be used
@@ -189,7 +189,7 @@
     SkString fName;
     sk_sp<SkShader> fShader;
 
-    typedef RectBench INHERITED;
+    using INHERITED = RectBench;
 };
 
 
@@ -326,7 +326,7 @@
     const char* onGetName() override { return fName.c_str(); }
 
 private:
-    typedef RectBench INHERITED;
+    using INHERITED = RectBench;
     kMaskType _type;
     SkString fName;
 };
diff --git a/bench/RectanizerBench.cpp b/bench/RectanizerBench.cpp
index 4c36f94..275e036 100644
--- a/bench/RectanizerBench.cpp
+++ b/bench/RectanizerBench.cpp
@@ -117,7 +117,7 @@
     RectType                    fRectType;
     std::unique_ptr<GrRectanizer> fRectanizer;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/bench/RefCntBench.cpp b/bench/RefCntBench.cpp
index af4822a..eb76333 100644
--- a/bench/RefCntBench.cpp
+++ b/bench/RefCntBench.cpp
@@ -36,7 +36,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 class PlacedRefCnt : public SkRefCnt {
@@ -45,7 +45,7 @@
     void operator delete(void*) { }
 
 private:
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 };
 
 class RefCntBench_Heap : public Benchmark {
@@ -72,7 +72,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 class RefCntBench_New : public Benchmark {
@@ -98,7 +98,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -125,7 +125,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 class PlacedWeakRefCnt : public SkWeakRefCnt {
@@ -158,7 +158,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 class WeakRefCntBench_New : public Benchmark {
@@ -184,7 +184,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/bench/RegionBench.cpp b/bench/RegionBench.cpp
index b6ad54b..295a995 100644
--- a/bench/RegionBench.cpp
+++ b/bench/RegionBench.cpp
@@ -113,7 +113,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/bench/RegionContainBench.cpp b/bench/RegionContainBench.cpp
index d825320..1a8342c 100644
--- a/bench/RegionContainBench.cpp
+++ b/bench/RegionContainBench.cpp
@@ -61,7 +61,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 DEF_BENCH(return new RegionContainBench(sect_proc, "sect");)
diff --git a/bench/RepeatTileBench.cpp b/bench/RepeatTileBench.cpp
index 6aea6bf..3679ed7 100644
--- a/bench/RepeatTileBench.cpp
+++ b/bench/RepeatTileBench.cpp
@@ -73,7 +73,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 DEF_BENCH(return new RepeatTileBench(kN32_SkColorType, kOpaque_SkAlphaType))
diff --git a/bench/RotatedRectBench.cpp b/bench/RotatedRectBench.cpp
index 7d184e2..d569fd3 100644
--- a/bench/RotatedRectBench.cpp
+++ b/bench/RotatedRectBench.cpp
@@ -182,7 +182,7 @@
     SkBlendMode fMode;
     SkString    fName;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 #define DEF_FOR_COLOR_TYPES(aa, blend) \
diff --git a/bench/SKPAnimationBench.h b/bench/SKPAnimationBench.h
index 573af1d..8433322 100644
--- a/bench/SKPAnimationBench.h
+++ b/bench/SKPAnimationBench.h
@@ -45,7 +45,7 @@
     SkString         fUniqueName;
     SkIRect          fDevBounds;
 
-    typedef SKPBench INHERITED;
+    using INHERITED = SKPBench;
 };
 
 #endif
diff --git a/bench/SKPBench.h b/bench/SKPBench.h
index 5279edd..4d29305 100644
--- a/bench/SKPBench.h
+++ b/bench/SKPBench.h
@@ -58,7 +58,7 @@
 
     const bool fDoLooping;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 #endif
diff --git a/bench/ScalarBench.cpp b/bench/ScalarBench.cpp
index a5f20c9..68c0884 100644
--- a/bench/ScalarBench.cpp
+++ b/bench/ScalarBench.cpp
@@ -37,7 +37,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 // having unknown values in our arrays can throw off the timing a lot, perhaps
@@ -65,7 +65,7 @@
     }
 private:
     float fArray[9];
-    typedef ScalarBench INHERITED;
+    using INHERITED = ScalarBench;
 };
 
 class ForcedIntComparisonBench : public ScalarBench {
@@ -88,7 +88,7 @@
 private:
     static const int32_t kPersp1Int = 0x3f800000;
     SkScalar fArray[9];
-    typedef ScalarBench INHERITED;
+    using INHERITED = ScalarBench;
 };
 
 class IsFiniteScalarBench : public ScalarBench {
@@ -119,7 +119,7 @@
     };
     SkScalar fArray[ARRAY_N];
 
-    typedef ScalarBench INHERITED;
+    using INHERITED = ScalarBench;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -158,7 +158,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/bench/ShadowBench.cpp b/bench/ShadowBench.cpp
index 13c1050..b4e9adb 100644
--- a/bench/ShadowBench.cpp
+++ b/bench/ShadowBench.cpp
@@ -95,7 +95,7 @@
     int    fTransparent;
     int    fForceGeometric;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 DEF_BENCH(return new ShadowBench(false, false);)
diff --git a/bench/ShapesBench.cpp b/bench/ShapesBench.cpp
index dcb75c9..7bf0fc4 100644
--- a/bench/ShapesBench.cpp
+++ b/bench/ShapesBench.cpp
@@ -246,7 +246,7 @@
     SkTArray<ShapeInfo>   fShapes;
 
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 #if ENABLE_COMMAND_LINE_SHAPES_BENCH
diff --git a/bench/SkGlyphCacheBench.cpp b/bench/SkGlyphCacheBench.cpp
index 5704a74..e1c29f3 100644
--- a/bench/SkGlyphCacheBench.cpp
+++ b/bench/SkGlyphCacheBench.cpp
@@ -68,7 +68,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
     const size_t fCacheSize;
     SkString fName;
 };
@@ -107,7 +107,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
     const size_t fCacheSize;
     SkString fName;
 };
diff --git a/bench/SkSLBench.cpp b/bench/SkSLBench.cpp
index 4175e39..b763678 100644
--- a/bench/SkSLBench.cpp
+++ b/bench/SkSLBench.cpp
@@ -45,7 +45,7 @@
     SkSL::Compiler fCompiler;
     SkSL::Program::Settings fSettings;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/bench/SkSLInterpreterBench.cpp b/bench/SkSLInterpreterBench.cpp
index 22afd28..79c54a8 100644
--- a/bench/SkSLInterpreterBench.cpp
+++ b/bench/SkSLInterpreterBench.cpp
@@ -68,7 +68,7 @@
     int fCount;
     std::vector<float> fPixels;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/bench/SortBench.cpp b/bench/SortBench.cpp
index e9537dd..ea74955 100644
--- a/bench/SortBench.cpp
+++ b/bench/SortBench.cpp
@@ -144,7 +144,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/bench/StreamBench.cpp b/bench/StreamBench.cpp
index 5288e17..8bb7546 100644
--- a/bench/StreamBench.cpp
+++ b/bench/StreamBench.cpp
@@ -41,7 +41,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/bench/StrokeBench.cpp b/bench/StrokeBench.cpp
index c543bf8..07e9c6a 100644
--- a/bench/StrokeBench.cpp
+++ b/bench/StrokeBench.cpp
@@ -44,7 +44,7 @@
     SkPaint     fPaint;
     SkString    fName;
     SkScalar    fRes;
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/bench/TableBench.cpp b/bench/TableBench.cpp
index c1e1b95..fca1b98 100644
--- a/bench/TableBench.cpp
+++ b/bench/TableBench.cpp
@@ -66,7 +66,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 DEF_BENCH( return new TableBench(); )
diff --git a/bench/TextBlobBench.cpp b/bench/TextBlobBench.cpp
index 70ad449..873613d 100644
--- a/bench/TextBlobBench.cpp
+++ b/bench/TextBlobBench.cpp
@@ -54,7 +54,7 @@
     SkTDArray<uint16_t> fGlyphs;
     SkTDArray<SkScalar> fXPos;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 class TextBlobCachedBench : public SkTextBlobBench {
diff --git a/bench/TileBench.cpp b/bench/TileBench.cpp
index 9a53773..058b0d5 100644
--- a/bench/TileBench.cpp
+++ b/bench/TileBench.cpp
@@ -108,7 +108,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 // Scaled benches are trending towards free.  Seems like caching.
diff --git a/bench/TileImageFilterBench.cpp b/bench/TileImageFilterBench.cpp
index c1e3773..bf307f5 100644
--- a/bench/TileImageFilterBench.cpp
+++ b/bench/TileImageFilterBench.cpp
@@ -62,7 +62,7 @@
     // Note: this is the tile size used for tiled rendering, not for the size
     // of the SkTileImageFilter source rect.
     int fTileSize;
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 DEF_BENCH(return new TileImageFilterBench(0);)
diff --git a/bench/TopoSortBench.cpp b/bench/TopoSortBench.cpp
index 712d37f..f2fc3b4 100644
--- a/bench/TopoSortBench.cpp
+++ b/bench/TopoSortBench.cpp
@@ -69,7 +69,7 @@
     SkTArray<sk_sp<ToolUtils::TopoTestNode>> fGraph;
     SkRandom fRand;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/bench/VertBench.cpp b/bench/VertBench.cpp
index 5806c0e..5b0a4e8 100644
--- a/bench/VertBench.cpp
+++ b/bench/VertBench.cpp
@@ -124,7 +124,7 @@
         }
     }
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 DEF_BENCH(return new VertBench(kTexture_VertFlag | kPersp_VertFlag);)
 DEF_BENCH(return new VertBench(kColors_VertFlag  | kPersp_VertFlag);)
@@ -214,7 +214,7 @@
         }
     }
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 //DEF_BENCH(return new AtlasBench(0);)
 //DEF_BENCH(return new AtlasBench(kColors_Flag);)
diff --git a/bench/VertexColorSpaceBench.cpp b/bench/VertexColorSpaceBench.cpp
index bf780da..024aae0 100644
--- a/bench/VertexColorSpaceBench.cpp
+++ b/bench/VertexColorSpaceBench.cpp
@@ -124,7 +124,7 @@
     Attribute fInPosition;
     Attribute fInColor;
 
-    typedef GrGeometryProcessor INHERITED;
+    using INHERITED = GrGeometryProcessor;
 };
 
 class Op : public GrMeshDrawOp {
@@ -273,7 +273,7 @@
     GrSimpleMesh*  fMesh = nullptr;
     GrProgramInfo* fProgramInfo = nullptr;
 
-    typedef GrMeshDrawOp INHERITED;
+    using INHERITED = GrMeshDrawOp;
 };
 }  // namespace
 
@@ -340,7 +340,7 @@
     SkString fName;
     Mode fMode;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 DEF_BENCH(return new VertexColorSpaceBench(kBaseline_Mode, "baseline"));
diff --git a/bench/WritePixelsBench.cpp b/bench/WritePixelsBench.cpp
index 3f3baaf..4a4303d 100644
--- a/bench/WritePixelsBench.cpp
+++ b/bench/WritePixelsBench.cpp
@@ -51,7 +51,7 @@
     sk_sp<SkColorSpace> fCS;
     SkString    fName;
 
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/bench/WriterBench.cpp b/bench/WriterBench.cpp
index 40cc1a8..1d72eaa 100644
--- a/bench/WriterBench.cpp
+++ b/bench/WriterBench.cpp
@@ -32,7 +32,7 @@
     }
 
 private:
-    typedef Benchmark INHERITED;
+    using INHERITED = Benchmark;
 };
 
 ////////////////////////////////////////////////////////////////////////////////
diff --git a/client_utils/android/FrontBufferedStream.cpp b/client_utils/android/FrontBufferedStream.cpp
index d761adb..a5e229f 100644
--- a/client_utils/android/FrontBufferedStream.cpp
+++ b/client_utils/android/FrontBufferedStream.cpp
@@ -65,7 +65,7 @@
     // data, and size is greater than 0.
     size_t readDirectlyFromStream(char* dst, size_t size);
 
-    typedef SkStream INHERITED;
+    using INHERITED = SkStream;
 };
 } // anonymous namespace
 
diff --git a/dm/DMSrcSink.h b/dm/DMSrcSink.h
index 015de62..b08d2e7 100644
--- a/dm/DMSrcSink.h
+++ b/dm/DMSrcSink.h
@@ -279,7 +279,7 @@
 private:
     SkString fTrail;
 
-    typedef SKPSrc INHERITED;
+    using INHERITED = SKPSrc;
 };
 
 #if defined(SK_ENABLE_SKOTTIE)
@@ -347,7 +347,7 @@
     sk_sp<SkSVGDOM> fDom;
     SkScalar        fScale;
 
-    typedef Src INHERITED;
+    using INHERITED = Src;
 };
 #endif // SK_XML
 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
@@ -438,7 +438,7 @@
 private:
     std::unique_ptr<SkExecutor> fExecutor;
 
-    typedef GPUSink INHERITED;
+    using INHERITED = GPUSink;
 };
 
 class GPUPersistentCacheTestingSink : public GPUSink {
@@ -455,7 +455,7 @@
 private:
     int fCacheType;
 
-    typedef GPUSink INHERITED;
+    using INHERITED = GPUSink;
 };
 
 class GPUPrecompileTestingSink : public GPUSink {
@@ -470,7 +470,7 @@
     }
 
 private:
-    typedef GPUSink INHERITED;
+    using INHERITED = GPUSink;
 };
 
 // This sink attempts to emulate Chrome's OOP-R behavior. It:
@@ -485,7 +485,7 @@
 private:
     Result ooprDraw(const Src&, sk_sp<SkSurface> dstSurface, GrDirectContext*) const;
 
-    typedef GPUSink INHERITED;
+    using INHERITED = GPUSink;
 };
 
 // This sink attempts to better simulate the Chrome DDL use-case. It:
@@ -513,7 +513,7 @@
     std::unique_ptr<SkExecutor> fRecordingExecutor;
     std::unique_ptr<SkExecutor> fGPUExecutor;
 
-    typedef GPUSink INHERITED;
+    using INHERITED = GPUSink;
 };
 
 class PDFSink : public Sink {
diff --git a/experimental/svg/model/SkSVGAttributeParser.h b/experimental/svg/model/SkSVGAttributeParser.h
index 1b2053e..054de3f 100644
--- a/experimental/svg/model/SkSVGAttributeParser.h
+++ b/experimental/svg/model/SkSVGAttributeParser.h
@@ -70,7 +70,7 @@
     // The current position in the input string.
     const char* fCurPos;
 
-    typedef SkNoncopyable INHERITED;
+    using INHERITED = SkNoncopyable;
 };
 
 #endif // SkSVGAttributeParser_DEFINED
diff --git a/experimental/svg/model/SkSVGCircle.h b/experimental/svg/model/SkSVGCircle.h
index fc774a1..85ed5c7 100644
--- a/experimental/svg/model/SkSVGCircle.h
+++ b/experimental/svg/model/SkSVGCircle.h
@@ -40,7 +40,7 @@
     SkSVGLength fCy = SkSVGLength(0);
     SkSVGLength fR  = SkSVGLength(0);
 
-    typedef SkSVGShape INHERITED;
+    using INHERITED = SkSVGShape;
 };
 
 #endif // SkSVGCircle_DEFINED
diff --git a/experimental/svg/model/SkSVGClipPath.h b/experimental/svg/model/SkSVGClipPath.h
index 303b47e..445e79f 100644
--- a/experimental/svg/model/SkSVGClipPath.h
+++ b/experimental/svg/model/SkSVGClipPath.h
@@ -20,7 +20,7 @@
 private:
     SkSVGClipPath();
 
-    typedef SkSVGHiddenContainer INHERITED;
+    using INHERITED = SkSVGHiddenContainer;
 };
 
 #endif // SkSVGClipPath_DEFINED
diff --git a/experimental/svg/model/SkSVGContainer.h b/experimental/svg/model/SkSVGContainer.h
index 698d8c0..8756e6f 100644
--- a/experimental/svg/model/SkSVGContainer.h
+++ b/experimental/svg/model/SkSVGContainer.h
@@ -30,7 +30,7 @@
     SkSTArray<1, sk_sp<SkSVGNode>, true> fChildren;
 
 private:
-    typedef SkSVGTransformableNode INHERITED;
+    using INHERITED = SkSVGTransformableNode;
 };
 
 #endif // SkSVGContainer_DEFINED
diff --git a/experimental/svg/model/SkSVGDOM.h b/experimental/svg/model/SkSVGDOM.h
index 96e9956..c2de5ff 100644
--- a/experimental/svg/model/SkSVGDOM.h
+++ b/experimental/svg/model/SkSVGDOM.h
@@ -42,7 +42,7 @@
     sk_sp<SkSVGNode> fRoot;
     SkSVGIDMapper    fIDMapper;
 
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 };
 
 #endif // SkSVGDOM_DEFINED
diff --git a/experimental/svg/model/SkSVGDefs.h b/experimental/svg/model/SkSVGDefs.h
index 17ce30e..0b9c6f0 100644
--- a/experimental/svg/model/SkSVGDefs.h
+++ b/experimental/svg/model/SkSVGDefs.h
@@ -17,7 +17,7 @@
 private:
     SkSVGDefs() : INHERITED(SkSVGTag::kDefs) {}
 
-    typedef SkSVGHiddenContainer INHERITED;
+    using INHERITED = SkSVGHiddenContainer;
 };
 
 #endif // SkSVGDefs_DEFINED
diff --git a/experimental/svg/model/SkSVGEllipse.h b/experimental/svg/model/SkSVGEllipse.h
index ec0a753..63c4c34 100644
--- a/experimental/svg/model/SkSVGEllipse.h
+++ b/experimental/svg/model/SkSVGEllipse.h
@@ -41,7 +41,7 @@
     SkSVGLength fRx = SkSVGLength(0);
     SkSVGLength fRy = SkSVGLength(0);
 
-    typedef SkSVGShape INHERITED;
+    using INHERITED = SkSVGShape;
 };
 
 #endif // SkSVGEllipse_DEFINED
diff --git a/experimental/svg/model/SkSVGG.h b/experimental/svg/model/SkSVGG.h
index 9229269..f8970cf 100644
--- a/experimental/svg/model/SkSVGG.h
+++ b/experimental/svg/model/SkSVGG.h
@@ -17,7 +17,7 @@
 private:
     SkSVGG() : INHERITED(SkSVGTag::kG) { }
 
-    typedef SkSVGContainer INHERITED;
+    using INHERITED = SkSVGContainer;
 };
 
 #endif // SkSVGG_DEFINED
diff --git a/experimental/svg/model/SkSVGGradient.h b/experimental/svg/model/SkSVGGradient.h
index a53d645..2fc5efe 100644
--- a/experimental/svg/model/SkSVGGradient.h
+++ b/experimental/svg/model/SkSVGGradient.h
@@ -45,7 +45,7 @@
     SkSVGTransformType fGradientTransform = SkSVGTransformType(SkMatrix::I());
     SkSVGSpreadMethod  fSpreadMethod = SkSVGSpreadMethod(SkSVGSpreadMethod::Type::kPad);
 
-    typedef SkSVGHiddenContainer INHERITED;
+    using INHERITED = SkSVGHiddenContainer;
 };
 
 #endif // SkSVGGradient_DEFINED
diff --git a/experimental/svg/model/SkSVGHiddenContainer.h b/experimental/svg/model/SkSVGHiddenContainer.h
index 14d82c3..f323470 100644
--- a/experimental/svg/model/SkSVGHiddenContainer.h
+++ b/experimental/svg/model/SkSVGHiddenContainer.h
@@ -17,7 +17,7 @@
     void onRender(const SkSVGRenderContext&) const final {}
 
 private:
-    typedef SkSVGContainer INHERITED;
+    using INHERITED = SkSVGContainer;
 };
 
 #endif // SkSVGHiddenContainer_DEFINED
diff --git a/experimental/svg/model/SkSVGLine.h b/experimental/svg/model/SkSVGLine.h
index c4de847..5df0220 100644
--- a/experimental/svg/model/SkSVGLine.h
+++ b/experimental/svg/model/SkSVGLine.h
@@ -42,7 +42,7 @@
     SkSVGLength fX2 = SkSVGLength(0);
     SkSVGLength fY2 = SkSVGLength(0);
 
-    typedef SkSVGShape INHERITED;
+    using INHERITED = SkSVGShape;
 };
 
 #endif // SkSVGLine_DEFINED
diff --git a/experimental/svg/model/SkSVGLinearGradient.h b/experimental/svg/model/SkSVGLinearGradient.h
index f6ae5b3..9f3b1a6 100644
--- a/experimental/svg/model/SkSVGLinearGradient.h
+++ b/experimental/svg/model/SkSVGLinearGradient.h
@@ -37,7 +37,7 @@
     SkSVGLength fX2 = SkSVGLength(100, SkSVGLength::Unit::kPercentage);
     SkSVGLength fY2 = SkSVGLength(0  , SkSVGLength::Unit::kPercentage);
 
-    typedef SkSVGGradient INHERITED;
+    using INHERITED = SkSVGGradient;
 };
 
 #endif // SkSVGLinearGradient_DEFINED
diff --git a/experimental/svg/model/SkSVGNode.h b/experimental/svg/model/SkSVGNode.h
index 5c97949..99d07b2 100644
--- a/experimental/svg/model/SkSVGNode.h
+++ b/experimental/svg/model/SkSVGNode.h
@@ -97,7 +97,7 @@
     // FIXME: this should be sparse
     SkSVGPresentationAttributes fPresentationAttributes;
 
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 };
 
 #endif // SkSVGNode_DEFINED
diff --git a/experimental/svg/model/SkSVGPath.h b/experimental/svg/model/SkSVGPath.h
index 1b7b17d..166741c 100644
--- a/experimental/svg/model/SkSVGPath.h
+++ b/experimental/svg/model/SkSVGPath.h
@@ -31,7 +31,7 @@
 
     mutable SkPath fPath; // mutated in onDraw(), to apply inherited fill types.
 
-    typedef SkSVGShape INHERITED;
+    using INHERITED = SkSVGShape;
 };
 
 #endif // SkSVGPath_DEFINED
diff --git a/experimental/svg/model/SkSVGPattern.h b/experimental/svg/model/SkSVGPattern.h
index 850baa1..541f1fa 100644
--- a/experimental/svg/model/SkSVGPattern.h
+++ b/experimental/svg/model/SkSVGPattern.h
@@ -53,7 +53,7 @@
     //   - patternUnits
     //   - patternContentUnits
 
-    typedef SkSVGHiddenContainer INHERITED;
+    using INHERITED = SkSVGHiddenContainer;
 };
 
 #endif // SkSVGPattern_DEFINED
diff --git a/experimental/svg/model/SkSVGPoly.h b/experimental/svg/model/SkSVGPoly.h
index ef9c3a5..e847ca8 100644
--- a/experimental/svg/model/SkSVGPoly.h
+++ b/experimental/svg/model/SkSVGPoly.h
@@ -39,7 +39,7 @@
 
     mutable SkPath fPath;  // mutated in onDraw(), to apply inherited fill types.
 
-    typedef SkSVGShape INHERITED;
+    using INHERITED = SkSVGShape;
 };
 
 #endif // SkSVGPoly_DEFINED
diff --git a/experimental/svg/model/SkSVGRadialGradient.h b/experimental/svg/model/SkSVGRadialGradient.h
index 6a26700..d2643fa 100644
--- a/experimental/svg/model/SkSVGRadialGradient.h
+++ b/experimental/svg/model/SkSVGRadialGradient.h
@@ -40,7 +40,7 @@
     SkTLazy<SkSVGLength> fFy;
 
 
-   typedef SkSVGGradient INHERITED;
+   using INHERITED = SkSVGGradient;
 };
 
 #endif // SkSVGRadialGradient_DEFINED
diff --git a/experimental/svg/model/SkSVGRect.h b/experimental/svg/model/SkSVGRect.h
index fca15e0..20b4dbc 100644
--- a/experimental/svg/model/SkSVGRect.h
+++ b/experimental/svg/model/SkSVGRect.h
@@ -48,7 +48,7 @@
     // The y radius for rounded rects.
     SkSVGLength fRy     = SkSVGLength(0);
 
-    typedef SkSVGShape INHERITED;
+    using INHERITED = SkSVGShape;
 };
 
 #endif // SkSVGRect_DEFINED
diff --git a/experimental/svg/model/SkSVGSVG.h b/experimental/svg/model/SkSVGSVG.h
index ccdd06f..e44c8f3 100644
--- a/experimental/svg/model/SkSVGSVG.h
+++ b/experimental/svg/model/SkSVGSVG.h
@@ -43,7 +43,7 @@
 
     SkTLazy<SkSVGViewBoxType> fViewBox;
 
-    typedef SkSVGContainer INHERITED;
+    using INHERITED = SkSVGContainer;
 };
 
 #endif // SkSVGSVG_DEFINED
diff --git a/experimental/svg/model/SkSVGShape.h b/experimental/svg/model/SkSVGShape.h
index ff57d5b..56fc782 100644
--- a/experimental/svg/model/SkSVGShape.h
+++ b/experimental/svg/model/SkSVGShape.h
@@ -29,7 +29,7 @@
                         SkPathFillType) const = 0;
 
 private:
-    typedef SkSVGTransformableNode INHERITED;
+    using INHERITED = SkSVGTransformableNode;
 };
 
 #endif // SkSVGShape_DEFINED
diff --git a/experimental/svg/model/SkSVGStop.h b/experimental/svg/model/SkSVGStop.h
index 0554ef7..816e23d 100644
--- a/experimental/svg/model/SkSVGStop.h
+++ b/experimental/svg/model/SkSVGStop.h
@@ -38,7 +38,7 @@
     SkSVGStopColor    fStopColor = SkSVGStopColor(SK_ColorBLACK);
     SkSVGNumberType fStopOpacity = SkSVGNumberType(1);
 
-    typedef SkSVGHiddenContainer INHERITED;
+    using INHERITED = SkSVGHiddenContainer;
 };
 
 #endif // SkSVGStop_DEFINED
diff --git a/experimental/svg/model/SkSVGText.h b/experimental/svg/model/SkSVGText.h
index 9bdd5cc..61e69d8 100644
--- a/experimental/svg/model/SkSVGText.h
+++ b/experimental/svg/model/SkSVGText.h
@@ -51,7 +51,7 @@
   SkSVGStringType fFontStyle;
   SkSVGStringType fFontWeight;
   SkTextUtils::Align fTextAlign = SkTextUtils::Align::kLeft_Align;
-  typedef SkSVGShape INHERITED;
+  using INHERITED = SkSVGShape;
 };
 
 #endif  // SkSVGText_DEFINED
diff --git a/experimental/svg/model/SkSVGTransformableNode.h b/experimental/svg/model/SkSVGTransformableNode.h
index 32096e0..c86df6c 100644
--- a/experimental/svg/model/SkSVGTransformableNode.h
+++ b/experimental/svg/model/SkSVGTransformableNode.h
@@ -30,7 +30,7 @@
     // FIXME: should be sparse
     SkSVGTransformType fTransform;
 
-    typedef SkSVGNode INHERITED;
+    using INHERITED = SkSVGNode;
 };
 
 #endif // SkSVGTransformableNode_DEFINED
diff --git a/experimental/svg/model/SkSVGUse.h b/experimental/svg/model/SkSVGUse.h
index a939e37..41fa470 100644
--- a/experimental/svg/model/SkSVGUse.h
+++ b/experimental/svg/model/SkSVGUse.h
@@ -41,7 +41,7 @@
     SkSVGLength        fX = SkSVGLength(0);
     SkSVGLength        fY = SkSVGLength(0);
 
-    typedef SkSVGTransformableNode INHERITED;
+    using INHERITED = SkSVGTransformableNode;
 };
 
 #endif // SkSVGUse_DEFINED
diff --git a/experimental/svg/model/SkSVGValue.h b/experimental/svg/model/SkSVGValue.h
index 0eb1cc0..791bf32 100644
--- a/experimental/svg/model/SkSVGValue.h
+++ b/experimental/svg/model/SkSVGValue.h
@@ -50,7 +50,7 @@
 private:
     Type fType;
 
-    typedef SkNoncopyable INHERITED;
+    using INHERITED = SkNoncopyable;
 };
 
 template <typename T, SkSVGValue::Type ValueType>
@@ -72,7 +72,7 @@
 
     const T& fWrappedValue;
 
-    typedef SkSVGValue INHERITED;
+    using INHERITED = SkSVGValue;
 };
 
 using SkSVGClipValue         = SkSVGWrapperValue<SkSVGClip         , SkSVGValue::Type::kClip      >;
diff --git a/gm/aaclip.cpp b/gm/aaclip.cpp
index 4b69194..e6a6c18 100644
--- a/gm/aaclip.cpp
+++ b/gm/aaclip.cpp
@@ -280,6 +280,6 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM(return new ClipCubicGM;)
diff --git a/gm/aaxfermodes.cpp b/gm/aaxfermodes.cpp
index f5c05a2..c373841 100644
--- a/gm/aaxfermodes.cpp
+++ b/gm/aaxfermodes.cpp
@@ -280,6 +280,6 @@
     SkPath    fOval;
     SkPath    fConcave;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new AAXfermodesGM; )
diff --git a/gm/addarc.cpp b/gm/addarc.cpp
index b04bf21..f198222 100644
--- a/gm/addarc.cpp
+++ b/gm/addarc.cpp
@@ -69,7 +69,7 @@
 
 private:
     SkScalar fRotate;
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new AddArcGM; )
 
@@ -154,7 +154,7 @@
 private:
     SkScalar fRotate;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new StrokeCircleGM; )
 
@@ -207,7 +207,7 @@
 private:
     SkScalar fRotate;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new FillCircleGM; )
 
diff --git a/gm/alphagradients.cpp b/gm/alphagradients.cpp
index b50c21c..52056f2 100644
--- a/gm/alphagradients.cpp
+++ b/gm/alphagradients.cpp
@@ -81,7 +81,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM(return new AlphaGradientsGM;)
diff --git a/gm/analytic_gradients.cpp b/gm/analytic_gradients.cpp
index a96cbda..b2eac27 100644
--- a/gm/analytic_gradients.cpp
+++ b/gm/analytic_gradients.cpp
@@ -184,7 +184,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM(return new AnalyticGradientShaderGM;)
diff --git a/gm/androidblendmodes.cpp b/gm/androidblendmodes.cpp
index 77003fb..0b7172b 100644
--- a/gm/androidblendmodes.cpp
+++ b/gm/androidblendmodes.cpp
@@ -127,7 +127,7 @@
     SkBitmap fCompositeSrc;
     SkBitmap fCompositeDst;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/animatedimageblurs.cpp b/gm/animatedimageblurs.cpp
index 90eb1d4..30cfbd5 100644
--- a/gm/animatedimageblurs.cpp
+++ b/gm/animatedimageblurs.cpp
@@ -138,7 +138,7 @@
     SkRandom fRand;
     SkScalar fLastTime;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/anisotropic.cpp b/gm/anisotropic.cpp
index 2304e51..5699fe6 100644
--- a/gm/anisotropic.cpp
+++ b/gm/anisotropic.cpp
@@ -115,7 +115,7 @@
     SkBitmap         fBM;
     SkFilterQuality  fFilterQuality;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/arcofzorro.cpp b/gm/arcofzorro.cpp
index 1eccca3..82e3723 100644
--- a/gm/arcofzorro.cpp
+++ b/gm/arcofzorro.cpp
@@ -81,7 +81,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/arithmode.cpp b/gm/arithmode.cpp
index f835eb7..688c4a5 100644
--- a/gm/arithmode.cpp
+++ b/gm/arithmode.cpp
@@ -164,7 +164,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/gm/badpaint.cpp b/gm/badpaint.cpp
index da7dbd5..399c3bd 100644
--- a/gm/badpaint.cpp
+++ b/gm/badpaint.cpp
@@ -56,7 +56,7 @@
 private:
     SkTArray<SkPaint> fPaints;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 /////////////////////////////////////////////////////////////////////////////////////
diff --git a/gm/bc1_transparency.cpp b/gm/bc1_transparency.cpp
index a841433..5ff654f 100644
--- a/gm/bc1_transparency.cpp
+++ b/gm/bc1_transparency.cpp
@@ -210,7 +210,7 @@
     sk_sp<SkImage> fRGBImage;
     sk_sp<SkImage> fRGBAImage;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/beziereffects.cpp b/gm/beziereffects.cpp
index 4b7c839..4f1baa0 100644
--- a/gm/beziereffects.cpp
+++ b/gm/beziereffects.cpp
@@ -135,7 +135,7 @@
     GrProcessorSet       fProcessorSet;
     GrProgramInfo*       fProgramInfo = nullptr;
 
-    typedef GrMeshDrawOp INHERITED;
+    using INHERITED = GrMeshDrawOp;
 };
 
 /**
@@ -199,7 +199,7 @@
     static constexpr int kVertsPerCubic = 4;
     static constexpr int kIndicesPerCubic = 6;
 
-    typedef BezierTestOp INHERITED;
+    using INHERITED = BezierTestOp;
 };
 
 
@@ -342,7 +342,7 @@
         return conicCnt;
     }
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
@@ -402,7 +402,7 @@
     static constexpr int kVertsPerCubic = 4;
     static constexpr int kIndicesPerCubic = 6;
 
-    typedef BezierTestOp INHERITED;
+    using INHERITED = BezierTestOp;
 };
 
 /**
@@ -497,7 +497,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM(return new BezierConicEffects;)
diff --git a/gm/beziers.cpp b/gm/beziers.cpp
index 5cc52de..7819d0f 100644
--- a/gm/beziers.cpp
+++ b/gm/beziers.cpp
@@ -95,7 +95,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM( return new BeziersGM; )
diff --git a/gm/bigblurs.cpp b/gm/bigblurs.cpp
index 09e94dc..e768850 100644
--- a/gm/bigblurs.cpp
+++ b/gm/bigblurs.cpp
@@ -116,7 +116,7 @@
     static constexpr int kWidth = 5 * kCloseUpSize;
     static constexpr int kHeight = 2 * (kLastEnum_SkBlurStyle + 1) * kCloseUpSize;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM(return new BigBlursGM;)
diff --git a/gm/bigrrectaaeffect.cpp b/gm/bigrrectaaeffect.cpp
index 2b106d7..492836f 100644
--- a/gm/bigrrectaaeffect.cpp
+++ b/gm/bigrrectaaeffect.cpp
@@ -126,7 +126,7 @@
     int fTestOffsetX;
     int fTestOffsetY;
     const char* fName;
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/gm/bigtext.cpp b/gm/bigtext.cpp
index e491d10..b0db001 100644
--- a/gm/bigtext.cpp
+++ b/gm/bigtext.cpp
@@ -57,7 +57,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM(return new BigTextGM;)
diff --git a/gm/bigtileimagefilter.cpp b/gm/bigtileimagefilter.cpp
index 918fe9f..b90631f 100644
--- a/gm/bigtileimagefilter.cpp
+++ b/gm/bigtileimagefilter.cpp
@@ -112,7 +112,7 @@
     sk_sp<SkImage> fRedImage;
     sk_sp<SkImage> fGreenImage;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/bitmapfilters.cpp b/gm/bitmapfilters.cpp
index 73b5887..8e88723 100644
--- a/gm/bitmapfilters.cpp
+++ b/gm/bitmapfilters.cpp
@@ -112,7 +112,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new FilterGM; )
 
@@ -159,6 +159,6 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new TestExtractAlphaGM; )
diff --git a/gm/bitmapimage.cpp b/gm/bitmapimage.cpp
index 52a16dc..9f8d76d 100644
--- a/gm/bitmapimage.cpp
+++ b/gm/bitmapimage.cpp
@@ -79,7 +79,7 @@
 private:
     static constexpr int kSize = 512;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/bitmappremul.cpp b/gm/bitmappremul.cpp
index bd6ff87..3cd9c9a 100644
--- a/gm/bitmappremul.cpp
+++ b/gm/bitmappremul.cpp
@@ -111,7 +111,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM( return new BitmapPremulGM; )
diff --git a/gm/bitmaprect.cpp b/gm/bitmaprect.cpp
index 368b720..e840b81 100644
--- a/gm/bitmaprect.cpp
+++ b/gm/bitmaprect.cpp
@@ -90,7 +90,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
@@ -153,7 +153,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
@@ -227,7 +227,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 class BitmapRectRounding : public skiagm::GM {
@@ -270,7 +270,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new BitmapRectRounding; )
 
diff --git a/gm/bitmapshader.cpp b/gm/bitmapshader.cpp
index c0149f1..27b5cc1 100644
--- a/gm/bitmapshader.cpp
+++ b/gm/bitmapshader.cpp
@@ -112,7 +112,7 @@
     SkBitmap fBitmap;
     SkBitmap fMask;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_SIMPLE_GM(hugebitmapshader, canvas, 100, 100) {
diff --git a/gm/bleed.cpp b/gm/bleed.cpp
index 4eeae73..a94db84 100644
--- a/gm/bleed.cpp
+++ b/gm/bleed.cpp
@@ -315,7 +315,7 @@
     SkIRect fSmallSrcRect;
     SkCanvas::SrcRectConstraint fConstraint;
     bool fBatch = false;
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM(return new SrcRectConstraintGM("strict_constraint_no_red_allowed",
diff --git a/gm/blurcircles.cpp b/gm/blurcircles.cpp
index a8bb52d..18c2461 100644
--- a/gm/blurcircles.cpp
+++ b/gm/blurcircles.cpp
@@ -67,7 +67,7 @@
 
     sk_sp<SkMaskFilter> fBlurFilters[kNumBlurs];
 
-    typedef         skiagm::GM INHERITED;
+    using INHERITED =         skiagm::GM;
 };
 
 DEF_GM(return new BlurCirclesGM();)
diff --git a/gm/blurcircles2.cpp b/gm/blurcircles2.cpp
index c30d363..c399d56 100644
--- a/gm/blurcircles2.cpp
+++ b/gm/blurcircles2.cpp
@@ -164,7 +164,7 @@
 
     SkRandom    fRandom;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM(return new BlurCircles2GM();)
diff --git a/gm/blurignorexform.cpp b/gm/blurignorexform.cpp
index 3e19d27..c8a40c9 100644
--- a/gm/blurignorexform.cpp
+++ b/gm/blurignorexform.cpp
@@ -134,7 +134,7 @@
     DrawType fDrawType;
     sk_sp<SkMaskFilter> fBlurFilters[kNumBlurs];
 
-    typedef         skiagm::GM INHERITED;
+    using INHERITED =         skiagm::GM;
 };
 
 const BlurIgnoreXformGM::BlurFlags BlurIgnoreXformGM::kBlurFlags[] = {
diff --git a/gm/blurquickreject.cpp b/gm/blurquickreject.cpp
index 45b6478..e309be4 100644
--- a/gm/blurquickreject.cpp
+++ b/gm/blurquickreject.cpp
@@ -85,7 +85,7 @@
     static constexpr int kWidth = 300;
     static constexpr int kHeight = 300;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM( return new BlurQuickRejectGM(); )
diff --git a/gm/blurredclippedcircle.cpp b/gm/blurredclippedcircle.cpp
index 9f7c969..c7075b0 100644
--- a/gm/blurredclippedcircle.cpp
+++ b/gm/blurredclippedcircle.cpp
@@ -90,7 +90,7 @@
     static constexpr int kWidth = 1164;
     static constexpr int kHeight = 802;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/bmpfilterqualityrepeat.cpp b/gm/bmpfilterqualityrepeat.cpp
index 47891a6..8630d81 100644
--- a/gm/bmpfilterqualityrepeat.cpp
+++ b/gm/bmpfilterqualityrepeat.cpp
@@ -97,7 +97,7 @@
 
     SkBitmap    fBmp;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/circles.cpp b/gm/circles.cpp
index 644f7ff..13cdd5d 100644
--- a/gm/circles.cpp
+++ b/gm/circles.cpp
@@ -202,7 +202,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
     SkTArray<SkPaint> fPaints;
     SkTArray<SkMatrix> fMatrices;
 };
diff --git a/gm/circularclips.cpp b/gm/circularclips.cpp
index ad61e96..54985c4 100644
--- a/gm/circularclips.cpp
+++ b/gm/circularclips.cpp
@@ -91,7 +91,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/clip_error.cpp b/gm/clip_error.cpp
index 2f87dbb..f496ca1 100644
--- a/gm/clip_error.cpp
+++ b/gm/clip_error.cpp
@@ -82,7 +82,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM(return new ClipErrorGM;)
diff --git a/gm/clip_strokerect.cpp b/gm/clip_strokerect.cpp
index 746ea2f..5ca3093 100644
--- a/gm/clip_strokerect.cpp
+++ b/gm/clip_strokerect.cpp
@@ -68,7 +68,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM(return new ClipStrokeRectGM;)
diff --git a/gm/clippedbitmapshaders.cpp b/gm/clippedbitmapshaders.cpp
index aa22851..fee715a 100644
--- a/gm/clippedbitmapshaders.cpp
+++ b/gm/clippedbitmapshaders.cpp
@@ -116,7 +116,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 }  // namespace
 
diff --git a/gm/clockwise.cpp b/gm/clockwise.cpp
index a61d291..0b1892d 100644
--- a/gm/clockwise.cpp
+++ b/gm/clockwise.cpp
@@ -103,7 +103,7 @@
 
     const bool fReadSkFragCoord;
 
-    typedef GrGeometryProcessor INHERITED;
+    using INHERITED = GrGeometryProcessor;
 };
 
 class GLSLClockwiseTestProcessor : public GrGLSLGeometryProcessor {
@@ -232,7 +232,7 @@
 
     friend class ::GrOpMemoryPool; // for ctor
 
-    typedef GrDrawOp INHERITED;
+    using INHERITED = GrDrawOp;
 };
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/gm/coloremoji.cpp b/gm/coloremoji.cpp
index d5d825f..e195376 100644
--- a/gm/coloremoji.cpp
+++ b/gm/coloremoji.cpp
@@ -191,7 +191,7 @@
         }
     }
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/coloremoji_blendmodes.cpp b/gm/coloremoji_blendmodes.cpp
index 250fbbb..12f0b91 100644
--- a/gm/coloremoji_blendmodes.cpp
+++ b/gm/coloremoji_blendmodes.cpp
@@ -167,7 +167,7 @@
     SkBitmap            fBG;
     sk_sp<SkTypeface>   fColorType;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 }  // namespace
 
diff --git a/gm/colorfilteralpha8.cpp b/gm/colorfilteralpha8.cpp
index 0fe6b5e..2c38143 100644
--- a/gm/colorfilteralpha8.cpp
+++ b/gm/colorfilteralpha8.cpp
@@ -49,6 +49,6 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new ColorFilterAlpha8; )
diff --git a/gm/colormatrix.cpp b/gm/colormatrix.cpp
index 8f3f5e2..46a90ab 100644
--- a/gm/colormatrix.cpp
+++ b/gm/colormatrix.cpp
@@ -139,6 +139,6 @@
     sk_sp<SkImage>   fSolidImg;
     sk_sp<SkImage>   fTransparentImg;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new ColorMatrixGM; )
diff --git a/gm/complexclip.cpp b/gm/complexclip.cpp
index 5bdec62..4a7e0ec 100644
--- a/gm/complexclip.cpp
+++ b/gm/complexclip.cpp
@@ -194,7 +194,7 @@
     bool fDoSaveLayer;
     bool fInvertDraw;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/complexclip2.cpp b/gm/complexclip2.cpp
index e83933a..9e8b589 100644
--- a/gm/complexclip2.cpp
+++ b/gm/complexclip2.cpp
@@ -209,7 +209,7 @@
     SkScalar fTotalWidth;
     SkScalar fTotalHeight;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/complexclip3.cpp b/gm/complexclip3.cpp
index e08cd1b..ece4b72 100644
--- a/gm/complexclip3.cpp
+++ b/gm/complexclip3.cpp
@@ -129,7 +129,7 @@
 private:
     bool fDoSimpleClipFirst;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/complexclip4.cpp b/gm/complexclip4.cpp
index 6ef34af..93dec8b 100644
--- a/gm/complexclip4.cpp
+++ b/gm/complexclip4.cpp
@@ -127,7 +127,7 @@
     SkIRect fDeviceRestriction;
     bool    fDoAAClip;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/complexclip_blur_tiled.cpp b/gm/complexclip_blur_tiled.cpp
index 330458c..24aaea0 100644
--- a/gm/complexclip_blur_tiled.cpp
+++ b/gm/complexclip_blur_tiled.cpp
@@ -68,7 +68,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/composeshader.cpp b/gm/composeshader.cpp
index b4fdfd2..a935dea 100644
--- a/gm/composeshader.cpp
+++ b/gm/composeshader.cpp
@@ -241,7 +241,7 @@
     sk_sp<SkShader> fAlpha8BitmapShader;
     sk_sp<SkShader> fLinearGradientShader;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM( return new ComposeShaderBitmapGM(false); )
 DEF_GM( return new ComposeShaderBitmapGM(true); )
diff --git a/gm/compositor_quads.cpp b/gm/compositor_quads.cpp
index aabc361..934afba 100644
--- a/gm/compositor_quads.cpp
+++ b/gm/compositor_quads.cpp
@@ -538,7 +538,7 @@
         SkASSERT(fMatrices.count() == fMatrixNames.count());
     }
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 ////////////////////////////////////////////////////////////////////////////////////////////////
@@ -608,7 +608,7 @@
             : fAAOverride(aa)
             , fEnableAAOverride(enableAAOverrde) {}
 
-    typedef ClipTileRenderer INHERITED;
+    using INHERITED = ClipTileRenderer;
 };
 
 // Tests tmp_drawEdgeAAQuad
@@ -635,7 +635,7 @@
 
     SolidColorRenderer(const SkColor4f& color) : fColor(color) {}
 
-    typedef ClipTileRenderer INHERITED;
+    using INHERITED = ClipTileRenderer;
 };
 
 // Tests drawEdgeAAImageSet(), but can batch the entries together in different ways
@@ -885,7 +885,7 @@
         return 1;
     }
 
-    typedef ClipTileRenderer INHERITED;
+    using INHERITED = ClipTileRenderer;
 };
 
 class YUVTextureSetRenderer : public ClipTileRenderer {
@@ -985,7 +985,7 @@
         return 1;
     }
 
-    typedef ClipTileRenderer INHERITED;
+    using INHERITED = ClipTileRenderer;
 };
 
 static SkTArray<sk_sp<ClipTileRenderer>> make_debug_renderers() {
diff --git a/gm/compressed_textures.cpp b/gm/compressed_textures.cpp
index 37720ac..6db0758 100644
--- a/gm/compressed_textures.cpp
+++ b/gm/compressed_textures.cpp
@@ -319,7 +319,7 @@
     sk_sp<SkImage> fOpaqueBC1Image;
     sk_sp<SkImage> fTransparentBC1Image;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/conicpaths.cpp b/gm/conicpaths.cpp
index f68edbd..49be3fc 100644
--- a/gm/conicpaths.cpp
+++ b/gm/conicpaths.cpp
@@ -141,7 +141,7 @@
 private:
     SkTArray<SkPath> fPaths;
     SkPath           fGiantCircle;
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM(return new ConicPathsGM;)
 
diff --git a/gm/constcolorprocessor.cpp b/gm/constcolorprocessor.cpp
index bf3d6a1..3a0e28b 100644
--- a/gm/constcolorprocessor.cpp
+++ b/gm/constcolorprocessor.cpp
@@ -213,7 +213,7 @@
     static constexpr int            kWidth  = 820;
     static constexpr int            kHeight = 500;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM(return new ColorProcessor{ColorProcessor::TestMode::kConstColor};)
diff --git a/gm/convex_all_line_paths.cpp b/gm/convex_all_line_paths.cpp
index 27f504c..1294325 100644
--- a/gm/convex_all_line_paths.cpp
+++ b/gm/convex_all_line_paths.cpp
@@ -405,7 +405,7 @@
 
     bool fDoStrokeAndFill;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/convexpolyclip.cpp b/gm/convexpolyclip.cpp
index 8d53b50..3e78054 100644
--- a/gm/convexpolyclip.cpp
+++ b/gm/convexpolyclip.cpp
@@ -304,7 +304,7 @@
     ClipList         fClips;
     SkBitmap         fBmp;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM(return new ConvexPolyClip;)
diff --git a/gm/convexpolyeffect.cpp b/gm/convexpolyeffect.cpp
index 9d4c852..635783b 100644
--- a/gm/convexpolyeffect.cpp
+++ b/gm/convexpolyeffect.cpp
@@ -202,7 +202,7 @@
     PathList fPaths;
     RectList fRects;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM(return new ConvexPolyEffect;)
diff --git a/gm/croppedrects.cpp b/gm/croppedrects.cpp
index 3a16e27..5e9f0bd 100644
--- a/gm/croppedrects.cpp
+++ b/gm/croppedrects.cpp
@@ -110,7 +110,7 @@
     sk_sp<SkImage> fSrcImage;
     sk_sp<SkShader> fSrcImageShader;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM( return new CroppedRectsGM(); )
diff --git a/gm/cubicpaths.cpp b/gm/cubicpaths.cpp
index 0ca5552..1490a67 100644
--- a/gm/cubicpaths.cpp
+++ b/gm/cubicpaths.cpp
@@ -114,7 +114,7 @@
     SkPath fPath;
     SkPath fFlipped;
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 
diff --git a/gm/dashcircle.cpp b/gm/dashcircle.cpp
index 19a275d..00705ee 100644
--- a/gm/dashcircle.cpp
+++ b/gm/dashcircle.cpp
@@ -114,7 +114,7 @@
 private:
     SkScalar fRotation;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM(return new DashCircleGM; )
diff --git a/gm/dashcubics.cpp b/gm/dashcubics.cpp
index 03bfe90..a6abadf 100644
--- a/gm/dashcubics.cpp
+++ b/gm/dashcubics.cpp
@@ -171,7 +171,7 @@
     SkTArray<SkPath> fPaths;
     SkScalar         fOffset = 0;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM(return new TrimGM;)
 
diff --git a/gm/dftext.cpp b/gm/dftext.cpp
index 559c4f6..a1f6c84 100644
--- a/gm/dftext.cpp
+++ b/gm/dftext.cpp
@@ -242,7 +242,7 @@
     sk_sp<SkTypeface> fEmojiTypeface;
     const char* fEmojiText;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM(return new DFTextGM;)
diff --git a/gm/dftext_blob_persp.cpp b/gm/dftext_blob_persp.cpp
index 271e89d..9e50628 100644
--- a/gm/dftext_blob_persp.cpp
+++ b/gm/dftext_blob_persp.cpp
@@ -144,7 +144,7 @@
     }
 
     SkTArray<sk_sp<SkTextBlob>> fBlobs;
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM(return new DFTextBlobPerspGM;)
diff --git a/gm/discard.cpp b/gm/discard.cpp
index b092a59..f39d289 100644
--- a/gm/discard.cpp
+++ b/gm/discard.cpp
@@ -92,7 +92,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/displacement.cpp b/gm/displacement.cpp
index 51ab5a3..33d902c 100644
--- a/gm/displacement.cpp
+++ b/gm/displacement.cpp
@@ -165,7 +165,7 @@
     SkBitmap fBitmap;
     sk_sp<SkImage> fCheckerboard, fSmall, fLarge, fLargeW, fLargeH;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/drawatlas.cpp b/gm/drawatlas.cpp
index 2ea54bb..51b192a 100644
--- a/gm/drawatlas.cpp
+++ b/gm/drawatlas.cpp
@@ -122,7 +122,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM( return new DrawAtlasGM; )
 
diff --git a/gm/drawatlascolor.cpp b/gm/drawatlascolor.cpp
index 096620d..35d6ac1 100644
--- a/gm/drawatlascolor.cpp
+++ b/gm/drawatlascolor.cpp
@@ -171,6 +171,6 @@
     static constexpr int kPad = 2;
     static constexpr int kTextPad = 8;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM( return new DrawAtlasColorsGM; )
diff --git a/gm/drawbitmaprect.cpp b/gm/drawbitmaprect.cpp
index 7eb4fe9..0bda495 100644
--- a/gm/drawbitmaprect.cpp
+++ b/gm/drawbitmaprect.cpp
@@ -248,7 +248,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM( return new DrawBitmapRectGM(bitmapproc      , nullptr); )
diff --git a/gm/drawminibitmaprect.cpp b/gm/drawminibitmaprect.cpp
index ea044c2..9231b90 100644
--- a/gm/drawminibitmaprect.cpp
+++ b/gm/drawminibitmaprect.cpp
@@ -145,7 +145,7 @@
     sk_sp<SkImage>  fImage;
     SkString        fName;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM( return new DrawMiniBitmapRectGM(true); )
diff --git a/gm/drawregion.cpp b/gm/drawregion.cpp
index 8848934..44a3c28 100644
--- a/gm/drawregion.cpp
+++ b/gm/drawregion.cpp
@@ -56,6 +56,6 @@
     SkRegion fRegion;
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new DrawRegionGM; )
diff --git a/gm/drawregionmodes.cpp b/gm/drawregionmodes.cpp
index 3b153a0..d476324 100644
--- a/gm/drawregionmodes.cpp
+++ b/gm/drawregionmodes.cpp
@@ -85,6 +85,6 @@
 private:
     SkRegion fRegion;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new DrawRegionModesGM; )
diff --git a/gm/drrect.cpp b/gm/drrect.cpp
index 634e203..b863ce5 100644
--- a/gm/drrect.cpp
+++ b/gm/drrect.cpp
@@ -70,7 +70,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM( return new DRRectGM; )
diff --git a/gm/dstreadshuffle.cpp b/gm/dstreadshuffle.cpp
index 4bb233a..64f3bbc 100644
--- a/gm/dstreadshuffle.cpp
+++ b/gm/dstreadshuffle.cpp
@@ -196,7 +196,7 @@
     static constexpr SkColor kBackground = SK_ColorLTGRAY;
     SkPath fConcavePath;
     SkPath fConvexPath;
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/emboss.cpp b/gm/emboss.cpp
index 82a13b3..04c99fd 100644
--- a/gm/emboss.cpp
+++ b/gm/emboss.cpp
@@ -88,7 +88,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM(return new EmbossGM;)
diff --git a/gm/encode.cpp b/gm/encode.cpp
index 79688b1..c0946b6 100644
--- a/gm/encode.cpp
+++ b/gm/encode.cpp
@@ -51,7 +51,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM( return new EncodeGM; )
diff --git a/gm/encode_alpha_jpeg.cpp b/gm/encode_alpha_jpeg.cpp
index cc9cf61..14d13d8 100644
--- a/gm/encode_alpha_jpeg.cpp
+++ b/gm/encode_alpha_jpeg.cpp
@@ -103,7 +103,7 @@
 private:
     SkAutoTMalloc<uint8_t> fStorage;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM( return new EncodeJpegAlphaOptsGM; )
diff --git a/gm/encode_color_types.cpp b/gm/encode_color_types.cpp
index b814830..911a439 100644
--- a/gm/encode_color_types.cpp
+++ b/gm/encode_color_types.cpp
@@ -150,7 +150,7 @@
     const Variant              fVariant;
     const char*                fName;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 
diff --git a/gm/encode_platform.cpp b/gm/encode_platform.cpp
index 1a87e0b..591af94 100644
--- a/gm/encode_platform.cpp
+++ b/gm/encode_platform.cpp
@@ -142,7 +142,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM( return new EncodePlatformGM; )
diff --git a/gm/encode_srgb.cpp b/gm/encode_srgb.cpp
index d707b8c..c1c00ec 100644
--- a/gm/encode_srgb.cpp
+++ b/gm/encode_srgb.cpp
@@ -144,7 +144,7 @@
 private:
     SkEncodedImageFormat fEncodedFormat;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM( return new EncodeSRGBGM(SkEncodedImageFormat::kPNG); )
diff --git a/gm/exoticformats.cpp b/gm/exoticformats.cpp
index 02f919b..71a85f2 100644
--- a/gm/exoticformats.cpp
+++ b/gm/exoticformats.cpp
@@ -434,7 +434,7 @@
     sk_sp<SkImage> fETC1Image;
     sk_sp<SkImage> fBC1Image;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/extractbitmap.cpp b/gm/extractbitmap.cpp
index 6809057..3dfe386 100644
--- a/gm/extractbitmap.cpp
+++ b/gm/extractbitmap.cpp
@@ -77,7 +77,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/filltypes.cpp b/gm/filltypes.cpp
index 5f547b9..0817a60 100644
--- a/gm/filltypes.cpp
+++ b/gm/filltypes.cpp
@@ -93,7 +93,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/filltypespersp.cpp b/gm/filltypespersp.cpp
index 6ea8ec0..fbad173 100644
--- a/gm/filltypespersp.cpp
+++ b/gm/filltypespersp.cpp
@@ -133,7 +133,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/filterbitmap.cpp b/gm/filterbitmap.cpp
index 9caa19f..5a6e8ef 100644
--- a/gm/filterbitmap.cpp
+++ b/gm/filterbitmap.cpp
@@ -168,7 +168,7 @@
       }
 private:
     const bool fConvertToG8;
-    typedef FilterBitmapGM INHERITED;
+    using INHERITED = FilterBitmapGM;
 };
 
 class FilterBitmapImageGM: public FilterBitmapGM {
@@ -204,7 +204,7 @@
       }
 private:
     const bool fConvertToG8;
-    typedef FilterBitmapGM INHERITED;
+    using INHERITED = FilterBitmapGM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/filterbug.cpp b/gm/filterbug.cpp
index 777dcb4..a89dfb1 100644
--- a/gm/filterbug.cpp
+++ b/gm/filterbug.cpp
@@ -103,7 +103,7 @@
     sk_sp<SkImage> fTop;
     sk_sp<SkImage> fBot;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/filterfastbounds.cpp b/gm/filterfastbounds.cpp
index ef8ed58..284403d 100644
--- a/gm/filterfastbounds.cpp
+++ b/gm/filterfastbounds.cpp
@@ -316,7 +316,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/flippity.cpp b/gm/flippity.cpp
index 25648ed..aaf9722 100644
--- a/gm/flippity.cpp
+++ b/gm/flippity.cpp
@@ -306,7 +306,7 @@
     SkTArray<sk_sp<SkImage>> fLabels;
     sk_sp<SkImage> fReferenceImages[2];
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM(return new FlippityGM;)
diff --git a/gm/fontcache.cpp b/gm/fontcache.cpp
index 657d1ef..a373627 100644
--- a/gm/fontcache.cpp
+++ b/gm/fontcache.cpp
@@ -130,7 +130,7 @@
 
     GrContextOptions::Enable fAllowMultipleTextures;
     sk_sp<SkTypeface> fTypefaces[6];
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 constexpr SkScalar FontCacheGM::kSize;
diff --git a/gm/fontregen.cpp b/gm/fontregen.cpp
index a474943..fe68689 100644
--- a/gm/fontregen.cpp
+++ b/gm/fontregen.cpp
@@ -110,7 +110,7 @@
     static constexpr int kSize = 512;
 
     sk_sp<SkTextBlob> fBlobs[3];
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
@@ -154,7 +154,7 @@
     static constexpr int kSize = 512;
 
     sk_sp<SkTextBlob> fBlobs[3];
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/fontscaler.cpp b/gm/fontscaler.cpp
index a27f223..9e6cc0f 100644
--- a/gm/fontscaler.cpp
+++ b/gm/fontscaler.cpp
@@ -78,7 +78,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/fpcoordinateoverride.cpp b/gm/fpcoordinateoverride.cpp
index a42acf6..42155b6 100644
--- a/gm/fpcoordinateoverride.cpp
+++ b/gm/fpcoordinateoverride.cpp
@@ -56,7 +56,7 @@
 
 private:
     GrGLSLFragmentProcessor* onCreateGLSLInstance() const override;
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 
 class GLSLSampleCoordEffect : public GrGLSLFragmentProcessor {
diff --git a/gm/fwidth_squircle.cpp b/gm/fwidth_squircle.cpp
index a73944f..32b699e 100644
--- a/gm/fwidth_squircle.cpp
+++ b/gm/fwidth_squircle.cpp
@@ -87,7 +87,7 @@
 
     class Impl;
 
-    typedef GrGeometryProcessor INHERITED;
+    using INHERITED = GrGeometryProcessor;
 };
 
 class FwidthSquircleTestProcessor::Impl : public GrGLSLGeometryProcessor {
@@ -245,7 +245,7 @@
 
     friend class ::GrOpMemoryPool; // for ctor
 
-    typedef GrDrawOp INHERITED;
+    using INHERITED = GrDrawOp;
 };
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/gm/gammatext.cpp b/gm/gammatext.cpp
index a2b6de5..4949494 100644
--- a/gm/gammatext.cpp
+++ b/gm/gammatext.cpp
@@ -89,7 +89,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM( return new GammaTextGM; )
@@ -156,7 +156,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM( return new GammaShaderTextGM; )
diff --git a/gm/giantbitmap.cpp b/gm/giantbitmap.cpp
index 4a32c29..82311da 100644
--- a/gm/giantbitmap.cpp
+++ b/gm/giantbitmap.cpp
@@ -126,7 +126,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/gm/gradient_dirty_laundry.cpp b/gm/gradient_dirty_laundry.cpp
index 3750899..cbf5e96 100644
--- a/gm/gradient_dirty_laundry.cpp
+++ b/gm/gradient_dirty_laundry.cpp
@@ -103,7 +103,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/gm/gradients.cpp b/gm/gradients.cpp
index 34cfec4..904a67f 100644
--- a/gm/gradients.cpp
+++ b/gm/gradients.cpp
@@ -360,7 +360,7 @@
     }
 
 private:
-    typedef GradientsGM INHERITED;
+    using INHERITED = GradientsGM;
 };
 DEF_GM( return new GradientsViewPerspectiveGM(true); )
 DEF_GM( return new GradientsViewPerspectiveGM(false); )
@@ -579,7 +579,7 @@
 private:
     bool fDither;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM( return new RadialGradient2GM(true); )
 DEF_GM( return new RadialGradient2GM(false); )
@@ -617,7 +617,7 @@
     sk_sp<SkShader> fShader;
     bool fDither;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM( return new RadialGradient3GM(true); )
 DEF_GM( return new RadialGradient3GM(false); )
@@ -655,7 +655,7 @@
     sk_sp<SkShader> fShader;
     bool fDither;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM( return new RadialGradient4GM(true); )
 DEF_GM( return new RadialGradient4GM(false); )
@@ -707,7 +707,7 @@
     sk_sp<SkShader> fShader[100];
     bool fDither;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM( return new LinearGradientGM(true); )
 DEF_GM( return new LinearGradientGM(false); )
diff --git a/gm/gradients_degenerate.cpp b/gm/gradients_degenerate.cpp
index ae4de5c..2b8306c 100644
--- a/gm/gradients_degenerate.cpp
+++ b/gm/gradients_degenerate.cpp
@@ -154,7 +154,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM(return new DegenerateGradientGM;)
diff --git a/gm/gradients_no_texture.cpp b/gm/gradients_no_texture.cpp
index 32412b9..93987c8 100644
--- a/gm/gradients_no_texture.cpp
+++ b/gm/gradients_no_texture.cpp
@@ -135,7 +135,7 @@
 private:
     bool fDither;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -287,7 +287,7 @@
 private:
     bool fDither;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/gm/hairlines.cpp b/gm/hairlines.cpp
index 0674f1b..f91482e 100644
--- a/gm/hairlines.cpp
+++ b/gm/hairlines.cpp
@@ -192,7 +192,7 @@
 
 private:
     SkTArray<SkPath> fPaths;
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 static void draw_squarehair_tests(SkCanvas* canvas, SkScalar width, SkPaint::Cap cap, bool aa) {
diff --git a/gm/hairmodes.cpp b/gm/hairmodes.cpp
index 92b1ae2..3a05c44 100644
--- a/gm/hairmodes.cpp
+++ b/gm/hairmodes.cpp
@@ -126,7 +126,7 @@
         }
 
     private:
-        typedef GM INHERITED;
+        using INHERITED = GM;
     };
 
     //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/hardstop_gradients.cpp b/gm/hardstop_gradients.cpp
index 4155dd0..9b65b70 100644
--- a/gm/hardstop_gradients.cpp
+++ b/gm/hardstop_gradients.cpp
@@ -168,7 +168,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM(return new HardstopGradientShaderGM;)
diff --git a/gm/highcontrastfilter.cpp b/gm/highcontrastfilter.cpp
index 552a062..f83a374 100644
--- a/gm/highcontrastfilter.cpp
+++ b/gm/highcontrastfilter.cpp
@@ -160,7 +160,7 @@
     sk_sp<SkColorFilter>    fFilter;
     sk_sp<SkShader>         fGr1, fGr2;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM(return new HighContrastFilterGM;)
diff --git a/gm/image.cpp b/gm/image.cpp
index 2d66e86..e2f2922 100644
--- a/gm/image.cpp
+++ b/gm/image.cpp
@@ -172,7 +172,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new ImageGM; )
 
@@ -295,7 +295,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new ScalePixelsGM; )
 
diff --git a/gm/image_pict.cpp b/gm/image_pict.cpp
index 8cb14d2..bb785b7 100644
--- a/gm/image_pict.cpp
+++ b/gm/image_pict.cpp
@@ -120,7 +120,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new ImagePictGM; )
 
@@ -366,7 +366,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM( return new ImageCacheratorGM("picture", make_pic_generator); )
diff --git a/gm/image_shader.cpp b/gm/image_shader.cpp
index 169410a..72f6a93 100644
--- a/gm/image_shader.cpp
+++ b/gm/image_shader.cpp
@@ -150,6 +150,6 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new ImageShaderGM; )
diff --git a/gm/imagealphathreshold.cpp b/gm/imagealphathreshold.cpp
index c9a5a3f..7eb2f32 100644
--- a/gm/imagealphathreshold.cpp
+++ b/gm/imagealphathreshold.cpp
@@ -96,7 +96,7 @@
 private:
     bool fUseCropRect;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 // Create a 'width' x 'height' SkSurface that matches the colorType of 'canvas' as
@@ -160,7 +160,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/imageblurclampmode.cpp b/gm/imageblurclampmode.cpp
index e6d5d98..3bbd18e 100644
--- a/gm/imageblurclampmode.cpp
+++ b/gm/imageblurclampmode.cpp
@@ -105,7 +105,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/imageblurrepeatmode.cpp b/gm/imageblurrepeatmode.cpp
index 7a6cff8..a6f03f2 100644
--- a/gm/imageblurrepeatmode.cpp
+++ b/gm/imageblurrepeatmode.cpp
@@ -119,7 +119,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/imageblurtiled.cpp b/gm/imageblurtiled.cpp
index 0e36607..3b4252a 100644
--- a/gm/imageblurtiled.cpp
+++ b/gm/imageblurtiled.cpp
@@ -71,7 +71,7 @@
     SkScalar fSigmaX;
     SkScalar fSigmaY;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/imagefiltersbase.cpp b/gm/imagefiltersbase.cpp
index b99a7b9..85735fc 100644
--- a/gm/imagefiltersbase.cpp
+++ b/gm/imagefiltersbase.cpp
@@ -51,7 +51,7 @@
 
 private:
 
-    typedef SkImageFilter_Base INHERITED;
+    using INHERITED = SkImageFilter_Base;
 };
 
 sk_sp<SkFlattenable> FailImageFilter::CreateProc(SkReadBuffer& buffer) {
@@ -76,7 +76,7 @@
 private:
     IdentityImageFilter(sk_sp<SkImageFilter> input) : INHERITED(&input, 1, nullptr) {}
 
-    typedef SkImageFilter_Base INHERITED;
+    using INHERITED = SkImageFilter_Base;
 };
 
 // Register these image filters as deserializable before main().
@@ -275,7 +275,7 @@
 
     sk_sp<SkImage> fAtlas;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM( return new ImageFiltersBaseGM; )
 
@@ -346,7 +346,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 class ImageFiltersText_IF : public ImageFiltersTextBaseGM {
diff --git a/gm/imagefiltersclipped.cpp b/gm/imagefiltersclipped.cpp
index f861e39..7372e40 100644
--- a/gm/imagefiltersclipped.cpp
+++ b/gm/imagefiltersclipped.cpp
@@ -150,7 +150,7 @@
 private:
     sk_sp<SkImage> fCheckerboard, fGradientCircle;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/imagefilterscropped.cpp b/gm/imagefilterscropped.cpp
index 21f3981..b0b09cf 100644
--- a/gm/imagefilterscropped.cpp
+++ b/gm/imagefilterscropped.cpp
@@ -172,7 +172,7 @@
 
 private:
     SkBitmap fCheckerboard;
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/gm/imagefiltersgraph.cpp b/gm/imagefiltersgraph.cpp
index 25e4de9..6ed23e1 100644
--- a/gm/imagefiltersgraph.cpp
+++ b/gm/imagefiltersgraph.cpp
@@ -156,7 +156,7 @@
 
     sk_sp<SkImage> fImage;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/gm/imagefiltersscaled.cpp b/gm/imagefiltersscaled.cpp
index d84f106..a5ca3e7 100644
--- a/gm/imagefiltersscaled.cpp
+++ b/gm/imagefiltersscaled.cpp
@@ -156,7 +156,7 @@
 private:
     sk_sp<SkImage> fCheckerboard, fGradientCircle;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/imagefiltersstroked.cpp b/gm/imagefiltersstroked.cpp
index 2270362..df944a9 100644
--- a/gm/imagefiltersstroked.cpp
+++ b/gm/imagefiltersstroked.cpp
@@ -102,7 +102,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/imagefilterstransformed.cpp b/gm/imagefilterstransformed.cpp
index 8d14474..d2a0622 100644
--- a/gm/imagefilterstransformed.cpp
+++ b/gm/imagefilterstransformed.cpp
@@ -120,7 +120,7 @@
 private:
     sk_sp<SkImage> fCheckerboard;
     sk_sp<SkImage> fGradientCircle;
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM( return new ImageFiltersTransformedGM; )
 }  // namespace skiagm
diff --git a/gm/imagefromyuvtextures.cpp b/gm/imagefromyuvtextures.cpp
index a3920e4..60183b6 100644
--- a/gm/imagefromyuvtextures.cpp
+++ b/gm/imagefromyuvtextures.cpp
@@ -331,7 +331,7 @@
 
     static constexpr SkScalar kPad = 10.0f;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM(return new ImageFromYUVTextures;)
diff --git a/gm/imagemakewithfilter.cpp b/gm/imagemakewithfilter.cpp
index 10f5670..958b1d0 100644
--- a/gm/imagemakewithfilter.cpp
+++ b/gm/imagemakewithfilter.cpp
@@ -389,7 +389,7 @@
         }
     }
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 // The different strategies should all look the same, with the exception of filters that affect
 // transparent black (i.e. the lighting filter). In the save layer case, the filter affects the
diff --git a/gm/imagemasksubset.cpp b/gm/imagemasksubset.cpp
index d8f40ba..5775021 100644
--- a/gm/imagemasksubset.cpp
+++ b/gm/imagemasksubset.cpp
@@ -47,7 +47,7 @@
     }
 
 private:
-    typedef SkImageGenerator INHERITED;
+    using INHERITED = SkImageGenerator;
 };
 
 using MakerT = sk_sp<SkImage>(*)(SkCanvas*, const SkImageInfo&);
diff --git a/gm/imagescalealigned.cpp b/gm/imagescalealigned.cpp
index d245a10..1ee5f37 100644
--- a/gm/imagescalealigned.cpp
+++ b/gm/imagescalealigned.cpp
@@ -155,7 +155,7 @@
     static constexpr unsigned  kStretchFactor = 4;
     SkSTArray<2, ImageSet> fSets;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM(return new ImageScaleAlignedGM();)
diff --git a/gm/imagesource.cpp b/gm/imagesource.cpp
index 897012e..ea7544a 100644
--- a/gm/imagesource.cpp
+++ b/gm/imagesource.cpp
@@ -91,7 +91,7 @@
 
 private:
     sk_sp<SkImage> fImage;
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/gm/imagesource2.cpp b/gm/imagesource2.cpp
index 9ddf807..005a626 100644
--- a/gm/imagesource2.cpp
+++ b/gm/imagesource2.cpp
@@ -90,7 +90,7 @@
     SkFilterQuality fFilter;
     sk_sp<SkImage>  fImage;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/jpg_color_cube.cpp b/gm/jpg_color_cube.cpp
index 6ed782b..e9940d9 100644
--- a/gm/jpg_color_cube.cpp
+++ b/gm/jpg_color_cube.cpp
@@ -65,7 +65,7 @@
 private:
     sk_sp<SkImage> fImage;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM( return new ColorCubeGM; )
diff --git a/gm/lattice.cpp b/gm/lattice.cpp
index d1090cb..21d3d8b 100644
--- a/gm/lattice.cpp
+++ b/gm/lattice.cpp
@@ -221,7 +221,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new LatticeGM; )
 
@@ -355,7 +355,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new LatticeGM2; )
 
diff --git a/gm/lcdblendmodes.cpp b/gm/lcdblendmodes.cpp
index f6c5a01..91c3d63 100644
--- a/gm/lcdblendmodes.cpp
+++ b/gm/lcdblendmodes.cpp
@@ -146,7 +146,7 @@
 private:
     SkScalar fTextHeight;
     sk_sp<SkShader> fCheckerboard;
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/lcdoverlap.cpp b/gm/lcdoverlap.cpp
index 8470fd6..6b1e980 100644
--- a/gm/lcdoverlap.cpp
+++ b/gm/lcdoverlap.cpp
@@ -91,7 +91,7 @@
 private:
     SkScalar fTextHeight;
     sk_sp<SkTextBlob> fBlob;
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/lighting.cpp b/gm/lighting.cpp
index f47c85d..9a272e4 100644
--- a/gm/lighting.cpp
+++ b/gm/lighting.cpp
@@ -147,7 +147,7 @@
     SkBitmap fBitmap;
     SkScalar fAzimuth;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/lumafilter.cpp b/gm/lumafilter.cpp
index 3c360be..ce8b571 100644
--- a/gm/lumafilter.cpp
+++ b/gm/lumafilter.cpp
@@ -161,7 +161,7 @@
     sk_sp<SkColorFilter>    fFilter;
     sk_sp<SkShader>         fGr1, fGr2;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/manypaths.cpp b/gm/manypaths.cpp
index 4f6fca3..24fc263 100644
--- a/gm/manypaths.cpp
+++ b/gm/manypaths.cpp
@@ -64,7 +64,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
@@ -117,7 +117,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/matrixconvolution.cpp b/gm/matrixconvolution.cpp
index 006d14e..582392e 100644
--- a/gm/matrixconvolution.cpp
+++ b/gm/matrixconvolution.cpp
@@ -140,7 +140,7 @@
     const char* fNameSuffix;
     KernelFixture fKernelFixture;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/mixedtextblobs.cpp b/gm/mixedtextblobs.cpp
index 4f0107a..e7b6828 100644
--- a/gm/mixedtextblobs.cpp
+++ b/gm/mixedtextblobs.cpp
@@ -160,7 +160,7 @@
     static constexpr int kWidth = 1250;
     static constexpr int kHeight = 700;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/modecolorfilters.cpp b/gm/modecolorfilters.cpp
index a4dac43..eaa0639 100644
--- a/gm/modecolorfilters.cpp
+++ b/gm/modecolorfilters.cpp
@@ -162,7 +162,7 @@
 
 private:
     sk_sp<SkShader> fBmpShader;
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/morphology.cpp b/gm/morphology.cpp
index 6841e41..9a7c7b4 100644
--- a/gm/morphology.cpp
+++ b/gm/morphology.cpp
@@ -93,7 +93,7 @@
 private:
     SkBitmap fBitmap;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/nested.cpp b/gm/nested.cpp
index 67390ad..3dc3c3d 100644
--- a/gm/nested.cpp
+++ b/gm/nested.cpp
@@ -137,7 +137,7 @@
     bool fDoAA;
     bool fFlipped;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/gm/ninepatchstretch.cpp b/gm/ninepatchstretch.cpp
index 9b96d4b..078126f 100644
--- a/gm/ninepatchstretch.cpp
+++ b/gm/ninepatchstretch.cpp
@@ -106,6 +106,6 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new NinePatchStretchGM; )
diff --git a/gm/nonclosedpaths.cpp b/gm/nonclosedpaths.cpp
index 67d94c6..dccce38 100644
--- a/gm/nonclosedpaths.cpp
+++ b/gm/nonclosedpaths.cpp
@@ -141,7 +141,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/offsetimagefilter.cpp b/gm/offsetimagefilter.cpp
index 47ed99c..f7104b7 100644
--- a/gm/offsetimagefilter.cpp
+++ b/gm/offsetimagefilter.cpp
@@ -98,7 +98,7 @@
 
     sk_sp<SkImage> fBitmap, fCheckerboard;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new OffsetImageFilterGM; )
 
@@ -207,6 +207,6 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new SimpleOffsetImageFilterGM; )
diff --git a/gm/ovals.cpp b/gm/ovals.cpp
index 49e1e2d..f6d9669 100644
--- a/gm/ovals.cpp
+++ b/gm/ovals.cpp
@@ -301,7 +301,7 @@
     SkTArray<SkPaint> fPaints;
     SkTArray<SkMatrix> fMatrices;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/pathcontourstart.cpp b/gm/pathcontourstart.cpp
index 72d955e..f2df489 100644
--- a/gm/pathcontourstart.cpp
+++ b/gm/pathcontourstart.cpp
@@ -116,7 +116,7 @@
         }
     }
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM( return new ContourStartGM(); )
diff --git a/gm/patheffects.cpp b/gm/patheffects.cpp
index 5964f32..aabe3de 100644
--- a/gm/patheffects.cpp
+++ b/gm/patheffects.cpp
@@ -169,7 +169,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM( return new PathEffectGM; )
@@ -232,7 +232,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM(return new ComboPathEfectsGM;)
 
diff --git a/gm/pathfill.cpp b/gm/pathfill.cpp
index 578edad..c2d4046 100644
--- a/gm/pathfill.cpp
+++ b/gm/pathfill.cpp
@@ -349,7 +349,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 // test inverse-fill w/ a clip that completely excludes the geometry
@@ -415,7 +415,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_SIMPLE_GM(rotatedcubicpath, canvas, 200, 200) {
diff --git a/gm/pathinterior.cpp b/gm/pathinterior.cpp
index eb83d93..636e5f5 100644
--- a/gm/pathinterior.cpp
+++ b/gm/pathinterior.cpp
@@ -108,7 +108,7 @@
 
 private:
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/pathmaskcache.cpp b/gm/pathmaskcache.cpp
index 07642fe..7493cdd 100644
--- a/gm/pathmaskcache.cpp
+++ b/gm/pathmaskcache.cpp
@@ -114,7 +114,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM( return new PathMaskCache(); )
diff --git a/gm/pathopsinverse.cpp b/gm/pathopsinverse.cpp
index 23676e3..c52a88f 100644
--- a/gm/pathopsinverse.cpp
+++ b/gm/pathopsinverse.cpp
@@ -110,7 +110,7 @@
     SkPaint fTwoPaint;
     SkPaint fOutlinePaint;
     SkPaint fOpPaint[kReverseDifference_SkPathOp - kDifference_SkPathOp + 1];
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/perlinnoise.cpp b/gm/perlinnoise.cpp
index 1c5aa7d..5f30772 100644
--- a/gm/perlinnoise.cpp
+++ b/gm/perlinnoise.cpp
@@ -100,7 +100,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 class PerlinNoiseGM2 : public skiagm::GM {
diff --git a/gm/perspimages.cpp b/gm/perspimages.cpp
index 6be57b6..74990cc 100644
--- a/gm/perspimages.cpp
+++ b/gm/perspimages.cpp
@@ -123,7 +123,7 @@
     static constexpr int kNumImages = 4;
     SkTArray<sk_sp<SkImage>> fImages;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/perspshaders.cpp b/gm/perspshaders.cpp
index fcd9db5..956fd72 100644
--- a/gm/perspshaders.cpp
+++ b/gm/perspshaders.cpp
@@ -177,7 +177,7 @@
     sk_sp<SkImage>  fImage;
     SkBitmap        fBitmap;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM(return new PerspShadersGM(true);)
 DEF_GM(return new PerspShadersGM(false);)
diff --git a/gm/picture.cpp b/gm/picture.cpp
index fbf46af..907b234 100644
--- a/gm/picture.cpp
+++ b/gm/picture.cpp
@@ -84,7 +84,7 @@
 private:
     sk_sp<SkPicture> fPicture;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 // Exercise drawing a picture with a cull rect of non-zero top-left corner.
@@ -139,7 +139,7 @@
 private:
     sk_sp<SkPicture> fPicture;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM(return new PictureGM;)
diff --git a/gm/pictureimagefilter.cpp b/gm/pictureimagefilter.cpp
index 40a6d68..df0a330 100644
--- a/gm/pictureimagefilter.cpp
+++ b/gm/pictureimagefilter.cpp
@@ -153,7 +153,7 @@
     sk_sp<SkPicture> fPicture;
     sk_sp<SkPicture> fLCDPicture;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/gm/pictureimagegenerator.cpp b/gm/pictureimagegenerator.cpp
index b453420..a0e27b6 100644
--- a/gm/pictureimagegenerator.cpp
+++ b/gm/pictureimagegenerator.cpp
@@ -206,7 +206,7 @@
     const SkScalar kPictureWidth = 200;
     const SkScalar kPictureHeight = 100;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM(return new PictureGeneratorGM;)
diff --git a/gm/pictureshader.cpp b/gm/pictureshader.cpp
index 7a592e9..f0818bb 100644
--- a/gm/pictureshader.cpp
+++ b/gm/pictureshader.cpp
@@ -192,7 +192,7 @@
     SkScalar    fSceneSize;
     bool        fUseLocalMatrixWrapper;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM(return new PictureShaderGM(50, 100);)
diff --git a/gm/pictureshadercache.cpp b/gm/pictureshadercache.cpp
index d6f2b1b..a21c276 100644
--- a/gm/pictureshadercache.cpp
+++ b/gm/pictureshadercache.cpp
@@ -93,7 +93,7 @@
     sk_sp<SkPicture> fPicture;
     SkBitmap         fBitmap;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM(return new PictureShaderCacheGM(100);)
diff --git a/gm/pictureshadertile.cpp b/gm/pictureshadertile.cpp
index d7afbe9..ea2ba4d 100644
--- a/gm/pictureshadertile.cpp
+++ b/gm/pictureshadertile.cpp
@@ -159,7 +159,7 @@
 private:
     sk_sp<SkShader> fShaders[SK_ARRAY_COUNT(tiles)];
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM(return new PictureShaderTileGM;)
diff --git a/gm/pixelsnap.cpp b/gm/pixelsnap.cpp
index d3522bb..659f3f0 100644
--- a/gm/pixelsnap.cpp
+++ b/gm/pixelsnap.cpp
@@ -107,7 +107,7 @@
     virtual void drawElement(SkCanvas*) = 0;
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 class PointSnapGM : public PixelSnapGM {
@@ -121,7 +121,7 @@
     }
 
 private:
-    typedef PixelSnapGM INHERITED;
+    using INHERITED = PixelSnapGM;
 };
 
 class LineSnapGM : public PixelSnapGM {
@@ -136,7 +136,7 @@
     }
 
 private:
-    typedef PixelSnapGM INHERITED;
+    using INHERITED = PixelSnapGM;
 };
 
 class RectSnapGM : public PixelSnapGM {
@@ -149,7 +149,7 @@
     }
 
 private:
-    typedef PixelSnapGM INHERITED;
+    using INHERITED = PixelSnapGM;
 };
 
 class ComboSnapGM : public PixelSnapGM {
@@ -186,7 +186,7 @@
     }
 
 private:
-    typedef PixelSnapGM INHERITED;
+    using INHERITED = PixelSnapGM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/points.cpp b/gm/points.cpp
index a6a76eb..324cb0a 100644
--- a/gm/points.cpp
+++ b/gm/points.cpp
@@ -72,7 +72,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/poly2poly.cpp b/gm/poly2poly.cpp
index 141a602..c8695b9 100644
--- a/gm/poly2poly.cpp
+++ b/gm/poly2poly.cpp
@@ -116,7 +116,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
     sk_sp<SkTypeface> fEmFace;
 };
 
diff --git a/gm/polygonoffset.cpp b/gm/polygonoffset.cpp
index fe703a1..c5470dc 100644
--- a/gm/polygonoffset.cpp
+++ b/gm/polygonoffset.cpp
@@ -616,7 +616,7 @@
 
     bool fConvexOnly;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/polygons.cpp b/gm/polygons.cpp
index d7328a4..ee2b734 100644
--- a/gm/polygons.cpp
+++ b/gm/polygons.cpp
@@ -167,7 +167,7 @@
     static constexpr int kNumJoins = 3;
 
     SkTArray<SkPath> fPolygons;
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/quadpaths.cpp b/gm/quadpaths.cpp
index 408d6c1..5dbb73a 100644
--- a/gm/quadpaths.cpp
+++ b/gm/quadpaths.cpp
@@ -149,7 +149,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 class QuadClosePathGM : public GM {
@@ -279,7 +279,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/readpixels.cpp b/gm/readpixels.cpp
index 02afa7c..20562a9 100644
--- a/gm/readpixels.cpp
+++ b/gm/readpixels.cpp
@@ -185,7 +185,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new ReadPixelsGM; )
 
@@ -249,7 +249,7 @@
     static const int kEncodedWidth = 8;
     static const int kEncodedHeight = 8;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new ReadPixelsCodecGM; )
 
@@ -315,6 +315,6 @@
 
 private:
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new ReadPixelsPictureGM; )
diff --git a/gm/rectangletexture.cpp b/gm/rectangletexture.cpp
index ba23724..7dbd164 100644
--- a/gm/rectangletexture.cpp
+++ b/gm/rectangletexture.cpp
@@ -257,7 +257,7 @@
     sk_sp<SkImage> fGradImgs[kNumGradImages];
     sk_sp<SkImage> fSmallImg;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM(return new RectangleTexture;)
diff --git a/gm/rects.cpp b/gm/rects.cpp
index 63153d4..be1ed47 100644
--- a/gm/rects.cpp
+++ b/gm/rects.cpp
@@ -295,7 +295,7 @@
     SkTArray<SkMatrix> fMatrices;
     SkTArray<SkRect>   fRects;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/resizeimagefilter.cpp b/gm/resizeimagefilter.cpp
index 8fd6ddd..482e3ae 100644
--- a/gm/resizeimagefilter.cpp
+++ b/gm/resizeimagefilter.cpp
@@ -109,7 +109,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/roundrects.cpp b/gm/roundrects.cpp
index 4f4a8cb..d05de86 100644
--- a/gm/roundrects.cpp
+++ b/gm/roundrects.cpp
@@ -375,7 +375,7 @@
     SkTArray<SkPaint> fPaints;
     SkTArray<SkMatrix> fMatrices;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/rrect.cpp b/gm/rrect.cpp
index 275afb4..c9a536d 100644
--- a/gm/rrect.cpp
+++ b/gm/rrect.cpp
@@ -172,7 +172,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM( return new RRectGM; )
diff --git a/gm/rrects.cpp b/gm/rrects.cpp
index f23973f..9481643 100644
--- a/gm/rrects.cpp
+++ b/gm/rrects.cpp
@@ -196,7 +196,7 @@
     static constexpr int kNumRRects = kNumSimpleCases + kNumComplexCases;
     SkRRect fRRects[kNumRRects];
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 // Radii for the various test cases. Order is UL, UR, LR, LL
diff --git a/gm/sample_matrix_constant.cpp b/gm/sample_matrix_constant.cpp
index 409ff1d..c96ac76 100644
--- a/gm/sample_matrix_constant.cpp
+++ b/gm/sample_matrix_constant.cpp
@@ -40,7 +40,7 @@
 
 private:
     GrGLSLFragmentProcessor* onCreateGLSLInstance() const override;
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 
 class GLSLSampleMatrixConstantEffect : public GrGLSLFragmentProcessor {
diff --git a/gm/sample_matrix_variable.cpp b/gm/sample_matrix_variable.cpp
index 9f2ab18..4932460 100644
--- a/gm/sample_matrix_variable.cpp
+++ b/gm/sample_matrix_variable.cpp
@@ -44,7 +44,7 @@
     float fXOffset;
     float fYOffset;
 
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
     friend class GLSLSampleMatrixVariableEffect;
 };
 
diff --git a/gm/samplelocations.cpp b/gm/samplelocations.cpp
index e2cf0ac..0ceda73 100644
--- a/gm/samplelocations.cpp
+++ b/gm/samplelocations.cpp
@@ -121,7 +121,7 @@
 
     class Impl;
 
-    typedef GrGeometryProcessor INHERITED;
+    using INHERITED = GrGeometryProcessor;
 };
 
 class SampleLocationsTestProcessor::Impl : public GrGLSLGeometryProcessor {
@@ -304,7 +304,7 @@
 
     friend class ::GrOpMemoryPool; // for ctor
 
-    typedef GrDrawOp INHERITED;
+    using INHERITED = GrDrawOp;
 };
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/gm/samplerstress.cpp b/gm/samplerstress.cpp
index d4af469..bc435e9 100644
--- a/gm/samplerstress.cpp
+++ b/gm/samplerstress.cpp
@@ -142,7 +142,7 @@
     sk_sp<SkShader> fShader;
     sk_sp<SkMaskFilter> fMaskFilter;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/savelayer.cpp b/gm/savelayer.cpp
index 9ce7be1..6b6854f 100644
--- a/gm/savelayer.cpp
+++ b/gm/savelayer.cpp
@@ -93,7 +93,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM(return new UnclippedSaveLayerGM;)
 
diff --git a/gm/scaledemoji.cpp b/gm/scaledemoji.cpp
index f9fc91c..11b07b5 100644
--- a/gm/scaledemoji.cpp
+++ b/gm/scaledemoji.cpp
@@ -83,7 +83,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 class ScaledEmojiPosGM : public GM {
@@ -142,7 +142,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/scaledemoji_rendering.cpp b/gm/scaledemoji_rendering.cpp
index cf2407d..f1f7103 100644
--- a/gm/scaledemoji_rendering.cpp
+++ b/gm/scaledemoji_rendering.cpp
@@ -73,7 +73,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/scaledstrokes.cpp b/gm/scaledstrokes.cpp
index 1bc081b..be8eb61 100644
--- a/gm/scaledstrokes.cpp
+++ b/gm/scaledstrokes.cpp
@@ -81,7 +81,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM( return new ScaledStrokesGM; )
diff --git a/gm/shadertext3.cpp b/gm/shadertext3.cpp
index 864ee66..0bfe8c7 100644
--- a/gm/shadertext3.cpp
+++ b/gm/shadertext3.cpp
@@ -137,7 +137,7 @@
 
 private:
     SkBitmap fBmp;
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/gm/shapes.cpp b/gm/shapes.cpp
index f8300b5..f11b02c 100644
--- a/gm/shapes.cpp
+++ b/gm/shapes.cpp
@@ -94,7 +94,7 @@
     int                  fSimpleShapeCount;
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 class SimpleShapesGM : public ShapesGM {
@@ -126,7 +126,7 @@
         }
     }
 
-    typedef ShapesGM INHERITED;
+    using INHERITED = ShapesGM;
 };
 
 class InnerShapesGM : public ShapesGM {
@@ -161,7 +161,7 @@
         }
     }
 
-    typedef ShapesGM INHERITED;
+    using INHERITED = ShapesGM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/showmiplevels.cpp b/gm/showmiplevels.cpp
index 7647d27..0f121fa 100644
--- a/gm/showmiplevels.cpp
+++ b/gm/showmiplevels.cpp
@@ -193,7 +193,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new ShowMipLevels(255); )
 DEF_GM( return new ShowMipLevels(256); )
@@ -306,7 +306,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new ShowMipLevels2(255, 255); )
 DEF_GM( return new ShowMipLevels2(256, 255); )
@@ -369,6 +369,6 @@
         return r.height() + 10;
     }
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new ShowMipLevels3; )
diff --git a/gm/simple_magnification.cpp b/gm/simple_magnification.cpp
index 3e41798..1cbcef6 100644
--- a/gm/simple_magnification.cpp
+++ b/gm/simple_magnification.cpp
@@ -134,7 +134,7 @@
     static const int kImgSize = 33;
     static const int kPad = 2;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/simpleaaclip.cpp b/gm/simpleaaclip.cpp
index 3b28652..cf4c9eb 100644
--- a/gm/simpleaaclip.cpp
+++ b/gm/simpleaaclip.cpp
@@ -197,7 +197,7 @@
     SkPath fBasePath;       // fBase as a round rect
     SkPath fRectPath;       // fRect as a round rect
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/simplerect.cpp b/gm/simplerect.cpp
index 92a7b6d..7dba895 100644
--- a/gm/simplerect.cpp
+++ b/gm/simplerect.cpp
@@ -53,6 +53,6 @@
 
 private:
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM(return new SimpleRectGM;)
diff --git a/gm/smallpaths.cpp b/gm/smallpaths.cpp
index 5cd2748..c121cc4 100644
--- a/gm/smallpaths.cpp
+++ b/gm/smallpaths.cpp
@@ -393,7 +393,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM(return new SmallPathsGM;)
diff --git a/gm/spritebitmap.cpp b/gm/spritebitmap.cpp
index 8d76843..99db186 100644
--- a/gm/spritebitmap.cpp
+++ b/gm/spritebitmap.cpp
@@ -93,6 +93,6 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM( return new SpriteBitmapGM; )
diff --git a/gm/stlouisarch.cpp b/gm/stlouisarch.cpp
index 1e348cb..4166eb8 100644
--- a/gm/stlouisarch.cpp
+++ b/gm/stlouisarch.cpp
@@ -91,7 +91,7 @@
 
 private:
     SkTArray<SkPath> fPaths;
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/stringart.cpp b/gm/stringart.cpp
index 0f766c9..5d53026 100644
--- a/gm/stringart.cpp
+++ b/gm/stringart.cpp
@@ -85,7 +85,7 @@
 private:
     int fNumSteps;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM( return new StringArtGM; )
@@ -156,7 +156,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM( return new SkottieGM; )
 #endif
diff --git a/gm/strokedlines.cpp b/gm/strokedlines.cpp
index 50af641..00f8ed9 100644
--- a/gm/strokedlines.cpp
+++ b/gm/strokedlines.cpp
@@ -232,7 +232,7 @@
     SkTArray<SkPaint> fPaints;
     SkTArray<SkMatrix> fMatrices;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/strokerect.cpp b/gm/strokerect.cpp
index ce43d8d..364f588 100644
--- a/gm/strokerect.cpp
+++ b/gm/strokerect.cpp
@@ -119,7 +119,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM(return new StrokeRectGM;)
 
diff --git a/gm/strokerect_anisotropic.cpp b/gm/strokerect_anisotropic.cpp
index aecea30..2123130 100644
--- a/gm/strokerect_anisotropic.cpp
+++ b/gm/strokerect_anisotropic.cpp
@@ -76,7 +76,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM(return new StrokeRectAnisotropicGM;)
 
diff --git a/gm/strokerects.cpp b/gm/strokerects.cpp
index 2f1637e..d14423f 100644
--- a/gm/strokerects.cpp
+++ b/gm/strokerects.cpp
@@ -76,7 +76,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/strokes.cpp b/gm/strokes.cpp
index 51fd97f..ecb50eb 100644
--- a/gm/strokes.cpp
+++ b/gm/strokes.cpp
@@ -89,7 +89,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 /* See
@@ -169,7 +169,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 class TeenyStrokesGM : public skiagm::GM {
@@ -204,7 +204,7 @@
         line(0.000002f, canvas, SK_ColorBLACK);
     }
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_SIMPLE_GM(CubicStroke, canvas, 384, 384) {
@@ -331,7 +331,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
@@ -436,7 +436,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 class Strokes4GM : public skiagm::GM {
@@ -463,7 +463,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 // Test stroking for curves that produce degenerate tangents when t is 0 or 1 (see bug 4191)
@@ -517,7 +517,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 
diff --git a/gm/surface.cpp b/gm/surface.cpp
index 0c1019b..afed502 100644
--- a/gm/surface.cpp
+++ b/gm/surface.cpp
@@ -114,7 +114,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM( return new SurfacePropsGM )
 
@@ -161,7 +161,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM( return new NewSurfaceGM )
 
diff --git a/gm/tablecolorfilter.cpp b/gm/tablecolorfilter.cpp
index 5b6fa86..08f71a6 100644
--- a/gm/tablecolorfilter.cpp
+++ b/gm/tablecolorfilter.cpp
@@ -204,7 +204,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM( return new TableColorFilterGM; )
 
diff --git a/gm/tallstretchedbitmaps.cpp b/gm/tallstretchedbitmaps.cpp
index a874981..d0e3ccf 100644
--- a/gm/tallstretchedbitmaps.cpp
+++ b/gm/tallstretchedbitmaps.cpp
@@ -105,7 +105,7 @@
         SkBitmap fBmp;
         int      fItemCnt;
     } fTallBmps[8];
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/testgradient.cpp b/gm/testgradient.cpp
index 9fa3925..808815c 100644
--- a/gm/testgradient.cpp
+++ b/gm/testgradient.cpp
@@ -70,7 +70,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 // Register the GM
diff --git a/gm/texelsubset.cpp b/gm/texelsubset.cpp
index 97766f7..ae1cccd 100644
--- a/gm/texelsubset.cpp
+++ b/gm/texelsubset.cpp
@@ -222,7 +222,7 @@
     MipmapMode fMipmapMode;
     bool fUpscale;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM(return new TexelSubset(Filter::kNearest, MipmapMode::kNone   , false);)
diff --git a/gm/textblob.cpp b/gm/textblob.cpp
index 4f482d8..60cec2a 100644
--- a/gm/textblob.cpp
+++ b/gm/textblob.cpp
@@ -197,7 +197,7 @@
     SkTDArray<uint16_t> fGlyphs;
     sk_sp<SkTypeface>   fTypeface;
     const char*         fText;
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM(return new TextBlobGM("hamburgefons");)
diff --git a/gm/textblobblockreordering.cpp b/gm/textblobblockreordering.cpp
index b7a9cd8..0cb5f82 100644
--- a/gm/textblobblockreordering.cpp
+++ b/gm/textblobblockreordering.cpp
@@ -93,7 +93,7 @@
     static constexpr int kWidth = 275;
     static constexpr int kHeight = 200;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/textblobcolortrans.cpp b/gm/textblobcolortrans.cpp
index 4c8a105..1077160 100644
--- a/gm/textblobcolortrans.cpp
+++ b/gm/textblobcolortrans.cpp
@@ -97,7 +97,7 @@
     static constexpr int kWidth = 675;
     static constexpr int kHeight = 1600;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/textblobgeometrychange.cpp b/gm/textblobgeometrychange.cpp
index 3c3f062..ab561dc 100644
--- a/gm/textblobgeometrychange.cpp
+++ b/gm/textblobgeometrychange.cpp
@@ -72,7 +72,7 @@
     static constexpr int kWidth = 200;
     static constexpr int kHeight = 200;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/textbloblooper.cpp b/gm/textbloblooper.cpp
index 31de25b..f3e1bae 100644
--- a/gm/textbloblooper.cpp
+++ b/gm/textbloblooper.cpp
@@ -267,7 +267,7 @@
     sk_sp<SkTextBlob> fBlob;
     SkTArray<sk_sp<SkDrawLooper>> fLoopers;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/textblobmixedsizes.cpp b/gm/textblobmixedsizes.cpp
index 111a2b6..b891c8f 100644
--- a/gm/textblobmixedsizes.cpp
+++ b/gm/textblobmixedsizes.cpp
@@ -185,7 +185,7 @@
 
     bool fUseDFT;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/textblobrandomfont.cpp b/gm/textblobrandomfont.cpp
index 57dbdc1..22b6ee4 100644
--- a/gm/textblobrandomfont.cpp
+++ b/gm/textblobrandomfont.cpp
@@ -165,7 +165,7 @@
     static constexpr int kWidth = 2000;
     static constexpr int kHeight = 1600;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/textblobshader.cpp b/gm/textblobshader.cpp
index bc5ade6..455667a 100644
--- a/gm/textblobshader.cpp
+++ b/gm/textblobshader.cpp
@@ -119,7 +119,7 @@
     sk_sp<SkTextBlob>   fBlob;
     sk_sp<SkShader>     fShader;
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM(return new TextBlobShaderGM;)
diff --git a/gm/textblobtransforms.cpp b/gm/textblobtransforms.cpp
index 335b74c..bee808a 100644
--- a/gm/textblobtransforms.cpp
+++ b/gm/textblobtransforms.cpp
@@ -170,7 +170,7 @@
     static constexpr int kWidth = 1000;
     static constexpr int kHeight = 1200;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/textblobuseaftergpufree.cpp b/gm/textblobuseaftergpufree.cpp
index aa23381..b3aab7f 100644
--- a/gm/textblobuseaftergpufree.cpp
+++ b/gm/textblobuseaftergpufree.cpp
@@ -61,7 +61,7 @@
     static constexpr int kWidth = 200;
     static constexpr int kHeight = 200;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/thinrects.cpp b/gm/thinrects.cpp
index 6e562f6..e0316c2 100644
--- a/gm/thinrects.cpp
+++ b/gm/thinrects.cpp
@@ -119,7 +119,7 @@
         }
     }
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/thinstrokedrects.cpp b/gm/thinstrokedrects.cpp
index 0e6743d..ba91499 100644
--- a/gm/thinstrokedrects.cpp
+++ b/gm/thinstrokedrects.cpp
@@ -76,7 +76,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/tiledscaledbitmap.cpp b/gm/tiledscaledbitmap.cpp
index ae9744e..557c7b7 100644
--- a/gm/tiledscaledbitmap.cpp
+++ b/gm/tiledscaledbitmap.cpp
@@ -73,7 +73,7 @@
 private:
     SkBitmap fBitmap;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/tileimagefilter.cpp b/gm/tileimagefilter.cpp
index 2aee0be..70f1b59 100644
--- a/gm/tileimagefilter.cpp
+++ b/gm/tileimagefilter.cpp
@@ -141,7 +141,7 @@
 private:
     sk_sp<SkImage> fBitmap, fCheckerboard;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/tilemodes.cpp b/gm/tilemodes.cpp
index fe39744..a947f5b 100644
--- a/gm/tilemodes.cpp
+++ b/gm/tilemodes.cpp
@@ -160,7 +160,7 @@
 
 private:
     bool fPowerOfTwoSize;
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new TilingGM(true); )
 DEF_GM( return new TilingGM(false); )
diff --git a/gm/tilemodes_scaled.cpp b/gm/tilemodes_scaled.cpp
index 88d8c8b..e66ef23 100644
--- a/gm/tilemodes_scaled.cpp
+++ b/gm/tilemodes_scaled.cpp
@@ -159,7 +159,7 @@
 
 private:
     bool fPowerOfTwoSize;
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 constexpr int gWidth = 32;
diff --git a/gm/trickycubicstrokes.cpp b/gm/trickycubicstrokes.cpp
index faf5c09..a46413c 100644
--- a/gm/trickycubicstrokes.cpp
+++ b/gm/trickycubicstrokes.cpp
@@ -137,7 +137,7 @@
 
 private:
     SkPaint fStrokePaint;
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM( return new TrickyCubicStrokesGM; )
diff --git a/gm/typeface.cpp b/gm/typeface.cpp
index 437768b..33fe37a 100644
--- a/gm/typeface.cpp
+++ b/gm/typeface.cpp
@@ -146,7 +146,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM( return new TypefaceStylesGM(false); )
diff --git a/gm/variedtext.cpp b/gm/variedtext.cpp
index 37c6ac4..d96ee49 100644
--- a/gm/variedtext.cpp
+++ b/gm/variedtext.cpp
@@ -163,7 +163,7 @@
     SkPoint         fPositions[kCnt];
     SkRect          fClipRects[kCnt];
 
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 DEF_GM(return new VariedTextGM(false, false);)
diff --git a/gm/vertices.cpp b/gm/vertices.cpp
index f71c108..61ea6db 100644
--- a/gm/vertices.cpp
+++ b/gm/vertices.cpp
@@ -205,7 +205,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 
 /////////////////////////////////////////////////////////////////////////////////////
diff --git a/gm/video_decoder.cpp b/gm/video_decoder.cpp
index e6785b8..c2480f0 100644
--- a/gm/video_decoder.cpp
+++ b/gm/video_decoder.cpp
@@ -60,7 +60,7 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM( return new VideoDecoderGM; )
 
diff --git a/gm/wacky_yuv_formats.cpp b/gm/wacky_yuv_formats.cpp
index d8f7a09..960d6a6 100644
--- a/gm/wacky_yuv_formats.cpp
+++ b/gm/wacky_yuv_formats.cpp
@@ -1484,7 +1484,7 @@
     sk_sp<SkColorSpace>        fTargetColorSpace;
     bool                       fGpuGeneratedImages = false;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
@@ -1674,7 +1674,7 @@
     sk_sp<SkImage> fImages[2][2];
     sk_sp<SkColorSpace> fTargetColorSpace;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM(return new YUVMakeColorSpaceGM();)
@@ -1799,6 +1799,6 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM( return new YUVSplitterGM; )
diff --git a/gm/widebuttcaps.cpp b/gm/widebuttcaps.cpp
index b2df5fe..423b9ad 100644
--- a/gm/widebuttcaps.cpp
+++ b/gm/widebuttcaps.cpp
@@ -78,7 +78,7 @@
 
 private:
     SkPaint fStrokePaint;
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM( return new WideButtCaps; )
diff --git a/gm/xfermodeimagefilter.cpp b/gm/xfermodeimagefilter.cpp
index 1f96dbb..5f69249 100644
--- a/gm/xfermodeimagefilter.cpp
+++ b/gm/xfermodeimagefilter.cpp
@@ -218,7 +218,7 @@
     SkBitmap        fBitmap;
     sk_sp<SkImage>  fCheckerboard;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/xfermodes.cpp b/gm/xfermodes.cpp
index 06a2c7e..41ea5c3 100644
--- a/gm/xfermodes.cpp
+++ b/gm/xfermodes.cpp
@@ -294,6 +294,6 @@
     }
 
 private:
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 DEF_GM( return new XfermodesGM; )
diff --git a/gm/xfermodes2.cpp b/gm/xfermodes2.cpp
index 89f5e02..425d3b9 100644
--- a/gm/xfermodes2.cpp
+++ b/gm/xfermodes2.cpp
@@ -147,7 +147,7 @@
     sk_sp<SkShader> fSrc;
     sk_sp<SkShader> fDst;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/xfermodes3.cpp b/gm/xfermodes3.cpp
index 4ab9bf1..d478978 100644
--- a/gm/xfermodes3.cpp
+++ b/gm/xfermodes3.cpp
@@ -218,7 +218,7 @@
     sk_sp<SkShader> fBGShader;
     sk_sp<SkShader> fBmpShader;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/xform.cpp b/gm/xform.cpp
index d169017..5ed89c2 100644
--- a/gm/xform.cpp
+++ b/gm/xform.cpp
@@ -100,7 +100,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM( return new XformGM; )
 
diff --git a/gm/ycbcrimage.cpp b/gm/ycbcrimage.cpp
index 99985b1..7ae5771 100644
--- a/gm/ycbcrimage.cpp
+++ b/gm/ycbcrimage.cpp
@@ -108,7 +108,7 @@
 
     sk_sp<SkImage> fYCbCrImage;
 
-    typedef GpuGM INHERITED;
+    using INHERITED = GpuGM;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/yuvtorgbeffect.cpp b/gm/yuvtorgbeffect.cpp
index 6613f40..80d1887 100644
--- a/gm/yuvtorgbeffect.cpp
+++ b/gm/yuvtorgbeffect.cpp
@@ -149,7 +149,7 @@
     static constexpr SkScalar kTestPad = 10.f;
     static constexpr SkScalar kColorSpaceOffset = 36.f;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM(return new YUVtoRGBEffect;)
@@ -260,7 +260,7 @@
     static constexpr SkScalar kTestPad = 10.f;
     static constexpr SkScalar kColorSpaceOffset = 36.f;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM(return new YUVNV12toRGBEffect;)
@@ -380,7 +380,7 @@
 
     static constexpr SkScalar kTestPad = 10.f;
 
-    typedef GM INHERITED;
+    using INHERITED = GM;
 };
 
 DEF_GM(return new YUVtoRGBSubsetEffect;)
diff --git a/include/android/SkAnimatedImage.h b/include/android/SkAnimatedImage.h
index d613d29..a67cde6 100644
--- a/include/android/SkAnimatedImage.h
+++ b/include/android/SkAnimatedImage.h
@@ -179,7 +179,7 @@
     int computeNextFrame(int current, bool* animationEnded);
     double finish();
 
-    typedef SkDrawable INHERITED;
+    using INHERITED = SkDrawable;
 };
 
 #endif // SkAnimatedImage_DEFINED
diff --git a/include/core/SkBitmap.h b/include/core/SkBitmap.h
index 450b057..31f7909 100644
--- a/include/core/SkBitmap.h
+++ b/include/core/SkBitmap.h
@@ -1140,7 +1140,7 @@
         */
         virtual bool allocPixelRef(SkBitmap* bitmap) = 0;
     private:
-        typedef SkRefCnt INHERITED;
+        using INHERITED = SkRefCnt;
     };
 
     /** \class SkBitmap::HeapAllocator
diff --git a/include/core/SkCanvas.h b/include/core/SkCanvas.h
index da86d5c..81edb40 100644
--- a/include/core/SkCanvas.h
+++ b/include/core/SkCanvas.h
@@ -2795,7 +2795,7 @@
 
     std::unique_ptr<SkGlyphRunBuilder> fScratchGlyphRunBuilder;
 
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 };
 
 /** \class SkAutoCanvasRestore
diff --git a/include/core/SkColorFilter.h b/include/core/SkColorFilter.h
index b9f6808..aa590ad 100644
--- a/include/core/SkColorFilter.h
+++ b/include/core/SkColorFilter.h
@@ -74,7 +74,7 @@
     SkColorFilter() = default;
     friend class SkColorFilterBase;
 
-    typedef SkFlattenable INHERITED;
+    using INHERITED = SkFlattenable;
 };
 
 class SK_API SkColorFilters {
diff --git a/include/core/SkData.h b/include/core/SkData.h
index 305198a..fae2acf 100644
--- a/include/core/SkData.h
+++ b/include/core/SkData.h
@@ -176,7 +176,7 @@
 
     static void DummyReleaseProc(const void*, void*); // {}
 
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 };
 
 #endif
diff --git a/include/core/SkDataTable.h b/include/core/SkDataTable.h
index aa4bcb1..a6a510b 100644
--- a/include/core/SkDataTable.h
+++ b/include/core/SkDataTable.h
@@ -112,7 +112,7 @@
 
     friend class SkDataTableBuilder;    // access to Dir
 
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 };
 
 #endif
diff --git a/include/core/SkDocument.h b/include/core/SkDocument.h
index 375f6db..eacfb2c 100644
--- a/include/core/SkDocument.h
+++ b/include/core/SkDocument.h
@@ -85,7 +85,7 @@
     SkWStream* fStream;
     State      fState;
 
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 };
 
 #endif
diff --git a/include/core/SkDrawLooper.h b/include/core/SkDrawLooper.h
index 0273a18..68ab438 100644
--- a/include/core/SkDrawLooper.h
+++ b/include/core/SkDrawLooper.h
@@ -125,7 +125,7 @@
     SkDrawLooper() {}
 
 private:
-    typedef SkFlattenable INHERITED;
+    using INHERITED = SkFlattenable;
 };
 
 #endif
diff --git a/include/core/SkFlattenable.h b/include/core/SkFlattenable.h
index bb9d70f..67b8421 100644
--- a/include/core/SkFlattenable.h
+++ b/include/core/SkFlattenable.h
@@ -92,7 +92,7 @@
 
     friend class SkGraphics;
 
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 };
 
 #if defined(SK_DISABLE_EFFECT_DESERIALIZATION)
diff --git a/include/core/SkFontMgr.h b/include/core/SkFontMgr.h
index a2abc9c..cd0ba06 100644
--- a/include/core/SkFontMgr.h
+++ b/include/core/SkFontMgr.h
@@ -32,7 +32,7 @@
     SkTypeface* matchStyleCSS3(const SkFontStyle& pattern);
 
 private:
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 };
 
 class SK_API SkFontMgr : public SkRefCnt {
@@ -155,7 +155,7 @@
     /** Implemented by porting layer to return the default factory. */
     static sk_sp<SkFontMgr> Factory();
 
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 };
 
 #endif
diff --git a/include/core/SkImage.h b/include/core/SkImage.h
index bc23f87..2f83827 100644
--- a/include/core/SkImage.h
+++ b/include/core/SkImage.h
@@ -1364,7 +1364,7 @@
     SkImageInfo     fInfo;
     const uint32_t  fUniqueID;
 
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 };
 
 #endif
diff --git a/include/core/SkImageFilter.h b/include/core/SkImageFilter.h
index d6da4d7..245d1a8 100644
--- a/include/core/SkImageFilter.h
+++ b/include/core/SkImageFilter.h
@@ -158,7 +158,7 @@
 private:
     friend class SkImageFilter_Base;
 
-    typedef SkFlattenable INHERITED;
+    using INHERITED = SkFlattenable;
 };
 
 #endif
diff --git a/include/core/SkOverdrawCanvas.h b/include/core/SkOverdrawCanvas.h
index 0b792df..5143c44 100644
--- a/include/core/SkOverdrawCanvas.h
+++ b/include/core/SkOverdrawCanvas.h
@@ -61,7 +61,7 @@
 
     SkPaint   fPaint;
 
-    typedef SkCanvasVirtualEnforcer<SkNWayCanvas> INHERITED;
+    using INHERITED = SkCanvasVirtualEnforcer<SkNWayCanvas>;
 };
 
 #endif
diff --git a/include/core/SkPathEffect.h b/include/core/SkPathEffect.h
index 1a96810..513e7ec 100644
--- a/include/core/SkPathEffect.h
+++ b/include/core/SkPathEffect.h
@@ -181,7 +181,7 @@
     SkPathEffect(const SkPathEffect&);
     SkPathEffect& operator=(const SkPathEffect&);
 
-    typedef SkFlattenable INHERITED;
+    using INHERITED = SkFlattenable;
 };
 
 #endif
diff --git a/include/core/SkPixelRef.h b/include/core/SkPixelRef.h
index edb6001..cca8a8a 100644
--- a/include/core/SkPixelRef.h
+++ b/include/core/SkPixelRef.h
@@ -118,7 +118,7 @@
     void setImmutableWithID(uint32_t genID);
     friend void SkBitmapCache_setImmutableWithID(SkPixelRef*, uint32_t);
 
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 };
 
 #endif
diff --git a/include/core/SkShader.h b/include/core/SkShader.h
index 211a6f8..5770b83 100644
--- a/include/core/SkShader.h
+++ b/include/core/SkShader.h
@@ -131,7 +131,7 @@
     SkShader() = default;
     friend class SkShaderBase;
 
-    typedef SkFlattenable INHERITED;
+    using INHERITED = SkFlattenable;
 };
 
 class SK_API SkShaders {
diff --git a/include/core/SkStream.h b/include/core/SkStream.h
index 659880d..e918ad3 100644
--- a/include/core/SkStream.h
+++ b/include/core/SkStream.h
@@ -357,7 +357,7 @@
     size_t fOffset;
     size_t fOriginalOffset;
 
-    typedef SkStreamAsset INHERITED;
+    using INHERITED = SkStreamAsset;
 };
 
 class SK_API SkMemoryStream : public SkStreamMemory {
@@ -430,7 +430,7 @@
     sk_sp<SkData>   fData;
     size_t          fOffset;
 
-    typedef SkStreamMemory INHERITED;
+    using INHERITED = SkStreamMemory;
 };
 
 /////////////////////////////////////////////////////////////////////////////////////////////
@@ -452,7 +452,7 @@
 private:
     FILE* fFILE;
 
-    typedef SkWStream INHERITED;
+    using INHERITED = SkWStream;
 };
 
 class SK_API SkDynamicMemoryWStream : public SkWStream {
@@ -509,7 +509,7 @@
     friend class SkBlockMemoryStream;
     friend class SkBlockMemoryRefCnt;
 
-    typedef SkWStream INHERITED;
+    using INHERITED = SkWStream;
 };
 
 #endif
diff --git a/include/core/SkSurface.h b/include/core/SkSurface.h
index 7f8441d..155bbe0 100644
--- a/include/core/SkSurface.h
+++ b/include/core/SkSurface.h
@@ -1069,7 +1069,7 @@
     const int            fHeight;
     uint32_t             fGenerationID;
 
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 };
 
 #endif
diff --git a/include/core/SkTextBlob.h b/include/core/SkTextBlob.h
index dd956f8..f47efb0 100644
--- a/include/core/SkTextBlob.h
+++ b/include/core/SkTextBlob.h
@@ -251,7 +251,7 @@
     // The actual payload resides in externally-managed storage, following the object.
     // (see the .cpp for more details)
 
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 };
 
 /** \class SkTextBlobBuilder
diff --git a/include/core/SkTypeface.h b/include/core/SkTypeface.h
index 7038cd0..20b36eb 100644
--- a/include/core/SkTypeface.h
+++ b/include/core/SkTypeface.h
@@ -429,6 +429,6 @@
     mutable SkOnce      fBoundsOnce;
     bool                fIsFixedPitch;
 
-    typedef SkWeakRefCnt INHERITED;
+    using INHERITED = SkWeakRefCnt;
 };
 #endif
diff --git a/include/effects/Sk1DPathEffect.h b/include/effects/Sk1DPathEffect.h
index 34edfaa..fb29c4d 100644
--- a/include/effects/Sk1DPathEffect.h
+++ b/include/effects/Sk1DPathEffect.h
@@ -32,7 +32,7 @@
     virtual SkScalar next(SkPath* dst, SkScalar dist, SkPathMeasure&) const = 0;
 
 private:
-    typedef SkPathEffect INHERITED;
+    using INHERITED = SkPathEffect;
 };
 
 class SK_API SkPath1DPathEffect : public Sk1DPathEffect {
@@ -71,7 +71,7 @@
     SkScalar    fInitialOffset; // computed from phase
     Style       fStyle;         // copied from constructor
 
-    typedef Sk1DPathEffect INHERITED;
+    using INHERITED = Sk1DPathEffect;
 };
 
 #endif
diff --git a/include/effects/Sk2DPathEffect.h b/include/effects/Sk2DPathEffect.h
index ea9057d..77aad93 100644
--- a/include/effects/Sk2DPathEffect.h
+++ b/include/effects/Sk2DPathEffect.h
@@ -47,7 +47,7 @@
     Sk2DPathEffect& operator=(const Sk2DPathEffect&);
 
     friend class Sk2DPathEffectBlitter;
-    typedef SkPathEffect INHERITED;
+    using INHERITED = SkPathEffect;
 };
 
 class SK_API SkLine2DPathEffect : public Sk2DPathEffect {
@@ -75,7 +75,7 @@
 
     SkScalar fWidth;
 
-    typedef Sk2DPathEffect INHERITED;
+    using INHERITED = Sk2DPathEffect;
 };
 
 class SK_API SkPath2DPathEffect : public Sk2DPathEffect {
@@ -99,7 +99,7 @@
 
     SkPath  fPath;
 
-    typedef Sk2DPathEffect INHERITED;
+    using INHERITED = Sk2DPathEffect;
 };
 
 #endif
diff --git a/include/effects/SkCornerPathEffect.h b/include/effects/SkCornerPathEffect.h
index ac041b5..76d5315 100644
--- a/include/effects/SkCornerPathEffect.h
+++ b/include/effects/SkCornerPathEffect.h
@@ -37,7 +37,7 @@
 
     SkScalar    fRadius;
 
-    typedef SkPathEffect INHERITED;
+    using INHERITED = SkPathEffect;
 };
 
 #endif
diff --git a/include/effects/SkDiscretePathEffect.h b/include/effects/SkDiscretePathEffect.h
index 007844b..6f9d4f7 100644
--- a/include/effects/SkDiscretePathEffect.h
+++ b/include/effects/SkDiscretePathEffect.h
@@ -47,7 +47,7 @@
     /* Caller-supplied 32 bit seed assist */
     uint32_t fSeedAssist;
 
-    typedef SkPathEffect INHERITED;
+    using INHERITED = SkPathEffect;
 };
 
 #endif
diff --git a/include/effects/SkLayerDrawLooper.h b/include/effects/SkLayerDrawLooper.h
index f11727e..1684ca1 100644
--- a/include/effects/SkLayerDrawLooper.h
+++ b/include/effects/SkLayerDrawLooper.h
@@ -109,7 +109,7 @@
         static void ApplyInfo(SkPaint* dst, const SkPaint& src, const LayerInfo&);
     };
 
-    typedef SkDrawLooper INHERITED;
+    using INHERITED = SkDrawLooper;
 
 public:
     class SK_API Builder {
diff --git a/include/encode/SkJpegEncoder.h b/include/encode/SkJpegEncoder.h
index e900cd9..f2107f1 100644
--- a/include/encode/SkJpegEncoder.h
+++ b/include/encode/SkJpegEncoder.h
@@ -91,7 +91,7 @@
     SkJpegEncoder(std::unique_ptr<SkJpegEncoderMgr>, const SkPixmap& src);
 
     std::unique_ptr<SkJpegEncoderMgr> fEncoderMgr;
-    typedef SkEncoder INHERITED;
+    using INHERITED = SkEncoder;
 };
 
 #endif
diff --git a/include/encode/SkPngEncoder.h b/include/encode/SkPngEncoder.h
index bf24bc5..ccfa292 100644
--- a/include/encode/SkPngEncoder.h
+++ b/include/encode/SkPngEncoder.h
@@ -88,7 +88,7 @@
     SkPngEncoder(std::unique_ptr<SkPngEncoderMgr>, const SkPixmap& src);
 
     std::unique_ptr<SkPngEncoderMgr> fEncoderMgr;
-    typedef SkEncoder INHERITED;
+    using INHERITED = SkEncoder;
 };
 
 static inline SkPngEncoder::FilterFlag operator|(SkPngEncoder::FilterFlag x,
diff --git a/include/gpu/GrContext.h b/include/gpu/GrContext.h
index 6d4ef59..f734ad9 100644
--- a/include/gpu/GrContext.h
+++ b/include/gpu/GrContext.h
@@ -757,7 +757,7 @@
     // TODO: have the GrClipStackClip use renderTargetContexts and rm this friending
     friend class GrContextPriv;
 
-    typedef GrRecordingContext INHERITED;
+    using INHERITED = GrRecordingContext;
 };
 
 #endif
diff --git a/include/gpu/GrDirectContext.h b/include/gpu/GrDirectContext.h
index 5d84fcc..a37bf0b 100644
--- a/include/gpu/GrDirectContext.h
+++ b/include/gpu/GrDirectContext.h
@@ -90,7 +90,7 @@
 
     std::unique_ptr<GrSmallPathAtlasMgr> fSmallPathAtlasMgr;
 
-    typedef GrContext INHERITED;
+    using INHERITED = GrContext;
 };
 
 
diff --git a/include/gpu/GrRecordingContext.h b/include/gpu/GrRecordingContext.h
index 68e5681..78d3957 100644
--- a/include/gpu/GrRecordingContext.h
+++ b/include/gpu/GrRecordingContext.h
@@ -218,7 +218,7 @@
     int fSuppressWarningMessages = 0;
 #endif
 
-    typedef GrImageContext INHERITED;
+    using INHERITED = GrImageContext;
 };
 
 /**
diff --git a/include/gpu/gl/GrGLInterface.h b/include/gpu/gl/GrGLInterface.h
index 651bcc1..42a120d 100644
--- a/include/gpu/gl/GrGLInterface.h
+++ b/include/gpu/gl/GrGLInterface.h
@@ -47,7 +47,7 @@
  */
 struct SK_API GrGLInterface : public SkRefCnt {
 private:
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 
 #if GR_GL_CHECK_ERROR
     // This is here to avoid having our debug code that checks for a GL error after most GL calls
diff --git a/include/ports/SkFontConfigInterface.h b/include/ports/SkFontConfigInterface.h
index 557381b..65fd612 100644
--- a/include/ports/SkFontConfigInterface.h
+++ b/include/ports/SkFontConfigInterface.h
@@ -109,7 +109,7 @@
      */
     static SkFontConfigInterface* GetSingletonDirectInterface();
 
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 };
 
 #endif
diff --git a/include/ports/SkRemotableFontMgr.h b/include/ports/SkRemotableFontMgr.h
index ebe1bd0..a105fb3 100644
--- a/include/ports/SkRemotableFontMgr.h
+++ b/include/ports/SkRemotableFontMgr.h
@@ -50,7 +50,7 @@
     int fCount;
     SkAutoTMalloc<SkFontIdentity> fData;
 
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 };
 
 class SK_API SkRemotableFontMgr : public SkRefCnt {
@@ -133,7 +133,7 @@
     virtual SkStreamAsset* getData(int dataId) const = 0;
 
 private:
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 };
 
 #endif
diff --git a/include/private/GrContext_Base.h b/include/private/GrContext_Base.h
index 5b9f0ea..19c367d 100644
--- a/include/private/GrContext_Base.h
+++ b/include/private/GrContext_Base.h
@@ -86,7 +86,7 @@
     sk_sp<GrContextThreadSafeProxy>         fThreadSafeProxy;
 
 private:
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 };
 
 #endif
diff --git a/include/private/GrImageContext.h b/include/private/GrImageContext.h
index 0ef9cef..e050f00 100644
--- a/include/private/GrImageContext.h
+++ b/include/private/GrImageContext.h
@@ -46,7 +46,7 @@
     // GrRenderTargetContexts.  It is also passed to the GrResourceProvider and SkGpuDevice.
     mutable GrSingleOwner            fSingleOwner;
 
-    typedef GrContext_Base INHERITED;
+    using INHERITED = GrContext_Base;
 };
 
 #endif
diff --git a/include/private/GrResourceKey.h b/include/private/GrResourceKey.h
index ee39e90..3277e4d 100644
--- a/include/private/GrResourceKey.h
+++ b/include/private/GrResourceKey.h
@@ -184,7 +184,7 @@
  */
 class GrScratchKey : public GrResourceKey {
 private:
-    typedef GrResourceKey INHERITED;
+    using INHERITED = GrResourceKey;
 
 public:
     /** Uniquely identifies the type of resource that is cached as scratch. */
@@ -236,7 +236,7 @@
  */
 class GrUniqueKey : public GrResourceKey {
 private:
-    typedef GrResourceKey INHERITED;
+    using INHERITED = GrResourceKey;
 
 public:
     typedef uint32_t Domain;
diff --git a/include/private/SkDeque.h b/include/private/SkDeque.h
index 199d47b..8adc39c 100644
--- a/include/private/SkDeque.h
+++ b/include/private/SkDeque.h
@@ -108,7 +108,7 @@
         }
 
     private:
-        typedef Iter INHERITED;
+        using INHERITED = Iter;
     };
 
 private:
diff --git a/include/private/SkTArray.h b/include/private/SkTArray.h
index cc59aa6..4f7bfb3 100644
--- a/include/private/SkTArray.h
+++ b/include/private/SkTArray.h
@@ -602,7 +602,7 @@
 template <int N, typename T, bool MEM_MOVE= false>
 class SkSTArray : public SkTArray<T, MEM_MOVE> {
 private:
-    typedef SkTArray<T, MEM_MOVE> INHERITED;
+    using INHERITED = SkTArray<T, MEM_MOVE>;
 
 public:
     SkSTArray() : INHERITED(&fStorage) {
diff --git a/include/private/SkWeakRefCnt.h b/include/private/SkWeakRefCnt.h
index c360697..2b57734 100644
--- a/include/private/SkWeakRefCnt.h
+++ b/include/private/SkWeakRefCnt.h
@@ -164,7 +164,7 @@
     /* Invariant: fWeakCnt = #weak + (fRefCnt > 0 ? 1 : 0) */
     mutable std::atomic<int32_t> fWeakCnt;
 
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 };
 
 #endif
diff --git a/include/utils/SkInterpolator.h b/include/utils/SkInterpolator.h
index ac08ca4..be13909 100644
--- a/include/utils/SkInterpolator.h
+++ b/include/utils/SkInterpolator.h
@@ -119,7 +119,7 @@
 #ifdef SK_DEBUG
     SkScalar(* fScalarsArray)[10];
 #endif
-    typedef SkInterpolatorBase INHERITED;
+    using INHERITED = SkInterpolatorBase;
 };
 
 /** Interpolate a cubic curve, typically to provide an ease-in ease-out transition.
diff --git a/include/utils/SkLuaCanvas.h b/include/utils/SkLuaCanvas.h
index ab01946..5c48405 100644
--- a/include/utils/SkLuaCanvas.h
+++ b/include/utils/SkLuaCanvas.h
@@ -63,7 +63,7 @@
 
     void sendverb(const char verb[]);
 
-    typedef SkCanvas INHERITED;
+    using INHERITED = SkCanvas;
 };
 
 #endif
diff --git a/include/utils/SkNWayCanvas.h b/include/utils/SkNWayCanvas.h
index 022aacc..6a4ea53 100644
--- a/include/utils/SkNWayCanvas.h
+++ b/include/utils/SkNWayCanvas.h
@@ -83,7 +83,7 @@
     class Iter;
 
 private:
-    typedef SkCanvasVirtualEnforcer<SkNoDrawCanvas> INHERITED;
+    using INHERITED = SkCanvasVirtualEnforcer<SkNoDrawCanvas>;
 };
 
 
diff --git a/include/utils/SkNoDrawCanvas.h b/include/utils/SkNoDrawCanvas.h
index 159e5fe..d7a46e7 100644
--- a/include/utils/SkNoDrawCanvas.h
+++ b/include/utils/SkNoDrawCanvas.h
@@ -71,7 +71,7 @@
                               const SkMatrix[], const SkPaint*, SrcRectConstraint) override {}
 
 private:
-    typedef SkCanvasVirtualEnforcer<SkCanvas> INHERITED;
+    using INHERITED = SkCanvasVirtualEnforcer<SkCanvas>;
 };
 
 #endif // SkNoDrawCanvas_DEFINED
diff --git a/modules/skottie/include/Skottie.h b/modules/skottie/include/Skottie.h
index bcf91f4..eae0277 100644
--- a/modules/skottie/include/Skottie.h
+++ b/modules/skottie/include/Skottie.h
@@ -254,7 +254,7 @@
                                                  fFPS;
     const uint32_t                               fFlags;
 
-    typedef SkNVRefCnt<Animation> INHERITED;
+    using INHERITED = SkNVRefCnt<Animation>;
 };
 
 } // namespace skottie
diff --git a/modules/skparagraph/gm/simple_gm.cpp b/modules/skparagraph/gm/simple_gm.cpp
index 38af4f7..bd7d016 100644
--- a/modules/skparagraph/gm/simple_gm.cpp
+++ b/modules/skparagraph/gm/simple_gm.cpp
@@ -113,7 +113,7 @@
     }
 
 private:
-    typedef skiagm::GM INHERITED;
+    using INHERITED = skiagm::GM;
 };
 DEF_GM(return new ParagraphGM(0);)
 DEF_GM(return new ParagraphGM(kTimeLayout);)
diff --git a/modules/skparagraph/samples/SampleParagraph.cpp b/modules/skparagraph/samples/SampleParagraph.cpp
index 71e879d..811b80e 100644
--- a/modules/skparagraph/samples/SampleParagraph.cpp
+++ b/modules/skparagraph/samples/SampleParagraph.cpp
@@ -170,7 +170,7 @@
 
 private:
 
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView2 : public ParagraphView_Base {
@@ -416,7 +416,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView3 : public ParagraphView_Base {
@@ -539,7 +539,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView4 : public ParagraphView_Base {
@@ -675,7 +675,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView5 : public ParagraphView_Base {
@@ -794,7 +794,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView6 : public ParagraphView_Base {
@@ -965,7 +965,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView7 : public ParagraphView_Base {
@@ -1035,7 +1035,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView8 : public ParagraphView_Base {
@@ -1105,7 +1105,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView9 : public ParagraphView_Base {
@@ -1202,7 +1202,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
     SkScalar letterSpacing;
     SkScalar wordSpacing;
 };
@@ -1244,7 +1244,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView11 : public ParagraphView_Base {
@@ -1323,7 +1323,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView12 : public ParagraphView_Base {
@@ -1362,7 +1362,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView14 : public ParagraphView_Base {
@@ -1397,7 +1397,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView15 : public ParagraphView_Base {
@@ -1444,7 +1444,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView16 : public ParagraphView_Base {
@@ -1479,7 +1479,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView17 : public ParagraphView_Base {
@@ -1515,7 +1515,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class Zalgo {
@@ -1648,7 +1648,7 @@
     size_t fIndex = 0;
     size_t fLimit = 20;
     std::unique_ptr<Paragraph> fParagraph;
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView19 : public ParagraphView_Base {
@@ -1675,7 +1675,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView20 : public ParagraphView_Base {
@@ -1704,7 +1704,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView21 : public ParagraphView_Base {
@@ -1729,7 +1729,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView22 : public ParagraphView_Base {
@@ -1778,7 +1778,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
     bool direction;
 };
 
@@ -1829,7 +1829,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView24 : public ParagraphView_Base {
@@ -1874,7 +1874,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView25 : public ParagraphView_Base {
@@ -1941,7 +1941,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView26 : public ParagraphView_Base {
@@ -1984,7 +1984,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView27 : public ParagraphView_Base {
@@ -2116,7 +2116,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView28 : public ParagraphView_Base {
@@ -2152,7 +2152,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView29 : public ParagraphView_Base {
@@ -2220,7 +2220,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView30 : public ParagraphView_Base {
@@ -2276,7 +2276,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView31 : public ParagraphView_Base {
@@ -2306,7 +2306,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView32 : public ParagraphView_Base {
@@ -2345,7 +2345,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView33 : public ParagraphView_Base {
@@ -2378,7 +2378,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView34 : public ParagraphView_Base {
@@ -2430,7 +2430,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView35 : public ParagraphView_Base {
@@ -2489,7 +2489,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
     SkPoint fPoint;
 };
 
@@ -2525,7 +2525,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView37 : public ParagraphView_Base {
@@ -2579,7 +2579,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView38 : public ParagraphView_Base {
@@ -2641,7 +2641,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView39 : public ParagraphView_Base {
@@ -2677,7 +2677,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView41 : public ParagraphView_Base {
@@ -2727,7 +2727,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView42 : public ParagraphView_Base {
@@ -2772,7 +2772,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView43 : public ParagraphView_Base {
@@ -2806,7 +2806,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView44 : public ParagraphView_Base {
@@ -2839,7 +2839,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView45 : public ParagraphView_Base {
@@ -2895,7 +2895,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class ParagraphView46 : public ParagraphView_Base {
@@ -2935,7 +2935,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 }  // namespace
diff --git a/modules/sksg/include/SkSGClipEffect.h b/modules/sksg/include/SkSGClipEffect.h
index 6614c6a..8b11f73 100644
--- a/modules/sksg/include/SkSGClipEffect.h
+++ b/modules/sksg/include/SkSGClipEffect.h
@@ -43,7 +43,7 @@
 
     bool                      fNoop = false;
 
-    typedef EffectNode INHERITED;
+    using INHERITED = EffectNode;
 };
 
 } // namespace sksg
diff --git a/modules/sksg/include/SkSGColorFilter.h b/modules/sksg/include/SkSGColorFilter.h
index a108821..a0f2c51 100644
--- a/modules/sksg/include/SkSGColorFilter.h
+++ b/modules/sksg/include/SkSGColorFilter.h
@@ -37,7 +37,7 @@
 private:
     sk_sp<SkColorFilter> fColorFilter;
 
-    typedef EffectNode INHERITED;
+    using INHERITED = EffectNode;
 };
 
 /**
@@ -84,7 +84,7 @@
     const sk_sp<Color> fColor;
     const SkBlendMode  fMode;
 
-    typedef ColorFilter INHERITED;
+    using INHERITED = ColorFilter;
 };
 
 /**
diff --git a/modules/sksg/include/SkSGDraw.h b/modules/sksg/include/SkSGDraw.h
index 0889ebf..1672836 100644
--- a/modules/sksg/include/SkSGDraw.h
+++ b/modules/sksg/include/SkSGDraw.h
@@ -40,7 +40,7 @@
     sk_sp<GeometryNode> fGeometry;
     sk_sp<PaintNode>    fPaint;
 
-    typedef RenderNode INHERITED;
+    using INHERITED = RenderNode;
 };
 
 } // namespace sksg
diff --git a/modules/sksg/include/SkSGEffectNode.h b/modules/sksg/include/SkSGEffectNode.h
index 005a99c..31daaa4 100644
--- a/modules/sksg/include/SkSGEffectNode.h
+++ b/modules/sksg/include/SkSGEffectNode.h
@@ -33,7 +33,7 @@
 private:
     sk_sp<RenderNode> fChild;
 
-    typedef RenderNode INHERITED;
+    using INHERITED = RenderNode;
 };
 
 } // namespace sksg
diff --git a/modules/sksg/include/SkSGGeometryNode.h b/modules/sksg/include/SkSGGeometryNode.h
index d9d4e8dd..6b5bf0b 100644
--- a/modules/sksg/include/SkSGGeometryNode.h
+++ b/modules/sksg/include/SkSGGeometryNode.h
@@ -45,7 +45,7 @@
 private:
     friend class Draw; // wants to know the cached bounds.
 
-    typedef Node INHERITED;
+    using INHERITED = Node;
 };
 
 } // namespace sksg
diff --git a/modules/sksg/include/SkSGGroup.h b/modules/sksg/include/SkSGGroup.h
index 085f7a6..fed28eb 100644
--- a/modules/sksg/include/SkSGGroup.h
+++ b/modules/sksg/include/SkSGGroup.h
@@ -48,7 +48,7 @@
     std::vector<sk_sp<RenderNode>> fChildren;
     bool                           fRequiresIsolation = true;
 
-    typedef RenderNode INHERITED;
+    using INHERITED = RenderNode;
 };
 
 } // namespace sksg
diff --git a/modules/sksg/include/SkSGImage.h b/modules/sksg/include/SkSGImage.h
index 178662a..6da8e10 100644
--- a/modules/sksg/include/SkSGImage.h
+++ b/modules/sksg/include/SkSGImage.h
@@ -43,7 +43,7 @@
     SkFilterQuality fQuality   = kNone_SkFilterQuality;
     bool            fAntiAlias = true;
 
-    typedef RenderNode INHERITED;
+    using INHERITED = RenderNode;
 };
 
 } // namespace sksg
diff --git a/modules/sksg/include/SkSGMaskEffect.h b/modules/sksg/include/SkSGMaskEffect.h
index 4497297..2d7572a 100644
--- a/modules/sksg/include/SkSGMaskEffect.h
+++ b/modules/sksg/include/SkSGMaskEffect.h
@@ -46,7 +46,7 @@
     const sk_sp<RenderNode> fMaskNode;
     const Mode              fMaskMode;
 
-    typedef EffectNode INHERITED;
+    using INHERITED = EffectNode;
 };
 
 } // namespace sksg
diff --git a/modules/sksg/include/SkSGNode.h b/modules/sksg/include/SkSGNode.h
index 271aa39..2d0b11d 100644
--- a/modules/sksg/include/SkSGNode.h
+++ b/modules/sksg/include/SkSGNode.h
@@ -91,7 +91,7 @@
     friend class NodePriv;
     friend class RenderNode; // node flags access
 
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 };
 
 // Helper for defining attribute getters/setters in subclasses.
diff --git a/modules/sksg/include/SkSGOpacityEffect.h b/modules/sksg/include/SkSGOpacityEffect.h
index 126ed3f..90d7481 100644
--- a/modules/sksg/include/SkSGOpacityEffect.h
+++ b/modules/sksg/include/SkSGOpacityEffect.h
@@ -35,7 +35,7 @@
 private:
     float fOpacity;
 
-    typedef EffectNode INHERITED;
+    using INHERITED = EffectNode;
 };
 
 } // namespace sksg
diff --git a/modules/sksg/include/SkSGPaint.h b/modules/sksg/include/SkSGPaint.h
index 59c0de5..fba5818 100644
--- a/modules/sksg/include/SkSGPaint.h
+++ b/modules/sksg/include/SkSGPaint.h
@@ -51,7 +51,7 @@
     SkPaint::Join  fStrokeJoin  = SkPaint::kMiter_Join;
     SkPaint::Cap   fStrokeCap   = SkPaint::kButt_Cap;
 
-    typedef Node INHERITED;
+    using INHERITED = Node;
 };
 
 /**
diff --git a/modules/sksg/include/SkSGRenderNode.h b/modules/sksg/include/SkSGRenderNode.h
index db01d49..00b7ced 100644
--- a/modules/sksg/include/SkSGRenderNode.h
+++ b/modules/sksg/include/SkSGRenderNode.h
@@ -121,7 +121,7 @@
 private:
     friend class ImageFilterEffect;
 
-    typedef Node INHERITED;
+    using INHERITED = Node;
 };
 
 /**
diff --git a/modules/sksg/include/SkSGTransform.h b/modules/sksg/include/SkSGTransform.h
index 3c1c013..65f0851 100644
--- a/modules/sksg/include/SkSGTransform.h
+++ b/modules/sksg/include/SkSGTransform.h
@@ -109,7 +109,7 @@
 
     const sk_sp<Transform> fTransform;
 
-    typedef EffectNode INHERITED;
+    using INHERITED = EffectNode;
 };
 
 } // namespace sksg
diff --git a/modules/sksg/samples/SampleSVGPong.cpp b/modules/sksg/samples/SampleSVGPong.cpp
index a39ae1e..159de89 100644
--- a/modules/sksg/samples/SampleSVGPong.cpp
+++ b/modules/sksg/samples/SampleSVGPong.cpp
@@ -302,7 +302,7 @@
     SkScalar                      fTimeScale = 1.0f;
     bool                          fShowInval = false;
 
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 DEF_SAMPLE( return new PongView(); )
diff --git a/samplecode/PerlinPatch.cpp b/samplecode/PerlinPatch.cpp
index b0d526d..d659914 100644
--- a/samplecode/PerlinPatch.cpp
+++ b/samplecode/PerlinPatch.cpp
@@ -203,7 +203,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 DEF_SAMPLE( return new PerlinPatchView(); )
diff --git a/samplecode/Sample2PtRadial.cpp b/samplecode/Sample2PtRadial.cpp
index 4aadacb..f404d14 100644
--- a/samplecode/Sample2PtRadial.cpp
+++ b/samplecode/Sample2PtRadial.cpp
@@ -32,7 +32,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/Sample3D.cpp b/samplecode/Sample3D.cpp
index be51eab..2aeb685 100644
--- a/samplecode/Sample3D.cpp
+++ b/samplecode/Sample3D.cpp
@@ -347,7 +347,7 @@
     }
 
 private:
-    typedef Sample3DView INHERITED;
+    using INHERITED = Sample3DView;
 };
 
 class SampleBump3D : public SampleCubeBase {
diff --git a/samplecode/SampleAAGeometry.cpp b/samplecode/SampleAAGeometry.cpp
index 584589f..492174b 100644
--- a/samplecode/SampleAAGeometry.cpp
+++ b/samplecode/SampleAAGeometry.cpp
@@ -1695,7 +1695,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 static struct KeyCommand {
diff --git a/samplecode/SampleAARects.cpp b/samplecode/SampleAARects.cpp
index 834a1e5..d22eb7a 100644
--- a/samplecode/SampleAARects.cpp
+++ b/samplecode/SampleAARects.cpp
@@ -170,7 +170,7 @@
 
 private:
 
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleAndroidShadows.cpp b/samplecode/SampleAndroidShadows.cpp
index d5f264c..50c626e 100644
--- a/samplecode/SampleAndroidShadows.cpp
+++ b/samplecode/SampleAndroidShadows.cpp
@@ -327,7 +327,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleAtlas.cpp b/samplecode/SampleAtlas.cpp
index 85d267c..d34c52f4 100644
--- a/samplecode/SampleAtlas.cpp
+++ b/samplecode/SampleAtlas.cpp
@@ -198,7 +198,7 @@
     }
 
 private:
-    typedef SkDrawable INHERITED;
+    using INHERITED = SkDrawable;
 };
 
 class DrawAtlasView : public Sample {
@@ -239,7 +239,7 @@
 #endif
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleAudio.cpp b/samplecode/SampleAudio.cpp
index efd45d6..c09a816 100644
--- a/samplecode/SampleAudio.cpp
+++ b/samplecode/SampleAudio.cpp
@@ -90,6 +90,6 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 DEF_SAMPLE( return new AudioView; )
diff --git a/samplecode/SampleBackdropBounds.cpp b/samplecode/SampleBackdropBounds.cpp
index 67ac714..35b9447 100644
--- a/samplecode/SampleBackdropBounds.cpp
+++ b/samplecode/SampleBackdropBounds.cpp
@@ -145,7 +145,7 @@
 
 private:
 
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 DEF_SAMPLE(return new BackdropBoundsSample();)
diff --git a/samplecode/SampleCCPRGeometry.cpp b/samplecode/SampleCCPRGeometry.cpp
index 758c076..b9885ef 100644
--- a/samplecode/SampleCCPRGeometry.cpp
+++ b/samplecode/SampleCCPRGeometry.cpp
@@ -111,7 +111,7 @@
 
     CCPRGeometryView* fView;
 
-    typedef GrDrawOp INHERITED;
+    using INHERITED = GrDrawOp;
 };
 
 class CCPRGeometryView::VisualizeCoverageCountFP : public GrFragmentProcessor {
diff --git a/samplecode/SampleCusp.cpp b/samplecode/SampleCusp.cpp
index 28b1233..dd33002 100644
--- a/samplecode/SampleCusp.cpp
+++ b/samplecode/SampleCusp.cpp
@@ -175,7 +175,7 @@
 
 private:
 
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 DEF_SAMPLE( return new CuspView(); )
diff --git a/samplecode/SampleDegenerateQuads.cpp b/samplecode/SampleDegenerateQuads.cpp
index b905410..ddf23e7 100644
--- a/samplecode/SampleDegenerateQuads.cpp
+++ b/samplecode/SampleDegenerateQuads.cpp
@@ -448,7 +448,7 @@
         *domain = {vertices[52], vertices[53], vertices[54], vertices[55]};
     }
 
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 class DegenerateQuadSample::Click : public Sample::Click {
diff --git a/samplecode/SampleDegenerateTwoPtRadials.cpp b/samplecode/SampleDegenerateTwoPtRadials.cpp
index f26403e..f0c74be 100644
--- a/samplecode/SampleDegenerateTwoPtRadials.cpp
+++ b/samplecode/SampleDegenerateTwoPtRadials.cpp
@@ -73,7 +73,7 @@
 
 private:
     SkScalar           fTime;
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleEffects.cpp b/samplecode/SampleEffects.cpp
index 91bb523..5a49ded 100644
--- a/samplecode/SampleEffects.cpp
+++ b/samplecode/SampleEffects.cpp
@@ -98,7 +98,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleEmboss.cpp b/samplecode/SampleEmboss.cpp
index d36dc29..0c49a85 100644
--- a/samplecode/SampleEmboss.cpp
+++ b/samplecode/SampleEmboss.cpp
@@ -51,7 +51,7 @@
 
 private:
 
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleFatBits.cpp b/samplecode/SampleFatBits.cpp
index 7f1ef61..72dac8f 100644
--- a/samplecode/SampleFatBits.cpp
+++ b/samplecode/SampleFatBits.cpp
@@ -499,7 +499,7 @@
 
 private:
 
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleFillType.cpp b/samplecode/SampleFillType.cpp
index 3aa4cb2..7330549 100644
--- a/samplecode/SampleFillType.cpp
+++ b/samplecode/SampleFillType.cpp
@@ -77,7 +77,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleFilterQuality.cpp b/samplecode/SampleFilterQuality.cpp
index f18a1a6..56d0721 100644
--- a/samplecode/SampleFilterQuality.cpp
+++ b/samplecode/SampleFilterQuality.cpp
@@ -284,7 +284,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleFlutterAnimate.cpp b/samplecode/SampleFlutterAnimate.cpp
index 67506d2..514d7f6 100644
--- a/samplecode/SampleFlutterAnimate.cpp
+++ b/samplecode/SampleFlutterAnimate.cpp
@@ -90,7 +90,7 @@
     static constexpr int kNumChars = 40;
     AnimatedChar fChars[kNumChars];
 
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleFontCache.cpp b/samplecode/SampleFontCache.cpp
index 9f39e9c..72662f2 100644
--- a/samplecode/SampleFontCache.cpp
+++ b/samplecode/SampleFontCache.cpp
@@ -124,7 +124,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleGlyphTransform.cpp b/samplecode/SampleGlyphTransform.cpp
index 2260a1a..cd7191b 100644
--- a/samplecode/SampleGlyphTransform.cpp
+++ b/samplecode/SampleGlyphTransform.cpp
@@ -1,4 +1,4 @@
-/*
+/*
  * Copyright 2018 Google Inc.
  *
  * Use of this source code is governed by a BSD-style license that can be
@@ -75,7 +75,7 @@
     SkScalar fScale;
     SkScalar fRotate;
 
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleGradients.cpp b/samplecode/SampleGradients.cpp
index 9eb4e71..e3ade38 100644
--- a/samplecode/SampleGradients.cpp
+++ b/samplecode/SampleGradients.cpp
@@ -155,7 +155,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleHT.cpp b/samplecode/SampleHT.cpp
index bec4a7d..940cd2f 100644
--- a/samplecode/SampleHT.cpp
+++ b/samplecode/SampleHT.cpp
@@ -168,7 +168,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleHairCurves.cpp b/samplecode/SampleHairCurves.cpp
index 73a6aee..cdb8ed8 100644
--- a/samplecode/SampleHairCurves.cpp
+++ b/samplecode/SampleHairCurves.cpp
@@ -114,7 +114,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleHairModes.cpp b/samplecode/SampleHairModes.cpp
index 5df28f5..359f388 100644
--- a/samplecode/SampleHairModes.cpp
+++ b/samplecode/SampleHairModes.cpp
@@ -108,7 +108,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleHairline.cpp b/samplecode/SampleHairline.cpp
index a43ac44..e188f14 100644
--- a/samplecode/SampleHairline.cpp
+++ b/samplecode/SampleHairline.cpp
@@ -223,7 +223,7 @@
 
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleIdentityScale.cpp b/samplecode/SampleIdentityScale.cpp
index 5b337d2..0f0b17c 100644
--- a/samplecode/SampleIdentityScale.cpp
+++ b/samplecode/SampleIdentityScale.cpp
@@ -65,7 +65,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleImageFilterDAG.cpp b/samplecode/SampleImageFilterDAG.cpp
index 915777c..1ec986e 100644
--- a/samplecode/SampleImageFilterDAG.cpp
+++ b/samplecode/SampleImageFilterDAG.cpp
@@ -509,7 +509,7 @@
 
 private:
 
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 DEF_SAMPLE(return new ImageFilterDAGSample();)
diff --git a/samplecode/SampleLCD.cpp b/samplecode/SampleLCD.cpp
index 3c71415..0fd46a1 100644
--- a/samplecode/SampleLCD.cpp
+++ b/samplecode/SampleLCD.cpp
@@ -49,7 +49,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleLayerMask.cpp b/samplecode/SampleLayerMask.cpp
index 7e00267..845e4a1 100644
--- a/samplecode/SampleLayerMask.cpp
+++ b/samplecode/SampleLayerMask.cpp
@@ -58,7 +58,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleLayers.cpp b/samplecode/SampleLayers.cpp
index 420caad..f7c1818 100644
--- a/samplecode/SampleLayers.cpp
+++ b/samplecode/SampleLayers.cpp
@@ -163,7 +163,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 DEF_SAMPLE( return new LayersView; )
 
@@ -226,6 +226,6 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 DEF_SAMPLE( return new BackdropView; )
diff --git a/samplecode/SampleLua.cpp b/samplecode/SampleLua.cpp
index ee36774..3502473 100644
--- a/samplecode/SampleLua.cpp
+++ b/samplecode/SampleLua.cpp
@@ -153,7 +153,7 @@
 private:
     SkLua* fLua;
 
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleManyRects.cpp b/samplecode/SampleManyRects.cpp
index cfd66c9..7278eed 100644
--- a/samplecode/SampleManyRects.cpp
+++ b/samplecode/SampleManyRects.cpp
@@ -59,7 +59,7 @@
 
 private:
     SkRandom fRandom;
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleMegaStroke.cpp b/samplecode/SampleMegaStroke.cpp
index 33fa431..15579d9 100644
--- a/samplecode/SampleMegaStroke.cpp
+++ b/samplecode/SampleMegaStroke.cpp
@@ -76,7 +76,7 @@
     SkRect      fClip;
     int         fAngle;
     int         fPlusMinus;
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleMixer.cpp b/samplecode/SampleMixer.cpp
index 8a10d72..aa6d831 100644
--- a/samplecode/SampleMixer.cpp
+++ b/samplecode/SampleMixer.cpp
@@ -85,6 +85,6 @@
 private:
     SkIRect fRect;
 
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 DEF_SAMPLE( return new MixerView; )
diff --git a/samplecode/SamplePatch.cpp b/samplecode/SamplePatch.cpp
index 421f99b..fb4caa4 100644
--- a/samplecode/SamplePatch.cpp
+++ b/samplecode/SamplePatch.cpp
@@ -314,7 +314,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 }  // namespace
 DEF_SAMPLE( return new PatchView(); )
@@ -415,7 +415,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 }  // namespace
 DEF_SAMPLE( return new PseudoInkView(); )
@@ -502,7 +502,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 }  // namespace
 DEF_SAMPLE( return new ManyStrokesView(); )
diff --git a/samplecode/SamplePath.cpp b/samplecode/SamplePath.cpp
index 888590e..a778183 100644
--- a/samplecode/SamplePath.cpp
+++ b/samplecode/SamplePath.cpp
@@ -195,7 +195,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 DEF_SAMPLE( return new PathView; )
 
@@ -294,7 +294,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 DEF_SAMPLE( return new ArcToView; )
 
@@ -421,7 +421,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 DEF_SAMPLE( return new FatStroke; )
 
@@ -529,7 +529,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 DEF_SAMPLE( return new CubicCurve; )
 
@@ -716,7 +716,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 DEF_SAMPLE( return new CubicCurve2; )
 
diff --git a/samplecode/SamplePathClip.cpp b/samplecode/SamplePathClip.cpp
index daf5bb3..c004e9f 100644
--- a/samplecode/SamplePathClip.cpp
+++ b/samplecode/SamplePathClip.cpp
@@ -60,7 +60,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 DEF_SAMPLE( return new PathClipView; )
 
@@ -300,7 +300,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 DEF_SAMPLE( return new EdgeClipView; )
diff --git a/samplecode/SamplePathEffects.cpp b/samplecode/SamplePathEffects.cpp
index ccdc541..5ed3241 100644
--- a/samplecode/SamplePathEffects.cpp
+++ b/samplecode/SamplePathEffects.cpp
@@ -137,7 +137,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SamplePathOverstroke.cpp b/samplecode/SamplePathOverstroke.cpp
index a01562b..9ebf1d4 100644
--- a/samplecode/SamplePathOverstroke.cpp
+++ b/samplecode/SamplePathOverstroke.cpp
@@ -191,7 +191,7 @@
     }
 
    private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SamplePolyToPoly.cpp b/samplecode/SamplePolyToPoly.cpp
index 942a722..04b2b71 100644
--- a/samplecode/SamplePolyToPoly.cpp
+++ b/samplecode/SamplePolyToPoly.cpp
@@ -147,7 +147,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleQuadStroker.cpp b/samplecode/SampleQuadStroker.cpp
index a4dce80..3652bea 100644
--- a/samplecode/SampleQuadStroker.cpp
+++ b/samplecode/SampleQuadStroker.cpp
@@ -799,7 +799,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleRectanizer.cpp b/samplecode/SampleRectanizer.cpp
index 67f36f9..2b81079 100644
--- a/samplecode/SampleRectanizer.cpp
+++ b/samplecode/SampleRectanizer.cpp
@@ -180,7 +180,7 @@
         fCurRandRect = 0;
     }
 
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleRegion.cpp b/samplecode/SampleRegion.cpp
index 160c1a3..30ed3df 100644
--- a/samplecode/SampleRegion.cpp
+++ b/samplecode/SampleRegion.cpp
@@ -338,7 +338,7 @@
 private:
     SkIRect    fBase, fRect;
 
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleRepeatTile.cpp b/samplecode/SampleRepeatTile.cpp
index 3b7dea0..c12a274 100644
--- a/samplecode/SampleRepeatTile.cpp
+++ b/samplecode/SampleRepeatTile.cpp
@@ -57,7 +57,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleSG.cpp b/samplecode/SampleSG.cpp
index 5842730..1fa8994 100644
--- a/samplecode/SampleSG.cpp
+++ b/samplecode/SampleSG.cpp
@@ -101,7 +101,7 @@
 
 private:
 
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleSVGFile.cpp b/samplecode/SampleSVGFile.cpp
index 9fb62ed..6069fae 100644
--- a/samplecode/SampleSVGFile.cpp
+++ b/samplecode/SampleSVGFile.cpp
@@ -66,7 +66,7 @@
     SkString        fPath;
     SkString        fLabel;
 
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 } // anonymous namespace
diff --git a/samplecode/SampleShadowColor.cpp b/samplecode/SampleShadowColor.cpp
index 71208aa..7313bda 100644
--- a/samplecode/SampleShadowColor.cpp
+++ b/samplecode/SampleShadowColor.cpp
@@ -221,7 +221,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleShadowReference.cpp b/samplecode/SampleShadowReference.cpp
index db8e9db..76439fb 100644
--- a/samplecode/SampleShadowReference.cpp
+++ b/samplecode/SampleShadowReference.cpp
@@ -191,7 +191,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleShadowUtils.cpp b/samplecode/SampleShadowUtils.cpp
index 5fffd63..2571c03 100644
--- a/samplecode/SampleShadowUtils.cpp
+++ b/samplecode/SampleShadowUtils.cpp
@@ -247,7 +247,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleShip.cpp b/samplecode/SampleShip.cpp
index 8fdc9eb..25853b5 100644
--- a/samplecode/SampleShip.cpp
+++ b/samplecode/SampleShip.cpp
@@ -135,7 +135,7 @@
     SkRSXform   fXform[kGrid*kGrid+1];
     SkRect      fTex[kGrid*kGrid+1];
 
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleSimpleStroker.cpp b/samplecode/SampleSimpleStroker.cpp
index c5c476e..999b084 100644
--- a/samplecode/SampleSimpleStroker.cpp
+++ b/samplecode/SampleSimpleStroker.cpp
@@ -476,7 +476,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 DEF_SAMPLE(return new SimpleStroker;)
diff --git a/samplecode/SampleSlides.cpp b/samplecode/SampleSlides.cpp
index 109608c..48979a4 100644
--- a/samplecode/SampleSlides.cpp
+++ b/samplecode/SampleSlides.cpp
@@ -449,7 +449,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleStringArt.cpp b/samplecode/SampleStringArt.cpp
index 2447ccb..9f2b3b1 100644
--- a/samplecode/SampleStringArt.cpp
+++ b/samplecode/SampleStringArt.cpp
@@ -57,7 +57,7 @@
 private:
 
     SkScalar fAngle;
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleStrokePath.cpp b/samplecode/SampleStrokePath.cpp
index b22ba8d..dace79a 100644
--- a/samplecode/SampleStrokePath.cpp
+++ b/samplecode/SampleStrokePath.cpp
@@ -201,7 +201,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleStrokeRect.cpp b/samplecode/SampleStrokeRect.cpp
index f172c47..d4cc4ae 100644
--- a/samplecode/SampleStrokeRect.cpp
+++ b/samplecode/SampleStrokeRect.cpp
@@ -56,7 +56,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleSubpixelTranslate.cpp b/samplecode/SampleSubpixelTranslate.cpp
index 3d8385f..a3649e5 100644
--- a/samplecode/SampleSubpixelTranslate.cpp
+++ b/samplecode/SampleSubpixelTranslate.cpp
@@ -103,7 +103,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleTextBox.cpp b/samplecode/SampleTextBox.cpp
index 72bc272..23cdf30 100644
--- a/samplecode/SampleTextBox.cpp
+++ b/samplecode/SampleTextBox.cpp
@@ -110,7 +110,7 @@
 
 private:
     std::unique_ptr<SkShaper> fShaper;
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 DEF_SAMPLE( return new TextBoxView([](){ return SkShaper::Make(); }, "default"); );
@@ -184,6 +184,6 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 DEF_SAMPLE( return new SampleShaper; );
diff --git a/samplecode/SampleTextEffects.cpp b/samplecode/SampleTextEffects.cpp
index 602d39b..10fd89b 100644
--- a/samplecode/SampleTextEffects.cpp
+++ b/samplecode/SampleTextEffects.cpp
@@ -55,7 +55,7 @@
     SkScalar fRadius;
     SkTDArray<SkPoint>* fPts;
 
-    typedef Sk2DPathEffect INHERITED;
+    using INHERITED = Sk2DPathEffect;
 };
 
 // Register this path effect as deserializable before main().
@@ -86,7 +86,7 @@
 private:
     SK_FLATTENABLE_HOOKS(InverseFillPE)
 
-    typedef SkPathEffect INHERITED;
+    using INHERITED = SkPathEffect;
 };
 
 sk_sp<SkFlattenable> InverseFillPE::CreateProc(SkReadBuffer& buffer) {
@@ -162,7 +162,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleThinAA.cpp b/samplecode/SampleThinAA.cpp
index 5608acb..0a5a25a 100644
--- a/samplecode/SampleThinAA.cpp
+++ b/samplecode/SampleThinAA.cpp
@@ -64,7 +64,7 @@
 private:
     RectRenderer() {}
 
-    typedef ShapeRenderer INHERITED;
+    using INHERITED = ShapeRenderer;
 };
 
 class PathRenderer : public ShapeRenderer {
@@ -149,7 +149,7 @@
             : fDepth(depth)
             , fHairline(hairline) {}
 
-    typedef ShapeRenderer INHERITED;
+    using INHERITED = ShapeRenderer;
 };
 
 class OffscreenShapeRenderer : public ShapeRenderer {
@@ -237,7 +237,7 @@
             , fRenderer(std::move(renderer))
             , fSupersampleFactor(supersample) { }
 
-    typedef ShapeRenderer INHERITED;
+    using INHERITED = ShapeRenderer;
 };
 
 class ThinAASample : public Sample {
@@ -535,7 +535,7 @@
         canvas->translate(0.f, 8.f * ShapeRenderer::kTileHeight + 20.f);
     }
 
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleUnpremul.cpp b/samplecode/SampleUnpremul.cpp
index 9c606bd..02239c9 100644
--- a/samplecode/SampleUnpremul.cpp
+++ b/samplecode/SampleUnpremul.cpp
@@ -158,7 +158,7 @@
         this->decodeCurrFile();
     }
 
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleVertices.cpp b/samplecode/SampleVertices.cpp
index 25afd41..db7a53d 100644
--- a/samplecode/SampleVertices.cpp
+++ b/samplecode/SampleVertices.cpp
@@ -204,7 +204,7 @@
 
     Rec fRecs[3];
 
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleWritePixels.cpp b/samplecode/SampleWritePixels.cpp
index d014e86..eeed376 100644
--- a/samplecode/SampleWritePixels.cpp
+++ b/samplecode/SampleWritePixels.cpp
@@ -50,7 +50,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/samplecode/SampleXfer.cpp b/samplecode/SampleXfer.cpp
index 7053f2b..c005bd7 100644
--- a/samplecode/SampleXfer.cpp
+++ b/samplecode/SampleXfer.cpp
@@ -193,7 +193,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 DEF_SAMPLE( return new XferDemo; )
 
@@ -303,6 +303,6 @@
     SkRect                  fDomain;
     SkImage::CubicResampler fCubic;
 
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 DEF_SAMPLE( return new CubicResamplerDemo; )
diff --git a/samplecode/SampleXfermodesBlur.cpp b/samplecode/SampleXfermodesBlur.cpp
index b565b79..bdbc4a0 100644
--- a/samplecode/SampleXfermodesBlur.cpp
+++ b/samplecode/SampleXfermodesBlur.cpp
@@ -141,7 +141,7 @@
     }
 
 private:
-    typedef Sample INHERITED;
+    using INHERITED = Sample;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/src/codec/SkAndroidCodecAdapter.h b/src/codec/SkAndroidCodecAdapter.h
index 7a5d093..4777f6d 100644
--- a/src/codec/SkAndroidCodecAdapter.h
+++ b/src/codec/SkAndroidCodecAdapter.h
@@ -32,6 +32,6 @@
 
 private:
 
-    typedef SkAndroidCodec INHERITED;
+    using INHERITED = SkAndroidCodec;
 };
 #endif // SkAndroidCodecAdapter_DEFINED
diff --git a/src/codec/SkBmpBaseCodec.h b/src/codec/SkBmpBaseCodec.h
index 1c57ce6..a3ceee4 100644
--- a/src/codec/SkBmpBaseCodec.h
+++ b/src/codec/SkBmpBaseCodec.h
@@ -33,6 +33,6 @@
 private:
     SkAutoFree fSrcBuffer;
 
-    typedef SkBmpCodec INHERITED;
+    using INHERITED = SkBmpCodec;
 };
 #endif // SkBmpBaseCodec_DEFINED
diff --git a/src/codec/SkBmpCodec.h b/src/codec/SkBmpCodec.h
index 97a15b6..385a031 100644
--- a/src/codec/SkBmpCodec.h
+++ b/src/codec/SkBmpCodec.h
@@ -145,7 +145,7 @@
     const size_t                fSrcRowBytes;
     std::unique_ptr<uint32_t[]> fXformBuffer;
 
-    typedef SkCodec INHERITED;
+    using INHERITED = SkCodec;
 };
 
 #endif
diff --git a/src/codec/SkBmpMaskCodec.h b/src/codec/SkBmpMaskCodec.h
index eaef50d..686a8fa 100644
--- a/src/codec/SkBmpMaskCodec.h
+++ b/src/codec/SkBmpMaskCodec.h
@@ -57,6 +57,6 @@
     std::unique_ptr<SkMasks>        fMasks;
     std::unique_ptr<SkMaskSwizzler> fMaskSwizzler;
 
-    typedef SkBmpBaseCodec INHERITED;
+    using INHERITED = SkBmpBaseCodec;
 };
 #endif  // SkBmpMaskCodec_DEFINED
diff --git a/src/codec/SkBmpRLECodec.h b/src/codec/SkBmpRLECodec.h
index 80acf42..ae9c5a3 100644
--- a/src/codec/SkBmpRLECodec.h
+++ b/src/codec/SkBmpRLECodec.h
@@ -115,6 +115,6 @@
     // on subsequent calls to decodeRows().
     int                        fLinesToSkip;
 
-    typedef SkBmpCodec INHERITED;
+    using INHERITED = SkBmpCodec;
 };
 #endif  // SkBmpRLECodec_DEFINED
diff --git a/src/codec/SkBmpStandardCodec.h b/src/codec/SkBmpStandardCodec.h
index 966330e..48cefc8 100644
--- a/src/codec/SkBmpStandardCodec.h
+++ b/src/codec/SkBmpStandardCodec.h
@@ -87,6 +87,6 @@
     const bool                  fInIco;
     const size_t                fAndMaskRowBytes; // only used for fInIco decodes
 
-    typedef SkBmpBaseCodec INHERITED;
+    using INHERITED = SkBmpBaseCodec;
 };
 #endif  // SkBmpStandardCodec_DEFINED
diff --git a/src/codec/SkCodecImageGenerator.h b/src/codec/SkCodecImageGenerator.h
index 1f68f50..1e6b550 100644
--- a/src/codec/SkCodecImageGenerator.h
+++ b/src/codec/SkCodecImageGenerator.h
@@ -111,6 +111,6 @@
     std::unique_ptr<SkCodec> fCodec;
     sk_sp<SkData> fData;
 
-    typedef SkImageGenerator INHERITED;
+    using INHERITED = SkImageGenerator;
 };
 #endif  // SkCodecImageGenerator_DEFINED
diff --git a/src/codec/SkColorTable.h b/src/codec/SkColorTable.h
index e83498e..6604677 100644
--- a/src/codec/SkColorTable.h
+++ b/src/codec/SkColorTable.h
@@ -44,7 +44,7 @@
     SkPMColor*  fColors;
     int         fCount;
 
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 };
 
 #endif
diff --git a/src/codec/SkHeifCodec.h b/src/codec/SkHeifCodec.h
index bbcf722..48a7cd6 100644
--- a/src/codec/SkHeifCodec.h
+++ b/src/codec/SkHeifCodec.h
@@ -94,7 +94,7 @@
         }
 
     private:
-        typedef SkFrame INHERITED;
+        using INHERITED = SkFrame;
     };
 
     class FrameHolder : public SkFrameHolder {
@@ -122,7 +122,7 @@
     };
 
     FrameHolder fFrameHolder;
-    typedef SkCodec INHERITED;
+    using INHERITED = SkCodec;
 };
 
 #endif // SkHeifCodec_DEFINED
diff --git a/src/codec/SkIcoCodec.h b/src/codec/SkIcoCodec.h
index 9888dc2..4fb5c35 100644
--- a/src/codec/SkIcoCodec.h
+++ b/src/codec/SkIcoCodec.h
@@ -95,6 +95,6 @@
     // std::unique_ptr.  It will be deleted by the destructor of fEmbeddedCodecs.
     SkCodec* fCurrCodec;
 
-    typedef SkCodec INHERITED;
+    using INHERITED = SkCodec;
 };
 #endif  // SkIcoCodec_DEFINED
diff --git a/src/codec/SkJpegCodec.h b/src/codec/SkJpegCodec.h
index 6500720..bd6020e 100644
--- a/src/codec/SkJpegCodec.h
+++ b/src/codec/SkJpegCodec.h
@@ -137,7 +137,7 @@
 
     friend class SkRawCodec;
 
-    typedef SkCodec INHERITED;
+    using INHERITED = SkCodec;
 };
 
 #endif
diff --git a/src/codec/SkPngCodec.cpp b/src/codec/SkPngCodec.cpp
index c2e6615..288dee6 100644
--- a/src/codec/SkPngCodec.cpp
+++ b/src/codec/SkPngCodec.cpp
@@ -519,7 +519,7 @@
     int                         fLastRow;
     int                         fRowsNeeded;
 
-    typedef SkPngCodec INHERITED;
+    using INHERITED = SkPngCodec;
 
     static SkPngNormalDecoder* GetDecoder(png_structp png_ptr) {
         return static_cast<SkPngNormalDecoder*>(png_get_progressive_ptr(png_ptr));
@@ -635,7 +635,7 @@
     size_t                  fPng_rowbytes;
     SkAutoTMalloc<png_byte> fInterlaceBuffer;
 
-    typedef SkPngCodec INHERITED;
+    using INHERITED = SkPngCodec;
 
     // FIXME: Currently sharing interlaced callback for all rows and subset. It's not
     // as expensive as the subset version of non-interlaced, but it still does extra
diff --git a/src/codec/SkPngCodec.h b/src/codec/SkPngCodec.h
index 48f6346..67c64e1 100644
--- a/src/codec/SkPngCodec.h
+++ b/src/codec/SkPngCodec.h
@@ -116,6 +116,6 @@
     size_t                         fIdatLength;
     bool                           fDecodedIdat;
 
-    typedef SkCodec INHERITED;
+    using INHERITED = SkCodec;
 };
 #endif  // SkPngCodec_DEFINED
diff --git a/src/codec/SkRawCodec.cpp b/src/codec/SkRawCodec.cpp
index 7c619fb..a8cdb49 100644
--- a/src/codec/SkRawCodec.cpp
+++ b/src/codec/SkRawCodec.cpp
@@ -145,7 +145,7 @@
     }
 
 private:
-    typedef dng_host INHERITED;
+    using INHERITED = dng_host;
 };
 
 // T must be unsigned type.
@@ -209,7 +209,7 @@
     // streaming too large data chunk. We can always adjust the limit here if we need.
     const size_t kMaxStreamSize = 100 * 1024 * 1024;  // 100MB
 
-    typedef SkDynamicMemoryWStream INHERITED;
+    using INHERITED = SkDynamicMemoryWStream;
 };
 
 // Note: the maximum buffer size is 100MB (limited by SkRawLimitedDynamicMemoryWStream).
diff --git a/src/codec/SkRawCodec.h b/src/codec/SkRawCodec.h
index d1c5131..1551cf9 100644
--- a/src/codec/SkRawCodec.h
+++ b/src/codec/SkRawCodec.h
@@ -59,7 +59,7 @@
 
     std::unique_ptr<SkDngImage> fDngImage;
 
-    typedef SkCodec INHERITED;
+    using INHERITED = SkCodec;
 };
 
 #endif
diff --git a/src/codec/SkSampledCodec.h b/src/codec/SkSampledCodec.h
index c92f944..6776980 100644
--- a/src/codec/SkSampledCodec.h
+++ b/src/codec/SkSampledCodec.h
@@ -54,6 +54,6 @@
     SkCodec::Result sampledDecode(const SkImageInfo& info, void* pixels, size_t rowBytes,
             const AndroidOptions& options);
 
-    typedef SkAndroidCodec INHERITED;
+    using INHERITED = SkAndroidCodec;
 };
 #endif // SkSampledCodec_DEFINED
diff --git a/src/codec/SkScalingCodec.h b/src/codec/SkScalingCodec.h
index 40c472c..a6d2337 100644
--- a/src/codec/SkScalingCodec.h
+++ b/src/codec/SkScalingCodec.h
@@ -33,7 +33,7 @@
     }
 
 private:
-    typedef SkCodec INHERITED;
+    using INHERITED = SkCodec;
 };
 
 #endif  // SkScalingCodec_DEFINED
diff --git a/src/codec/SkWbmpCodec.h b/src/codec/SkWbmpCodec.h
index 30af5d7..dbf4ca4 100644
--- a/src/codec/SkWbmpCodec.h
+++ b/src/codec/SkWbmpCodec.h
@@ -56,7 +56,7 @@
     Result onStartScanlineDecode(const SkImageInfo& dstInfo,
             const Options& options) override;
 
-    typedef SkCodec INHERITED;
+    using INHERITED = SkCodec;
 };
 
 #endif  // SkCodec_wbmp_DEFINED
diff --git a/src/codec/SkWebpCodec.h b/src/codec/SkWebpCodec.h
index 36ff535..213ff89 100644
--- a/src/codec/SkWebpCodec.h
+++ b/src/codec/SkWebpCodec.h
@@ -67,7 +67,7 @@
     private:
         const SkEncodedInfo::Alpha fReportedAlpha;
 
-        typedef SkFrame INHERITED;
+        using INHERITED = SkFrame;
     };
 
     class FrameHolder : public SkFrameHolder {
@@ -99,6 +99,6 @@
     // succeed.
     bool        fFailed;
 
-    typedef SkScalingCodec INHERITED;
+    using INHERITED = SkScalingCodec;
 };
 #endif // SkWebpCodec_DEFINED
diff --git a/src/codec/SkWuffsCodec.cpp b/src/codec/SkWuffsCodec.cpp
index b45bd47..ab7a6be 100644
--- a/src/codec/SkWuffsCodec.cpp
+++ b/src/codec/SkWuffsCodec.cpp
@@ -166,7 +166,7 @@
     uint64_t             fIOPosition;
     SkEncodedInfo::Alpha fReportedAlpha;
 
-    typedef SkFrame INHERITED;
+    using INHERITED = SkFrame;
 };
 
 // SkWuffsFrameHolder is a trivial indirector that forwards its calls onto a
@@ -185,7 +185,7 @@
 private:
     const SkWuffsCodec* fCodec;
 
-    typedef SkFrameHolder INHERITED;
+    using INHERITED = SkFrameHolder;
 };
 
 class SkWuffsCodec final : public SkScalingCodec {
@@ -317,7 +317,7 @@
 
     uint8_t fBuffer[SK_WUFFS_CODEC_BUFFER_SIZE];
 
-    typedef SkScalingCodec INHERITED;
+    using INHERITED = SkScalingCodec;
 };
 
 // -------------------------------- SkWuffsFrame implementation
diff --git a/src/core/Sk4px.h b/src/core/Sk4px.h
index 16823d1..d375e8e 100644
--- a/src/core/Sk4px.h
+++ b/src/core/Sk4px.h
@@ -80,7 +80,7 @@
         Wide operator << (int bits) const { return INHERITED::operator<<(bits); }
 
     private:
-        typedef Sk16h INHERITED;
+        using INHERITED = Sk16h;
     };
 
     Wide widen() const;               // Widen 8-bit values to low 8-bits of 16-bit lanes.
@@ -231,7 +231,7 @@
 private:
     Sk4px() = default;
 
-    typedef Sk16b INHERITED;
+    using INHERITED = Sk16b;
 };
 
 static_assert(sizeof(Sk4px) == sizeof(Sk16b));
diff --git a/src/core/SkAutoPixmapStorage.h b/src/core/SkAutoPixmapStorage.h
index 385fc7c..50e663f 100644
--- a/src/core/SkAutoPixmapStorage.h
+++ b/src/core/SkAutoPixmapStorage.h
@@ -84,7 +84,7 @@
         fStorage = nullptr;
     }
 
-    typedef SkPixmap INHERITED;
+    using INHERITED = SkPixmap;
 };
 
 #endif
diff --git a/src/core/SkBitmapDevice.h b/src/core/SkBitmapDevice.h
index 86a59af..64e6782 100644
--- a/src/core/SkBitmapDevice.h
+++ b/src/core/SkBitmapDevice.h
@@ -161,7 +161,7 @@
     SkGlyphRunListPainter fGlyphPainter;
 
 
-    typedef SkBaseDevice INHERITED;
+    using INHERITED = SkBaseDevice;
 };
 
 class SkBitmapDeviceFilteredSurfaceProps {
diff --git a/src/core/SkBlitter_Sprite.cpp b/src/core/SkBlitter_Sprite.cpp
index 31f7b8c..2f4b6ea 100644
--- a/src/core/SkBlitter_Sprite.cpp
+++ b/src/core/SkBlitter_Sprite.cpp
@@ -96,7 +96,7 @@
     }
 
 private:
-    typedef SkSpriteBlitter INHERITED;
+    using INHERITED = SkSpriteBlitter;
 };
 
 class SkRasterPipelineSpriteBlitter : public SkSpriteBlitter {
@@ -167,7 +167,7 @@
     SkColor4f                  fPaintColor;
     sk_sp<SkShader>            fClipShader;
 
-    typedef SkSpriteBlitter INHERITED;
+    using INHERITED = SkSpriteBlitter;
 };
 
 // returning null means the caller will call SkBlitter::Choose() and
diff --git a/src/core/SkBlurMF.cpp b/src/core/SkBlurMF.cpp
index 8e913dc..177f5b2 100644
--- a/src/core/SkBlurMF.cpp
+++ b/src/core/SkBlurMF.cpp
@@ -111,7 +111,7 @@
 
     friend class SkBlurMaskFilter;
 
-    typedef SkMaskFilter INHERITED;
+    using INHERITED = SkMaskFilter;
     friend void sk_register_blur_maskfilter_createproc();
 };
 
diff --git a/src/core/SkClipStack.h b/src/core/SkClipStack.h
index e5f639b..21688aa 100644
--- a/src/core/SkClipStack.h
+++ b/src/core/SkClipStack.h
@@ -480,7 +480,7 @@
 
     private:
 
-        typedef Iter INHERITED;
+        using INHERITED = Iter;
     };
 
     /**
diff --git a/src/core/SkClipStackDevice.h b/src/core/SkClipStackDevice.h
index 928b410..18b72b1 100644
--- a/src/core/SkClipStackDevice.h
+++ b/src/core/SkClipStackDevice.h
@@ -44,7 +44,7 @@
     intptr_t fStorage[kPreallocCount * sizeof(SkClipStack::Element) / sizeof(intptr_t)];
     SkClipStack fClipStack;
 
-    typedef SkBaseDevice INHERITED;
+    using INHERITED = SkBaseDevice;
 };
 
 #endif
diff --git a/src/core/SkColorFilter.cpp b/src/core/SkColorFilter.cpp
index b518dc7..d9ad7b5 100644
--- a/src/core/SkColorFilter.cpp
+++ b/src/core/SkColorFilter.cpp
@@ -180,7 +180,7 @@
 
     friend class SkColorFilter;
 
-    typedef SkColorFilter INHERITED;
+    using INHERITED = SkColorFilter;
 };
 
 sk_sp<SkFlattenable> SkComposeColorFilter::CreateProc(SkReadBuffer& buffer) {
@@ -268,7 +268,7 @@
     SkColorSpaceXformSteps fSteps;
 
     friend class SkColorFilter;
-    typedef SkColorFilterBase INHERITED;
+    using INHERITED = SkColorFilterBase;
 };
 
 sk_sp<SkFlattenable> SkSRGBGammaColorFilter::CreateProc(SkReadBuffer& buffer) {
@@ -399,7 +399,7 @@
 
     friend class SkColorFilter;
 
-    typedef SkColorFilterBase INHERITED;
+    using INHERITED = SkColorFilterBase;
 };
 
 sk_sp<SkFlattenable> SkMixerColorFilter::CreateProc(SkReadBuffer& buffer) {
diff --git a/src/core/SkColorFilterBase.h b/src/core/SkColorFilterBase.h
index 2dfabb2..288cbc1 100644
--- a/src/core/SkColorFilterBase.h
+++ b/src/core/SkColorFilterBase.h
@@ -89,7 +89,7 @@
 
     friend class SkColorFilter;
 
-    typedef SkFlattenable INHERITED;
+    using INHERITED = SkFlattenable;
 };
 
 static inline SkColorFilterBase* as_CFB(SkColorFilter* filter) {
diff --git a/src/core/SkColorFilter_Matrix.h b/src/core/SkColorFilter_Matrix.h
index aa5605f..5bea588 100644
--- a/src/core/SkColorFilter_Matrix.h
+++ b/src/core/SkColorFilter_Matrix.h
@@ -40,7 +40,7 @@
     uint16_t    fFlags;
     Domain      fDomain;
 
-    typedef SkColorFilterBase INHERITED;
+    using INHERITED = SkColorFilterBase;
 };
 
 #endif
diff --git a/src/core/SkCoreBlitters.h b/src/core/SkCoreBlitters.h
index ee25a73..51e73a8 100644
--- a/src/core/SkCoreBlitters.h
+++ b/src/core/SkCoreBlitters.h
@@ -23,7 +23,7 @@
     const SkPixmap fDevice;
 
 private:
-    typedef SkBlitter INHERITED;
+    using INHERITED = SkBlitter;
 };
 
 class SkShaderBlitter : public SkRasterBlitter {
@@ -47,7 +47,7 @@
     // illegal
     SkShaderBlitter& operator=(const SkShaderBlitter&);
 
-    typedef SkRasterBlitter INHERITED;
+    using INHERITED = SkRasterBlitter;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -63,7 +63,7 @@
     const SkPixmap* justAnOpaqueColor(uint32_t*) override;
 
 private:
-    typedef SkRasterBlitter INHERITED;
+    using INHERITED = SkRasterBlitter;
 };
 
 ////////////////////////////////////////////////////////////////
@@ -90,7 +90,7 @@
     // illegal
     SkARGB32_Blitter& operator=(const SkARGB32_Blitter&);
 
-    typedef SkRasterBlitter INHERITED;
+    using INHERITED = SkRasterBlitter;
 };
 
 class SkARGB32_Opaque_Blitter : public SkARGB32_Blitter {
@@ -102,7 +102,7 @@
     void blitAntiV2(int x, int y, U8CPU a0, U8CPU a1) override;
 
 private:
-    typedef SkARGB32_Blitter INHERITED;
+    using INHERITED = SkARGB32_Blitter;
 };
 
 class SkARGB32_Black_Blitter : public SkARGB32_Opaque_Blitter {
@@ -114,7 +114,7 @@
     void blitAntiV2(int x, int y, U8CPU a0, U8CPU a1) override;
 
 private:
-    typedef SkARGB32_Opaque_Blitter INHERITED;
+    using INHERITED = SkARGB32_Opaque_Blitter;
 };
 
 class SkARGB32_Shader_Blitter : public SkShaderBlitter {
@@ -138,7 +138,7 @@
     // illegal
     SkARGB32_Shader_Blitter& operator=(const SkARGB32_Shader_Blitter&);
 
-    typedef SkShaderBlitter INHERITED;
+    using INHERITED = SkShaderBlitter;
 };
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -159,7 +159,7 @@
     SkS32D16BlendProc   fBlend;
     SkS32D16BlendProc   fBlendCoverage;
 
-    typedef SkShaderBlitter INHERITED;
+    using INHERITED = SkShaderBlitter;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/src/core/SkDevice.h b/src/core/SkDevice.h
index f27e364..b7c5419 100644
--- a/src/core/SkDevice.h
+++ b/src/core/SkDevice.h
@@ -465,7 +465,7 @@
     // It maps from local space to the device's coordinate space.
     // fDeviceToGlobal * fLocalToDevice will match the canvas' CTM.
 
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 };
 
 class SkNoPixelsDevice : public SkBaseDevice {
@@ -525,7 +525,7 @@
                            const SkImageFilter* filter, const SkPaint& paint) override {}
 
 private:
-    typedef SkBaseDevice INHERITED;
+    using INHERITED = SkBaseDevice;
 };
 
 class SkAutoDeviceTransformRestore : SkNoncopyable {
diff --git a/src/core/SkDiscardableMemory.h b/src/core/SkDiscardableMemory.h
index ac5c953..bc00f6e 100644
--- a/src/core/SkDiscardableMemory.h
+++ b/src/core/SkDiscardableMemory.h
@@ -31,7 +31,7 @@
     public:
         virtual SkDiscardableMemory* create(size_t bytes) = 0;
     private:
-        typedef SkRefCnt INHERITED;
+        using INHERITED = SkRefCnt;
     };
 
     /** Must not be called while locked.
diff --git a/src/core/SkDraw_vertices.cpp b/src/core/SkDraw_vertices.cpp
index fe8d496..c0161cd 100644
--- a/src/core/SkDraw_vertices.cpp
+++ b/src/core/SkDraw_vertices.cpp
@@ -161,7 +161,7 @@
     const bool fIsOpaque;
     const bool fUsePersp;   // controls our stages, and what we do in update()
 
-    typedef SkShaderBase INHERITED;
+    using INHERITED = SkShaderBase;
 };
 
 bool SkTriColorShader::update(const SkMatrix& ctmInv, const SkPoint pts[],
diff --git a/src/core/SkImageFilter_Base.h b/src/core/SkImageFilter_Base.h
index a2b8db4..5d73077 100644
--- a/src/core/SkImageFilter_Base.h
+++ b/src/core/SkImageFilter_Base.h
@@ -414,7 +414,7 @@
     CropRect fCropRect;
     uint32_t fUniqueID; // Globally unique
 
-    typedef SkImageFilter INHERITED;
+    using INHERITED = SkImageFilter;
 };
 
 static inline SkImageFilter_Base* as_IFB(SkImageFilter* filter) {
diff --git a/src/core/SkLocalMatrixImageFilter.h b/src/core/SkLocalMatrixImageFilter.h
index 2a8db26..c834a7a 100644
--- a/src/core/SkLocalMatrixImageFilter.h
+++ b/src/core/SkLocalMatrixImageFilter.h
@@ -36,7 +36,7 @@
 
     SkMatrix fLocalM;
 
-    typedef SkImageFilter_Base INHERITED;
+    using INHERITED = SkImageFilter_Base;
 };
 
 #endif
diff --git a/src/core/SkMaskFilterBase.h b/src/core/SkMaskFilterBase.h
index 5ac10de..6780d58 100644
--- a/src/core/SkMaskFilterBase.h
+++ b/src/core/SkMaskFilterBase.h
@@ -228,7 +228,7 @@
     bool filterRRect(const SkRRect& devRRect, const SkMatrix& ctm, const SkRasterClip&,
                      SkBlitter*) const;
 
-    typedef SkFlattenable INHERITED;
+    using INHERITED = SkFlattenable;
 };
 
 inline SkMaskFilterBase* as_MFB(SkMaskFilter* mf) {
diff --git a/src/core/SkMaskGamma.h b/src/core/SkMaskGamma.h
index 643deed..aabf187 100644
--- a/src/core/SkMaskGamma.h
+++ b/src/core/SkMaskGamma.h
@@ -161,7 +161,7 @@
     uint8_t fGammaTables[1 << MAX_LUM_BITS][256];
     bool fIsLinear;
 
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 };
 
 
diff --git a/src/core/SkMatrixImageFilter.h b/src/core/SkMatrixImageFilter.h
index 12ed13e..16e6722 100644
--- a/src/core/SkMatrixImageFilter.h
+++ b/src/core/SkMatrixImageFilter.h
@@ -47,7 +47,7 @@
 
     SkMatrix              fTransform;
     SkFilterQuality       fFilterQuality;
-    typedef SkImageFilter_Base INHERITED;
+    using INHERITED = SkImageFilter_Base;
 };
 
 #endif
diff --git a/src/core/SkMipmap.h b/src/core/SkMipmap.h
index e5ad5b5..d24488d 100644
--- a/src/core/SkMipmap.h
+++ b/src/core/SkMipmap.h
@@ -91,7 +91,7 @@
 
     static size_t AllocLevelsSize(int levelCount, size_t pixelSize);
 
-    typedef SkCachedData INHERITED;
+    using INHERITED = SkCachedData;
 };
 
 #endif
diff --git a/src/core/SkModeColorFilter.h b/src/core/SkModeColorFilter.h
index 692ce66..09b41e7 100644
--- a/src/core/SkModeColorFilter.h
+++ b/src/core/SkModeColorFilter.h
@@ -41,7 +41,7 @@
 
     friend class SkColorFilter;
 
-    typedef SkColorFilterBase INHERITED;
+    using INHERITED = SkColorFilterBase;
 };
 
 #endif
diff --git a/src/core/SkPathEffect.cpp b/src/core/SkPathEffect.cpp
index f5cb185..d3625f0 100644
--- a/src/core/SkPathEffect.cpp
+++ b/src/core/SkPathEffect.cpp
@@ -67,7 +67,7 @@
     sk_sp<SkPathEffect> fPE1;
 
 private:
-    typedef SkPathEffect INHERITED;
+    using INHERITED = SkPathEffect;
 };
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -117,7 +117,7 @@
     SkComposePathEffect& operator=(const SkComposePathEffect&);
     friend class SkPathEffect;
 
-    typedef SkPairPathEffect INHERITED;
+    using INHERITED = SkPairPathEffect;
 };
 
 sk_sp<SkFlattenable> SkComposePathEffect::CreateProc(SkReadBuffer& buffer) {
@@ -169,7 +169,7 @@
     SkSumPathEffect& operator=(const SkSumPathEffect&);
     friend class SkPathEffect;
 
-    typedef SkPairPathEffect INHERITED;
+    using INHERITED = SkPairPathEffect;
 };
 
 sk_sp<SkFlattenable> SkSumPathEffect::CreateProc(SkReadBuffer& buffer) {
diff --git a/src/core/SkPictureImageGenerator.cpp b/src/core/SkPictureImageGenerator.cpp
index 2ec1657..f1fc6d3 100644
--- a/src/core/SkPictureImageGenerator.cpp
+++ b/src/core/SkPictureImageGenerator.cpp
@@ -34,7 +34,7 @@
     SkMatrix            fMatrix;
     SkTLazy<SkPaint>    fPaint;
 
-    typedef SkImageGenerator INHERITED;
+    using INHERITED = SkImageGenerator;
 };
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/core/SkPicturePlayback.h b/src/core/SkPicturePlayback.h
index fc59f74..bdfd2d7 100644
--- a/src/core/SkPicturePlayback.h
+++ b/src/core/SkPicturePlayback.h
@@ -57,7 +57,7 @@
     };
 
 private:
-    typedef SkNoncopyable INHERITED;
+    using INHERITED = SkNoncopyable;
 };
 
 #endif
diff --git a/src/core/SkPictureRecord.h b/src/core/SkPictureRecord.h
index 1e22021..1006e57 100644
--- a/src/core/SkPictureRecord.h
+++ b/src/core/SkPictureRecord.h
@@ -252,7 +252,7 @@
 
     friend class SkPictureData;   // for SkPictureData's SkPictureRecord-based constructor
 
-    typedef SkCanvasVirtualEnforcer<SkCanvas> INHERITED;
+    using INHERITED = SkCanvasVirtualEnforcer<SkCanvas>;
 };
 
 #endif
diff --git a/src/core/SkPtrRecorder.h b/src/core/SkPtrRecorder.h
index 1f94105..383fec0 100644
--- a/src/core/SkPtrRecorder.h
+++ b/src/core/SkPtrRecorder.h
@@ -96,7 +96,7 @@
 
     static bool Less(const Pair& a, const Pair& b);
 
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 };
 
 /**
@@ -117,7 +117,7 @@
     }
 
 private:
-    typedef SkPtrSet INHERITED;
+    using INHERITED = SkPtrSet;
 };
 
 /**
@@ -165,7 +165,7 @@
     SkFactorySet           fFactorySet;
     SkTDArray<const char*> fNames;
 
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 };
 
 #endif
diff --git a/src/core/SkRasterPipelineBlitter.cpp b/src/core/SkRasterPipelineBlitter.cpp
index 4177007..259a92a 100644
--- a/src/core/SkRasterPipelineBlitter.cpp
+++ b/src/core/SkRasterPipelineBlitter.cpp
@@ -82,7 +82,7 @@
     float fCurrentCoverage = 0.0f;
     float fDitherRate      = 0.0f;
 
-    typedef SkBlitter INHERITED;
+    using INHERITED = SkBlitter;
 };
 
 SkBlitter* SkCreateRasterPipelineBlitter(const SkPixmap& dst,
diff --git a/src/core/SkReadBuffer.cpp b/src/core/SkReadBuffer.cpp
index 9bd07a7..dbb2d13 100644
--- a/src/core/SkReadBuffer.cpp
+++ b/src/core/SkReadBuffer.cpp
@@ -25,7 +25,7 @@
         EmptyImageGenerator(const SkImageInfo& info) : INHERITED(info) { }
 
     private:
-        typedef SkImageGenerator INHERITED;
+        using INHERITED = SkImageGenerator;
     };
 
     static sk_sp<SkImage> MakeEmptyImage(int width, int height) {
diff --git a/src/core/SkSpecialImage.cpp b/src/core/SkSpecialImage.cpp
index 0a87779..702cda2 100644
--- a/src/core/SkSpecialImage.cpp
+++ b/src/core/SkSpecialImage.cpp
@@ -68,7 +68,7 @@
             const SkISize& size, SkAlphaType at) const = 0;
 
 private:
-    typedef SkSpecialImage INHERITED;
+    using INHERITED = SkSpecialImage;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -256,7 +256,7 @@
 private:
     SkBitmap fBitmap;
 
-    typedef SkSpecialImage_Base INHERITED;
+    using INHERITED = SkSpecialImage_Base;
 };
 
 sk_sp<SkSpecialImage> SkSpecialImage::MakeFromRaster(const SkIRect& subset,
@@ -447,7 +447,7 @@
     const SkAlphaType         fAlphaType;
     sk_sp<SkColorSpace>       fColorSpace;
 
-    typedef SkSpecialImage_Base INHERITED;
+    using INHERITED = SkSpecialImage_Base;
 };
 
 sk_sp<SkSpecialImage> SkSpecialImage::MakeDeferredFromGpu(GrRecordingContext* context,
diff --git a/src/core/SkSpecialImage.h b/src/core/SkSpecialImage.h
index 0dfed77..1f21e90 100644
--- a/src/core/SkSpecialImage.h
+++ b/src/core/SkSpecialImage.h
@@ -159,7 +159,7 @@
     const SkIRect        fSubset;
     const uint32_t       fUniqueID;
 
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 };
 
 #endif
diff --git a/src/core/SkSpecialSurface.cpp b/src/core/SkSpecialSurface.cpp
index 895aa4d..de67792 100644
--- a/src/core/SkSpecialSurface.cpp
+++ b/src/core/SkSpecialSurface.cpp
@@ -33,7 +33,7 @@
     std::unique_ptr<SkCanvas> fCanvas;   // initialized by derived classes in ctors
 
 private:
-    typedef SkSpecialSurface INHERITED;
+    using INHERITED = SkSpecialSurface;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -89,7 +89,7 @@
 private:
     SkBitmap fBitmap;
 
-    typedef SkSpecialSurface_Base INHERITED;
+    using INHERITED = SkSpecialSurface_Base;
 };
 
 sk_sp<SkSpecialSurface> SkSpecialSurface::MakeFromBitmap(const SkIRect& subset, SkBitmap& bm,
@@ -160,7 +160,7 @@
 
 private:
     GrSurfaceProxyView fReadView;
-    typedef SkSpecialSurface_Base INHERITED;
+    using INHERITED = SkSpecialSurface_Base;
 };
 
 sk_sp<SkSpecialSurface> SkSpecialSurface::MakeRenderTarget(GrRecordingContext* context,
diff --git a/src/core/SkSpecialSurface.h b/src/core/SkSpecialSurface.h
index f890e1e..5d628a4 100644
--- a/src/core/SkSpecialSurface.h
+++ b/src/core/SkSpecialSurface.h
@@ -93,7 +93,7 @@
     const SkSurfaceProps fProps;
     const SkIRect        fSubset;
 
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 };
 
 #endif
diff --git a/src/core/SkSpriteBlitter.h b/src/core/SkSpriteBlitter.h
index 3af69b2..6d5a0fb 100644
--- a/src/core/SkSpriteBlitter.h
+++ b/src/core/SkSpriteBlitter.h
@@ -43,7 +43,7 @@
     const SkPaint*  fPaint;
 
 private:
-    typedef SkBlitter INHERITED;
+    using INHERITED = SkBlitter;
 };
 
 #endif
diff --git a/src/core/SkSpriteBlitter_ARGB32.cpp b/src/core/SkSpriteBlitter_ARGB32.cpp
index b4fd39d..7e4ff28 100644
--- a/src/core/SkSpriteBlitter_ARGB32.cpp
+++ b/src/core/SkSpriteBlitter_ARGB32.cpp
@@ -53,7 +53,7 @@
     SkBlitRow::Proc32   fProc32;
     U8CPU               fAlpha;
 
-    typedef SkSpriteBlitter INHERITED;
+    using INHERITED = SkSpriteBlitter;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -85,7 +85,7 @@
     SkXfermode* fXfermode;
 
 private:
-    typedef SkSpriteBlitter INHERITED;
+    using INHERITED = SkSpriteBlitter;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/src/core/SkSpriteBlitter_RGB565.cpp b/src/core/SkSpriteBlitter_RGB565.cpp
index aebc05c..f8b5e79 100644
--- a/src/core/SkSpriteBlitter_RGB565.cpp
+++ b/src/core/SkSpriteBlitter_RGB565.cpp
@@ -59,7 +59,7 @@
 private:
     bool fUseSrcOver;
 
-    typedef SkSpriteBlitter INHERITED;
+    using INHERITED = SkSpriteBlitter;
 };
 
 SkSpriteBlitter* SkSpriteBlitter::ChooseL565(const SkPixmap& source, const SkPaint& paint,
@@ -147,7 +147,7 @@
 private:
     bool fUseSrcOver;
 
-    typedef SkSpriteBlitter INHERITED;
+    using INHERITED = SkSpriteBlitter;
 };
 
 SkSpriteBlitter* SkSpriteBlitter::ChooseLA8(const SkPixmap& source, const SkPaint& paint,
diff --git a/src/core/SkTLList.h b/src/core/SkTLList.h
index 8e86c7f..5bfb9a9 100644
--- a/src/core/SkTLList.h
+++ b/src/core/SkTLList.h
@@ -177,7 +177,7 @@
     /** The iterator becomes invalid if the element it refers to is removed from the list. */
     class Iter : private NodeList::Iter {
     private:
-        typedef typename NodeList::Iter INHERITED;
+        using INHERITED = typename NodeList::Iter;
 
     public:
         typedef typename INHERITED::IterStart IterStart;
diff --git a/src/core/SkTypeface_remote.h b/src/core/SkTypeface_remote.h
index 812d005..5dca39c 100644
--- a/src/core/SkTypeface_remote.h
+++ b/src/core/SkTypeface_remote.h
@@ -38,7 +38,7 @@
 
 private:
     sk_sp<SkStrikeClient::DiscardableHandleManager> fDiscardableManager;
-    typedef SkScalerContext INHERITED;
+    using INHERITED = SkScalerContext;
 };
 
 class SkTypefaceProxy : public SkTypeface {
@@ -128,7 +128,7 @@
     sk_sp<SkStrikeClient::DiscardableHandleManager> fDiscardableManager;
 
 
-    typedef SkTypeface INHERITED;
+    using INHERITED = SkTypeface;
 };
 
 #endif  // SkRemoteTypeface_DEFINED
diff --git a/src/core/SkWriter32.h b/src/core/SkWriter32.h
index 8e25958..54b06b7 100644
--- a/src/core/SkWriter32.h
+++ b/src/core/SkWriter32.h
@@ -269,7 +269,7 @@
         char    fStorage[SIZE];
     } fData;
 
-    typedef SkWriter32 INHERITED;
+    using INHERITED = SkWriter32;
 };
 
 #endif
diff --git a/src/core/SkXfermode.cpp b/src/core/SkXfermode.cpp
index e79e085..516faac 100644
--- a/src/core/SkXfermode.cpp
+++ b/src/core/SkXfermode.cpp
@@ -60,7 +60,7 @@
 private:
     const SkBlendMode fMode;
 
-    typedef SkXfermode INHERITED;
+    using INHERITED = SkXfermode;
 };
 
 const char* SkBlendMode_Name(SkBlendMode mode) {
diff --git a/src/effects/SkDashImpl.h b/src/effects/SkDashImpl.h
index 1d50971..07acd2f 100644
--- a/src/effects/SkDashImpl.h
+++ b/src/effects/SkDashImpl.h
@@ -36,7 +36,7 @@
     int32_t     fInitialDashIndex;
     SkScalar    fIntervalLength;
 
-    typedef SkPathEffect INHERITED;
+    using INHERITED = SkPathEffect;
 };
 
 #endif
diff --git a/src/effects/SkEmbossMaskFilter.h b/src/effects/SkEmbossMaskFilter.h
index bddf601..27b9088 100644
--- a/src/effects/SkEmbossMaskFilter.h
+++ b/src/effects/SkEmbossMaskFilter.h
@@ -42,7 +42,7 @@
     Light       fLight;
     SkScalar    fBlurSigma;
 
-    typedef SkMaskFilter INHERITED;
+    using INHERITED = SkMaskFilter;
 };
 
 #endif
diff --git a/src/effects/SkHighContrastFilter.cpp b/src/effects/SkHighContrastFilter.cpp
index c56c157..349da52 100644
--- a/src/effects/SkHighContrastFilter.cpp
+++ b/src/effects/SkHighContrastFilter.cpp
@@ -57,7 +57,7 @@
 
     friend class SkHighContrastFilter;
 
-    typedef SkColorFilter INHERITED;
+    using INHERITED = SkColorFilter;
 };
 
 bool SkHighContrast_Filter::onAppendStages(const SkStageRec& rec, bool shaderIsOpaque) const {
diff --git a/src/effects/SkLumaColorFilter.cpp b/src/effects/SkLumaColorFilter.cpp
index 728a0fe..81cbd3e 100644
--- a/src/effects/SkLumaColorFilter.cpp
+++ b/src/effects/SkLumaColorFilter.cpp
@@ -56,7 +56,7 @@
         };
     }
 
-    typedef SkColorFilterBase INHERITED;
+    using INHERITED = SkColorFilterBase;
 };
 
 sk_sp<SkColorFilter> SkLumaColorFilter::Make() {
diff --git a/src/effects/SkOpPE.h b/src/effects/SkOpPE.h
index db87a05..6c5c0ac 100644
--- a/src/effects/SkOpPE.h
+++ b/src/effects/SkOpPE.h
@@ -26,7 +26,7 @@
     sk_sp<SkPathEffect> fTwo;
     SkPathOp            fOp;
 
-    typedef SkPathEffect INHERITED;
+    using INHERITED = SkPathEffect;
 };
 
 class SkMatrixPE : public SkPathEffect {
@@ -42,7 +42,7 @@
 
     SkMatrix    fMatrix;
 
-    typedef SkPathEffect INHERITED;
+    using INHERITED = SkPathEffect;
 };
 
 class SkStrokePE : public SkPathEffect {
@@ -62,7 +62,7 @@
     SkPaint::Join   fJoin;
     SkPaint::Cap    fCap;
 
-    typedef SkPathEffect INHERITED;
+    using INHERITED = SkPathEffect;
 };
 
 class SkStrokeAndFillPE : public SkPathEffect {
@@ -77,7 +77,7 @@
 private:
     SK_FLATTENABLE_HOOKS(SkStrokeAndFillPE)
 
-    typedef SkPathEffect INHERITED;
+    using INHERITED = SkPathEffect;
 };
 
 #endif
diff --git a/src/effects/SkShaderMaskFilter.cpp b/src/effects/SkShaderMaskFilter.cpp
index 1cae6a1..7d2cbf9 100644
--- a/src/effects/SkShaderMaskFilter.cpp
+++ b/src/effects/SkShaderMaskFilter.cpp
@@ -43,7 +43,7 @@
 
     friend class SkShaderMaskFilter;
 
-    typedef SkMaskFilter INHERITED;
+    using INHERITED = SkMaskFilter;
 };
 
 sk_sp<SkFlattenable> SkShaderMF::CreateProc(SkReadBuffer& buffer) {
diff --git a/src/effects/SkTableColorFilter.cpp b/src/effects/SkTableColorFilter.cpp
index f006c9e..cc6e2e6 100644
--- a/src/effects/SkTableColorFilter.cpp
+++ b/src/effects/SkTableColorFilter.cpp
@@ -151,7 +151,7 @@
 
     friend class SkTableColorFilter;
 
-    typedef SkColorFilter INHERITED;
+    using INHERITED = SkColorFilter;
 };
 
 static const uint8_t kCountNibBits[] = {
@@ -285,7 +285,7 @@
 
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
 
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 
 ColorTableEffect::ColorTableEffect(std::unique_ptr<GrFragmentProcessor> inputFP,
diff --git a/src/effects/SkTableMaskFilter.cpp b/src/effects/SkTableMaskFilter.cpp
index 4fe0fb1..118659b 100644
--- a/src/effects/SkTableMaskFilter.cpp
+++ b/src/effects/SkTableMaskFilter.cpp
@@ -30,7 +30,7 @@
 
     uint8_t fTable[256];
 
-    typedef SkMaskFilter INHERITED;
+    using INHERITED = SkMaskFilter;
 };
 
 SkTableMaskFilterImpl::SkTableMaskFilterImpl() {
diff --git a/src/effects/SkTrimPE.h b/src/effects/SkTrimPE.h
index b457a38..8849297 100644
--- a/src/effects/SkTrimPE.h
+++ b/src/effects/SkTrimPE.h
@@ -27,7 +27,7 @@
                                  fStopT;
     const SkTrimPathEffect::Mode fMode;
 
-    typedef SkPathEffect INHERITED;
+    using INHERITED = SkPathEffect;
 };
 
 #endif
diff --git a/src/effects/imagefilters/SkAlphaThresholdFilter.cpp b/src/effects/imagefilters/SkAlphaThresholdFilter.cpp
index 35648a4..20b6cbf 100644
--- a/src/effects/imagefilters/SkAlphaThresholdFilter.cpp
+++ b/src/effects/imagefilters/SkAlphaThresholdFilter.cpp
@@ -56,7 +56,7 @@
     SkScalar fInnerThreshold;
     SkScalar fOuterThreshold;
 
-    typedef SkImageFilter_Base INHERITED;
+    using INHERITED = SkImageFilter_Base;
 };
 
 }; // end namespace
diff --git a/src/effects/imagefilters/SkArithmeticImageFilter.cpp b/src/effects/imagefilters/SkArithmeticImageFilter.cpp
index f8af270..884beee 100644
--- a/src/effects/imagefilters/SkArithmeticImageFilter.cpp
+++ b/src/effects/imagefilters/SkArithmeticImageFilter.cpp
@@ -66,7 +66,7 @@
 
     ArithmeticFPInputs fInputs;
 
-    typedef SkImageFilter_Base INHERITED;
+    using INHERITED = SkImageFilter_Base;
 };
 
 }; // end namespace
diff --git a/src/effects/imagefilters/SkBlurImageFilter.cpp b/src/effects/imagefilters/SkBlurImageFilter.cpp
index f57fbcd..38d7088 100644
--- a/src/effects/imagefilters/SkBlurImageFilter.cpp
+++ b/src/effects/imagefilters/SkBlurImageFilter.cpp
@@ -60,7 +60,7 @@
     SkSize     fSigma;
     SkTileMode fTileMode;
 
-    typedef SkImageFilter_Base INHERITED;
+    using INHERITED = SkImageFilter_Base;
 };
 
 } // end namespace
diff --git a/src/effects/imagefilters/SkColorFilterImageFilter.cpp b/src/effects/imagefilters/SkColorFilterImageFilter.cpp
index 32e7dc8..f64727c 100644
--- a/src/effects/imagefilters/SkColorFilterImageFilter.cpp
+++ b/src/effects/imagefilters/SkColorFilterImageFilter.cpp
@@ -38,7 +38,7 @@
 
     sk_sp<SkColorFilter> fColorFilter;
 
-    typedef SkImageFilter_Base INHERITED;
+    using INHERITED = SkImageFilter_Base;
 };
 
 } // end namespace
diff --git a/src/effects/imagefilters/SkComposeImageFilter.cpp b/src/effects/imagefilters/SkComposeImageFilter.cpp
index f83eefe..7a9f02a 100644
--- a/src/effects/imagefilters/SkComposeImageFilter.cpp
+++ b/src/effects/imagefilters/SkComposeImageFilter.cpp
@@ -34,7 +34,7 @@
     friend void SkComposeImageFilter::RegisterFlattenables();
     SK_FLATTENABLE_HOOKS(SkComposeImageFilterImpl)
 
-    typedef SkImageFilter_Base INHERITED;
+    using INHERITED = SkImageFilter_Base;
 };
 
 } // end namespace
diff --git a/src/effects/imagefilters/SkDisplacementMapEffect.cpp b/src/effects/imagefilters/SkDisplacementMapEffect.cpp
index dae4f7e..6f02811 100644
--- a/src/effects/imagefilters/SkDisplacementMapEffect.cpp
+++ b/src/effects/imagefilters/SkDisplacementMapEffect.cpp
@@ -64,7 +64,7 @@
     const SkImageFilter* getDisplacementInput() const { return getInput(0); }
     const SkImageFilter* getColorInput() const { return getInput(1); }
 
-    typedef SkImageFilter_Base INHERITED;
+    using INHERITED = SkImageFilter_Base;
 };
 
 // Shift values to extract channels from an SkColor (SkColorGetR, SkColorGetG, etc)
@@ -224,7 +224,7 @@
     SkColorChannel fYChannelSelector;
     SkVector fScale;
 
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 
 }  // anonymous namespace
@@ -441,7 +441,7 @@
 
     UniformHandle fScaleUni;
 
-    typedef GrGLSLFragmentProcessor INHERITED;
+    using INHERITED = GrGLSLFragmentProcessor;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/src/effects/imagefilters/SkDropShadowImageFilter.cpp b/src/effects/imagefilters/SkDropShadowImageFilter.cpp
index 4ab4205..0abaa14 100644
--- a/src/effects/imagefilters/SkDropShadowImageFilter.cpp
+++ b/src/effects/imagefilters/SkDropShadowImageFilter.cpp
@@ -46,7 +46,7 @@
     SkColor  fColor;
     bool     fShadowOnly;
 
-    typedef SkImageFilter_Base INHERITED;
+    using INHERITED = SkImageFilter_Base;
 };
 
 } // end namespace
diff --git a/src/effects/imagefilters/SkImageSource.cpp b/src/effects/imagefilters/SkImageSource.cpp
index cc6b036..202db9e 100644
--- a/src/effects/imagefilters/SkImageSource.cpp
+++ b/src/effects/imagefilters/SkImageSource.cpp
@@ -46,7 +46,7 @@
     SkRect           fSrcRect, fDstRect;
     SkFilterQuality  fFilterQuality;
 
-    typedef SkImageFilter_Base INHERITED;
+    using INHERITED = SkImageFilter_Base;
 };
 
 } // end namespace
diff --git a/src/effects/imagefilters/SkLightingImageFilter.cpp b/src/effects/imagefilters/SkLightingImageFilter.cpp
index 471a6c1..0374b4f 100644
--- a/src/effects/imagefilters/SkLightingImageFilter.cpp
+++ b/src/effects/imagefilters/SkLightingImageFilter.cpp
@@ -142,7 +142,7 @@
 
 
 private:
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
     SkPoint3 fColor;
 };
 
@@ -452,7 +452,7 @@
     sk_sp<SkImageFilterLight> fLight;
     SkScalar fSurfaceScale;
 
-    typedef SkImageFilter_Base INHERITED;
+    using INHERITED = SkImageFilter_Base;
 };
 
 #if SK_SUPPORT_GPU
@@ -568,7 +568,7 @@
     friend class SkLightingImageFilter;
     SkScalar fKD;
 
-    typedef SkLightingImageFilterInternal INHERITED;
+    using INHERITED = SkLightingImageFilterInternal;
 };
 
 class SkSpecularLightingImageFilter : public SkLightingImageFilterInternal {
@@ -604,7 +604,7 @@
     SkScalar fKS;
     SkScalar fShininess;
     friend class SkLightingImageFilter;
-    typedef SkLightingImageFilterInternal INHERITED;
+    using INHERITED = SkLightingImageFilterInternal;
 };
 
 #if SK_SUPPORT_GPU
@@ -636,7 +636,7 @@
     SkMatrix fFilterMatrix;
     BoundaryMode fBoundaryMode;
 
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 
 class GrDiffuseLightingEffect : public GrLightingEffect {
@@ -683,7 +683,7 @@
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
     SkScalar fKD;
 
-    typedef GrLightingEffect INHERITED;
+    using INHERITED = GrLightingEffect;
 };
 
 class GrSpecularLightingEffect : public GrLightingEffect {
@@ -734,7 +734,7 @@
     SkScalar fKS;
     SkScalar fShininess;
 
-    typedef GrLightingEffect INHERITED;
+    using INHERITED = GrLightingEffect;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -780,7 +780,7 @@
 private:
     UniformHandle fColorUni;
 
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -793,7 +793,7 @@
                             GrGLSLFPFragmentBuilder*, const char* z) override;
 
 private:
-    typedef GrGLLight INHERITED;
+    using INHERITED = GrGLLight;
     UniformHandle fDirectionUni;
 };
 
@@ -807,7 +807,7 @@
                             GrGLSLFPFragmentBuilder*, const char* z) override;
 
 private:
-    typedef GrGLLight INHERITED;
+    using INHERITED = GrGLLight;
     UniformHandle fLocationUni;
 };
 
@@ -825,7 +825,7 @@
                         const char *surfaceToLight) override;
 
 private:
-    typedef GrGLLight INHERITED;
+    using INHERITED = GrGLLight;
 
     SkString        fLightColorFunc;
     UniformHandle   fLocationUni;
@@ -894,7 +894,7 @@
 private:
     SkPoint3 fDirection;
 
-    typedef SkImageFilterLight INHERITED;
+    using INHERITED = SkImageFilterLight;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -957,7 +957,7 @@
 private:
     SkPoint3 fLocation;
 
-    typedef SkImageFilterLight INHERITED;
+    using INHERITED = SkImageFilterLight;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -1110,7 +1110,7 @@
     SkScalar fConeScale;
     SkPoint3 fS;
 
-    typedef SkImageFilterLight INHERITED;
+    using INHERITED = SkImageFilterLight;
 };
 
 // According to the spec, the specular term should be in the range [1, 128] :
@@ -1564,7 +1564,7 @@
                                SkString* funcName) = 0;
 
 private:
-    typedef GrGLSLFragmentProcessor INHERITED;
+    using INHERITED = GrGLSLFragmentProcessor;
 
     UniformHandle              fSurfaceScaleUni;
     GrGLLight*                 fLight;
@@ -1581,7 +1581,7 @@
     void onSetData(const GrGLSLProgramDataManager&, const GrFragmentProcessor&) override;
 
 private:
-    typedef GrGLLightingEffect INHERITED;
+    using INHERITED = GrGLLightingEffect;
 
     UniformHandle   fKDUni;
 };
@@ -1597,7 +1597,7 @@
     void onSetData(const GrGLSLProgramDataManager&, const GrFragmentProcessor&) override;
 
 private:
-    typedef GrGLLightingEffect INHERITED;
+    using INHERITED = GrGLLightingEffect;
 
     UniformHandle   fKSUni;
     UniformHandle   fShininessUni;
diff --git a/src/effects/imagefilters/SkMagnifierImageFilter.cpp b/src/effects/imagefilters/SkMagnifierImageFilter.cpp
index 6bb8582..876ff56 100644
--- a/src/effects/imagefilters/SkMagnifierImageFilter.cpp
+++ b/src/effects/imagefilters/SkMagnifierImageFilter.cpp
@@ -50,7 +50,7 @@
     SkRect   fSrcRect;
     SkScalar fInset;
 
-    typedef SkImageFilter_Base INHERITED;
+    using INHERITED = SkImageFilter_Base;
 };
 
 } // end namespace
diff --git a/src/effects/imagefilters/SkMatrixConvolutionImageFilter.cpp b/src/effects/imagefilters/SkMatrixConvolutionImageFilter.cpp
index d9794c2..d2bbdc0 100644
--- a/src/effects/imagefilters/SkMatrixConvolutionImageFilter.cpp
+++ b/src/effects/imagefilters/SkMatrixConvolutionImageFilter.cpp
@@ -95,7 +95,7 @@
                             const SkIRect& rect,
                             const SkIRect& bounds) const;
 
-    typedef SkImageFilter_Base INHERITED;
+    using INHERITED = SkImageFilter_Base;
 };
 
 class UncheckedPixelFetcher {
diff --git a/src/effects/imagefilters/SkMergeImageFilter.cpp b/src/effects/imagefilters/SkMergeImageFilter.cpp
index d7925d7..114e70f 100644
--- a/src/effects/imagefilters/SkMergeImageFilter.cpp
+++ b/src/effects/imagefilters/SkMergeImageFilter.cpp
@@ -33,7 +33,7 @@
     friend void SkMergeImageFilter::RegisterFlattenables();
     SK_FLATTENABLE_HOOKS(SkMergeImageFilterImpl)
 
-    typedef SkImageFilter_Base INHERITED;
+    using INHERITED = SkImageFilter_Base;
 };
 
 } // end namespace
diff --git a/src/effects/imagefilters/SkMorphologyImageFilter.cpp b/src/effects/imagefilters/SkMorphologyImageFilter.cpp
index 24401f3..e1cb998 100644
--- a/src/effects/imagefilters/SkMorphologyImageFilter.cpp
+++ b/src/effects/imagefilters/SkMorphologyImageFilter.cpp
@@ -80,7 +80,7 @@
     MorphType fType;
     SkSize    fRadius;
 
-    typedef SkImageFilter_Base INHERITED;
+    using INHERITED = SkImageFilter_Base;
 };
 
 } // end namespace
@@ -221,7 +221,7 @@
 
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
 
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 
 GrGLSLFragmentProcessor* GrMorphologyEffect::onCreateGLSLInstance() const {
diff --git a/src/effects/imagefilters/SkOffsetImageFilter.cpp b/src/effects/imagefilters/SkOffsetImageFilter.cpp
index 8a7de69..2ddac13 100644
--- a/src/effects/imagefilters/SkOffsetImageFilter.cpp
+++ b/src/effects/imagefilters/SkOffsetImageFilter.cpp
@@ -41,7 +41,7 @@
 
     SkVector fOffset;
 
-    typedef SkImageFilter_Base INHERITED;
+    using INHERITED = SkImageFilter_Base;
 };
 
 } // end namespace
diff --git a/src/effects/imagefilters/SkPaintImageFilter.cpp b/src/effects/imagefilters/SkPaintImageFilter.cpp
index 1aae484..298027d 100644
--- a/src/effects/imagefilters/SkPaintImageFilter.cpp
+++ b/src/effects/imagefilters/SkPaintImageFilter.cpp
@@ -35,7 +35,7 @@
 
     SkPaint fPaint;
 
-    typedef SkImageFilter_Base INHERITED;
+    using INHERITED = SkImageFilter_Base;
 };
 
 } // end namespace
diff --git a/src/effects/imagefilters/SkPictureImageFilter.cpp b/src/effects/imagefilters/SkPictureImageFilter.cpp
index 9b2dfce..e589ec2 100644
--- a/src/effects/imagefilters/SkPictureImageFilter.cpp
+++ b/src/effects/imagefilters/SkPictureImageFilter.cpp
@@ -44,7 +44,7 @@
     sk_sp<SkPicture>    fPicture;
     SkRect              fCropRect;
 
-    typedef SkImageFilter_Base INHERITED;
+    using INHERITED = SkImageFilter_Base;
 };
 
 } // end namespace
diff --git a/src/effects/imagefilters/SkTileImageFilter.cpp b/src/effects/imagefilters/SkTileImageFilter.cpp
index 987747d..b8b7e24 100644
--- a/src/effects/imagefilters/SkTileImageFilter.cpp
+++ b/src/effects/imagefilters/SkTileImageFilter.cpp
@@ -48,7 +48,7 @@
     SkRect fSrcRect;
     SkRect fDstRect;
 
-    typedef SkImageFilter_Base INHERITED;
+    using INHERITED = SkImageFilter_Base;
 };
 
 } // end namespace
diff --git a/src/effects/imagefilters/SkXfermodeImageFilter.cpp b/src/effects/imagefilters/SkXfermodeImageFilter.cpp
index 1bd01ba..9280152 100644
--- a/src/effects/imagefilters/SkXfermodeImageFilter.cpp
+++ b/src/effects/imagefilters/SkXfermodeImageFilter.cpp
@@ -61,7 +61,7 @@
 
     SkBlendMode fMode;
 
-    typedef SkImageFilter_Base INHERITED;
+    using INHERITED = SkImageFilter_Base;
 };
 
 } // end namespace
diff --git a/src/gpu/GrAHardwareBufferImageGenerator.h b/src/gpu/GrAHardwareBufferImageGenerator.h
index 1e5a75f..b02ae4e 100644
--- a/src/gpu/GrAHardwareBufferImageGenerator.h
+++ b/src/gpu/GrAHardwareBufferImageGenerator.h
@@ -60,6 +60,6 @@
     const bool       fIsProtectedContent;
     GrSurfaceOrigin  fSurfaceOrigin;
 
-    typedef SkImageGenerator INHERITED;
+    using INHERITED = SkImageGenerator;
 };
 #endif  // GrAHardwareBufferImageGenerator_DEFINED
diff --git a/src/gpu/GrBackendTextureImageGenerator.h b/src/gpu/GrBackendTextureImageGenerator.h
index 0fe4ef6..13b89da 100644
--- a/src/gpu/GrBackendTextureImageGenerator.h
+++ b/src/gpu/GrBackendTextureImageGenerator.h
@@ -85,6 +85,6 @@
     GrBackendTexture fBackendTexture;
     GrSurfaceOrigin  fSurfaceOrigin;
 
-    typedef SkImageGenerator INHERITED;
+    using INHERITED = SkImageGenerator;
 };
 #endif  // GrBackendTextureImageGenerator_DEFINED
diff --git a/src/gpu/GrBitmapTextureMaker.h b/src/gpu/GrBitmapTextureMaker.h
index 2723087..ae6ff1b 100644
--- a/src/gpu/GrBitmapTextureMaker.h
+++ b/src/gpu/GrBitmapTextureMaker.h
@@ -33,7 +33,7 @@
     const SkBudgeted   fBudgeted;
     GrUniqueKey        fKey;
 
-    typedef GrTextureMaker INHERITED;
+    using INHERITED = GrTextureMaker;
 };
 
 #endif
diff --git a/src/gpu/GrBufferAllocPool.h b/src/gpu/GrBufferAllocPool.h
index fd292a4..ea07e44 100644
--- a/src/gpu/GrBufferAllocPool.h
+++ b/src/gpu/GrBufferAllocPool.h
@@ -241,7 +241,7 @@
                            int* actualVertexCount);
 
 private:
-    typedef GrBufferAllocPool INHERITED;
+    using INHERITED = GrBufferAllocPool;
 };
 
 /**
@@ -311,7 +311,7 @@
                            int* actualIndexCount);
 
 private:
-    typedef GrBufferAllocPool INHERITED;
+    using INHERITED = GrBufferAllocPool;
 };
 
 class GrDrawIndirectBufferAllocPool : private GrBufferAllocPool {
diff --git a/src/gpu/GrCaps.h b/src/gpu/GrCaps.h
index 0df9542..a4801f3 100644
--- a/src/gpu/GrCaps.h
+++ b/src/gpu/GrCaps.h
@@ -574,7 +574,7 @@
     bool fSuppressPrints : 1;
     bool fWireframeMode  : 1;
 
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 };
 
 #endif
diff --git a/src/gpu/GrColorSpaceXform.cpp b/src/gpu/GrColorSpaceXform.cpp
index f35e3f3..8f18352 100644
--- a/src/gpu/GrColorSpaceXform.cpp
+++ b/src/gpu/GrColorSpaceXform.cpp
@@ -80,7 +80,7 @@
 
     GrGLSLColorSpaceXformHelper fColorSpaceHelper;
 
-    typedef GrGLSLFragmentProcessor INHERITED;
+    using INHERITED = GrGLSLFragmentProcessor;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/src/gpu/GrColorSpaceXform.h b/src/gpu/GrColorSpaceXform.h
index 49d7f34..c60fc85 100644
--- a/src/gpu/GrColorSpaceXform.h
+++ b/src/gpu/GrColorSpaceXform.h
@@ -95,7 +95,7 @@
 
     sk_sp<GrColorSpaceXform> fColorXform;
 
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 
 #endif
diff --git a/src/gpu/GrDDLContext.cpp b/src/gpu/GrDDLContext.cpp
index ce6dbbf..2eb4697 100644
--- a/src/gpu/GrDDLContext.cpp
+++ b/src/gpu/GrDDLContext.cpp
@@ -149,7 +149,7 @@
 
     ProgramInfoMap fProgramInfoMap;
 
-    typedef GrContext INHERITED;
+    using INHERITED = GrContext;
 };
 
 sk_sp<GrRecordingContext> GrRecordingContextPriv::MakeDDL(sk_sp<GrContextThreadSafeProxy> proxy) {
diff --git a/src/gpu/GrDefaultGeoProcFactory.cpp b/src/gpu/GrDefaultGeoProcFactory.cpp
index c3ef693..21d700e 100644
--- a/src/gpu/GrDefaultGeoProcFactory.cpp
+++ b/src/gpu/GrDefaultGeoProcFactory.cpp
@@ -182,7 +182,7 @@
         UniformHandle fColorUniform;
         UniformHandle fCoverageUniform;
 
-        typedef GrGLSLGeometryProcessor INHERITED;
+        using INHERITED = GrGLSLGeometryProcessor;
     };
 
     void getGLSLProcessorKey(const GrShaderCaps& caps, GrProcessorKeyBuilder* b) const override {
@@ -237,7 +237,7 @@
 
     GR_DECLARE_GEOMETRY_PROCESSOR_TEST
 
-    typedef GrGeometryProcessor INHERITED;
+    using INHERITED = GrGeometryProcessor;
 };
 
 GR_DEFINE_GEOMETRY_PROCESSOR_TEST(DefaultGeoProc);
diff --git a/src/gpu/GrDrawOpAtlas.h b/src/gpu/GrDrawOpAtlas.h
index f3b94c0..6756cfa 100644
--- a/src/gpu/GrDrawOpAtlas.h
+++ b/src/gpu/GrDrawOpAtlas.h
@@ -458,7 +458,7 @@
 
         friend class GrDrawOpAtlas;
 
-        typedef SkRefCnt INHERITED;
+        using INHERITED = SkRefCnt;
     };
 
     typedef SkTInternalLList<Plot> PlotList;
diff --git a/src/gpu/GrFragmentProcessor.cpp b/src/gpu/GrFragmentProcessor.cpp
index 0fc28b4..b94326c 100644
--- a/src/gpu/GrFragmentProcessor.cpp
+++ b/src/gpu/GrFragmentProcessor.cpp
@@ -311,7 +311,7 @@
 
         GrSwizzle fSwizzle;
 
-        typedef GrFragmentProcessor INHERITED;
+        using INHERITED = GrFragmentProcessor;
     };
 
     if (!fp) {
@@ -382,7 +382,7 @@
             return premulInput * childColor;
         }
 
-        typedef GrFragmentProcessor INHERITED;
+        using INHERITED = GrFragmentProcessor;
     };
     if (!fp) {
         return nullptr;
@@ -455,7 +455,7 @@
             return color;
         }
 
-        typedef GrFragmentProcessor INHERITED;
+        using INHERITED = GrFragmentProcessor;
     };
 
     // Allow either of the composed functions to be null.
diff --git a/src/gpu/GrFragmentProcessor.h b/src/gpu/GrFragmentProcessor.h
index 3781f29..78c3404 100644
--- a/src/gpu/GrFragmentProcessor.h
+++ b/src/gpu/GrFragmentProcessor.h
@@ -428,7 +428,7 @@
     uint32_t fFlags = 0;
     SkSL::SampleUsage fUsage;
 
-    typedef GrProcessor INHERITED;
+    using INHERITED = GrProcessor;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/src/gpu/GrGeometryProcessor.h b/src/gpu/GrGeometryProcessor.h
index fd1fcf6..6659d47 100644
--- a/src/gpu/GrGeometryProcessor.h
+++ b/src/gpu/GrGeometryProcessor.h
@@ -38,7 +38,7 @@
     }
 
 private:
-    typedef GrPrimitiveProcessor INHERITED;
+    using INHERITED = GrPrimitiveProcessor;
 };
 
 #endif
diff --git a/src/gpu/GrGpu.h b/src/gpu/GrGpu.h
index 5f62301..d1b2281 100644
--- a/src/gpu/GrGpu.h
+++ b/src/gpu/GrGpu.h
@@ -871,7 +871,7 @@
     bool fOOMed = false;
 
     friend class GrPathRendering;
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 };
 
 #endif
diff --git a/src/gpu/GrGpuResource.h b/src/gpu/GrGpuResource.h
index cf0c3f5..e4b3d46 100644
--- a/src/gpu/GrGpuResource.h
+++ b/src/gpu/GrGpuResource.h
@@ -78,7 +78,7 @@
 
     mutable std::atomic<int32_t> fRefCnt;
 
-    typedef SkNoncopyable INHERITED;
+    using INHERITED = SkNoncopyable;
 };
 
 /**
@@ -294,7 +294,7 @@
     bool fRefsWrappedObjects = false;
     const UniqueID fUniqueID;
 
-    typedef GrIORef<GrGpuResource> INHERITED;
+    using INHERITED = GrIORef<GrGpuResource>;
     friend class GrIORef<GrGpuResource>; // to access notifyRefCntWillBeZero and notifyRefCntIsZero.
 };
 
diff --git a/src/gpu/GrImageTextureMaker.h b/src/gpu/GrImageTextureMaker.h
index 423ba45..b7a9533 100644
--- a/src/gpu/GrImageTextureMaker.h
+++ b/src/gpu/GrImageTextureMaker.h
@@ -27,7 +27,7 @@
     const SkImage_Lazy*     fImage;
     GrImageTexGenPolicy     fTexGenPolicy;
 
-    typedef GrTextureMaker INHERITED;
+    using INHERITED = GrTextureMaker;
 };
 
 /** This class manages the conversion of generator-backed YUVA images to GrTextures. */
@@ -55,7 +55,7 @@
 
     const SkImage_GpuYUVA*  fImage;
 
-    typedef GrTextureMaker INHERITED;
+    using INHERITED = GrTextureMaker;
 };
 
 #endif
diff --git a/src/gpu/GrManagedResource.h b/src/gpu/GrManagedResource.h
index 4f28a09..d80a7f9 100644
--- a/src/gpu/GrManagedResource.h
+++ b/src/gpu/GrManagedResource.h
@@ -193,7 +193,7 @@
     uint32_t fKey;
 #endif
 
-    typedef SkNoncopyable INHERITED;
+    using INHERITED = SkNoncopyable;
 };
 
 // This subclass allows for recycling
@@ -269,7 +269,7 @@
     mutable int fNumOwners = 0;
     mutable SkTArray<sk_sp<GrRefCntedCallback>> fIdleProcs;
 
-    typedef GrManagedResource INHERITED;
+    using INHERITED = GrManagedResource;
 };
 
 #endif
diff --git a/src/gpu/GrNonAtomicRef.h b/src/gpu/GrNonAtomicRef.h
index db7eea2..a5e5d6d 100644
--- a/src/gpu/GrNonAtomicRef.h
+++ b/src/gpu/GrNonAtomicRef.h
@@ -53,7 +53,7 @@
 private:
     mutable int32_t fRefCnt;
 
-    typedef SkNoncopyable INHERITED;
+    using INHERITED = SkNoncopyable;
 };
 
 template<typename T> inline void GrTDeleteNonAtomicRef(const T* ref) {
diff --git a/src/gpu/GrOpsRenderPass.h b/src/gpu/GrOpsRenderPass.h
index 8f478ad..8349117 100644
--- a/src/gpu/GrOpsRenderPass.h
+++ b/src/gpu/GrOpsRenderPass.h
@@ -222,7 +222,7 @@
     DynamicStateStatus fVertexBufferStatus;
 #endif
 
-    typedef GrOpsRenderPass INHERITED;
+    using INHERITED = GrOpsRenderPass;
 };
 
 #endif
diff --git a/src/gpu/GrPath.h b/src/gpu/GrPath.h
index 1792870..a6193bb 100644
--- a/src/gpu/GrPath.h
+++ b/src/gpu/GrPath.h
@@ -52,7 +52,7 @@
 
 private:
     const char* getResourceType() const override { return "Path Data"; }
-    typedef GrGpuResource INHERITED;
+    using INHERITED = GrGpuResource;
 };
 
 #endif
diff --git a/src/gpu/GrPathProcessor.cpp b/src/gpu/GrPathProcessor.cpp
index 8371117..632fce2 100644
--- a/src/gpu/GrPathProcessor.cpp
+++ b/src/gpu/GrPathProcessor.cpp
@@ -107,7 +107,7 @@
     UniformHandle fColorUniform;
     SkPMColor4f fColor;
 
-    typedef GrGLSLPrimitiveProcessor INHERITED;
+    using INHERITED = GrGLSLPrimitiveProcessor;
 };
 
 GrPathProcessor::GrPathProcessor(const SkPMColor4f& color,
diff --git a/src/gpu/GrPathProcessor.h b/src/gpu/GrPathProcessor.h
index 179af1c..614adea 100644
--- a/src/gpu/GrPathProcessor.h
+++ b/src/gpu/GrPathProcessor.h
@@ -41,7 +41,7 @@
     const SkMatrix fViewMatrix;
     const SkMatrix fLocalMatrix;
 
-    typedef GrPrimitiveProcessor INHERITED;
+    using INHERITED = GrPrimitiveProcessor;
 };
 
 #endif
diff --git a/src/gpu/GrPathRenderer.h b/src/gpu/GrPathRenderer.h
index 0866e01..b1ad18f 100644
--- a/src/gpu/GrPathRenderer.h
+++ b/src/gpu/GrPathRenderer.h
@@ -202,7 +202,7 @@
      */
     virtual void onStencilPath(const StencilPathArgs&);
 
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 };
 
 #endif
diff --git a/src/gpu/GrPrimitiveProcessor.h b/src/gpu/GrPrimitiveProcessor.h
index 09face1..a15d697 100644
--- a/src/gpu/GrPrimitiveProcessor.h
+++ b/src/gpu/GrPrimitiveProcessor.h
@@ -264,7 +264,7 @@
     AttributeSet fInstanceAttributes;
 
     int fTextureSamplerCnt = 0;
-    typedef GrProcessor INHERITED;
+    using INHERITED = GrProcessor;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/src/gpu/GrRectanizerPow2.h b/src/gpu/GrRectanizerPow2.h
index c96c9725..76cf4c4 100644
--- a/src/gpu/GrRectanizerPow2.h
+++ b/src/gpu/GrRectanizerPow2.h
@@ -77,7 +77,7 @@
         fNextStripY += rowHeight;
     }
 
-    typedef GrRectanizer INHERITED;
+    using INHERITED = GrRectanizer;
 };
 
 #endif
diff --git a/src/gpu/GrRectanizerSkyline.h b/src/gpu/GrRectanizerSkyline.h
index 40e5c1c..fc62951 100644
--- a/src/gpu/GrRectanizerSkyline.h
+++ b/src/gpu/GrRectanizerSkyline.h
@@ -58,7 +58,7 @@
     // at x,y.
     void addSkylineLevel(int skylineIndex, int x, int y, int width, int height);
 
-    typedef GrRectanizer INHERITED;
+    using INHERITED = GrRectanizer;
 };
 
 #endif
diff --git a/src/gpu/GrRenderTarget.h b/src/gpu/GrRenderTarget.h
index 9025930..dd5b0e5 100644
--- a/src/gpu/GrRenderTarget.h
+++ b/src/gpu/GrRenderTarget.h
@@ -82,7 +82,7 @@
     int fSampleCnt;
     int fSamplePatternKey;
 
-    typedef GrSurface INHERITED;
+    using INHERITED = GrSurface;
 };
 
 #endif
diff --git a/src/gpu/GrRenderTargetContext.h b/src/gpu/GrRenderTargetContext.h
index d0d1911..be69830 100644
--- a/src/gpu/GrRenderTargetContext.h
+++ b/src/gpu/GrRenderTargetContext.h
@@ -721,7 +721,7 @@
     bool fPreserveOpsOnFullClear_TestingOnly = false;
 #endif
     SkGlyphRunListPainter fGlyphPainter;
-    typedef GrSurfaceContext INHERITED;
+    using INHERITED = GrSurfaceContext;
 };
 
 #endif
diff --git a/src/gpu/GrRenderTargetProxy.h b/src/gpu/GrRenderTargetProxy.h
index 073bf9d..035efed 100644
--- a/src/gpu/GrRenderTargetProxy.h
+++ b/src/gpu/GrRenderTargetProxy.h
@@ -159,7 +159,7 @@
     // will work, but we use 4 to be more explicit about getting it to 16 byte alignment.
     char               fDummyPadding[4];
 
-    typedef GrSurfaceProxy INHERITED;
+    using INHERITED = GrSurfaceProxy;
 };
 
 #endif
diff --git a/src/gpu/GrSPIRVUniformHandler.h b/src/gpu/GrSPIRVUniformHandler.h
index f33fe11..4a41b0a 100644
--- a/src/gpu/GrSPIRVUniformHandler.h
+++ b/src/gpu/GrSPIRVUniformHandler.h
@@ -74,7 +74,7 @@
     friend class GrD3DPipelineStateBuilder;
     friend class GrDawnProgramBuilder;
 
-    typedef GrGLSLUniformHandler INHERITED;
+    using INHERITED = GrGLSLUniformHandler;
 };
 
 #endif
diff --git a/src/gpu/GrSPIRVVaryingHandler.h b/src/gpu/GrSPIRVVaryingHandler.h
index 2e2e7f1..c96ec8b 100644
--- a/src/gpu/GrSPIRVVaryingHandler.h
+++ b/src/gpu/GrSPIRVVaryingHandler.h
@@ -23,7 +23,7 @@
 private:
     void onFinalize() override;
 
-    typedef GrGLSLVaryingHandler INHERITED;
+    using INHERITED = GrGLSLVaryingHandler;
 };
 
 #endif
diff --git a/src/gpu/GrSWMaskHelper.h b/src/gpu/GrSWMaskHelper.h
index 5982bcf..5023300 100644
--- a/src/gpu/GrSWMaskHelper.h
+++ b/src/gpu/GrSWMaskHelper.h
@@ -74,7 +74,7 @@
     SkDraw               fDraw;
     SkRasterClip         fRasterClip;
 
-    typedef SkNoncopyable INHERITED;
+    using INHERITED = SkNoncopyable;
 };
 
 #endif // GrSWMaskHelper_DEFINED
diff --git a/src/gpu/GrSoftwarePathRenderer.h b/src/gpu/GrSoftwarePathRenderer.h
index 7b93166..6248c8f 100644
--- a/src/gpu/GrSoftwarePathRenderer.h
+++ b/src/gpu/GrSoftwarePathRenderer.h
@@ -74,7 +74,7 @@
     GrProxyProvider*       fProxyProvider;
     bool                   fAllowCaching;
 
-    typedef GrPathRenderer INHERITED;
+    using INHERITED = GrPathRenderer;
 };
 
 #endif
diff --git a/src/gpu/GrStencilAttachment.h b/src/gpu/GrStencilAttachment.h
index e733bbd..db587a1 100644
--- a/src/gpu/GrStencilAttachment.h
+++ b/src/gpu/GrStencilAttachment.h
@@ -52,7 +52,7 @@
     int fSampleCnt;
     bool fHasPerformedInitialClear = false;
 
-    typedef GrGpuResource INHERITED;
+    using INHERITED = GrGpuResource;
 };
 
 #endif
diff --git a/src/gpu/GrStencilClip.h b/src/gpu/GrStencilClip.h
index c5980da..b7e1068 100644
--- a/src/gpu/GrStencilClip.h
+++ b/src/gpu/GrStencilClip.h
@@ -61,7 +61,7 @@
     GrFixedClip   fFixedClip;
     uint32_t      fStencilStackID;
 
-    typedef GrClip INHERITED;
+    using INHERITED = GrClip;
 };
 
 #endif
diff --git a/src/gpu/GrStencilMaskHelper.h b/src/gpu/GrStencilMaskHelper.h
index f6cd2b9..9ffbe68 100644
--- a/src/gpu/GrStencilMaskHelper.h
+++ b/src/gpu/GrStencilMaskHelper.h
@@ -67,7 +67,7 @@
     GrStencilClip          fClip;
     int                    fNumFPs;
 
-    typedef SkNoncopyable INHERITED;
+    using INHERITED = SkNoncopyable;
 };
 
 #endif // GrStencilMaskHelper_DEFINED
diff --git a/src/gpu/GrSurface.h b/src/gpu/GrSurface.h
index 084ff73..da27fe7 100644
--- a/src/gpu/GrSurface.h
+++ b/src/gpu/GrSurface.h
@@ -152,7 +152,7 @@
     GrProtected                fIsProtected;
     sk_sp<GrRefCntedCallback>  fReleaseHelper;
 
-    typedef GrGpuResource INHERITED;
+    using INHERITED = GrGpuResource;
 };
 
 #endif
diff --git a/src/gpu/GrSurfaceContext.h b/src/gpu/GrSurfaceContext.h
index 6a6ef4f..3b60b14 100644
--- a/src/gpu/GrSurfaceContext.h
+++ b/src/gpu/GrSurfaceContext.h
@@ -242,7 +242,7 @@
 
     GrColorInfo fColorInfo;
 
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 };
 
 #endif
diff --git a/src/gpu/GrTexture.h b/src/gpu/GrTexture.h
index 9349509..ce7ffed 100644
--- a/src/gpu/GrTexture.h
+++ b/src/gpu/GrTexture.h
@@ -112,7 +112,7 @@
     int                           fMaxMipmapLevel;
     friend class GrTextureResource;
 
-    typedef GrSurface INHERITED;
+    using INHERITED = GrSurface;
 };
 
 #endif
diff --git a/src/gpu/GrTextureAdjuster.h b/src/gpu/GrTextureAdjuster.h
index 3376a33..7bf93ec 100644
--- a/src/gpu/GrTextureAdjuster.h
+++ b/src/gpu/GrTextureAdjuster.h
@@ -44,7 +44,7 @@
     GrSurfaceProxyView fOriginal;
     uint32_t fUniqueID;
 
-    typedef GrTextureProducer INHERITED;
+    using INHERITED = GrTextureProducer;
 };
 
 #endif
diff --git a/src/gpu/GrTextureMaker.h b/src/gpu/GrTextureMaker.h
index 5b6a45a..839e2ba 100644
--- a/src/gpu/GrTextureMaker.h
+++ b/src/gpu/GrTextureMaker.h
@@ -42,7 +42,7 @@
 
     GrSurfaceProxyView onView(GrMipmapped) final;
 
-    typedef GrTextureProducer INHERITED;
+    using INHERITED = GrTextureProducer;
 };
 
 #endif
diff --git a/src/gpu/GrTextureProducer.h b/src/gpu/GrTextureProducer.h
index 87cb989..5328e73 100644
--- a/src/gpu/GrTextureProducer.h
+++ b/src/gpu/GrTextureProducer.h
@@ -129,7 +129,7 @@
     GrRecordingContext* fContext;
     const GrImageInfo fImageInfo;
 
-    typedef SkNoncopyable INHERITED;
+    using INHERITED = SkNoncopyable;
 };
 
 #endif
diff --git a/src/gpu/GrTextureProxy.h b/src/gpu/GrTextureProxy.h
index de127bd..f9be98a 100644
--- a/src/gpu/GrTextureProxy.h
+++ b/src/gpu/GrTextureProxy.h
@@ -202,7 +202,7 @@
 
     SkDEBUGCODE(void onValidateSurface(const GrSurface*) override;)
 
-    typedef GrSurfaceProxy INHERITED;
+    using INHERITED = GrSurfaceProxy;
 };
 
 #endif
diff --git a/src/gpu/GrXferProcessor.h b/src/gpu/GrXferProcessor.h
index 048b637..3edd51a 100644
--- a/src/gpu/GrXferProcessor.h
+++ b/src/gpu/GrXferProcessor.h
@@ -217,7 +217,7 @@
     bool fDstReadUsesMixedSamples;
     bool fIsLCD;
 
-    typedef GrProcessor INHERITED;
+    using INHERITED = GrProcessor;
 };
 
 /**
diff --git a/src/gpu/SkGpuDevice.h b/src/gpu/SkGpuDevice.h
index 01002d6..a135d39 100644
--- a/src/gpu/SkGpuDevice.h
+++ b/src/gpu/SkGpuDevice.h
@@ -175,7 +175,7 @@
 
     friend class GrAtlasTextContext;
     friend class SkSurface_Gpu;      // for access to surfaceProps
-    typedef SkClipStackDevice INHERITED;
+    using INHERITED = SkClipStackDevice;
 };
 
 #endif
diff --git a/src/gpu/ccpr/GrCCClipProcessor.h b/src/gpu/ccpr/GrCCClipProcessor.h
index f5d1194..cb28f34 100644
--- a/src/gpu/ccpr/GrCCClipProcessor.h
+++ b/src/gpu/ccpr/GrCCClipProcessor.h
@@ -42,7 +42,7 @@
 
     class Impl;
 
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 
 #endif
diff --git a/src/gpu/ccpr/GrCCCoverageProcessor.h b/src/gpu/ccpr/GrCCCoverageProcessor.h
index f734453..c7a9639 100644
--- a/src/gpu/ccpr/GrCCCoverageProcessor.h
+++ b/src/gpu/ccpr/GrCCCoverageProcessor.h
@@ -222,7 +222,7 @@
 
     class TriangleShader;
 
-    typedef GrGeometryProcessor INHERITED;
+    using INHERITED = GrGeometryProcessor;
 };
 
 inline const char* GrCCCoverageProcessor::PrimitiveTypeName(PrimitiveType type) {
diff --git a/src/gpu/ccpr/GrCCPathProcessor.cpp b/src/gpu/ccpr/GrCCPathProcessor.cpp
index 895f251..921c56a 100644
--- a/src/gpu/ccpr/GrCCPathProcessor.cpp
+++ b/src/gpu/ccpr/GrCCPathProcessor.cpp
@@ -120,7 +120,7 @@
     GrGLSLUniformHandler::UniformHandle fLocalMatrixUni;
     SkMatrix fLocalMatrix = SkMatrix::InvalidMatrix();
 
-    typedef GrGLSLGeometryProcessor INHERITED;
+    using INHERITED = GrGLSLGeometryProcessor;
 };
 
 void GrCCPathProcessor::getGLSLProcessorKey(const GrShaderCaps&, GrProcessorKeyBuilder* b) const  {
diff --git a/src/gpu/ccpr/GrCCPathProcessor.h b/src/gpu/ccpr/GrCCPathProcessor.h
index 789ac2e..fa49283 100644
--- a/src/gpu/ccpr/GrCCPathProcessor.h
+++ b/src/gpu/ccpr/GrCCPathProcessor.h
@@ -93,7 +93,7 @@
 
     class Impl;
 
-    typedef GrGeometryProcessor INHERITED;
+    using INHERITED = GrGeometryProcessor;
 };
 
 inline void GrCCPathProcessor::Instance::set(
diff --git a/src/gpu/ccpr/GrCCStroker.cpp b/src/gpu/ccpr/GrCCStroker.cpp
index a836b52..3f9d4f5 100644
--- a/src/gpu/ccpr/GrCCStroker.cpp
+++ b/src/gpu/ccpr/GrCCStroker.cpp
@@ -97,7 +97,7 @@
         return new Impl();
     }
 
-    typedef GrGeometryProcessor INHERITED;
+    using INHERITED = GrGeometryProcessor;
 };
 
 void LinearStrokeProcessor::Impl::onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) {
diff --git a/src/gpu/ccpr/GrGSCoverageProcessor.cpp b/src/gpu/ccpr/GrGSCoverageProcessor.cpp
index 49e2fce..569f4fc 100644
--- a/src/gpu/ccpr/GrGSCoverageProcessor.cpp
+++ b/src/gpu/ccpr/GrGSCoverageProcessor.cpp
@@ -135,7 +135,7 @@
     const std::unique_ptr<Shader> fShader;
     const GrShaderVar fEdgeDistanceEquation{"edge_distance_equation", kFloat3_GrSLType};
 
-    typedef GrGLSLGeometryProcessor INHERITED;
+    using INHERITED = GrGLSLGeometryProcessor;
 };
 
 /**
diff --git a/src/gpu/ccpr/GrGSCoverageProcessor.h b/src/gpu/ccpr/GrGSCoverageProcessor.h
index dc0299b..dab85a8 100644
--- a/src/gpu/ccpr/GrGSCoverageProcessor.h
+++ b/src/gpu/ccpr/GrGSCoverageProcessor.h
@@ -48,7 +48,7 @@
     class CurveHullImpl;
     class CornerImpl;
 
-    typedef GrCCCoverageProcessor INHERITED;
+    using INHERITED = GrCCCoverageProcessor;
 };
 
 #endif
diff --git a/src/gpu/ccpr/GrStencilAtlasOp.cpp b/src/gpu/ccpr/GrStencilAtlasOp.cpp
index ba35493..0b0721d 100644
--- a/src/gpu/ccpr/GrStencilAtlasOp.cpp
+++ b/src/gpu/ccpr/GrStencilAtlasOp.cpp
@@ -34,7 +34,7 @@
     GrGLSLPrimitiveProcessor* createGLSLInstance(const GrShaderCaps&) const final;
     class Impl;
 
-    typedef GrGeometryProcessor INHERITED;
+    using INHERITED = GrGeometryProcessor;
 };
 
 // This processor draws pixel-aligned rectangles directly on top of every path in the atlas.
diff --git a/src/gpu/d3d/GrD3DBuffer.h b/src/gpu/d3d/GrD3DBuffer.h
index 36450b1..d74b29a 100644
--- a/src/gpu/d3d/GrD3DBuffer.h
+++ b/src/gpu/d3d/GrD3DBuffer.h
@@ -56,7 +56,7 @@
     ID3D12Resource* fStagingBuffer = nullptr;
     size_t fStagingOffset = 0;
 
-    typedef GrGpuBuffer INHERITED;
+    using INHERITED = GrGpuBuffer;
 };
 
 #endif
diff --git a/src/gpu/d3d/GrD3DCaps.h b/src/gpu/d3d/GrD3DCaps.h
index 5c890e9..a6d45e1 100644
--- a/src/gpu/d3d/GrD3DCaps.h
+++ b/src/gpu/d3d/GrD3DCaps.h
@@ -208,7 +208,7 @@
 
     StencilFormat fPreferredStencilFormat;
 
-    typedef GrCaps INHERITED;
+    using INHERITED = GrCaps;
 };
 
 #endif
diff --git a/src/gpu/d3d/GrD3DDescriptorTableManager.h b/src/gpu/d3d/GrD3DDescriptorTableManager.h
index 60e28ed..afdf38c 100644
--- a/src/gpu/d3d/GrD3DDescriptorTableManager.h
+++ b/src/gpu/d3d/GrD3DDescriptorTableManager.h
@@ -92,7 +92,7 @@
         unsigned int fDescriptorCount;
         unsigned int fNextAvailable;
 
-        typedef GrRecycledResource INHERITED;
+        using INHERITED = GrRecycledResource;
     };
 
     class HeapPool {
diff --git a/src/gpu/d3d/GrD3DGpu.h b/src/gpu/d3d/GrD3DGpu.h
index 46ea37b..4d8c2fd 100644
--- a/src/gpu/d3d/GrD3DGpu.h
+++ b/src/gpu/d3d/GrD3DGpu.h
@@ -289,7 +289,7 @@
 
     std::unique_ptr<SkSL::Compiler> fCompiler;
 
-    typedef GrGpu INHERITED;
+    using INHERITED = GrGpu;
 };
 
 #endif
diff --git a/src/gpu/d3d/GrD3DOpsRenderPass.h b/src/gpu/d3d/GrD3DOpsRenderPass.h
index 17116c0..8953bbf 100644
--- a/src/gpu/d3d/GrD3DOpsRenderPass.h
+++ b/src/gpu/d3d/GrD3DOpsRenderPass.h
@@ -71,7 +71,7 @@
     SkPMColor4f fClearColor;
     GrLoadOp fStencilLoadOp;
 
-    typedef GrOpsRenderPass INHERITED;
+    using INHERITED = GrOpsRenderPass;
 };
 
 #endif
diff --git a/src/gpu/d3d/GrD3DPipelineStateBuilder.h b/src/gpu/d3d/GrD3DPipelineStateBuilder.h
index 357c024..5cbd017 100644
--- a/src/gpu/d3d/GrD3DPipelineStateBuilder.h
+++ b/src/gpu/d3d/GrD3DPipelineStateBuilder.h
@@ -61,7 +61,7 @@
     GrSPIRVVaryingHandler fVaryingHandler;
     GrSPIRVUniformHandler fUniformHandler;
 
-    typedef GrGLSLProgramBuilder INHERITED;
+    using INHERITED = GrGLSLProgramBuilder;
 };
 
 #endif
diff --git a/src/gpu/d3d/GrD3DPipelineStateDataManager.h b/src/gpu/d3d/GrD3DPipelineStateDataManager.h
index 15a41ab..18e8278 100644
--- a/src/gpu/d3d/GrD3DPipelineStateDataManager.h
+++ b/src/gpu/d3d/GrD3DPipelineStateDataManager.h
@@ -28,7 +28,7 @@
 private:
     D3D12_GPU_VIRTUAL_ADDRESS fConstantBufferAddress;
 
-    typedef GrUniformDataManager INHERITED;
+    using INHERITED = GrUniformDataManager;
 };
 
 #endif
diff --git a/src/gpu/d3d/GrD3DSemaphore.h b/src/gpu/d3d/GrD3DSemaphore.h
index d96a639..da1afdc 100644
--- a/src/gpu/d3d/GrD3DSemaphore.h
+++ b/src/gpu/d3d/GrD3DSemaphore.h
@@ -35,7 +35,7 @@
 
     GrD3DFenceInfo fFenceInfo;
 
-    typedef GrSemaphore INHERITED;
+    using INHERITED = GrSemaphore;
 };
 
 #endif
diff --git a/src/gpu/d3d/GrD3DTexture.h b/src/gpu/d3d/GrD3DTexture.h
index 8856f61..537ac72 100644
--- a/src/gpu/d3d/GrD3DTexture.h
+++ b/src/gpu/d3d/GrD3DTexture.h
@@ -86,7 +86,7 @@
 
     GrD3DDescriptorHeap::CPUHandle fShaderResourceView;
 
-    typedef GrTexture INHERITED;
+    using INHERITED = GrTexture;
 };
 
 #endif
diff --git a/src/gpu/d3d/GrD3DTextureResource.h b/src/gpu/d3d/GrD3DTextureResource.h
index d67fdea..37802d8 100644
--- a/src/gpu/d3d/GrD3DTextureResource.h
+++ b/src/gpu/d3d/GrD3DTextureResource.h
@@ -126,7 +126,7 @@
 
         mutable gr_cp<ID3D12Resource> fResource;
 
-        typedef GrTextureResource INHERITED;
+        using INHERITED = GrTextureResource;
     };
 
     sk_sp<Resource> fResource;
diff --git a/src/gpu/dawn/GrDawnBuffer.h b/src/gpu/dawn/GrDawnBuffer.h
index 011eeb9..86df7d4 100644
--- a/src/gpu/dawn/GrDawnBuffer.h
+++ b/src/gpu/dawn/GrDawnBuffer.h
@@ -46,7 +46,7 @@
     wgpu::Buffer fStagingBuffer;
     size_t fStagingOffset = 0;
 
-    typedef GrGpuBuffer INHERITED;
+    using INHERITED = GrGpuBuffer;
 };
 
 #endif
diff --git a/src/gpu/dawn/GrDawnCaps.h b/src/gpu/dawn/GrDawnCaps.h
index e9b226e..4fc4185 100644
--- a/src/gpu/dawn/GrDawnCaps.h
+++ b/src/gpu/dawn/GrDawnCaps.h
@@ -74,7 +74,7 @@
 
     GrSwizzle onGetReadSwizzle(const GrBackendFormat&, GrColorType) const override;
 
-    typedef GrCaps INHERITED;
+    using INHERITED = GrCaps;
 };
 
 #endif
diff --git a/src/gpu/dawn/GrDawnGpu.h b/src/gpu/dawn/GrDawnGpu.h
index 47a070d..db45100 100644
--- a/src/gpu/dawn/GrDawnGpu.h
+++ b/src/gpu/dawn/GrDawnGpu.h
@@ -227,7 +227,7 @@
 
     GrFinishCallbacks         fFinishCallbacks;
 
-    typedef GrGpu INHERITED;
+    using INHERITED = GrGpu;
 };
 
 #endif
diff --git a/src/gpu/dawn/GrDawnOpsRenderPass.h b/src/gpu/dawn/GrDawnOpsRenderPass.h
index 33d6816..f547b98 100644
--- a/src/gpu/dawn/GrDawnOpsRenderPass.h
+++ b/src/gpu/dawn/GrDawnOpsRenderPass.h
@@ -69,7 +69,7 @@
     sk_sp<GrDawnProgram>        fCurrentProgram;
     LoadAndStoreInfo            fColorInfo;
 
-    typedef GrOpsRenderPass     INHERITED;
+    using INHERITED = GrOpsRenderPass    ;
 };
 
 #endif
diff --git a/src/gpu/dawn/GrDawnProgramBuilder.h b/src/gpu/dawn/GrDawnProgramBuilder.h
index 65930ea..504d6b5 100644
--- a/src/gpu/dawn/GrDawnProgramBuilder.h
+++ b/src/gpu/dawn/GrDawnProgramBuilder.h
@@ -97,6 +97,6 @@
     GrSPIRVVaryingHandler   fVaryingHandler;
     GrSPIRVUniformHandler   fUniformHandler;
 
-    typedef GrGLSLProgramBuilder INHERITED;
+    using INHERITED = GrGLSLProgramBuilder;
 };
 #endif
diff --git a/src/gpu/dawn/GrDawnRenderTarget.h b/src/gpu/dawn/GrDawnRenderTarget.h
index fca5508..62c5ec4 100644
--- a/src/gpu/dawn/GrDawnRenderTarget.h
+++ b/src/gpu/dawn/GrDawnRenderTarget.h
@@ -45,7 +45,7 @@
 
     bool completeStencilAttachment() override;
     GrDawnRenderTargetInfo fInfo;
-    typedef GrRenderTarget INHERITED;
+    using INHERITED = GrRenderTarget;
 };
 
 #endif
diff --git a/src/gpu/dawn/GrDawnStencilAttachment.h b/src/gpu/dawn/GrDawnStencilAttachment.h
index 110af1f..3cfda64 100644
--- a/src/gpu/dawn/GrDawnStencilAttachment.h
+++ b/src/gpu/dawn/GrDawnStencilAttachment.h
@@ -37,7 +37,7 @@
     wgpu::Texture fTexture;
     wgpu::TextureView fView;
 
-    typedef GrStencilAttachment INHERITED;
+    using INHERITED = GrStencilAttachment;
 };
 
 #endif
diff --git a/src/gpu/dawn/GrDawnTexture.h b/src/gpu/dawn/GrDawnTexture.h
index 7e0666a..effe7a3 100644
--- a/src/gpu/dawn/GrDawnTexture.h
+++ b/src/gpu/dawn/GrDawnTexture.h
@@ -55,7 +55,7 @@
     GrDawnTextureInfo        fInfo;
     wgpu::TextureView        fTextureView;
 
-    typedef GrTexture INHERITED;
+    using INHERITED = GrTexture;
 };
 
 #endif
diff --git a/src/gpu/effects/GrBezierEffect.cpp b/src/gpu/effects/GrBezierEffect.cpp
index e68f570..38a4b00 100644
--- a/src/gpu/effects/GrBezierEffect.cpp
+++ b/src/gpu/effects/GrBezierEffect.cpp
@@ -52,7 +52,7 @@
     UniformHandle fViewMatrixUniform;
     UniformHandle fLocalMatrixUniform;
 
-    typedef GrGLSLGeometryProcessor INHERITED;
+    using INHERITED = GrGLSLGeometryProcessor;
 };
 
 GrGLConicEffect::GrGLConicEffect(const GrGeometryProcessor& processor)
@@ -247,7 +247,7 @@
     UniformHandle fViewMatrixUniform;
     UniformHandle fLocalMatrixUniform;
 
-    typedef GrGLSLGeometryProcessor INHERITED;
+    using INHERITED = GrGLSLGeometryProcessor;
 };
 
 GrGLQuadEffect::GrGLQuadEffect(const GrGeometryProcessor& processor)
diff --git a/src/gpu/effects/GrBezierEffect.h b/src/gpu/effects/GrBezierEffect.h
index 87d3721..bbe28fe 100644
--- a/src/gpu/effects/GrBezierEffect.h
+++ b/src/gpu/effects/GrBezierEffect.h
@@ -109,7 +109,7 @@
 
     GR_DECLARE_GEOMETRY_PROCESSOR_TEST
 
-    typedef GrGeometryProcessor INHERITED;
+    using INHERITED = GrGeometryProcessor;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -176,7 +176,7 @@
 
     GR_DECLARE_GEOMETRY_PROCESSOR_TEST
 
-    typedef GrGeometryProcessor INHERITED;
+    using INHERITED = GrGeometryProcessor;
 };
 
 #endif
diff --git a/src/gpu/effects/GrBicubicEffect.cpp b/src/gpu/effects/GrBicubicEffect.cpp
index e056f09..195f550 100644
--- a/src/gpu/effects/GrBicubicEffect.cpp
+++ b/src/gpu/effects/GrBicubicEffect.cpp
@@ -27,7 +27,7 @@
 private:
     SkImage::CubicResampler fKernel;
     UniformHandle fCoefficientUni;
-    typedef GrGLSLFragmentProcessor INHERITED;
+    using INHERITED = GrGLSLFragmentProcessor;
 };
 
 void GrBicubicEffect::Impl::emitCode(EmitArgs& args) {
diff --git a/src/gpu/effects/GrBicubicEffect.h b/src/gpu/effects/GrBicubicEffect.h
index afb3cf7..e2704a2 100644
--- a/src/gpu/effects/GrBicubicEffect.h
+++ b/src/gpu/effects/GrBicubicEffect.h
@@ -126,7 +126,7 @@
 
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
 
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 
 #endif
diff --git a/src/gpu/effects/GrBitmapTextGeoProc.cpp b/src/gpu/effects/GrBitmapTextGeoProc.cpp
index db9a69b..f960540 100644
--- a/src/gpu/effects/GrBitmapTextGeoProc.cpp
+++ b/src/gpu/effects/GrBitmapTextGeoProc.cpp
@@ -114,7 +114,7 @@
     SkMatrix      fLocalMatrix;
     UniformHandle fLocalMatrixUniform;
 
-    typedef GrGLSLGeometryProcessor INHERITED;
+    using INHERITED = GrGLSLGeometryProcessor;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/src/gpu/effects/GrBitmapTextGeoProc.h b/src/gpu/effects/GrBitmapTextGeoProc.h
index 57abe5f..84f2edd 100644
--- a/src/gpu/effects/GrBitmapTextGeoProc.h
+++ b/src/gpu/effects/GrBitmapTextGeoProc.h
@@ -80,7 +80,7 @@
 
     GR_DECLARE_GEOMETRY_PROCESSOR_TEST
 
-    typedef GrGeometryProcessor INHERITED;
+    using INHERITED = GrGeometryProcessor;
 };
 
 #endif
diff --git a/src/gpu/effects/GrBlendFragmentProcessor.cpp b/src/gpu/effects/GrBlendFragmentProcessor.cpp
index 56e5bdb..cbfa512 100644
--- a/src/gpu/effects/GrBlendFragmentProcessor.cpp
+++ b/src/gpu/effects/GrBlendFragmentProcessor.cpp
@@ -218,7 +218,7 @@
 
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
 
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 
 /////////////////////////////////////////////////////////////////////
@@ -228,7 +228,7 @@
     void emitCode(EmitArgs&) override;
 
 private:
-    typedef GrGLSLFragmentProcessor INHERITED;
+    using INHERITED = GrGLSLFragmentProcessor;
 };
 
 /////////////////////////////////////////////////////////////////////
diff --git a/src/gpu/effects/GrConvexPolyEffect.cpp b/src/gpu/effects/GrConvexPolyEffect.cpp
index 723b16c..044488b 100644
--- a/src/gpu/effects/GrConvexPolyEffect.cpp
+++ b/src/gpu/effects/GrConvexPolyEffect.cpp
@@ -33,7 +33,7 @@
 private:
     GrGLSLProgramDataManager::UniformHandle fEdgeUniform;
     SkScalar                                fPrevEdges[3 * GrConvexPolyEffect::kMaxEdges];
-    typedef GrGLSLFragmentProcessor INHERITED;
+    using INHERITED = GrGLSLFragmentProcessor;
 };
 
 void GrGLConvexPolyEffect::emitCode(EmitArgs& args) {
diff --git a/src/gpu/effects/GrConvexPolyEffect.h b/src/gpu/effects/GrConvexPolyEffect.h
index f7fb2bd..0aa0850 100644
--- a/src/gpu/effects/GrConvexPolyEffect.h
+++ b/src/gpu/effects/GrConvexPolyEffect.h
@@ -87,7 +87,7 @@
 
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
 
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 
 
diff --git a/src/gpu/effects/GrCoverageSetOpXP.cpp b/src/gpu/effects/GrCoverageSetOpXP.cpp
index a721edc..fc9fa7b 100644
--- a/src/gpu/effects/GrCoverageSetOpXP.cpp
+++ b/src/gpu/effects/GrCoverageSetOpXP.cpp
@@ -44,7 +44,7 @@
     SkRegion::Op fRegionOp;
     bool         fInvertCoverage;
 
-    typedef GrXferProcessor INHERITED;
+    using INHERITED = GrXferProcessor;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -76,7 +76,7 @@
 
     void onSetData(const GrGLSLProgramDataManager&, const GrXferProcessor&) override {}
 
-    typedef GrGLSLXferProcessor INHERITED;
+    using INHERITED = GrGLSLXferProcessor;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/src/gpu/effects/GrCoverageSetOpXP.h b/src/gpu/effects/GrCoverageSetOpXP.h
index 3510505..f36e1d5 100644
--- a/src/gpu/effects/GrCoverageSetOpXP.h
+++ b/src/gpu/effects/GrCoverageSetOpXP.h
@@ -53,7 +53,7 @@
     SkRegion::Op fRegionOp;
     bool         fInvertCoverage;
 
-    typedef GrXPFactory INHERITED;
+    using INHERITED = GrXPFactory;
 };
 #if defined(__GNUC__)
 #pragma GCC diagnostic pop
diff --git a/src/gpu/effects/GrCustomXfermode.cpp b/src/gpu/effects/GrCustomXfermode.cpp
index 19b7788..6987e2a 100644
--- a/src/gpu/effects/GrCustomXfermode.cpp
+++ b/src/gpu/effects/GrCustomXfermode.cpp
@@ -108,7 +108,7 @@
     const SkBlendMode      fMode;
     const GrBlendEquation  fHWBlendEquation;
 
-    typedef GrXferProcessor INHERITED;
+    using INHERITED = GrXferProcessor;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -167,7 +167,7 @@
 
     void onSetData(const GrGLSLProgramDataManager&, const GrXferProcessor&) override {}
 
-    typedef GrGLSLXferProcessor INHERITED;
+    using INHERITED = GrGLSLXferProcessor;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -232,7 +232,7 @@
     SkBlendMode fMode;
     GrBlendEquation fHWBlendEquation;
 
-    typedef GrXPFactory INHERITED;
+    using INHERITED = GrXPFactory;
 };
 #if defined(__GNUC__)
 #pragma GCC diagnostic pop
diff --git a/src/gpu/effects/GrDisableColorXP.cpp b/src/gpu/effects/GrDisableColorXP.cpp
index 0e6760b..77cc2bf 100644
--- a/src/gpu/effects/GrDisableColorXP.cpp
+++ b/src/gpu/effects/GrDisableColorXP.cpp
@@ -32,7 +32,7 @@
     }
     GrGLSLXferProcessor* createGLSLInstance() const override;
 
-    typedef GrXferProcessor INHERITED;
+    using INHERITED = GrXferProcessor;
 };
 
 class GLDisableColorXP : public GrGLSLXferProcessor {
@@ -58,7 +58,7 @@
 
     void onSetData(const GrGLSLProgramDataManager&, const GrXferProcessor&) override {}
 
-    typedef GrGLSLXferProcessor INHERITED;
+    using INHERITED = GrGLSLXferProcessor;
 };
 
 GrGLSLXferProcessor* DisableColorXP::createGLSLInstance() const {
diff --git a/src/gpu/effects/GrDisableColorXP.h b/src/gpu/effects/GrDisableColorXP.h
index 3dcca5f..825469c 100644
--- a/src/gpu/effects/GrDisableColorXP.h
+++ b/src/gpu/effects/GrDisableColorXP.h
@@ -45,7 +45,7 @@
 
     GR_DECLARE_XP_FACTORY_TEST
 
-    typedef GrXPFactory INHERITED;
+    using INHERITED = GrXPFactory;
 };
 #if defined(__GNUC__)
 #pragma GCC diagnostic pop
diff --git a/src/gpu/effects/GrDistanceFieldGeoProc.cpp b/src/gpu/effects/GrDistanceFieldGeoProc.cpp
index 80aeb11..47b1eaa 100644
--- a/src/gpu/effects/GrDistanceFieldGeoProc.cpp
+++ b/src/gpu/effects/GrDistanceFieldGeoProc.cpp
@@ -202,7 +202,7 @@
     SkMatrix      fLocalMatrix = SkMatrix::InvalidMatrix();
     UniformHandle fLocalMatrixUniform;
 
-    typedef GrGLSLGeometryProcessor INHERITED;
+    using INHERITED = GrGLSLGeometryProcessor;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -481,7 +481,7 @@
     SkISize       fAtlasDimensions;
     UniformHandle fAtlasDimensionsInvUniform;
 
-    typedef GrGLSLGeometryProcessor INHERITED;
+    using INHERITED = GrGLSLGeometryProcessor;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -800,7 +800,7 @@
     SkMatrix                                      fLocalMatrix;
     UniformHandle                                 fLocalMatrixUniform;
 
-    typedef GrGLSLGeometryProcessor INHERITED;
+    using INHERITED = GrGLSLGeometryProcessor;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/src/gpu/effects/GrDistanceFieldGeoProc.h b/src/gpu/effects/GrDistanceFieldGeoProc.h
index 72455d7..1a546d2 100644
--- a/src/gpu/effects/GrDistanceFieldGeoProc.h
+++ b/src/gpu/effects/GrDistanceFieldGeoProc.h
@@ -130,7 +130,7 @@
 
     GR_DECLARE_GEOMETRY_PROCESSOR_TEST
 
-    typedef GrGeometryProcessor INHERITED;
+    using INHERITED = GrGeometryProcessor;
 };
 
 /**
@@ -192,7 +192,7 @@
 
     GR_DECLARE_GEOMETRY_PROCESSOR_TEST
 
-    typedef GrGeometryProcessor INHERITED;
+    using INHERITED = GrGeometryProcessor;
 };
 
 /**
@@ -271,7 +271,7 @@
 
     GR_DECLARE_GEOMETRY_PROCESSOR_TEST
 
-    typedef GrGeometryProcessor INHERITED;
+    using INHERITED = GrGeometryProcessor;
 };
 
 #endif
diff --git a/src/gpu/effects/GrGaussianConvolutionFragmentProcessor.cpp b/src/gpu/effects/GrGaussianConvolutionFragmentProcessor.cpp
index 55fe393..8157a9a 100644
--- a/src/gpu/effects/GrGaussianConvolutionFragmentProcessor.cpp
+++ b/src/gpu/effects/GrGaussianConvolutionFragmentProcessor.cpp
@@ -34,7 +34,7 @@
     UniformHandle fKernelUni;
     UniformHandle fIncrementUni;
 
-    typedef GrGLSLFragmentProcessor INHERITED;
+    using INHERITED = GrGLSLFragmentProcessor;
 };
 
 void GrGaussianConvolutionFragmentProcessor::Impl::emitCode(EmitArgs& args) {
diff --git a/src/gpu/effects/GrGaussianConvolutionFragmentProcessor.h b/src/gpu/effects/GrGaussianConvolutionFragmentProcessor.h
index db21fe5..3556102 100644
--- a/src/gpu/effects/GrGaussianConvolutionFragmentProcessor.h
+++ b/src/gpu/effects/GrGaussianConvolutionFragmentProcessor.h
@@ -84,7 +84,7 @@
 
     class Impl;
 
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 
 #endif
diff --git a/src/gpu/effects/GrMatrixConvolutionEffect.cpp b/src/gpu/effects/GrMatrixConvolutionEffect.cpp
index 5b86e16..f9c8a94 100644
--- a/src/gpu/effects/GrMatrixConvolutionEffect.cpp
+++ b/src/gpu/effects/GrMatrixConvolutionEffect.cpp
@@ -39,7 +39,7 @@
     UniformHandle               fBiasUni;
     UniformHandle               fKernelBiasUni;
 
-    typedef GrGLSLFragmentProcessor INHERITED;
+    using INHERITED = GrGLSLFragmentProcessor;
 };
 
 GrMatrixConvolutionEffect::KernelWrapper::MakeResult
diff --git a/src/gpu/effects/GrMatrixConvolutionEffect.h b/src/gpu/effects/GrMatrixConvolutionEffect.h
index 64b595c..f296875 100644
--- a/src/gpu/effects/GrMatrixConvolutionEffect.h
+++ b/src/gpu/effects/GrMatrixConvolutionEffect.h
@@ -138,7 +138,7 @@
 
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
 
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 
 #endif
diff --git a/src/gpu/effects/GrMatrixEffect.h b/src/gpu/effects/GrMatrixEffect.h
index 0e6bba0..4fe292b 100644
--- a/src/gpu/effects/GrMatrixEffect.h
+++ b/src/gpu/effects/GrMatrixEffect.h
@@ -49,6 +49,6 @@
     SkMatrix fMatrix;
 
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 #endif
diff --git a/src/gpu/effects/GrPorterDuffXferProcessor.cpp b/src/gpu/effects/GrPorterDuffXferProcessor.cpp
index 253a736..78156ec 100644
--- a/src/gpu/effects/GrPorterDuffXferProcessor.cpp
+++ b/src/gpu/effects/GrPorterDuffXferProcessor.cpp
@@ -394,7 +394,7 @@
 
     const BlendFormula fBlendFormula;
 
-    typedef GrXferProcessor INHERITED;
+    using INHERITED = GrXferProcessor;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -456,7 +456,7 @@
 
     void onSetData(const GrGLSLProgramDataManager&, const GrXferProcessor&) override {}
 
-    typedef GrGLSLXferProcessor INHERITED;
+    using INHERITED = GrGLSLXferProcessor;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -496,7 +496,7 @@
 
     const SkBlendMode fXfermode;
 
-    typedef GrXferProcessor INHERITED;
+    using INHERITED = GrXferProcessor;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -528,7 +528,7 @@
 
     void onSetData(const GrGLSLProgramDataManager&, const GrXferProcessor&) override {}
 
-    typedef GrGLSLXferProcessor INHERITED;
+    using INHERITED = GrGLSLXferProcessor;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -579,7 +579,7 @@
     SkPMColor4f fBlendConstant;
     float fAlpha;
 
-    typedef GrXferProcessor INHERITED;
+    using INHERITED = GrXferProcessor;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -617,7 +617,7 @@
 
     GrGLSLUniformHandler::UniformHandle fAlphaUniform;
     float fLastAlpha;
-    typedef GrGLSLXferProcessor INHERITED;
+    using INHERITED = GrGLSLXferProcessor;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/src/gpu/effects/GrPorterDuffXferProcessor.h b/src/gpu/effects/GrPorterDuffXferProcessor.h
index 2245313..5946457 100644
--- a/src/gpu/effects/GrPorterDuffXferProcessor.h
+++ b/src/gpu/effects/GrPorterDuffXferProcessor.h
@@ -64,7 +64,7 @@
     SkBlendMode fBlendMode;
 
     friend class GrPorterDuffTest; // for TestGetXPOutputTypes()
-    typedef GrXPFactory INHERITED;
+    using INHERITED = GrXPFactory;
 };
 #if defined(__GNUC__)
 #pragma GCC diagnostic pop
diff --git a/src/gpu/effects/GrRRectEffect.cpp b/src/gpu/effects/GrRRectEffect.cpp
index f1cd107..6c14cf7 100644
--- a/src/gpu/effects/GrRRectEffect.cpp
+++ b/src/gpu/effects/GrRRectEffect.cpp
@@ -77,7 +77,7 @@
 
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
 
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 
 GrFPResult CircularRRectEffect::Make(std::unique_ptr<GrFragmentProcessor> inputFP,
@@ -161,7 +161,7 @@
     GrGLSLProgramDataManager::UniformHandle fInnerRectUniform;
     GrGLSLProgramDataManager::UniformHandle fRadiusPlusHalfUniform;
     SkRRect                                 fPrevRRect;
-    typedef GrGLSLFragmentProcessor INHERITED;
+    using INHERITED = GrGLSLFragmentProcessor;
 };
 
 void GLCircularRRectEffect::emitCode(EmitArgs& args) {
@@ -430,7 +430,7 @@
 
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
 
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 
 GrFPResult EllipticalRRectEffect::Make(std::unique_ptr<GrFragmentProcessor> inputFP,
@@ -530,7 +530,7 @@
     GrGLSLProgramDataManager::UniformHandle fInvRadiiSqdUniform;
     GrGLSLProgramDataManager::UniformHandle fScaleUniform;
     SkRRect                                 fPrevRRect;
-    typedef GrGLSLFragmentProcessor INHERITED;
+    using INHERITED = GrGLSLFragmentProcessor;
 };
 
 void GLEllipticalRRectEffect::emitCode(EmitArgs& args) {
diff --git a/src/gpu/effects/GrShadowGeoProc.cpp b/src/gpu/effects/GrShadowGeoProc.cpp
index 7dae280..faa021e 100644
--- a/src/gpu/effects/GrShadowGeoProc.cpp
+++ b/src/gpu/effects/GrShadowGeoProc.cpp
@@ -48,7 +48,7 @@
     }
 
 private:
-    typedef GrGLSLGeometryProcessor INHERITED;
+    using INHERITED = GrGLSLGeometryProcessor;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/src/gpu/effects/GrShadowGeoProc.h b/src/gpu/effects/GrShadowGeoProc.h
index b103c86..9d3e3e9 100644
--- a/src/gpu/effects/GrShadowGeoProc.h
+++ b/src/gpu/effects/GrShadowGeoProc.h
@@ -52,7 +52,7 @@
 
     GR_DECLARE_GEOMETRY_PROCESSOR_TEST
 
-    typedef GrGeometryProcessor INHERITED;
+    using INHERITED = GrGeometryProcessor;
 };
 
 #endif
diff --git a/src/gpu/effects/GrSkSLFP.h b/src/gpu/effects/GrSkSLFP.h
index 923ca96..6ca07d2 100644
--- a/src/gpu/effects/GrSkSLFP.h
+++ b/src/gpu/effects/GrSkSLFP.h
@@ -70,7 +70,7 @@
 
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
 
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 
     friend class GrGLSLSkSLFP;
 
diff --git a/src/gpu/effects/GrTextureEffect.h b/src/gpu/effects/GrTextureEffect.h
index 56c90d0..1e75093 100644
--- a/src/gpu/effects/GrTextureEffect.h
+++ b/src/gpu/effects/GrTextureEffect.h
@@ -166,6 +166,6 @@
 
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
 
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 #endif
diff --git a/src/gpu/effects/generated/GrAARectEffect.h b/src/gpu/effects/generated/GrAARectEffect.h
index d3ce90d..8e60f22 100644
--- a/src/gpu/effects/generated/GrAARectEffect.h
+++ b/src/gpu/effects/generated/GrAARectEffect.h
@@ -50,6 +50,6 @@
     SkString onDumpInfo() const override;
 #endif
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 #endif
diff --git a/src/gpu/effects/generated/GrAlphaThresholdFragmentProcessor.h b/src/gpu/effects/generated/GrAlphaThresholdFragmentProcessor.h
index f47ca05..04c46d0 100644
--- a/src/gpu/effects/generated/GrAlphaThresholdFragmentProcessor.h
+++ b/src/gpu/effects/generated/GrAlphaThresholdFragmentProcessor.h
@@ -55,6 +55,6 @@
     SkString onDumpInfo() const override;
 #endif
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 #endif
diff --git a/src/gpu/effects/generated/GrArithmeticProcessor.h b/src/gpu/effects/generated/GrArithmeticProcessor.h
index 15cf5ee..ebbdcb4 100644
--- a/src/gpu/effects/generated/GrArithmeticProcessor.h
+++ b/src/gpu/effects/generated/GrArithmeticProcessor.h
@@ -54,6 +54,6 @@
     SkString onDumpInfo() const override;
 #endif
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 #endif
diff --git a/src/gpu/effects/generated/GrBlurredEdgeFragmentProcessor.h b/src/gpu/effects/generated/GrBlurredEdgeFragmentProcessor.h
index babacbc..eced40e 100644
--- a/src/gpu/effects/generated/GrBlurredEdgeFragmentProcessor.h
+++ b/src/gpu/effects/generated/GrBlurredEdgeFragmentProcessor.h
@@ -43,6 +43,6 @@
     SkString onDumpInfo() const override;
 #endif
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 #endif
diff --git a/src/gpu/effects/generated/GrCircleBlurFragmentProcessor.h b/src/gpu/effects/generated/GrCircleBlurFragmentProcessor.h
index 4ac392a..be7f154 100644
--- a/src/gpu/effects/generated/GrCircleBlurFragmentProcessor.h
+++ b/src/gpu/effects/generated/GrCircleBlurFragmentProcessor.h
@@ -56,6 +56,6 @@
     SkString onDumpInfo() const override;
 #endif
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 #endif
diff --git a/src/gpu/effects/generated/GrCircleEffect.h b/src/gpu/effects/generated/GrCircleEffect.h
index 511ac57..7cdfab8 100644
--- a/src/gpu/effects/generated/GrCircleEffect.h
+++ b/src/gpu/effects/generated/GrCircleEffect.h
@@ -59,6 +59,6 @@
     SkString onDumpInfo() const override;
 #endif
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 #endif
diff --git a/src/gpu/effects/generated/GrClampFragmentProcessor.h b/src/gpu/effects/generated/GrClampFragmentProcessor.h
index 500e8d1..dee076c 100644
--- a/src/gpu/effects/generated/GrClampFragmentProcessor.h
+++ b/src/gpu/effects/generated/GrClampFragmentProcessor.h
@@ -53,6 +53,6 @@
     SkString onDumpInfo() const override;
 #endif
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 #endif
diff --git a/src/gpu/effects/generated/GrColorMatrixFragmentProcessor.h b/src/gpu/effects/generated/GrColorMatrixFragmentProcessor.h
index c5b1ee8..b0ace03 100644
--- a/src/gpu/effects/generated/GrColorMatrixFragmentProcessor.h
+++ b/src/gpu/effects/generated/GrColorMatrixFragmentProcessor.h
@@ -91,6 +91,6 @@
     SkString onDumpInfo() const override;
 #endif
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 #endif
diff --git a/src/gpu/effects/generated/GrComposeLerpEffect.h b/src/gpu/effects/generated/GrComposeLerpEffect.h
index 93fae88..83b21cf 100644
--- a/src/gpu/effects/generated/GrComposeLerpEffect.h
+++ b/src/gpu/effects/generated/GrComposeLerpEffect.h
@@ -45,6 +45,6 @@
     SkString onDumpInfo() const override;
 #endif
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 #endif
diff --git a/src/gpu/effects/generated/GrConfigConversionEffect.h b/src/gpu/effects/generated/GrConfigConversionEffect.h
index 289abfd..3e292ba 100644
--- a/src/gpu/effects/generated/GrConfigConversionEffect.h
+++ b/src/gpu/effects/generated/GrConfigConversionEffect.h
@@ -55,6 +55,6 @@
     SkString onDumpInfo() const override;
 #endif
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 #endif
diff --git a/src/gpu/effects/generated/GrConstColorProcessor.h b/src/gpu/effects/generated/GrConstColorProcessor.h
index 2d29ce4..857f72c 100644
--- a/src/gpu/effects/generated/GrConstColorProcessor.h
+++ b/src/gpu/effects/generated/GrConstColorProcessor.h
@@ -45,6 +45,6 @@
     SkString onDumpInfo() const override;
 #endif
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 #endif
diff --git a/src/gpu/effects/generated/GrDeviceSpaceEffect.h b/src/gpu/effects/generated/GrDeviceSpaceEffect.h
index 854c8ea..a387a28 100644
--- a/src/gpu/effects/generated/GrDeviceSpaceEffect.h
+++ b/src/gpu/effects/generated/GrDeviceSpaceEffect.h
@@ -44,6 +44,6 @@
     SkString onDumpInfo() const override;
 #endif
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 #endif
diff --git a/src/gpu/effects/generated/GrDitherEffect.h b/src/gpu/effects/generated/GrDitherEffect.h
index cdbd32d..033298c 100644
--- a/src/gpu/effects/generated/GrDitherEffect.h
+++ b/src/gpu/effects/generated/GrDitherEffect.h
@@ -48,6 +48,6 @@
     SkString onDumpInfo() const override;
 #endif
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 #endif
diff --git a/src/gpu/effects/generated/GrEllipseEffect.h b/src/gpu/effects/generated/GrEllipseEffect.h
index 271d3cd..224850f 100644
--- a/src/gpu/effects/generated/GrEllipseEffect.h
+++ b/src/gpu/effects/generated/GrEllipseEffect.h
@@ -69,6 +69,6 @@
     SkString onDumpInfo() const override;
 #endif
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 #endif
diff --git a/src/gpu/effects/generated/GrHSLToRGBFilterEffect.h b/src/gpu/effects/generated/GrHSLToRGBFilterEffect.h
index 9cba272..134e15e 100644
--- a/src/gpu/effects/generated/GrHSLToRGBFilterEffect.h
+++ b/src/gpu/effects/generated/GrHSLToRGBFilterEffect.h
@@ -56,6 +56,6 @@
     SkString onDumpInfo() const override;
 #endif
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 #endif
diff --git a/src/gpu/effects/generated/GrHighContrastFilterEffect.h b/src/gpu/effects/generated/GrHighContrastFilterEffect.h
index 3c4e6c7..6fed590 100644
--- a/src/gpu/effects/generated/GrHighContrastFilterEffect.h
+++ b/src/gpu/effects/generated/GrHighContrastFilterEffect.h
@@ -70,6 +70,6 @@
     SkString onDumpInfo() const override;
 #endif
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 #endif
diff --git a/src/gpu/effects/generated/GrLumaColorFilterEffect.h b/src/gpu/effects/generated/GrLumaColorFilterEffect.h
index 3940f42..82908da 100644
--- a/src/gpu/effects/generated/GrLumaColorFilterEffect.h
+++ b/src/gpu/effects/generated/GrLumaColorFilterEffect.h
@@ -50,6 +50,6 @@
     SkString onDumpInfo() const override;
 #endif
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 #endif
diff --git a/src/gpu/effects/generated/GrMagnifierEffect.h b/src/gpu/effects/generated/GrMagnifierEffect.h
index 2f82259..fe3b57a 100644
--- a/src/gpu/effects/generated/GrMagnifierEffect.h
+++ b/src/gpu/effects/generated/GrMagnifierEffect.h
@@ -65,6 +65,6 @@
     SkString onDumpInfo() const override;
 #endif
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 #endif
diff --git a/src/gpu/effects/generated/GrMixerEffect.h b/src/gpu/effects/generated/GrMixerEffect.h
index b2b52a7..a3298a6 100644
--- a/src/gpu/effects/generated/GrMixerEffect.h
+++ b/src/gpu/effects/generated/GrMixerEffect.h
@@ -60,6 +60,6 @@
     SkString onDumpInfo() const override;
 #endif
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 #endif
diff --git a/src/gpu/effects/generated/GrOverrideInputFragmentProcessor.h b/src/gpu/effects/generated/GrOverrideInputFragmentProcessor.h
index 7c4886e..9db4df6 100644
--- a/src/gpu/effects/generated/GrOverrideInputFragmentProcessor.h
+++ b/src/gpu/effects/generated/GrOverrideInputFragmentProcessor.h
@@ -69,6 +69,6 @@
     SkString onDumpInfo() const override;
 #endif
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 #endif
diff --git a/src/gpu/effects/generated/GrRGBToHSLFilterEffect.h b/src/gpu/effects/generated/GrRGBToHSLFilterEffect.h
index 9d4c7cb..c05b34c 100644
--- a/src/gpu/effects/generated/GrRGBToHSLFilterEffect.h
+++ b/src/gpu/effects/generated/GrRGBToHSLFilterEffect.h
@@ -58,6 +58,6 @@
     SkString onDumpInfo() const override;
 #endif
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 #endif
diff --git a/src/gpu/effects/generated/GrRRectBlurEffect.h b/src/gpu/effects/generated/GrRRectBlurEffect.h
index 0e26c88..2c1329d 100644
--- a/src/gpu/effects/generated/GrRRectBlurEffect.h
+++ b/src/gpu/effects/generated/GrRRectBlurEffect.h
@@ -60,6 +60,6 @@
     SkString onDumpInfo() const override;
 #endif
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 #endif
diff --git a/src/gpu/effects/generated/GrRectBlurEffect.h b/src/gpu/effects/generated/GrRectBlurEffect.h
index 93491fc..b02527a 100644
--- a/src/gpu/effects/generated/GrRectBlurEffect.h
+++ b/src/gpu/effects/generated/GrRectBlurEffect.h
@@ -137,6 +137,6 @@
     SkString onDumpInfo() const override;
 #endif
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 #endif
diff --git a/src/gpu/gl/GrGLBuffer.h b/src/gpu/gl/GrGLBuffer.h
index d408e46..75e4c30 100644
--- a/src/gpu/gl/GrGLBuffer.h
+++ b/src/gpu/gl/GrGLBuffer.h
@@ -62,7 +62,7 @@
     size_t          fGLSizeInBytes;
     bool            fHasAttachedToTexture;
 
-    typedef GrGpuBuffer INHERITED;
+    using INHERITED = GrGpuBuffer;
 };
 
 #endif
diff --git a/src/gpu/gl/GrGLCaps.h b/src/gpu/gl/GrGLCaps.h
index c614d6c..8061a27 100644
--- a/src/gpu/gl/GrGLCaps.h
+++ b/src/gpu/gl/GrGLCaps.h
@@ -743,7 +743,7 @@
     GrGLFormat fColorTypeToFormatTable[kGrColorTypeCnt];
     void setColorTypeFormat(GrColorType, GrGLFormat);
 
-    typedef GrCaps INHERITED;
+    using INHERITED = GrCaps;
 };
 
 #endif
diff --git a/src/gpu/gl/GrGLContext.h b/src/gpu/gl/GrGLContext.h
index 2816bb8..72db71d 100644
--- a/src/gpu/gl/GrGLContext.h
+++ b/src/gpu/gl/GrGLContext.h
@@ -103,7 +103,7 @@
 
     mutable SkSL::Compiler* fCompiler;
 
-    typedef GrGLContextInfo INHERITED;
+    using INHERITED = GrGLContextInfo;
 };
 
 #endif
diff --git a/src/gpu/gl/GrGLGpu.h b/src/gpu/gl/GrGLGpu.h
index e681635..84ce09d 100644
--- a/src/gpu/gl/GrGLGpu.h
+++ b/src/gpu/gl/GrGLGpu.h
@@ -752,7 +752,7 @@
 
     friend class GrGLPathRendering; // For accessing setTextureUnit.
 
-    typedef GrGpu INHERITED;
+    using INHERITED = GrGpu;
 };
 
 #endif
diff --git a/src/gpu/gl/GrGLOpsRenderPass.h b/src/gpu/gl/GrGLOpsRenderPass.h
index 27dc282..d657ef2 100644
--- a/src/gpu/gl/GrGLOpsRenderPass.h
+++ b/src/gpu/gl/GrGLOpsRenderPass.h
@@ -91,7 +91,7 @@
     SkDEBUGCODE(bool fDidBindVertexBuffer = false;)
     SkDEBUGCODE(bool fDidBindInstanceBuffer = false;)
 
-    typedef GrOpsRenderPass INHERITED;
+    using INHERITED = GrOpsRenderPass;
 };
 
 #endif
diff --git a/src/gpu/gl/GrGLPath.h b/src/gpu/gl/GrGLPath.h
index 9050120..f65fa15 100644
--- a/src/gpu/gl/GrGLPath.h
+++ b/src/gpu/gl/GrGLPath.h
@@ -50,7 +50,7 @@
     bool fShouldStroke;
     bool fShouldFill;
 
-    typedef GrPath INHERITED;
+    using INHERITED = GrPath;
 };
 
 #endif
diff --git a/src/gpu/gl/GrGLProgram.h b/src/gpu/gl/GrGLProgram.h
index 6f2e4b5..0394af8 100644
--- a/src/gpu/gl/GrGLProgram.h
+++ b/src/gpu/gl/GrGLProgram.h
@@ -179,7 +179,7 @@
 
     int fNumTextureSamplers;
 
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 };
 
 #endif
diff --git a/src/gpu/gl/GrGLProgramDataManager.h b/src/gpu/gl/GrGLProgramDataManager.h
index cd9719d..531f7f0 100644
--- a/src/gpu/gl/GrGLProgramDataManager.h
+++ b/src/gpu/gl/GrGLProgramDataManager.h
@@ -110,7 +110,7 @@
     GrGLGpu* fGpu;
     GrGLuint fProgramID;
 
-    typedef GrGLSLProgramDataManager INHERITED;
+    using INHERITED = GrGLSLProgramDataManager;
 };
 
 #endif
diff --git a/src/gpu/gl/GrGLRenderTarget.h b/src/gpu/gl/GrGLRenderTarget.h
index bbf53fd..bec156d 100644
--- a/src/gpu/gl/GrGLRenderTarget.h
+++ b/src/gpu/gl/GrGLRenderTarget.h
@@ -105,7 +105,7 @@
     // the IDs are just required for the computation in totalSamples we cache that result here.
     int         fNumSamplesOwnedPerPixel;
 
-    typedef GrRenderTarget INHERITED;
+    using INHERITED = GrRenderTarget;
 };
 
 #endif
diff --git a/src/gpu/gl/GrGLSemaphore.h b/src/gpu/gl/GrGLSemaphore.h
index 75880aa..bbfcce6 100644
--- a/src/gpu/gl/GrGLSemaphore.h
+++ b/src/gpu/gl/GrGLSemaphore.h
@@ -51,7 +51,7 @@
     GrGLsync fSync;
     bool     fIsOwned;
 
-    typedef GrSemaphore INHERITED;
+    using INHERITED = GrSemaphore;
 };
 
 #endif
diff --git a/src/gpu/gl/GrGLStencilAttachment.h b/src/gpu/gl/GrGLStencilAttachment.h
index 5be4954..59514b3 100644
--- a/src/gpu/gl/GrGLStencilAttachment.h
+++ b/src/gpu/gl/GrGLStencilAttachment.h
@@ -61,7 +61,7 @@
     // us how many bits of stencil there are).
     GrGLuint fRenderbufferID;
 
-    typedef GrStencilAttachment INHERITED;
+    using INHERITED = GrStencilAttachment;
 };
 
 #endif
diff --git a/src/gpu/gl/GrGLTexture.h b/src/gpu/gl/GrGLTexture.h
index 982c0b6..f65a19e 100644
--- a/src/gpu/gl/GrGLTexture.h
+++ b/src/gpu/gl/GrGLTexture.h
@@ -84,7 +84,7 @@
     GrBackendObjectOwnership fTextureIDOwnership;
     bool fBaseLevelHasBeenBoundToFBO = false;
 
-    typedef GrTexture INHERITED;
+    using INHERITED = GrTexture;
 };
 
 #endif
diff --git a/src/gpu/gl/GrGLUniformHandler.h b/src/gpu/gl/GrGLUniformHandler.h
index 607835b..76e8e3c 100644
--- a/src/gpu/gl/GrGLUniformHandler.h
+++ b/src/gpu/gl/GrGLUniformHandler.h
@@ -82,7 +82,7 @@
 
     friend class GrGLProgramBuilder;
 
-    typedef GrGLSLUniformHandler INHERITED;
+    using INHERITED = GrGLSLUniformHandler;
 };
 
 #endif
diff --git a/src/gpu/gl/GrGLVaryingHandler.h b/src/gpu/gl/GrGLVaryingHandler.h
index da35e66..f60936b 100644
--- a/src/gpu/gl/GrGLVaryingHandler.h
+++ b/src/gpu/gl/GrGLVaryingHandler.h
@@ -29,7 +29,7 @@
 
     friend class GrGLProgramBuilder;
 
-    typedef GrGLSLVaryingHandler INHERITED;
+    using INHERITED = GrGLSLVaryingHandler;
 };
 
 #endif
diff --git a/src/gpu/gl/builders/GrGLProgramBuilder.h b/src/gpu/gl/builders/GrGLProgramBuilder.h
index baf319d..9b2ae21 100644
--- a/src/gpu/gl/builders/GrGLProgramBuilder.h
+++ b/src/gpu/gl/builders/GrGLProgramBuilder.h
@@ -100,6 +100,6 @@
     // (all remaining bytes) char[] binary
     sk_sp<SkData> fCached;
 
-    typedef GrGLSLProgramBuilder INHERITED;
+    using INHERITED = GrGLSLProgramBuilder;
 };
 #endif
diff --git a/src/gpu/glsl/GrGLSLGeometryProcessor.h b/src/gpu/glsl/GrGLSLGeometryProcessor.h
index 37e7dc4..7ce8a30 100644
--- a/src/gpu/glsl/GrGLSLGeometryProcessor.h
+++ b/src/gpu/glsl/GrGLSLGeometryProcessor.h
@@ -121,7 +121,7 @@
     };
     SkTArray<TransformInfo> fTransformInfos;
 
-    typedef GrGLSLPrimitiveProcessor INHERITED;
+    using INHERITED = GrGLSLPrimitiveProcessor;
 };
 
 #endif
diff --git a/src/gpu/glsl/GrGLSLProgramDataManager.h b/src/gpu/glsl/GrGLSLProgramDataManager.h
index 5fad1b5..83eb87c 100644
--- a/src/gpu/glsl/GrGLSLProgramDataManager.h
+++ b/src/gpu/glsl/GrGLSLProgramDataManager.h
@@ -67,7 +67,7 @@
     GrGLSLProgramDataManager() {}
 
 private:
-    typedef SkNoncopyable INHERITED;
+    using INHERITED = SkNoncopyable;
 };
 
 #endif
diff --git a/src/gpu/glsl/GrGLSLVertexGeoBuilder.h b/src/gpu/glsl/GrGLSLVertexGeoBuilder.h
index 914dbfa..127c4f8 100644
--- a/src/gpu/glsl/GrGLSLVertexGeoBuilder.h
+++ b/src/gpu/glsl/GrGLSLVertexGeoBuilder.h
@@ -28,7 +28,7 @@
 
     friend class GrGLSLGeometryProcessor;
 
-    typedef GrGLSLShaderBuilder INHERITED;
+    using INHERITED = GrGLSLShaderBuilder;
 };
 
 
@@ -41,7 +41,7 @@
 
     friend class GrGLProgramBuilder;
 
-    typedef GrGLSLVertexGeoBuilder INHERITED;
+    using INHERITED = GrGLSLVertexGeoBuilder;
 };
 
 
@@ -80,7 +80,7 @@
 
     friend class GrGLProgramBuilder;
 
-    typedef GrGLSLVertexGeoBuilder INHERITED;
+    using INHERITED = GrGLSLVertexGeoBuilder;
 };
 
 #endif
diff --git a/src/gpu/gradients/generated/GrClampedGradientEffect.h b/src/gpu/gradients/generated/GrClampedGradientEffect.h
index 01a5f45..03230b2 100644
--- a/src/gpu/gradients/generated/GrClampedGradientEffect.h
+++ b/src/gpu/gradients/generated/GrClampedGradientEffect.h
@@ -66,6 +66,6 @@
     SkString onDumpInfo() const override;
 #endif
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 #endif
diff --git a/src/gpu/gradients/generated/GrDualIntervalGradientColorizer.h b/src/gpu/gradients/generated/GrDualIntervalGradientColorizer.h
index d271b76..d4481fd 100644
--- a/src/gpu/gradients/generated/GrDualIntervalGradientColorizer.h
+++ b/src/gpu/gradients/generated/GrDualIntervalGradientColorizer.h
@@ -54,6 +54,6 @@
     SkString onDumpInfo() const override;
 #endif
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 #endif
diff --git a/src/gpu/gradients/generated/GrLinearGradientLayout.h b/src/gpu/gradients/generated/GrLinearGradientLayout.h
index f3b4455..bd5edaa 100644
--- a/src/gpu/gradients/generated/GrLinearGradientLayout.h
+++ b/src/gpu/gradients/generated/GrLinearGradientLayout.h
@@ -42,6 +42,6 @@
     SkString onDumpInfo() const override;
 #endif
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 #endif
diff --git a/src/gpu/gradients/generated/GrRadialGradientLayout.h b/src/gpu/gradients/generated/GrRadialGradientLayout.h
index 677f530..d713a04 100644
--- a/src/gpu/gradients/generated/GrRadialGradientLayout.h
+++ b/src/gpu/gradients/generated/GrRadialGradientLayout.h
@@ -42,6 +42,6 @@
     SkString onDumpInfo() const override;
 #endif
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 #endif
diff --git a/src/gpu/gradients/generated/GrSingleIntervalGradientColorizer.h b/src/gpu/gradients/generated/GrSingleIntervalGradientColorizer.h
index 9490c29..96e0ae2 100644
--- a/src/gpu/gradients/generated/GrSingleIntervalGradientColorizer.h
+++ b/src/gpu/gradients/generated/GrSingleIntervalGradientColorizer.h
@@ -43,6 +43,6 @@
     SkString onDumpInfo() const override;
 #endif
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 #endif
diff --git a/src/gpu/gradients/generated/GrSweepGradientLayout.h b/src/gpu/gradients/generated/GrSweepGradientLayout.h
index 4e58ff1..b0579c2 100644
--- a/src/gpu/gradients/generated/GrSweepGradientLayout.h
+++ b/src/gpu/gradients/generated/GrSweepGradientLayout.h
@@ -46,6 +46,6 @@
     SkString onDumpInfo() const override;
 #endif
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 #endif
diff --git a/src/gpu/gradients/generated/GrTiledGradientEffect.h b/src/gpu/gradients/generated/GrTiledGradientEffect.h
index 0107701..2c8e259 100644
--- a/src/gpu/gradients/generated/GrTiledGradientEffect.h
+++ b/src/gpu/gradients/generated/GrTiledGradientEffect.h
@@ -61,6 +61,6 @@
     SkString onDumpInfo() const override;
 #endif
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 #endif
diff --git a/src/gpu/gradients/generated/GrTwoPointConicalGradientLayout.h b/src/gpu/gradients/generated/GrTwoPointConicalGradientLayout.h
index 866f5be..122f567 100644
--- a/src/gpu/gradients/generated/GrTwoPointConicalGradientLayout.h
+++ b/src/gpu/gradients/generated/GrTwoPointConicalGradientLayout.h
@@ -64,6 +64,6 @@
     SkString onDumpInfo() const override;
 #endif
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 #endif
diff --git a/src/gpu/gradients/generated/GrUnrolledBinaryGradientColorizer.h b/src/gpu/gradients/generated/GrUnrolledBinaryGradientColorizer.h
index b7f992f..02208aa 100644
--- a/src/gpu/gradients/generated/GrUnrolledBinaryGradientColorizer.h
+++ b/src/gpu/gradients/generated/GrUnrolledBinaryGradientColorizer.h
@@ -96,6 +96,6 @@
     SkString onDumpInfo() const override;
 #endif
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 #endif
diff --git a/src/gpu/mock/GrMockBuffer.h b/src/gpu/mock/GrMockBuffer.h
index 17b56a0..684355a 100644
--- a/src/gpu/mock/GrMockBuffer.h
+++ b/src/gpu/mock/GrMockBuffer.h
@@ -29,7 +29,7 @@
     void onUnmap() override { sk_free(fMapPtr); }
     bool onUpdateData(const void* src, size_t srcSizeInBytes) override { return true; }
 
-    typedef GrGpuBuffer INHERITED;
+    using INHERITED = GrGpuBuffer;
 };
 
 #endif
diff --git a/src/gpu/mock/GrMockCaps.h b/src/gpu/mock/GrMockCaps.h
index 80346d1..0b1756f 100644
--- a/src/gpu/mock/GrMockCaps.h
+++ b/src/gpu/mock/GrMockCaps.h
@@ -205,7 +205,7 @@
     static const int kMaxSampleCnt = 16;
 
     GrMockOptions fOptions;
-    typedef GrCaps INHERITED;
+    using INHERITED = GrCaps;
 };
 
 #endif
diff --git a/src/gpu/mock/GrMockGpu.h b/src/gpu/mock/GrMockGpu.h
index 8a03565..48e9e3d 100644
--- a/src/gpu/mock/GrMockGpu.h
+++ b/src/gpu/mock/GrMockGpu.h
@@ -192,7 +192,7 @@
 
     SkTHashSet<int> fOutstandingTestingOnlyTextureIDs;
 
-    typedef GrGpu INHERITED;
+    using INHERITED = GrGpu;
 };
 
 #endif
diff --git a/src/gpu/mock/GrMockOpsRenderPass.h b/src/gpu/mock/GrMockOpsRenderPass.h
index 93ced13..c9c6ffa 100644
--- a/src/gpu/mock/GrMockOpsRenderPass.h
+++ b/src/gpu/mock/GrMockOpsRenderPass.h
@@ -63,7 +63,7 @@
     GrLoadOp fColorLoadOp;
     int fNumDraws = 0;
 
-    typedef GrOpsRenderPass INHERITED;
+    using INHERITED = GrOpsRenderPass;
 };
 
 #endif
diff --git a/src/gpu/mock/GrMockStencilAttachment.h b/src/gpu/mock/GrMockStencilAttachment.h
index 63b7b4e..9faf777 100644
--- a/src/gpu/mock/GrMockStencilAttachment.h
+++ b/src/gpu/mock/GrMockStencilAttachment.h
@@ -23,7 +23,7 @@
         return std::max(1, (int)(this->bits() / sizeof(char))) * this->width() * this->height();
     }
 
-    typedef GrStencilAttachment INHERITED;
+    using INHERITED = GrStencilAttachment;
 };
 
 #endif
diff --git a/src/gpu/mock/GrMockTexture.h b/src/gpu/mock/GrMockTexture.h
index 14cd4ce..4bc72d7 100644
--- a/src/gpu/mock/GrMockTexture.h
+++ b/src/gpu/mock/GrMockTexture.h
@@ -74,7 +74,7 @@
 private:
     GrMockTextureInfo fInfo;
 
-    typedef GrTexture INHERITED;
+    using INHERITED = GrTexture;
 };
 
 class GrMockRenderTarget : public GrRenderTarget {
@@ -140,7 +140,7 @@
 private:
     GrMockRenderTargetInfo fInfo;
 
-    typedef GrRenderTarget INHERITED;
+    using INHERITED = GrRenderTarget;
 };
 
 class GrMockTextureRenderTarget : public GrMockTexture, public GrMockRenderTarget {
diff --git a/src/gpu/mtl/GrMtlBuffer.h b/src/gpu/mtl/GrMtlBuffer.h
index 1376823..5d89909 100644
--- a/src/gpu/mtl/GrMtlBuffer.h
+++ b/src/gpu/mtl/GrMtlBuffer.h
@@ -51,7 +51,7 @@
     size_t        fOffset;       // offset into shared buffer for dynamic buffers
     id<MTLBuffer> fMappedBuffer; // buffer used by static buffers for uploads
 
-    typedef GrGpuBuffer INHERITED;
+    using INHERITED = GrGpuBuffer;
 };
 
 #endif
diff --git a/src/gpu/mtl/GrMtlCaps.h b/src/gpu/mtl/GrMtlCaps.h
index d7d22a9..1e1ed29 100644
--- a/src/gpu/mtl/GrMtlCaps.h
+++ b/src/gpu/mtl/GrMtlCaps.h
@@ -186,7 +186,7 @@
 
     StencilFormat fPreferredStencilFormat;
 
-    typedef GrCaps INHERITED;
+    using INHERITED = GrCaps;
 };
 
 #endif
diff --git a/src/gpu/mtl/GrMtlGpu.h b/src/gpu/mtl/GrMtlGpu.h
index 3c67790..6a8a24e 100644
--- a/src/gpu/mtl/GrMtlGpu.h
+++ b/src/gpu/mtl/GrMtlGpu.h
@@ -278,7 +278,7 @@
 
     bool fDisconnected;
 
-    typedef GrGpu INHERITED;
+    using INHERITED = GrGpu;
 };
 
 #endif
diff --git a/src/gpu/mtl/GrMtlOpsRenderPass.h b/src/gpu/mtl/GrMtlOpsRenderPass.h
index bc042bc..2fa52f0 100644
--- a/src/gpu/mtl/GrMtlOpsRenderPass.h
+++ b/src/gpu/mtl/GrMtlOpsRenderPass.h
@@ -76,7 +76,7 @@
         size_t fOffset;
     } fBufferBindings[kNumBindings];
 
-    typedef GrOpsRenderPass INHERITED;
+    using INHERITED = GrOpsRenderPass;
 };
 
 #endif
diff --git a/src/gpu/mtl/GrMtlPipelineStateBuilder.h b/src/gpu/mtl/GrMtlPipelineStateBuilder.h
index eed06eb..166d087 100644
--- a/src/gpu/mtl/GrMtlPipelineStateBuilder.h
+++ b/src/gpu/mtl/GrMtlPipelineStateBuilder.h
@@ -68,6 +68,6 @@
     GrMtlUniformHandler fUniformHandler;
     GrMtlVaryingHandler fVaryingHandler;
 
-    typedef GrGLSLProgramBuilder INHERITED;
+    using INHERITED = GrGLSLProgramBuilder;
 };
 #endif
diff --git a/src/gpu/mtl/GrMtlRenderTarget.h b/src/gpu/mtl/GrMtlRenderTarget.h
index f6b5124..414b8b5 100644
--- a/src/gpu/mtl/GrMtlRenderTarget.h
+++ b/src/gpu/mtl/GrMtlRenderTarget.h
@@ -81,7 +81,7 @@
 
     bool completeStencilAttachment() override;
 
-    typedef GrRenderTarget INHERITED;
+    using INHERITED = GrRenderTarget;
 };
 
 
diff --git a/src/gpu/mtl/GrMtlSemaphore.h b/src/gpu/mtl/GrMtlSemaphore.h
index 3be6819..6e73d4d 100644
--- a/src/gpu/mtl/GrMtlSemaphore.h
+++ b/src/gpu/mtl/GrMtlSemaphore.h
@@ -38,7 +38,7 @@
     id<MTLEvent> fEvent SK_API_AVAILABLE(macos(10.14), ios(12.0));
     uint64_t     fValue;
 
-    typedef GrSemaphore INHERITED;
+    using INHERITED = GrSemaphore;
 };
 
 #endif
diff --git a/src/gpu/mtl/GrMtlTexture.h b/src/gpu/mtl/GrMtlTexture.h
index e13390f..159bedb 100644
--- a/src/gpu/mtl/GrMtlTexture.h
+++ b/src/gpu/mtl/GrMtlTexture.h
@@ -73,7 +73,7 @@
 
     id<MTLTexture> fTexture;
 
-    typedef GrTexture INHERITED;
+    using INHERITED = GrTexture;
 };
 
 #endif
diff --git a/src/gpu/mtl/GrMtlUniformHandler.h b/src/gpu/mtl/GrMtlUniformHandler.h
index f5cc8d7..2492618 100644
--- a/src/gpu/mtl/GrMtlUniformHandler.h
+++ b/src/gpu/mtl/GrMtlUniformHandler.h
@@ -101,7 +101,7 @@
 
     friend class GrMtlPipelineStateBuilder;
 
-    typedef GrGLSLUniformHandler INHERITED;
+    using INHERITED = GrGLSLUniformHandler;
 };
 
 #endif
diff --git a/src/gpu/mtl/GrMtlVaryingHandler.h b/src/gpu/mtl/GrMtlVaryingHandler.h
index 80cd584..d01bc70 100644
--- a/src/gpu/mtl/GrMtlVaryingHandler.h
+++ b/src/gpu/mtl/GrMtlVaryingHandler.h
@@ -21,7 +21,7 @@
 
     friend class GrMtlPipelineStateBuilder;
 
-    typedef GrGLSLVaryingHandler INHERITED;
+    using INHERITED = GrGLSLVaryingHandler;
 };
 
 #endif
diff --git a/src/gpu/ops/GrAAConvexPathRenderer.cpp b/src/gpu/ops/GrAAConvexPathRenderer.cpp
index 45a9393..b28ada6 100644
--- a/src/gpu/ops/GrAAConvexPathRenderer.cpp
+++ b/src/gpu/ops/GrAAConvexPathRenderer.cpp
@@ -622,7 +622,7 @@
         }
 
     private:
-        typedef GrGLSLGeometryProcessor INHERITED;
+        using INHERITED = GrGLSLGeometryProcessor;
 
         SkMatrix      fLocalMatrix = SkMatrix::InvalidMatrix();
         UniformHandle fLocalMatrixUniform;
@@ -658,7 +658,7 @@
 
     GR_DECLARE_GEOMETRY_PROCESSOR_TEST
 
-    typedef GrGeometryProcessor INHERITED;
+    using INHERITED = GrGeometryProcessor;
 };
 
 GR_DEFINE_GEOMETRY_PROCESSOR_TEST(QuadEdgeEffect);
@@ -898,7 +898,7 @@
     SkTDArray<MeshDraw> fDraws;
     GrProgramInfo*      fProgramInfo = nullptr;
 
-    typedef GrMeshDrawOp INHERITED;
+    using INHERITED = GrMeshDrawOp;
 };
 
 }  // anonymous namespace
diff --git a/src/gpu/ops/GrAAHairLinePathRenderer.cpp b/src/gpu/ops/GrAAHairLinePathRenderer.cpp
index 05a6a95..bd77ece 100644
--- a/src/gpu/ops/GrAAHairLinePathRenderer.cpp
+++ b/src/gpu/ops/GrAAHairLinePathRenderer.cpp
@@ -981,7 +981,7 @@
     GrSimpleMesh*  fMeshes[3] = { nullptr };
     GrProgramInfo* fProgramInfos[3] = { nullptr };
 
-    typedef GrMeshDrawOp INHERITED;
+    using INHERITED = GrMeshDrawOp;
 };
 
 GR_MAKE_BITFIELD_OPS(AAHairlineOp::Program)
diff --git a/src/gpu/ops/GrAAHairLinePathRenderer.h b/src/gpu/ops/GrAAHairLinePathRenderer.h
index c697435..bac3041 100644
--- a/src/gpu/ops/GrAAHairLinePathRenderer.h
+++ b/src/gpu/ops/GrAAHairLinePathRenderer.h
@@ -25,7 +25,7 @@
 
     bool onDrawPath(const DrawPathArgs&) override;
 
-    typedef GrPathRenderer INHERITED;
+    using INHERITED = GrPathRenderer;
 };
 
 
diff --git a/src/gpu/ops/GrAALinearizingConvexPathRenderer.cpp b/src/gpu/ops/GrAALinearizingConvexPathRenderer.cpp
index 0114673..53643c3 100644
--- a/src/gpu/ops/GrAALinearizingConvexPathRenderer.cpp
+++ b/src/gpu/ops/GrAALinearizingConvexPathRenderer.cpp
@@ -380,7 +380,7 @@
     SkTDArray<GrSimpleMesh*> fMeshes;
     GrProgramInfo*           fProgramInfo = nullptr;
 
-    typedef GrMeshDrawOp INHERITED;
+    using INHERITED = GrMeshDrawOp;
 };
 
 }  // anonymous namespace
diff --git a/src/gpu/ops/GrAtlasTextOp.h b/src/gpu/ops/GrAtlasTextOp.h
index 2fc0356..3b07e17 100644
--- a/src/gpu/ops/GrAtlasTextOp.h
+++ b/src/gpu/ops/GrAtlasTextOp.h
@@ -187,7 +187,7 @@
     int fGeoCount;
     int fNumGlyphs;
 
-    typedef GrMeshDrawOp INHERITED;
+    using INHERITED = GrMeshDrawOp;
 };
 
 #endif
diff --git a/src/gpu/ops/GrClearOp.h b/src/gpu/ops/GrClearOp.h
index faf77c3..f3491bd 100644
--- a/src/gpu/ops/GrClearOp.h
+++ b/src/gpu/ops/GrClearOp.h
@@ -71,7 +71,7 @@
     bool           fStencilInsideMask;
     Buffer         fBuffer;
 
-    typedef GrOp INHERITED;
+    using INHERITED = GrOp;
 };
 
 GR_MAKE_BITFIELD_CLASS_OPS(GrClearOp::Buffer)
diff --git a/src/gpu/ops/GrDashLinePathRenderer.h b/src/gpu/ops/GrDashLinePathRenderer.h
index 029f1ab..0bc172e 100644
--- a/src/gpu/ops/GrDashLinePathRenderer.h
+++ b/src/gpu/ops/GrDashLinePathRenderer.h
@@ -25,7 +25,7 @@
     bool onDrawPath(const DrawPathArgs&) override;
 
     sk_sp<GrGpu> fGpu;
-    typedef GrPathRenderer INHERITED;
+    using INHERITED = GrPathRenderer;
 };
 
 
diff --git a/src/gpu/ops/GrDashOp.cpp b/src/gpu/ops/GrDashOp.cpp
index 1637cae..c09b54f 100644
--- a/src/gpu/ops/GrDashOp.cpp
+++ b/src/gpu/ops/GrDashOp.cpp
@@ -735,7 +735,7 @@
     GrSimpleMesh*  fMesh = nullptr;
     GrProgramInfo* fProgramInfo = nullptr;
 
-    typedef GrMeshDrawOp INHERITED;
+    using INHERITED = GrMeshDrawOp;
 };
 
 std::unique_ptr<GrDrawOp> GrDashOp::MakeDashLineOp(GrRecordingContext* context,
@@ -852,7 +852,7 @@
 
     GR_DECLARE_GEOMETRY_PROCESSOR_TEST
 
-    typedef GrGeometryProcessor INHERITED;
+    using INHERITED = GrGeometryProcessor;
 };
 
 //////////////////////////////////////////////////////////////////////////////
@@ -880,7 +880,7 @@
     SkScalar      fPrevCenterX;
     SkScalar      fPrevIntervalLength;
 
-    typedef GrGLSLGeometryProcessor INHERITED;
+    using INHERITED = GrGLSLGeometryProcessor;
 };
 
 GLDashingCircleEffect::GLDashingCircleEffect() {
@@ -1062,7 +1062,7 @@
 
     GR_DECLARE_GEOMETRY_PROCESSOR_TEST
 
-    typedef GrGeometryProcessor INHERITED;
+    using INHERITED = GrGeometryProcessor;
 };
 
 //////////////////////////////////////////////////////////////////////////////
@@ -1086,7 +1086,7 @@
     SkMatrix      fLocalMatrix;
     UniformHandle fLocalMatrixUniform;
 
-    typedef GrGLSLGeometryProcessor INHERITED;
+    using INHERITED = GrGLSLGeometryProcessor;
 };
 
 GLDashingLineEffect::GLDashingLineEffect() : fColor(SK_PMColor4fILLEGAL) {}
diff --git a/src/gpu/ops/GrDefaultPathRenderer.cpp b/src/gpu/ops/GrDefaultPathRenderer.cpp
index 9d928ae..68a2329 100644
--- a/src/gpu/ops/GrDefaultPathRenderer.cpp
+++ b/src/gpu/ops/GrDefaultPathRenderer.cpp
@@ -528,7 +528,7 @@
     SkTDArray<GrSimpleMesh*> fMeshes;
     GrProgramInfo* fProgramInfo = nullptr;
 
-    typedef GrMeshDrawOp INHERITED;
+    using INHERITED = GrMeshDrawOp;
 };
 
 }  // anonymous namespace
diff --git a/src/gpu/ops/GrDefaultPathRenderer.h b/src/gpu/ops/GrDefaultPathRenderer.h
index 7b0a32d..38c734a 100644
--- a/src/gpu/ops/GrDefaultPathRenderer.h
+++ b/src/gpu/ops/GrDefaultPathRenderer.h
@@ -40,7 +40,7 @@
                           const GrStyledShape&,
                           bool stencilOnly);
 
-    typedef GrPathRenderer INHERITED;
+    using INHERITED = GrPathRenderer;
 };
 
 #endif
diff --git a/src/gpu/ops/GrDrawAtlasOp.cpp b/src/gpu/ops/GrDrawAtlasOp.cpp
index 0a224fa..1078ea5 100644
--- a/src/gpu/ops/GrDrawAtlasOp.cpp
+++ b/src/gpu/ops/GrDrawAtlasOp.cpp
@@ -86,7 +86,7 @@
     GrSimpleMesh* fMesh = nullptr;
     GrProgramInfo* fProgramInfo = nullptr;
 
-    typedef GrMeshDrawOp INHERITED;
+    using INHERITED = GrMeshDrawOp;
 };
 
 static GrGeometryProcessor* make_gp(SkArenaAlloc* arena,
diff --git a/src/gpu/ops/GrDrawOp.h b/src/gpu/ops/GrDrawOp.h
index 3385b64..f023eb3 100644
--- a/src/gpu/ops/GrDrawOp.h
+++ b/src/gpu/ops/GrDrawOp.h
@@ -60,7 +60,7 @@
 #endif
 
 private:
-    typedef GrOp INHERITED;
+    using INHERITED = GrOp;
 };
 
 GR_MAKE_BITFIELD_CLASS_OPS(GrDrawOp::FixedFunctionFlags);
diff --git a/src/gpu/ops/GrDrawPathOp.h b/src/gpu/ops/GrDrawPathOp.h
index 9ecf53a..4c493cd 100644
--- a/src/gpu/ops/GrDrawPathOp.h
+++ b/src/gpu/ops/GrDrawPathOp.h
@@ -68,7 +68,7 @@
     bool fDoAA;
     GrProcessorSet fProcessorSet;
 
-    typedef GrDrawOp INHERITED;
+    using INHERITED = GrDrawOp;
 };
 
 class GrDrawPathOp final : public GrDrawPathOpBase {
@@ -98,7 +98,7 @@
 
     sk_sp<const GrPath> fPath;
 
-    typedef GrDrawPathOpBase INHERITED;
+    using INHERITED = GrDrawPathOpBase;
 };
 
 #endif
diff --git a/src/gpu/ops/GrDrawVerticesOp.cpp b/src/gpu/ops/GrDrawVerticesOp.cpp
index 9d53933..4df9803 100644
--- a/src/gpu/ops/GrDrawVerticesOp.cpp
+++ b/src/gpu/ops/GrDrawVerticesOp.cpp
@@ -363,7 +363,7 @@
         };
         std::vector<MarkedUniform> fCustomMatrixUniforms;
 
-        typedef GrGLSLGeometryProcessor INHERITED;
+        using INHERITED = GrGLSLGeometryProcessor;
     };
 
     void getGLSLProcessorKey(const GrShaderCaps& caps, GrProcessorKeyBuilder* b) const override {
@@ -431,7 +431,7 @@
     int                          fCustomAttributeCount;
     const MarkedMatrices*        fCustomMatrices;
 
-    typedef GrGeometryProcessor INHERITED;
+    using INHERITED = GrGeometryProcessor;
 };
 
 class DrawVerticesOp final : public GrMeshDrawOp {
@@ -533,7 +533,7 @@
     GrSimpleMesh*  fMesh = nullptr;
     GrProgramInfo* fProgramInfo = nullptr;
 
-    typedef GrMeshDrawOp INHERITED;
+    using INHERITED = GrMeshDrawOp;
 };
 
 DrawVerticesOp::DrawVerticesOp(const Helper::MakeArgs& helperArgs,
diff --git a/src/gpu/ops/GrDrawableOp.h b/src/gpu/ops/GrDrawableOp.h
index 646e647..18fee75 100644
--- a/src/gpu/ops/GrDrawableOp.h
+++ b/src/gpu/ops/GrDrawableOp.h
@@ -47,7 +47,7 @@
 
     std::unique_ptr<SkDrawable::GpuDrawHandler> fDrawable;
 
-    typedef GrOp INHERITED;
+    using INHERITED = GrOp;
 };
 
 #endif
diff --git a/src/gpu/ops/GrFillRRectOp.cpp b/src/gpu/ops/GrFillRRectOp.cpp
index 25068ed..d4d8faf 100644
--- a/src/gpu/ops/GrFillRRectOp.cpp
+++ b/src/gpu/ops/GrFillRRectOp.cpp
@@ -125,7 +125,7 @@
     // onExecute. In the prePrepared case it will have been stored in the record-time arena.
     GrProgramInfo* fProgramInfo = nullptr;
 
-    typedef GrMeshDrawOp INHERITED;
+    using INHERITED = GrMeshDrawOp;
 };
 
 GR_MAKE_BITFIELD_CLASS_OPS(FillRRectOp::ProcessorFlags)
@@ -361,7 +361,7 @@
     class CoverageImpl;
     class MSAAImpl;
 
-    typedef GrGeometryProcessor INHERITED;
+    using INHERITED = GrGeometryProcessor;
 };
 
 constexpr GrPrimitiveProcessor::Attribute FillRRectOp::Processor::kVertexAttribs[];
diff --git a/src/gpu/ops/GrFillRectOp.cpp b/src/gpu/ops/GrFillRectOp.cpp
index ecab670..1d4b30c 100644
--- a/src/gpu/ops/GrFillRectOp.cpp
+++ b/src/gpu/ops/GrFillRectOp.cpp
@@ -456,7 +456,7 @@
     sk_sp<const GrBuffer> fIndexBuffer;
     int fBaseVertex;
 
-    typedef GrMeshDrawOp INHERITED;
+    using INHERITED = GrMeshDrawOp;
 };
 
 } // anonymous namespace
diff --git a/src/gpu/ops/GrLatticeOp.cpp b/src/gpu/ops/GrLatticeOp.cpp
index 726a9d2..03ac020 100644
--- a/src/gpu/ops/GrLatticeOp.cpp
+++ b/src/gpu/ops/GrLatticeOp.cpp
@@ -115,7 +115,7 @@
     sk_sp<GrColorSpaceXform> fColorSpaceXform;
     TextureSampler fSampler;
 
-    typedef GrGeometryProcessor INHERITED;
+    using INHERITED = GrGeometryProcessor;
 };
 
 class NonAALatticeOp final : public GrMeshDrawOp {
@@ -358,7 +358,7 @@
     GrSimpleMesh*  fMesh = nullptr;
     GrProgramInfo* fProgramInfo = nullptr;
 
-    typedef GrMeshDrawOp INHERITED;
+    using INHERITED = GrMeshDrawOp;
 };
 
 }  // anonymous namespace
diff --git a/src/gpu/ops/GrMeshDrawOp.h b/src/gpu/ops/GrMeshDrawOp.h
index becfc12..baf81f5 100644
--- a/src/gpu/ops/GrMeshDrawOp.h
+++ b/src/gpu/ops/GrMeshDrawOp.h
@@ -88,7 +88,7 @@
         using PatternHelper::vertices;
 
     private:
-        typedef PatternHelper INHERITED;
+        using INHERITED = PatternHelper;
     };
 
     static bool CombinedQuadCountWillOverflow(GrAAType aaType,
@@ -124,7 +124,7 @@
     void onPrepare(GrOpFlushState* state) final;
 
     virtual void onPrepareDraws(Target*) = 0;
-    typedef GrDrawOp INHERITED;
+    using INHERITED = GrDrawOp;
 };
 
 class GrMeshDrawOp::Target {
diff --git a/src/gpu/ops/GrOvalOpFactory.cpp b/src/gpu/ops/GrOvalOpFactory.cpp
index 37b93ae..ab3299b 100644
--- a/src/gpu/ops/GrOvalOpFactory.cpp
+++ b/src/gpu/ops/GrOvalOpFactory.cpp
@@ -224,7 +224,7 @@
         }
 
     private:
-        typedef GrGLSLGeometryProcessor INHERITED;
+        using INHERITED = GrGLSLGeometryProcessor;
 
         SkMatrix      fLocalMatrix = SkMatrix::InvalidMatrix();
         UniformHandle fLocalMatrixUniform;
@@ -244,7 +244,7 @@
     bool fStroke;
     GR_DECLARE_GEOMETRY_PROCESSOR_TEST
 
-    typedef GrGeometryProcessor INHERITED;
+    using INHERITED = GrGeometryProcessor;
 };
 
 GR_DEFINE_GEOMETRY_PROCESSOR_TEST(CircleGeometryProcessor);
@@ -484,7 +484,7 @@
         }
 
     private:
-        typedef GrGLSLGeometryProcessor INHERITED;
+        using INHERITED = GrGLSLGeometryProcessor;
 
         SkMatrix      fLocalMatrix = SkMatrix::InvalidMatrix();
         UniformHandle fLocalMatrixUniform;
@@ -498,7 +498,7 @@
 
     GR_DECLARE_GEOMETRY_PROCESSOR_TEST
 
-    typedef GrGeometryProcessor INHERITED;
+    using INHERITED = GrGeometryProcessor;
 };
 
 #if GR_TEST_UTILS
@@ -673,7 +673,7 @@
         }
 
     private:
-        typedef GrGLSLGeometryProcessor INHERITED;
+        using INHERITED = GrGLSLGeometryProcessor;
 
         SkMatrix      fLocalMatrix = SkMatrix::InvalidMatrix();
         UniformHandle fLocalMatrixUniform;
@@ -690,7 +690,7 @@
 
     GR_DECLARE_GEOMETRY_PROCESSOR_TEST
 
-    typedef GrGeometryProcessor INHERITED;
+    using INHERITED = GrGeometryProcessor;
 };
 
 GR_DEFINE_GEOMETRY_PROCESSOR_TEST(EllipseGeometryProcessor);
@@ -870,7 +870,7 @@
         SkMatrix      fViewMatrix;
         UniformHandle fViewMatrixUniform;
 
-        typedef GrGLSLGeometryProcessor INHERITED;
+        using INHERITED = GrGLSLGeometryProcessor;
     };
 
 
@@ -885,7 +885,7 @@
 
     GR_DECLARE_GEOMETRY_PROCESSOR_TEST
 
-    typedef GrGeometryProcessor INHERITED;
+    using INHERITED = GrGeometryProcessor;
 };
 
 GR_DEFINE_GEOMETRY_PROCESSOR_TEST(DIEllipseGeometryProcessor);
@@ -1476,7 +1476,7 @@
     GrSimpleMesh*  fMesh = nullptr;
     GrProgramInfo* fProgramInfo = nullptr;
 
-    typedef GrMeshDrawOp INHERITED;
+    using INHERITED = GrMeshDrawOp;
 };
 
 class ButtCapDashedCircleOp final : public GrMeshDrawOp {
@@ -1784,7 +1784,7 @@
     GrSimpleMesh*  fMesh = nullptr;
     GrProgramInfo* fProgramInfo = nullptr;
 
-    typedef GrMeshDrawOp INHERITED;
+    using INHERITED = GrMeshDrawOp;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -2065,7 +2065,7 @@
     GrSimpleMesh*  fMesh = nullptr;
     GrProgramInfo* fProgramInfo = nullptr;
 
-    typedef GrMeshDrawOp INHERITED;
+    using INHERITED = GrMeshDrawOp;
 };
 
 /////////////////////////////////////////////////////////////////////////////////////////////////
@@ -2333,7 +2333,7 @@
     GrSimpleMesh*  fMesh = nullptr;
     GrProgramInfo* fProgramInfo = nullptr;
 
-    typedef GrMeshDrawOp INHERITED;
+    using INHERITED = GrMeshDrawOp;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -2793,7 +2793,7 @@
     GrSimpleMesh*  fMesh = nullptr;
     GrProgramInfo* fProgramInfo = nullptr;
 
-    typedef GrMeshDrawOp INHERITED;
+    using INHERITED = GrMeshDrawOp;
 };
 
 static const int kNumRRectsInIndexBuffer = 256;
@@ -3101,7 +3101,7 @@
     GrSimpleMesh*  fMesh = nullptr;
     GrProgramInfo* fProgramInfo = nullptr;
 
-    typedef GrMeshDrawOp INHERITED;
+    using INHERITED = GrMeshDrawOp;
 };
 
 std::unique_ptr<GrDrawOp> GrOvalOpFactory::MakeCircularRRectOp(GrRecordingContext* context,
diff --git a/src/gpu/ops/GrQuadPerEdgeAA.cpp b/src/gpu/ops/GrQuadPerEdgeAA.cpp
index cabd326..01bc935 100644
--- a/src/gpu/ops/GrQuadPerEdgeAA.cpp
+++ b/src/gpu/ops/GrQuadPerEdgeAA.cpp
@@ -804,7 +804,7 @@
     sk_sp<GrColorSpaceXform> fTextureColorSpaceXform;
     TextureSampler fSampler;
 
-    typedef GrGeometryProcessor INHERITED;
+    using INHERITED = GrGeometryProcessor;
 };
 
 GrGeometryProcessor* MakeProcessor(SkArenaAlloc* arena, const VertexSpec& spec) {
diff --git a/src/gpu/ops/GrRegionOp.cpp b/src/gpu/ops/GrRegionOp.cpp
index ec723a2..1c58183 100644
--- a/src/gpu/ops/GrRegionOp.cpp
+++ b/src/gpu/ops/GrRegionOp.cpp
@@ -192,7 +192,7 @@
     GrSimpleMesh*  fMesh = nullptr;
     GrProgramInfo* fProgramInfo = nullptr;
 
-    typedef GrMeshDrawOp INHERITED;
+    using INHERITED = GrMeshDrawOp;
 };
 
 }  // anonymous namespace
diff --git a/src/gpu/ops/GrShadowRRectOp.cpp b/src/gpu/ops/GrShadowRRectOp.cpp
index 774dc50..8e7f7d6 100644
--- a/src/gpu/ops/GrShadowRRectOp.cpp
+++ b/src/gpu/ops/GrShadowRRectOp.cpp
@@ -651,7 +651,7 @@
     GrSimpleMesh*      fMesh = nullptr;
     GrProgramInfo*     fProgramInfo = nullptr;
 
-    typedef GrMeshDrawOp INHERITED;
+    using INHERITED = GrMeshDrawOp;
 };
 
 }  // anonymous namespace
diff --git a/src/gpu/ops/GrSimpleMeshDrawOpHelperWithStencil.h b/src/gpu/ops/GrSimpleMeshDrawOpHelperWithStencil.h
index 9eb8b68..95628e5 100644
--- a/src/gpu/ops/GrSimpleMeshDrawOpHelperWithStencil.h
+++ b/src/gpu/ops/GrSimpleMeshDrawOpHelperWithStencil.h
@@ -86,7 +86,7 @@
 
 private:
     const GrUserStencilSettings* fStencilSettings;
-    typedef GrSimpleMeshDrawOpHelper INHERITED;
+    using INHERITED = GrSimpleMeshDrawOpHelper;
 };
 
 #endif
diff --git a/src/gpu/ops/GrSmallPathRenderer.cpp b/src/gpu/ops/GrSmallPathRenderer.cpp
index c3a7d72..c46ca51 100644
--- a/src/gpu/ops/GrSmallPathRenderer.cpp
+++ b/src/gpu/ops/GrSmallPathRenderer.cpp
@@ -678,7 +678,7 @@
     bool fGammaCorrect;
     bool fWideColor;
 
-    typedef GrMeshDrawOp INHERITED;
+    using INHERITED = GrMeshDrawOp;
 };
 
 bool GrSmallPathRenderer::onDrawPath(const DrawPathArgs& args) {
diff --git a/src/gpu/ops/GrSmallPathRenderer.h b/src/gpu/ops/GrSmallPathRenderer.h
index 3fdba12..fdbdc6f 100644
--- a/src/gpu/ops/GrSmallPathRenderer.h
+++ b/src/gpu/ops/GrSmallPathRenderer.h
@@ -39,7 +39,7 @@
 
     bool onDrawPath(const DrawPathArgs&) override;
 
-    typedef GrPathRenderer INHERITED;
+    using INHERITED = GrPathRenderer;
 };
 
 #endif
diff --git a/src/gpu/ops/GrStencilAndCoverPathRenderer.h b/src/gpu/ops/GrStencilAndCoverPathRenderer.h
index 8ed422d..36a8987 100644
--- a/src/gpu/ops/GrStencilAndCoverPathRenderer.h
+++ b/src/gpu/ops/GrStencilAndCoverPathRenderer.h
@@ -39,7 +39,7 @@
 
     GrResourceProvider* fResourceProvider;
 
-    typedef GrPathRenderer INHERITED;
+    using INHERITED = GrPathRenderer;
 };
 
 #endif
diff --git a/src/gpu/ops/GrStencilPathOp.h b/src/gpu/ops/GrStencilPathOp.h
index 6430b1d..edaf5b5 100644
--- a/src/gpu/ops/GrStencilPathOp.h
+++ b/src/gpu/ops/GrStencilPathOp.h
@@ -68,7 +68,7 @@
     GrScissorState            fScissor;
     sk_sp<const GrPath>       fPath;
 
-    typedef GrOp INHERITED;
+    using INHERITED = GrOp;
 };
 
 #endif
diff --git a/src/gpu/ops/GrStrokeRectOp.cpp b/src/gpu/ops/GrStrokeRectOp.cpp
index 8661301..fbdcb7a 100644
--- a/src/gpu/ops/GrStrokeRectOp.cpp
+++ b/src/gpu/ops/GrStrokeRectOp.cpp
@@ -264,7 +264,7 @@
     const static int kVertsPerHairlineRect = 5;
     const static int kVertsPerStrokeRect = 10;
 
-    typedef GrMeshDrawOp INHERITED;
+    using INHERITED = GrMeshDrawOp;
 };
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -508,7 +508,7 @@
     bool           fMiterStroke;
     bool           fWideColor;
 
-    typedef GrMeshDrawOp INHERITED;
+    using INHERITED = GrMeshDrawOp;
 };
 
 void AAStrokeRectOp::onCreateProgramInfo(const GrCaps* caps,
diff --git a/src/gpu/ops/GrTextureOp.cpp b/src/gpu/ops/GrTextureOp.cpp
index 35ede98..10e49cc 100644
--- a/src/gpu/ops/GrTextureOp.cpp
+++ b/src/gpu/ops/GrTextureOp.cpp
@@ -1100,7 +1100,7 @@
     // as an fProxyCnt-length array.
     ViewCountPair fViewCountPairs[1];
 
-    typedef GrMeshDrawOp INHERITED;
+    using INHERITED = GrMeshDrawOp;
 };
 
 }  // anonymous namespace
diff --git a/src/gpu/ops/GrTriangulatingPathRenderer.cpp b/src/gpu/ops/GrTriangulatingPathRenderer.cpp
index c36d489..49310db 100644
--- a/src/gpu/ops/GrTriangulatingPathRenderer.cpp
+++ b/src/gpu/ops/GrTriangulatingPathRenderer.cpp
@@ -408,7 +408,7 @@
     GrSimpleMesh*  fMesh = nullptr;
     GrProgramInfo* fProgramInfo = nullptr;
 
-    typedef GrMeshDrawOp INHERITED;
+    using INHERITED = GrMeshDrawOp;
 };
 
 }  // anonymous namespace
diff --git a/src/gpu/ops/GrTriangulatingPathRenderer.h b/src/gpu/ops/GrTriangulatingPathRenderer.h
index c2aa523..b78d8d8 100644
--- a/src/gpu/ops/GrTriangulatingPathRenderer.h
+++ b/src/gpu/ops/GrTriangulatingPathRenderer.h
@@ -33,7 +33,7 @@
     bool onDrawPath(const DrawPathArgs&) override;
     int fMaxVerbCount;
 
-    typedef GrPathRenderer INHERITED;
+    using INHERITED = GrPathRenderer;
 };
 
 #endif
diff --git a/src/gpu/text/GrAtlasManager.h b/src/gpu/text/GrAtlasManager.h
index d6c5c79..9005070 100644
--- a/src/gpu/text/GrAtlasManager.h
+++ b/src/gpu/text/GrAtlasManager.h
@@ -145,7 +145,7 @@
     sk_sp<const GrCaps> fCaps;
     GrDrawOpAtlasConfig fAtlasConfig;
 
-    typedef GrOnFlushCallbackObject INHERITED;
+    using INHERITED = GrOnFlushCallbackObject;
 };
 
 #endif // GrAtlasManager_DEFINED
diff --git a/src/gpu/text/GrSDFMaskFilter.cpp b/src/gpu/text/GrSDFMaskFilter.cpp
index 7bcaed3..8e77a18 100644
--- a/src/gpu/text/GrSDFMaskFilter.cpp
+++ b/src/gpu/text/GrSDFMaskFilter.cpp
@@ -31,7 +31,7 @@
 private:
     SK_FLATTENABLE_HOOKS(GrSDFMaskFilterImpl)
 
-    typedef SkMaskFilter INHERITED;
+    using INHERITED = SkMaskFilter;
     friend void gr_register_sdf_maskfilter_createproc();
 };
 
diff --git a/src/gpu/vk/GrVkAMDMemoryAllocator.h b/src/gpu/vk/GrVkAMDMemoryAllocator.h
index 8061d37..07963c1 100644
--- a/src/gpu/vk/GrVkAMDMemoryAllocator.h
+++ b/src/gpu/vk/GrVkAMDMemoryAllocator.h
@@ -75,7 +75,7 @@
 
     bool fPreferCachedCpuMemory;
 
-    typedef GrVkMemoryAllocator INHERITED;
+    using INHERITED = GrVkMemoryAllocator;
 };
 
 #endif // SK_USE_VMA
diff --git a/src/gpu/vk/GrVkBuffer.h b/src/gpu/vk/GrVkBuffer.h
index 4358340..3d4e80e 100644
--- a/src/gpu/vk/GrVkBuffer.h
+++ b/src/gpu/vk/GrVkBuffer.h
@@ -75,7 +75,7 @@
     private:
         void onRecycle() const override { this->unref(); }
 
-        typedef GrVkRecycledResource INHERITED;
+        using INHERITED = GrVkRecycledResource;
     };
 
     // convenience routine for raw buffer creation
@@ -117,7 +117,7 @@
     VkDeviceSize            fOffset;
     void*                   fMapPtr;
 
-    typedef SkNoncopyable INHERITED;
+    using INHERITED = SkNoncopyable;
 };
 
 #endif
diff --git a/src/gpu/vk/GrVkCaps.h b/src/gpu/vk/GrVkCaps.h
index 7b91a3c..9b37410 100644
--- a/src/gpu/vk/GrVkCaps.h
+++ b/src/gpu/vk/GrVkCaps.h
@@ -346,7 +346,7 @@
 
     bool fPreferCachedCpuMemory = true;
 
-    typedef GrCaps INHERITED;
+    using INHERITED = GrCaps;
 };
 
 #endif
diff --git a/src/gpu/vk/GrVkCommandBuffer.h b/src/gpu/vk/GrVkCommandBuffer.h
index fdc637e..35b2f13 100644
--- a/src/gpu/vk/GrVkCommandBuffer.h
+++ b/src/gpu/vk/GrVkCommandBuffer.h
@@ -323,7 +323,7 @@
     VkFence                                                     fSubmitFence;
     SkTArray<sk_sp<GrRefCntedCallback>>                         fFinishedProcs;
 
-    typedef GrVkCommandBuffer INHERITED;
+    using INHERITED = GrVkCommandBuffer;
 };
 
 class GrVkSecondaryCommandBuffer : public GrVkCommandBuffer {
@@ -349,7 +349,7 @@
     // Used for accessing fIsActive (on GrVkCommandBuffer)
     friend class GrVkPrimaryCommandBuffer;
 
-    typedef GrVkCommandBuffer INHERITED;
+    using INHERITED = GrVkCommandBuffer;
 };
 
 #endif
diff --git a/src/gpu/vk/GrVkDescriptorPool.h b/src/gpu/vk/GrVkDescriptorPool.h
index 32e613d..888dcb3 100644
--- a/src/gpu/vk/GrVkDescriptorPool.h
+++ b/src/gpu/vk/GrVkDescriptorPool.h
@@ -45,7 +45,7 @@
     uint32_t             fCount;
     VkDescriptorPool     fDescPool;
 
-    typedef GrVkManagedResource INHERITED;
+    using INHERITED = GrVkManagedResource;
 };
 
 #endif
diff --git a/src/gpu/vk/GrVkDescriptorSet.h b/src/gpu/vk/GrVkDescriptorSet.h
index aa36d7a..38c4f2d 100644
--- a/src/gpu/vk/GrVkDescriptorSet.h
+++ b/src/gpu/vk/GrVkDescriptorSet.h
@@ -40,7 +40,7 @@
     SkDEBUGCODE(mutable) GrVkDescriptorPool* fPool;
     GrVkDescriptorSetManager::Handle         fHandle;
 
-    typedef GrVkRecycledResource INHERITED;
+    using INHERITED = GrVkRecycledResource;
 };
 
 #endif
diff --git a/src/gpu/vk/GrVkFramebuffer.h b/src/gpu/vk/GrVkFramebuffer.h
index c0eeafa..566a3c9 100644
--- a/src/gpu/vk/GrVkFramebuffer.h
+++ b/src/gpu/vk/GrVkFramebuffer.h
@@ -43,7 +43,7 @@
 
     VkFramebuffer  fFramebuffer;
 
-    typedef GrVkManagedResource INHERITED;
+    using INHERITED = GrVkManagedResource;
 };
 
 #endif
diff --git a/src/gpu/vk/GrVkGpu.h b/src/gpu/vk/GrVkGpu.h
index 52798f2..2654ecb 100644
--- a/src/gpu/vk/GrVkGpu.h
+++ b/src/gpu/vk/GrVkGpu.h
@@ -361,7 +361,7 @@
 
     std::unique_ptr<GrVkOpsRenderPass>                    fCachedOpsRenderPass;
 
-    typedef GrGpu INHERITED;
+    using INHERITED = GrGpu;
 };
 
 #endif
diff --git a/src/gpu/vk/GrVkImage.h b/src/gpu/vk/GrVkImage.h
index 1c7136e..2d6a220 100644
--- a/src/gpu/vk/GrVkImage.h
+++ b/src/gpu/vk/GrVkImage.h
@@ -207,7 +207,7 @@
         GrVkAlloc      fAlloc;
         VkImageTiling  fImageTiling;
 
-        typedef GrTextureResource INHERITED;
+        using INHERITED = GrTextureResource;
     };
 
     // for wrapped textures
diff --git a/src/gpu/vk/GrVkImageView.h b/src/gpu/vk/GrVkImageView.h
index 22703a3..553ff43 100644
--- a/src/gpu/vk/GrVkImageView.h
+++ b/src/gpu/vk/GrVkImageView.h
@@ -47,7 +47,7 @@
     VkImageView  fImageView;
     GrVkSamplerYcbcrConversion* fYcbcrConversion;
 
-    typedef GrVkManagedResource INHERITED;
+    using INHERITED = GrVkManagedResource;
 };
 
 #endif
diff --git a/src/gpu/vk/GrVkInterface.h b/src/gpu/vk/GrVkInterface.h
index 53360ba..6ca7bbc 100644
--- a/src/gpu/vk/GrVkInterface.h
+++ b/src/gpu/vk/GrVkInterface.h
@@ -35,7 +35,7 @@
         FNPTR_TYPE fPtr;
     };
 
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 
 public:
     GrVkInterface(GrVkGetProc getProc,
diff --git a/src/gpu/vk/GrVkManagedResource.h b/src/gpu/vk/GrVkManagedResource.h
index b7083e2..1489be3 100644
--- a/src/gpu/vk/GrVkManagedResource.h
+++ b/src/gpu/vk/GrVkManagedResource.h
@@ -21,7 +21,7 @@
                           // in subclass's freeGPUData()
 
 private:
-    typedef GrManagedResource INHERITED;
+    using INHERITED = GrManagedResource;
 };
 
 class GrVkRecycledResource : public GrRecycledResource {
diff --git a/src/gpu/vk/GrVkMeshBuffer.h b/src/gpu/vk/GrVkMeshBuffer.h
index c9a9190..cf7e925 100644
--- a/src/gpu/vk/GrVkMeshBuffer.h
+++ b/src/gpu/vk/GrVkMeshBuffer.h
@@ -30,7 +30,7 @@
 
     GrVkGpu* getVkGpu() const;
 
-    typedef GrGpuBuffer INHERITED;
+    using INHERITED = GrGpuBuffer;
 };
 
 #endif
diff --git a/src/gpu/vk/GrVkOpsRenderPass.h b/src/gpu/vk/GrVkOpsRenderPass.h
index 061650f..ffa7a28 100644
--- a/src/gpu/vk/GrVkOpsRenderPass.h
+++ b/src/gpu/vk/GrVkOpsRenderPass.h
@@ -109,7 +109,7 @@
     bool fIsActive = false;
 #endif
 
-    typedef GrOpsRenderPass INHERITED;
+    using INHERITED = GrOpsRenderPass;
 };
 
 #endif
diff --git a/src/gpu/vk/GrVkPipeline.h b/src/gpu/vk/GrVkPipeline.h
index af2c04d..d93508c 100644
--- a/src/gpu/vk/GrVkPipeline.h
+++ b/src/gpu/vk/GrVkPipeline.h
@@ -59,7 +59,7 @@
 private:
     void freeGPUData() const override;
 
-    typedef GrVkManagedResource INHERITED;
+    using INHERITED = GrVkManagedResource;
 };
 
 #endif
diff --git a/src/gpu/vk/GrVkPipelineStateBuilder.h b/src/gpu/vk/GrVkPipelineStateBuilder.h
index d13f47b..1d7cbba 100644
--- a/src/gpu/vk/GrVkPipelineStateBuilder.h
+++ b/src/gpu/vk/GrVkPipelineStateBuilder.h
@@ -77,7 +77,7 @@
     GrVkVaryingHandler fVaryingHandler;
     GrVkUniformHandler fUniformHandler;
 
-    typedef GrGLSLProgramBuilder INHERITED;
+    using INHERITED = GrGLSLProgramBuilder;
 };
 
 #endif
diff --git a/src/gpu/vk/GrVkPipelineStateDataManager.h b/src/gpu/vk/GrVkPipelineStateDataManager.h
index d4094bd..2c1a0d0 100644
--- a/src/gpu/vk/GrVkPipelineStateDataManager.h
+++ b/src/gpu/vk/GrVkPipelineStateDataManager.h
@@ -28,7 +28,7 @@
     bool uploadUniformBuffers(GrVkGpu* gpu, GrVkUniformBuffer* buffer) const;
 
 private:
-    typedef GrUniformDataManager INHERITED;
+    using INHERITED = GrUniformDataManager;
 };
 
 #endif
diff --git a/src/gpu/vk/GrVkRenderPass.h b/src/gpu/vk/GrVkRenderPass.h
index bed2482..32e03db 100644
--- a/src/gpu/vk/GrVkRenderPass.h
+++ b/src/gpu/vk/GrVkRenderPass.h
@@ -167,7 +167,7 @@
     // For internally created render passes we assume the color attachment index is always 0.
     uint32_t              fColorAttachmentIndex = 0;
 
-    typedef GrVkManagedResource INHERITED;
+    using INHERITED = GrVkManagedResource;
 };
 
 GR_MAKE_BITFIELD_OPS(GrVkRenderPass::AttachmentFlags);
diff --git a/src/gpu/vk/GrVkSampler.h b/src/gpu/vk/GrVkSampler.h
index c21b109..14790ca 100644
--- a/src/gpu/vk/GrVkSampler.h
+++ b/src/gpu/vk/GrVkSampler.h
@@ -82,7 +82,7 @@
     Key                         fKey;
     uint32_t                    fUniqueID;
 
-    typedef GrVkManagedResource INHERITED;
+    using INHERITED = GrVkManagedResource;
 };
 
 #endif
diff --git a/src/gpu/vk/GrVkSamplerYcbcrConversion.h b/src/gpu/vk/GrVkSamplerYcbcrConversion.h
index 05c10b8..c4c7f86 100644
--- a/src/gpu/vk/GrVkSamplerYcbcrConversion.h
+++ b/src/gpu/vk/GrVkSamplerYcbcrConversion.h
@@ -69,7 +69,7 @@
     VkSamplerYcbcrConversion fYcbcrConversion;
     Key                      fKey;
 
-    typedef GrVkManagedResource INHERITED;
+    using INHERITED = GrVkManagedResource;
 };
 
 #endif
diff --git a/src/gpu/vk/GrVkSecondaryCBDrawContext.h b/src/gpu/vk/GrVkSecondaryCBDrawContext.h
index 72c99c5..499ba55 100644
--- a/src/gpu/vk/GrVkSecondaryCBDrawContext.h
+++ b/src/gpu/vk/GrVkSecondaryCBDrawContext.h
@@ -118,7 +118,7 @@
     std::unique_ptr<SkCanvas> fCachedCanvas;
     const SkSurfaceProps      fProps;
 
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 };
 
 #endif
diff --git a/src/gpu/vk/GrVkSemaphore.h b/src/gpu/vk/GrVkSemaphore.h
index ae291db..4e03607 100644
--- a/src/gpu/vk/GrVkSemaphore.h
+++ b/src/gpu/vk/GrVkSemaphore.h
@@ -77,7 +77,7 @@
         bool        fHasBeenSubmittedToQueueForWait;
         bool        fIsOwned;
 
-        typedef GrVkManagedResource INHERITED;
+        using INHERITED = GrVkManagedResource;
     };
 
     Resource* getResource() { return fResource; }
@@ -92,7 +92,7 @@
 
     Resource* fResource;
 
-    typedef GrSemaphore INHERITED;
+    using INHERITED = GrSemaphore;
 };
 
 #endif
diff --git a/src/gpu/vk/GrVkTexture.h b/src/gpu/vk/GrVkTexture.h
index b6e298f..b18ba34 100644
--- a/src/gpu/vk/GrVkTexture.h
+++ b/src/gpu/vk/GrVkTexture.h
@@ -104,7 +104,7 @@
             fDescSetCache;
     static constexpr int kMaxCachedDescSets = 8;
 
-    typedef GrTexture INHERITED;
+    using INHERITED = GrTexture;
 };
 
 #endif
diff --git a/src/gpu/vk/GrVkTransferBuffer.h b/src/gpu/vk/GrVkTransferBuffer.h
index 3523745..c1c25a6 100644
--- a/src/gpu/vk/GrVkTransferBuffer.h
+++ b/src/gpu/vk/GrVkTransferBuffer.h
@@ -48,7 +48,7 @@
         return reinterpret_cast<GrVkGpu*>(this->getGpu());
     }
 
-    typedef GrGpuBuffer INHERITED;
+    using INHERITED = GrGpuBuffer;
 };
 
 #endif
diff --git a/src/gpu/vk/GrVkUniformBuffer.h b/src/gpu/vk/GrVkUniformBuffer.h
index dc0d6b6..06ae7e0 100644
--- a/src/gpu/vk/GrVkUniformBuffer.h
+++ b/src/gpu/vk/GrVkUniformBuffer.h
@@ -53,7 +53,7 @@
 
         const VkDescriptorSet* descriptorSet() const;
 
-        typedef GrVkBuffer::Resource INHERITED;
+        using INHERITED = GrVkBuffer::Resource;
 
     private:
         const GrVkDescriptorSet* fDescriptorSet;
@@ -66,7 +66,7 @@
                       const GrVkUniformBuffer::Resource* resource)
         : INHERITED(desc, resource) {}
 
-    typedef GrVkBuffer INHERITED;
+    using INHERITED = GrVkBuffer;
 };
 
 #endif
diff --git a/src/gpu/vk/GrVkUniformHandler.h b/src/gpu/vk/GrVkUniformHandler.h
index 2f94412..74f1ce7 100644
--- a/src/gpu/vk/GrVkUniformHandler.h
+++ b/src/gpu/vk/GrVkUniformHandler.h
@@ -119,7 +119,7 @@
     friend class GrVkPipelineStateBuilder;
     friend class GrVkDescriptorSetManager;
 
-    typedef GrGLSLUniformHandler INHERITED;
+    using INHERITED = GrGLSLUniformHandler;
 };
 
 #endif
diff --git a/src/gpu/vk/GrVkVaryingHandler.h b/src/gpu/vk/GrVkVaryingHandler.h
index 523ab6a..3d79dba 100644
--- a/src/gpu/vk/GrVkVaryingHandler.h
+++ b/src/gpu/vk/GrVkVaryingHandler.h
@@ -21,7 +21,7 @@
 
     friend class GrVkPipelineStateBuilder;
 
-    typedef GrGLSLVaryingHandler INHERITED;
+    using INHERITED = GrGLSLVaryingHandler;
 };
 
 #endif
diff --git a/src/image/SkImage_Base.h b/src/image/SkImage_Base.h
index d8ad750..638d161 100644
--- a/src/image/SkImage_Base.h
+++ b/src/image/SkImage_Base.h
@@ -150,7 +150,7 @@
     // Set true by caches when they cache content that's derived from the current pixels.
     mutable std::atomic<bool> fAddedToRasterCache;
 
-    typedef SkImage INHERITED;
+    using INHERITED = SkImage;
 };
 
 static inline SkImage_Base* as_IB(SkImage* image) {
diff --git a/src/image/SkImage_Gpu.h b/src/image/SkImage_Gpu.h
index 7f308bb..e62978e 100644
--- a/src/image/SkImage_Gpu.h
+++ b/src/image/SkImage_Gpu.h
@@ -93,7 +93,7 @@
 private:
     GrSurfaceProxyView fView;
 
-    typedef SkImage_GpuBase INHERITED;
+    using INHERITED = SkImage_GpuBase;
 };
 
 #endif
diff --git a/src/image/SkImage_GpuBase.h b/src/image/SkImage_GpuBase.h
index 5efc46d..2f8144f 100644
--- a/src/image/SkImage_GpuBase.h
+++ b/src/image/SkImage_GpuBase.h
@@ -101,7 +101,7 @@
     sk_sp<GrContext> fContext;
 
 private:
-    typedef SkImage_Base INHERITED;
+    using INHERITED = SkImage_Base;
 };
 
 #endif
diff --git a/src/image/SkImage_GpuYUVA.h b/src/image/SkImage_GpuYUVA.h
index 225c8ad..24287cf 100644
--- a/src/image/SkImage_GpuYUVA.h
+++ b/src/image/SkImage_GpuYUVA.h
@@ -111,7 +111,7 @@
     // using the separate YUVA planes. From thence forth we will only use the
     // the RGBView.
     mutable GrSurfaceProxyView       fRGBView;
-    typedef SkImage_GpuBase INHERITED;
+    using INHERITED = SkImage_GpuBase;
 };
 
 #endif
diff --git a/src/image/SkImage_Lazy.h b/src/image/SkImage_Lazy.h
index 763d176..aa940a6 100644
--- a/src/image/SkImage_Lazy.h
+++ b/src/image/SkImage_Lazy.h
@@ -94,7 +94,7 @@
     mutable SkIDChangeListener::List fUniqueIDListeners;
 #endif
 
-    typedef SkImage_Base INHERITED;
+    using INHERITED = SkImage_Base;
 };
 
 #endif
diff --git a/src/image/SkImage_Raster.cpp b/src/image/SkImage_Raster.cpp
index 33d66c4..e4b3688 100644
--- a/src/image/SkImage_Raster.cpp
+++ b/src/image/SkImage_Raster.cpp
@@ -143,7 +143,7 @@
     mutable uint32_t fPinnedUniqueID = 0;
 #endif
 
-    typedef SkImage_Base INHERITED;
+    using INHERITED = SkImage_Base;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/src/image/SkSurface_Base.h b/src/image/SkSurface_Base.h
index ad3c70f..439fc4d 100644
--- a/src/image/SkSurface_Base.h
+++ b/src/image/SkSurface_Base.h
@@ -149,7 +149,7 @@
     friend class SkCanvas;
     friend class SkSurface;
 
-    typedef SkSurface INHERITED;
+    using INHERITED = SkSurface;
 };
 
 SkCanvas* SkSurface_Base::getCachedCanvas() {
diff --git a/src/image/SkSurface_Gpu.h b/src/image/SkSurface_Gpu.h
index 8500276..6c2b1f5 100644
--- a/src/image/SkSurface_Gpu.h
+++ b/src/image/SkSurface_Gpu.h
@@ -66,7 +66,7 @@
 private:
     sk_sp<SkGpuDevice> fDevice;
 
-    typedef SkSurface_Base INHERITED;
+    using INHERITED = SkSurface_Base;
 };
 
 #endif // SK_SUPPORT_GPU
diff --git a/src/image/SkSurface_Raster.cpp b/src/image/SkSurface_Raster.cpp
index e6b31b8..bd133e5 100644
--- a/src/image/SkSurface_Raster.cpp
+++ b/src/image/SkSurface_Raster.cpp
@@ -31,7 +31,7 @@
     SkBitmap    fBitmap;
     bool        fWeOwnThePixels;
 
-    typedef SkSurface_Base INHERITED;
+    using INHERITED = SkSurface_Base;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/src/lazy/SkDiscardableMemoryPool.cpp b/src/lazy/SkDiscardableMemoryPool.cpp
index 987c3d1..3968b1f 100644
--- a/src/lazy/SkDiscardableMemoryPool.cpp
+++ b/src/lazy/SkDiscardableMemoryPool.cpp
@@ -68,7 +68,7 @@
 
     friend class PoolDiscardableMemory;
 
-    typedef SkDiscardableMemory::Factory INHERITED;
+    using INHERITED = SkDiscardableMemory::Factory;
 };
 
 /**
diff --git a/src/pathops/SkPathOpsBounds.h b/src/pathops/SkPathOpsBounds.h
index 1ebd46f..bcf578a 100644
--- a/src/pathops/SkPathOpsBounds.h
+++ b/src/pathops/SkPathOpsBounds.h
@@ -59,7 +59,7 @@
                fRight >= pt.fX && fBottom >= pt.fY;
     }
 
-    typedef SkRect INHERITED;
+    using INHERITED = SkRect;
 };
 
 #endif
diff --git a/src/pdf/SkPDFDevice.h b/src/pdf/SkPDFDevice.h
index cee5890..0b10fab 100644
--- a/src/pdf/SkPDFDevice.h
+++ b/src/pdf/SkPDFDevice.h
@@ -190,7 +190,7 @@
 
     void reset();
 
-    typedef SkClipStackDevice INHERITED;
+    using INHERITED = SkClipStackDevice;
 };
 
 #endif
diff --git a/src/ports/SkFontConfigInterface_direct.h b/src/ports/SkFontConfigInterface_direct.h
index f31047f..8293bfd 100644
--- a/src/ports/SkFontConfigInterface_direct.h
+++ b/src/ports/SkFontConfigInterface_direct.h
@@ -33,7 +33,7 @@
     bool isValidPattern(FcPattern* pattern);
     FcPattern* MatchFont(FcFontSet* font_set, const char* post_config_family,
                          const SkString& family);
-    typedef SkFontConfigInterface INHERITED;
+    using INHERITED = SkFontConfigInterface;
 };
 
 #endif
diff --git a/src/ports/SkFontConfigTypeface.h b/src/ports/SkFontConfigTypeface.h
index 269486d..8ad4e02 100644
--- a/src/ports/SkFontConfigTypeface.h
+++ b/src/ports/SkFontConfigTypeface.h
@@ -79,7 +79,7 @@
     std::unique_ptr<SkFontData> onMakeFontData() const override;
 
 private:
-    typedef SkTypeface_FreeType INHERITED;
+    using INHERITED = SkTypeface_FreeType;
 };
 
 #endif  // SkFontConfigTypeface_DEFINED
diff --git a/src/ports/SkFontHost_FreeType_common.h b/src/ports/SkFontHost_FreeType_common.h
index 35bf8ee..919cff0 100644
--- a/src/ports/SkFontHost_FreeType_common.h
+++ b/src/ports/SkFontHost_FreeType_common.h
@@ -50,7 +50,7 @@
     bool generateGlyphPath(FT_Face face, SkPath* path);
     bool generateFacePath(FT_Face face, SkGlyphID glyphID, SkPath* path);
 private:
-    typedef SkScalerContext INHERITED;
+    using INHERITED = SkScalerContext;
 };
 
 class SkTypeface_FreeType : public SkTypeface {
@@ -129,7 +129,7 @@
     mutable SkMutex fC2GCacheMutex;
     mutable SkCharToGlyphCache fC2GCache;
 
-    typedef SkTypeface INHERITED;
+    using INHERITED = SkTypeface;
 };
 
 #endif // SKFONTHOST_FREETYPE_COMMON_H_
diff --git a/src/ports/SkFontHost_win.cpp b/src/ports/SkFontHost_win.cpp
index 82e88f3..1208143 100644
--- a/src/ports/SkFontHost_win.cpp
+++ b/src/ports/SkFontHost_win.cpp
@@ -327,7 +327,7 @@
 
     HANDLE fFontMemResource;
 
-    typedef LogFontTypeface INHERITED;
+    using INHERITED = LogFontTypeface;
 };
 
 static const LOGFONT& get_default_font() {
diff --git a/src/ports/SkFontMgr_android.cpp b/src/ports/SkFontMgr_android.cpp
index 75cf27b..deb06db 100644
--- a/src/ports/SkFontMgr_android.cpp
+++ b/src/ports/SkFontMgr_android.cpp
@@ -48,7 +48,7 @@
     SkString fFamilyName;
 
 private:
-    typedef SkTypeface_FreeType INHERITED;
+    using INHERITED = SkTypeface_FreeType;
 };
 
 class SkTypeface_AndroidSystem : public SkTypeface_Android {
@@ -121,7 +121,7 @@
     const FontVariant fVariantStyle;
     SkAutoTCallVProc<FILE, sk_fclose> fFile;
 
-    typedef SkTypeface_Android INHERITED;
+    using INHERITED = SkTypeface_Android;
 };
 
 class SkTypeface_AndroidStream : public SkTypeface_Android {
@@ -163,7 +163,7 @@
 
 private:
     const std::unique_ptr<const SkFontData> fData;
-    typedef SkTypeface_Android INHERITED;
+    using INHERITED = SkTypeface_Android;
 };
 
 class SkFontStyleSet_Android : public SkFontStyleSet {
@@ -273,7 +273,7 @@
     friend struct NameToFamily;
     friend class SkFontMgr_Android;
 
-    typedef SkFontStyleSet INHERITED;
+    using INHERITED = SkFontStyleSet;
 };
 
 /** On Android a single family can have many names, but our API assumes unique names.
@@ -572,7 +572,7 @@
         SkASSERT(fDefaultStyleSet);
     }
 
-    typedef SkFontMgr INHERITED;
+    using INHERITED = SkFontMgr;
 };
 
 #ifdef SK_DEBUG
diff --git a/src/ports/SkFontMgr_custom.h b/src/ports/SkFontMgr_custom.h
index 75d2a9e..12db4fe 100644
--- a/src/ports/SkFontMgr_custom.h
+++ b/src/ports/SkFontMgr_custom.h
@@ -38,7 +38,7 @@
     const SkString fFamilyName;
     const int fIndex;
 
-    typedef SkTypeface_FreeType INHERITED;
+    using INHERITED = SkTypeface_FreeType;
 };
 
 /** The empty SkTypeface implementation for the custom font manager.
@@ -54,7 +54,7 @@
     std::unique_ptr<SkFontData> onMakeFontData() const override;
 
 private:
-    typedef SkTypeface_Custom INHERITED;
+    using INHERITED = SkTypeface_Custom;
 };
 
 /** The stream SkTypeface implementation for the custom font manager. */
@@ -72,7 +72,7 @@
 private:
     const std::unique_ptr<const SkFontData> fData;
 
-    typedef SkTypeface_Custom INHERITED;
+    using INHERITED = SkTypeface_Custom;
 };
 
 /** The file SkTypeface implementation for the custom font manager. */
@@ -89,7 +89,7 @@
 private:
     SkString fPath;
 
-    typedef SkTypeface_Custom INHERITED;
+    using INHERITED = SkTypeface_Custom;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/src/ports/SkFontMgr_fontconfig.cpp b/src/ports/SkFontMgr_fontconfig.cpp
index 87c0413..aa261e8 100644
--- a/src/ports/SkFontMgr_fontconfig.cpp
+++ b/src/ports/SkFontMgr_fontconfig.cpp
@@ -441,7 +441,7 @@
     SkString fFamilyName;
     const std::unique_ptr<const SkFontData> fData;
 
-    typedef SkTypeface_FreeType INHERITED;
+    using INHERITED = SkTypeface_FreeType;
 };
 
 class SkTypeface_fontconfig : public SkTypeface_FreeType {
@@ -562,7 +562,7 @@
         , fSysroot(std::move(sysroot))
     { }
 
-    typedef SkTypeface_FreeType INHERITED;
+    using INHERITED = SkTypeface_FreeType;
 };
 
 class SkFontMgr_fontconfig : public SkFontMgr {
diff --git a/src/ports/SkImageGeneratorCG.cpp b/src/ports/SkImageGeneratorCG.cpp
index bda9a04..2205caf 100644
--- a/src/ports/SkImageGeneratorCG.cpp
+++ b/src/ports/SkImageGeneratorCG.cpp
@@ -38,7 +38,7 @@
     const sk_sp<SkData> fData;
     const SkEncodedOrigin fOrigin;
 
-    typedef SkImageGenerator INHERITED;
+    using INHERITED = SkImageGenerator;
 };
 
 static SkUniqueCFRef<CGImageSourceRef> data_to_CGImageSrc(SkData* data) {
diff --git a/src/ports/SkImageGeneratorNDK.cpp b/src/ports/SkImageGeneratorNDK.cpp
index 66c4e36..7d050b9 100644
--- a/src/ports/SkImageGeneratorNDK.cpp
+++ b/src/ports/SkImageGeneratorNDK.cpp
@@ -36,7 +36,7 @@
     // to recreate the AImageDecoder.
     bool           fPreviouslySetADataSpace;
 
-    typedef SkImageGenerator INHERITED;
+    using INHERITED = SkImageGenerator;
 };
 
 } // anonymous namespace
diff --git a/src/ports/SkImageGeneratorWIC.cpp b/src/ports/SkImageGeneratorWIC.cpp
index c49f9db..a914d08 100644
--- a/src/ports/SkImageGeneratorWIC.cpp
+++ b/src/ports/SkImageGeneratorWIC.cpp
@@ -42,7 +42,7 @@
     SkTScopedComPtr<IWICBitmapSource>   fImageSource;
     sk_sp<SkData>                       fData;
 
-    typedef SkImageGenerator INHERITED;
+    using INHERITED = SkImageGenerator;
 };
 }  // namespace
 
diff --git a/src/ports/SkRemotableFontMgr_win_dw.cpp b/src/ports/SkRemotableFontMgr_win_dw.cpp
index fc9c6d8..4d0708b 100644
--- a/src/ports/SkRemotableFontMgr_win_dw.cpp
+++ b/src/ports/SkRemotableFontMgr_win_dw.cpp
@@ -438,7 +438,7 @@
     SkTScopedComPtr<IDWriteFontCollection> fFontCollection;
     SkSMallocWCHAR fLocaleName;
 
-    typedef SkRemotableFontMgr INHERITED;
+    using INHERITED = SkRemotableFontMgr;
 };
 
 SkRemotableFontMgr* SkRemotableFontMgr_New_DirectWrite() {
diff --git a/src/ports/SkScalerContext_mac_ct.h b/src/ports/SkScalerContext_mac_ct.h
index 4b7f548..e05c333 100644
--- a/src/ports/SkScalerContext_mac_ct.h
+++ b/src/ports/SkScalerContext_mac_ct.h
@@ -111,7 +111,7 @@
 
     friend class Offscreen;
 
-    typedef SkScalerContext INHERITED;
+    using INHERITED = SkScalerContext;
 };
 
 #endif
diff --git a/src/ports/SkTypeface_mac_ct.h b/src/ports/SkTypeface_mac_ct.h
index 3220bce..abe6333 100644
--- a/src/ports/SkTypeface_mac_ct.h
+++ b/src/ports/SkTypeface_mac_ct.h
@@ -120,7 +120,7 @@
     bool fIsFromStream;
     mutable SkOnce fInitStream;
 
-    typedef SkTypeface INHERITED;
+    using INHERITED = SkTypeface;
 };
 
 #endif
diff --git a/src/ports/SkTypeface_win_dw.h b/src/ports/SkTypeface_win_dw.h
index a266bf9..c631fb8 100644
--- a/src/ports/SkTypeface_win_dw.h
+++ b/src/ports/SkTypeface_win_dw.h
@@ -145,7 +145,7 @@
 
 private:
     mutable sk_sp<Loaders> fLoaders;
-    typedef SkTypeface INHERITED;
+    using INHERITED = SkTypeface;
 };
 
 #endif
diff --git a/src/shaders/SkBitmapProcShader.cpp b/src/shaders/SkBitmapProcShader.cpp
index a168b1a..9e45bb7 100644
--- a/src/shaders/SkBitmapProcShader.cpp
+++ b/src/shaders/SkBitmapProcShader.cpp
@@ -69,7 +69,7 @@
     SkBitmapProcState*  fState;
     uint32_t            fFlags;
 
-    typedef SkShaderBase::Context INHERITED;
+    using INHERITED = SkShaderBase::Context;
 };
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/shaders/SkBitmapProcShader.h b/src/shaders/SkBitmapProcShader.h
index 0509191..696e952 100644
--- a/src/shaders/SkBitmapProcShader.h
+++ b/src/shaders/SkBitmapProcShader.h
@@ -19,7 +19,7 @@
     static Context* MakeContext(const SkShaderBase&, SkTileMode tmx, SkTileMode tmy,
                                 const SkImage_Base*, const ContextRec&, SkArenaAlloc* alloc);
 
-    typedef SkShaderBase INHERITED;
+    using INHERITED = SkShaderBase;
 };
 
 #endif
diff --git a/src/shaders/SkColorFilterShader.h b/src/shaders/SkColorFilterShader.h
index c3bd0b0..cc6f98d 100644
--- a/src/shaders/SkColorFilterShader.h
+++ b/src/shaders/SkColorFilterShader.h
@@ -37,7 +37,7 @@
     sk_sp<SkColorFilterBase> fFilter;
     float                    fAlpha;
 
-    typedef SkShaderBase INHERITED;
+    using INHERITED = SkShaderBase;
 };
 
 #endif
diff --git a/src/shaders/SkComposeShader.h b/src/shaders/SkComposeShader.h
index 96ae0a0..662d2e9 100644
--- a/src/shaders/SkComposeShader.h
+++ b/src/shaders/SkComposeShader.h
@@ -39,7 +39,7 @@
     sk_sp<SkShader>     fSrc;
     const SkBlendMode   fMode;
 
-    typedef SkShaderBase INHERITED;
+    using INHERITED = SkShaderBase;
 };
 
 class SkShader_Lerp final : public SkShaderBase {
@@ -72,7 +72,7 @@
     sk_sp<SkShader> fSrc;
     const float     fWeight;
 
-    typedef SkShaderBase INHERITED;
+    using INHERITED = SkShaderBase;
 };
 
 #endif
diff --git a/src/shaders/SkEmptyShader.h b/src/shaders/SkEmptyShader.h
index 414be6c..e374815 100644
--- a/src/shaders/SkEmptyShader.h
+++ b/src/shaders/SkEmptyShader.h
@@ -45,7 +45,7 @@
 private:
     SK_FLATTENABLE_HOOKS(SkEmptyShader)
 
-    typedef SkShaderBase INHERITED;
+    using INHERITED = SkShaderBase;
 };
 
 #endif
diff --git a/src/shaders/SkImageShader.h b/src/shaders/SkImageShader.h
index a305161..ec0b785 100644
--- a/src/shaders/SkImageShader.h
+++ b/src/shaders/SkImageShader.h
@@ -117,7 +117,7 @@
     SkImage::CubicResampler fCubic = {1/3.0f, 1/3.0f};  // Default to Mitchell-Netravali.
 
     friend class SkShaderBase;
-    typedef SkShaderBase INHERITED;
+    using INHERITED = SkShaderBase;
 };
 
 #endif
diff --git a/src/shaders/SkLocalMatrixShader.cpp b/src/shaders/SkLocalMatrixShader.cpp
index 5491f46..14656b8 100644
--- a/src/shaders/SkLocalMatrixShader.cpp
+++ b/src/shaders/SkLocalMatrixShader.cpp
@@ -175,7 +175,7 @@
     sk_sp<SkShader> fProxyShader;
     SkMatrix        fCTM;
 
-    typedef SkShaderBase INHERITED;
+    using INHERITED = SkShaderBase;
 };
 
 
diff --git a/src/shaders/SkLocalMatrixShader.h b/src/shaders/SkLocalMatrixShader.h
index b1fd882..bc8fed5 100644
--- a/src/shaders/SkLocalMatrixShader.h
+++ b/src/shaders/SkLocalMatrixShader.h
@@ -58,7 +58,7 @@
 
     sk_sp<SkShader> fProxyShader;
 
-    typedef SkShaderBase INHERITED;
+    using INHERITED = SkShaderBase;
 };
 
 #endif
diff --git a/src/shaders/SkPerlinNoiseShader.cpp b/src/shaders/SkPerlinNoiseShader.cpp
index 098f781..fb3dda0 100644
--- a/src/shaders/SkPerlinNoiseShader.cpp
+++ b/src/shaders/SkPerlinNoiseShader.cpp
@@ -364,7 +364,7 @@
         SkMatrix     fMatrix;
         PaintingData fPaintingData;
 
-        typedef Context INHERITED;
+        using INHERITED = Context;
     };
 
 #if SK_SUPPORT_GPU
@@ -390,7 +390,7 @@
 
     friend class ::SkPerlinNoiseShader;
 
-    typedef SkShaderBase INHERITED;
+    using INHERITED = SkShaderBase;
 };
 
 namespace {
@@ -712,7 +712,7 @@
     GrGLSLProgramDataManager::UniformHandle fStitchDataUni;
     GrGLSLProgramDataManager::UniformHandle fBaseFrequencyUni;
 
-    typedef GrGLSLFragmentProcessor INHERITED;
+    using INHERITED = GrGLSLFragmentProcessor;
 };
 
 /////////////////////////////////////////////////////////////////////
@@ -808,7 +808,7 @@
 
     std::unique_ptr<SkPerlinNoiseShaderImpl::PaintingData> fPaintingData;
 
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 
 /////////////////////////////////////////////////////////////////////
@@ -1084,7 +1084,7 @@
     GrGLSLProgramDataManager::UniformHandle fZUni;
     GrGLSLProgramDataManager::UniformHandle fBaseFrequencyUni;
 
-    typedef GrGLSLFragmentProcessor INHERITED;
+    using INHERITED = GrGLSLFragmentProcessor;
 };
 
 /////////////////////////////////////////////////////////////////////
@@ -1170,7 +1170,7 @@
 
     std::unique_ptr<SkPerlinNoiseShaderImpl::PaintingData> fPaintingData;
 
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 
 /////////////////////////////////////////////////////////////////////
diff --git a/src/shaders/SkPictureShader.h b/src/shaders/SkPictureShader.h
index 01ef4b4..1ab69a2 100644
--- a/src/shaders/SkPictureShader.h
+++ b/src/shaders/SkPictureShader.h
@@ -68,7 +68,7 @@
         SkShaderBase::Context*  fBitmapShaderContext;
         void*                   fBitmapShaderContextStorage;
 
-        typedef Context INHERITED;
+        using INHERITED = Context;
     };
 
     sk_sp<SkPicture>    fPicture;
@@ -78,7 +78,7 @@
     const uint32_t            fUniqueID;
     mutable std::atomic<bool> fAddedToCache;
 
-    typedef SkShaderBase INHERITED;
+    using INHERITED = SkShaderBase;
 };
 
 #endif // SkPictureShader_DEFINED
diff --git a/src/shaders/SkShaderBase.h b/src/shaders/SkShaderBase.h
index 1c10b34..07b90ce 100644
--- a/src/shaders/SkShaderBase.h
+++ b/src/shaders/SkShaderBase.h
@@ -135,7 +135,7 @@
         SkMatrix    fTotalInverse;
         uint8_t     fPaintAlpha;
 
-        typedef SkNoncopyable INHERITED;
+        using INHERITED = SkNoncopyable;
     };
 
     /**
@@ -255,7 +255,7 @@
                                   SkFilterQuality quality, const SkColorInfo& dst,
                                   skvm::Uniforms* uniforms, SkArenaAlloc* alloc) const;
 
-    typedef SkShader INHERITED;
+    using INHERITED = SkShader;
 };
 
 inline SkShaderBase* as_SB(SkShader* shader) {
diff --git a/src/shaders/gradients/SkGradientShaderPriv.h b/src/shaders/gradients/SkGradientShaderPriv.h
index f33c444..ff59d47 100644
--- a/src/shaders/gradients/SkGradientShaderPriv.h
+++ b/src/shaders/gradients/SkGradientShaderPriv.h
@@ -141,7 +141,7 @@
 
     bool                                        fColorsAreOpaque;
 
-    typedef SkShaderBase INHERITED;
+    using INHERITED = SkShaderBase;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/src/shaders/gradients/SkLinearGradient.h b/src/shaders/gradients/SkLinearGradient.h
index 063b9c5..37f5cc8 100644
--- a/src/shaders/gradients/SkLinearGradient.h
+++ b/src/shaders/gradients/SkLinearGradient.h
@@ -38,7 +38,7 @@
     class LinearGradient4fContext;
 
     friend class SkGradientShader;
-    typedef SkGradientShaderBase INHERITED;
+    using INHERITED = SkGradientShaderBase;
     const SkPoint fStart;
     const SkPoint fEnd;
 };
diff --git a/src/shaders/gradients/SkRadialGradient.h b/src/shaders/gradients/SkRadialGradient.h
index 7396bb2..6d2272e 100644
--- a/src/shaders/gradients/SkRadialGradient.h
+++ b/src/shaders/gradients/SkRadialGradient.h
@@ -36,7 +36,7 @@
     const SkScalar fRadius;
 
     friend class SkGradientShader;
-    typedef SkGradientShaderBase INHERITED;
+    using INHERITED = SkGradientShaderBase;
 };
 
 #endif
diff --git a/src/shaders/gradients/SkSweepGradient.h b/src/shaders/gradients/SkSweepGradient.h
index 86ca372..1078ebb 100644
--- a/src/shaders/gradients/SkSweepGradient.h
+++ b/src/shaders/gradients/SkSweepGradient.h
@@ -40,7 +40,7 @@
                    fTScale;
 
     friend class SkGradientShader;
-    typedef SkGradientShaderBase INHERITED;
+    using INHERITED = SkGradientShaderBase;
 };
 
 #endif
diff --git a/src/shaders/gradients/SkTwoPointConicalGradient.h b/src/shaders/gradients/SkTwoPointConicalGradient.h
index d362ba0..39d3b11 100644
--- a/src/shaders/gradients/SkTwoPointConicalGradient.h
+++ b/src/shaders/gradients/SkTwoPointConicalGradient.h
@@ -88,7 +88,7 @@
     FocalData fFocalData;
 
     friend class SkGradientShader;
-    typedef SkGradientShaderBase INHERITED;
+    using INHERITED = SkGradientShaderBase;
 };
 
 #endif
diff --git a/src/sksl/SkSLAnalysis.cpp b/src/sksl/SkSLAnalysis.cpp
index 14da481..ce04f9e 100644
--- a/src/sksl/SkSLAnalysis.cpp
+++ b/src/sksl/SkSLAnalysis.cpp
@@ -127,7 +127,7 @@
         return this->INHERITED::visitExpression(e);
     }
 
-    typedef ProgramVisitor INHERITED;
+    using INHERITED = ProgramVisitor;
 };
 
 // Visitor that searches through the program for references to a particular builtin variable
@@ -145,7 +145,7 @@
 
     int fBuiltin;
 
-    typedef ProgramVisitor INHERITED;
+    using INHERITED = ProgramVisitor;
 };
 
 // Visitor that counts the number of nodes visited
@@ -175,7 +175,7 @@
 private:
     int fCount;
 
-    typedef ProgramVisitor INHERITED;
+    using INHERITED = ProgramVisitor;
 };
 
 class VariableWriteVisitor : public ProgramVisitor {
@@ -202,7 +202,7 @@
 private:
     const Variable* fVar;
 
-    typedef ProgramVisitor INHERITED;
+    using INHERITED = ProgramVisitor;
 };
 
 }  // namespace
diff --git a/src/sksl/SkSLByteCodeGenerator.cpp b/src/sksl/SkSLByteCodeGenerator.cpp
index ad3293b..7999575 100644
--- a/src/sksl/SkSLByteCodeGenerator.cpp
+++ b/src/sksl/SkSLByteCodeGenerator.cpp
@@ -1511,7 +1511,7 @@
     }
 
 private:
-    typedef LValue INHERITED;
+    using INHERITED = LValue;
 
     int fCount;
     int fIndex;
@@ -1563,7 +1563,7 @@
 private:
     const Swizzle& fSwizzle;
 
-    typedef LValue INHERITED;
+    using INHERITED = LValue;
 };
 
 class ByteCodeExpressionLValue : public ByteCodeGenerator::LValue {
@@ -1595,7 +1595,7 @@
     }
 
 private:
-    typedef LValue INHERITED;
+    using INHERITED = LValue;
 
     const Expression& fExpression;
 };
diff --git a/src/sksl/SkSLByteCodeGenerator.h b/src/sksl/SkSLByteCodeGenerator.h
index 3139d9c..9e8b080 100644
--- a/src/sksl/SkSLByteCodeGenerator.h
+++ b/src/sksl/SkSLByteCodeGenerator.h
@@ -353,7 +353,7 @@
     friend class ByteCodeExpressionLValue;
     friend class ByteCodeSwizzleLValue;
 
-    typedef CodeGenerator INHERITED;
+    using INHERITED = CodeGenerator;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/SkSLCPPCodeGenerator.h b/src/sksl/SkSLCPPCodeGenerator.h
index 640d210..5ebc0bc 100644
--- a/src/sksl/SkSLCPPCodeGenerator.h
+++ b/src/sksl/SkSLCPPCodeGenerator.h
@@ -154,7 +154,7 @@
     // stored here for restoration.
     OutputStream* fCPPBuffer = nullptr;
 
-    typedef GLSLCodeGenerator INHERITED;
+    using INHERITED = GLSLCodeGenerator;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/SkSLContext.h b/src/sksl/SkSLContext.h
index 720617a..0b7cb0c 100644
--- a/src/sksl/SkSLContext.h
+++ b/src/sksl/SkSLContext.h
@@ -368,7 +368,7 @@
             return std::unique_ptr<Expression>(new Defined(fType));
         }
 
-        typedef Expression INHERITED;
+        using INHERITED = Expression;
     };
 
     static std::unique_ptr<Type> fp_type(const Type* intType, const Type* boolType) {
diff --git a/src/sksl/SkSLExternalValue.h b/src/sksl/SkSLExternalValue.h
index 8282715..563ecb4 100644
--- a/src/sksl/SkSLExternalValue.h
+++ b/src/sksl/SkSLExternalValue.h
@@ -108,7 +108,7 @@
     }
 
 private:
-    typedef Symbol INHERITED;
+    using INHERITED = Symbol;
 
     const Type& fType;
 };
diff --git a/src/sksl/SkSLFileOutputStream.h b/src/sksl/SkSLFileOutputStream.h
index e7de134..51bfdd0 100644
--- a/src/sksl/SkSLFileOutputStream.h
+++ b/src/sksl/SkSLFileOutputStream.h
@@ -68,7 +68,7 @@
     bool fOpen = true;
     FILE *fFile;
 
-    typedef OutputStream INHERITED;
+    using INHERITED = OutputStream;
 };
 
 } // namespace
diff --git a/src/sksl/SkSLGLSLCodeGenerator.h b/src/sksl/SkSLGLSLCodeGenerator.h
index 8c9130b..7dc8159 100644
--- a/src/sksl/SkSLGLSLCodeGenerator.h
+++ b/src/sksl/SkSLGLSLCodeGenerator.h
@@ -258,7 +258,7 @@
     };
     static std::unordered_map<StringFragment, FunctionClass>* fFunctionClasses;
 
-    typedef CodeGenerator INHERITED;
+    using INHERITED = CodeGenerator;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/SkSLHCodeGenerator.cpp b/src/sksl/SkSLHCodeGenerator.cpp
index 4d74126..0edff22 100644
--- a/src/sksl/SkSLHCodeGenerator.cpp
+++ b/src/sksl/SkSLHCodeGenerator.cpp
@@ -383,7 +383,7 @@
                  "    SkString onDumpInfo() const override;\n"
                  "#endif\n"
                  "    GR_DECLARE_FRAGMENT_PROCESSOR_TEST\n"
-                 "    typedef GrFragmentProcessor INHERITED;\n"
+                 "    using INHERITED = GrFragmentProcessor;\n"
                  "};\n");
     this->writeSection(kHeaderEndSection);
     this->writef("#endif\n");
diff --git a/src/sksl/SkSLHCodeGenerator.h b/src/sksl/SkSLHCodeGenerator.h
index 6e9bf42..fa4a3f3 100644
--- a/src/sksl/SkSLHCodeGenerator.h
+++ b/src/sksl/SkSLHCodeGenerator.h
@@ -80,7 +80,7 @@
     String fFullName;
     SectionAndParameterHelper fSectionAndParameterHelper;
 
-    typedef CodeGenerator INHERITED;
+    using INHERITED = CodeGenerator;
 };
 
 } // namespace SkSL
diff --git a/src/sksl/SkSLMetalCodeGenerator.h b/src/sksl/SkSLMetalCodeGenerator.h
index 8df6e15..7085c35 100644
--- a/src/sksl/SkSLMetalCodeGenerator.h
+++ b/src/sksl/SkSLMetalCodeGenerator.h
@@ -286,7 +286,7 @@
     int fUniformBuffer = -1;
     String fRTHeightName;
 
-    typedef CodeGenerator INHERITED;
+    using INHERITED = CodeGenerator;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/SkSLPipelineStageCodeGenerator.h b/src/sksl/SkSLPipelineStageCodeGenerator.h
index 304445a..d023b32 100644
--- a/src/sksl/SkSLPipelineStageCodeGenerator.h
+++ b/src/sksl/SkSLPipelineStageCodeGenerator.h
@@ -43,7 +43,7 @@
 
     PipelineStageArgs* fArgs;
 
-    typedef GLSLCodeGenerator INHERITED;
+    using INHERITED = GLSLCodeGenerator;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/SkSLSPIRVCodeGenerator.h b/src/sksl/SkSLSPIRVCodeGenerator.h
index 46ade0d..bed4e1a 100644
--- a/src/sksl/SkSLSPIRVCodeGenerator.h
+++ b/src/sksl/SkSLSPIRVCodeGenerator.h
@@ -403,7 +403,7 @@
     friend class PointerLValue;
     friend class SwizzleLValue;
 
-    typedef CodeGenerator INHERITED;
+    using INHERITED = CodeGenerator;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/SkSLString.h b/src/sksl/SkSLString.h
index 3ec65fa..c97c0fb 100644
--- a/src/sksl/SkSLString.h
+++ b/src/sksl/SkSLString.h
@@ -84,7 +84,7 @@
     friend bool operator!=(const char* s1, const String& s2);
 
 private:
-    typedef std::string INHERITED;
+    using INHERITED = std::string;
 };
 
 String operator+(const char* s1, const String& s2);
diff --git a/src/sksl/ir/SkSLBinaryExpression.h b/src/sksl/ir/SkSLBinaryExpression.h
index ace774f..0477c70 100644
--- a/src/sksl/ir/SkSLBinaryExpression.h
+++ b/src/sksl/ir/SkSLBinaryExpression.h
@@ -91,7 +91,7 @@
     const Token::Kind fOperator;
     std::unique_ptr<Expression> fRight;
 
-    typedef Expression INHERITED;
+    using INHERITED = Expression;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLBlock.h b/src/sksl/ir/SkSLBlock.h
index f0b7475..d292db9 100644
--- a/src/sksl/ir/SkSLBlock.h
+++ b/src/sksl/ir/SkSLBlock.h
@@ -63,7 +63,7 @@
     // no semantic impact.
     bool fIsScope;
 
-    typedef Statement INHERITED;
+    using INHERITED = Statement;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLBoolLiteral.h b/src/sksl/ir/SkSLBoolLiteral.h
index 7534ede..ad37777 100644
--- a/src/sksl/ir/SkSLBoolLiteral.h
+++ b/src/sksl/ir/SkSLBoolLiteral.h
@@ -46,7 +46,7 @@
 
     const bool fValue;
 
-    typedef Expression INHERITED;
+    using INHERITED = Expression;
 
 private:
     BoolLiteral(int offset, bool value, const Type* type)
diff --git a/src/sksl/ir/SkSLBreakStatement.h b/src/sksl/ir/SkSLBreakStatement.h
index fb64e62..8e0c60d 100644
--- a/src/sksl/ir/SkSLBreakStatement.h
+++ b/src/sksl/ir/SkSLBreakStatement.h
@@ -30,7 +30,7 @@
         return String("break;");
     }
 
-    typedef Statement INHERITED;
+    using INHERITED = Statement;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLConstructor.h b/src/sksl/ir/SkSLConstructor.h
index 02e1b3f..5eaa378 100644
--- a/src/sksl/ir/SkSLConstructor.h
+++ b/src/sksl/ir/SkSLConstructor.h
@@ -269,7 +269,7 @@
 
     std::vector<std::unique_ptr<Expression>> fArguments;
 
-    typedef Expression INHERITED;
+    using INHERITED = Expression;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLContinueStatement.h b/src/sksl/ir/SkSLContinueStatement.h
index 22efdb6..97b1f7d 100644
--- a/src/sksl/ir/SkSLContinueStatement.h
+++ b/src/sksl/ir/SkSLContinueStatement.h
@@ -30,7 +30,7 @@
         return String("continue;");
     }
 
-    typedef Statement INHERITED;
+    using INHERITED = Statement;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLDiscardStatement.h b/src/sksl/ir/SkSLDiscardStatement.h
index 805141d..2e188ad 100644
--- a/src/sksl/ir/SkSLDiscardStatement.h
+++ b/src/sksl/ir/SkSLDiscardStatement.h
@@ -30,7 +30,7 @@
         return String("discard;");
     }
 
-    typedef Statement INHERITED;
+    using INHERITED = Statement;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLDoStatement.h b/src/sksl/ir/SkSLDoStatement.h
index 750b324..0edee5f 100644
--- a/src/sksl/ir/SkSLDoStatement.h
+++ b/src/sksl/ir/SkSLDoStatement.h
@@ -37,7 +37,7 @@
     std::unique_ptr<Statement> fStatement;
     std::unique_ptr<Expression> fTest;
 
-    typedef Statement INHERITED;
+    using INHERITED = Statement;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLEnum.h b/src/sksl/ir/SkSLEnum.h
index feb3024..564fb26 100644
--- a/src/sksl/ir/SkSLEnum.h
+++ b/src/sksl/ir/SkSLEnum.h
@@ -61,7 +61,7 @@
     const std::shared_ptr<SymbolTable> fSymbols;
     bool fBuiltin;
 
-    typedef ProgramElement INHERITED;
+    using INHERITED = ProgramElement;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLExpression.h b/src/sksl/ir/SkSLExpression.h
index 3d9507d..55f0528 100644
--- a/src/sksl/ir/SkSLExpression.h
+++ b/src/sksl/ir/SkSLExpression.h
@@ -173,7 +173,7 @@
     const Kind fKind;
     const Type& fType;
 
-    typedef IRNode INHERITED;
+    using INHERITED = IRNode;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLExpressionStatement.h b/src/sksl/ir/SkSLExpressionStatement.h
index 1f4e10a..21b04ca 100644
--- a/src/sksl/ir/SkSLExpressionStatement.h
+++ b/src/sksl/ir/SkSLExpressionStatement.h
@@ -33,7 +33,7 @@
 
     std::unique_ptr<Expression> fExpression;
 
-    typedef Statement INHERITED;
+    using INHERITED = Statement;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLExtension.h b/src/sksl/ir/SkSLExtension.h
index e0d418b..fd87422 100644
--- a/src/sksl/ir/SkSLExtension.h
+++ b/src/sksl/ir/SkSLExtension.h
@@ -32,7 +32,7 @@
 
     const String fName;
 
-    typedef ProgramElement INHERITED;
+    using INHERITED = ProgramElement;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLExternalFunctionCall.h b/src/sksl/ir/SkSLExternalFunctionCall.h
index 909a977..9298d39 100644
--- a/src/sksl/ir/SkSLExternalFunctionCall.h
+++ b/src/sksl/ir/SkSLExternalFunctionCall.h
@@ -64,7 +64,7 @@
     const ExternalValue* fFunction;
     std::vector<std::unique_ptr<Expression>> fArguments;
 
-    typedef Expression INHERITED;
+    using INHERITED = Expression;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLExternalValueReference.h b/src/sksl/ir/SkSLExternalValueReference.h
index 03932a8..a46ef91 100644
--- a/src/sksl/ir/SkSLExternalValueReference.h
+++ b/src/sksl/ir/SkSLExternalValueReference.h
@@ -37,7 +37,7 @@
 
     const ExternalValue* fValue;
 
-    typedef Expression INHERITED;
+    using INHERITED = Expression;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLField.h b/src/sksl/ir/SkSLField.h
index 5af7fca..9f783e5 100644
--- a/src/sksl/ir/SkSLField.h
+++ b/src/sksl/ir/SkSLField.h
@@ -36,7 +36,7 @@
     const Variable& fOwner;
     const int fFieldIndex;
 
-    typedef Symbol INHERITED;
+    using INHERITED = Symbol;
 };
 
 } // namespace SkSL
diff --git a/src/sksl/ir/SkSLFieldAccess.h b/src/sksl/ir/SkSLFieldAccess.h
index 5a21087..c6f59a2 100644
--- a/src/sksl/ir/SkSLFieldAccess.h
+++ b/src/sksl/ir/SkSLFieldAccess.h
@@ -50,7 +50,7 @@
     const int fFieldIndex;
     const OwnerKind fOwnerKind;
 
-    typedef Expression INHERITED;
+    using INHERITED = Expression;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLFloatLiteral.h b/src/sksl/ir/SkSLFloatLiteral.h
index c42c7d0..58cc16d 100644
--- a/src/sksl/ir/SkSLFloatLiteral.h
+++ b/src/sksl/ir/SkSLFloatLiteral.h
@@ -60,7 +60,7 @@
 
     const double fValue;
 
-    typedef Expression INHERITED;
+    using INHERITED = Expression;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLForStatement.h b/src/sksl/ir/SkSLForStatement.h
index 69126e2..0635f44 100644
--- a/src/sksl/ir/SkSLForStatement.h
+++ b/src/sksl/ir/SkSLForStatement.h
@@ -66,7 +66,7 @@
     std::unique_ptr<Expression> fNext;
     std::unique_ptr<Statement> fStatement;
 
-    typedef Statement INHERITED;
+    using INHERITED = Statement;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLFunctionCall.h b/src/sksl/ir/SkSLFunctionCall.h
index e6011ac..5a1f0d2 100644
--- a/src/sksl/ir/SkSLFunctionCall.h
+++ b/src/sksl/ir/SkSLFunctionCall.h
@@ -68,7 +68,7 @@
     const FunctionDeclaration& fFunction;
     std::vector<std::unique_ptr<Expression>> fArguments;
 
-    typedef Expression INHERITED;
+    using INHERITED = Expression;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLFunctionDeclaration.h b/src/sksl/ir/SkSLFunctionDeclaration.h
index c9103e0..b3bcf9a 100644
--- a/src/sksl/ir/SkSLFunctionDeclaration.h
+++ b/src/sksl/ir/SkSLFunctionDeclaration.h
@@ -117,7 +117,7 @@
     const Type& fReturnType;
     mutable std::atomic<int> fCallCount = 0;
 
-    typedef Symbol INHERITED;
+    using INHERITED = Symbol;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLFunctionDefinition.h b/src/sksl/ir/SkSLFunctionDefinition.h
index 9d54a13..4bd757f 100644
--- a/src/sksl/ir/SkSLFunctionDefinition.h
+++ b/src/sksl/ir/SkSLFunctionDefinition.h
@@ -53,7 +53,7 @@
     // invalidate this pointer.
     const ASTNode* fSource = nullptr;
 
-    typedef ProgramElement INHERITED;
+    using INHERITED = ProgramElement;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLFunctionReference.h b/src/sksl/ir/SkSLFunctionReference.h
index 187a547..1ff0785 100644
--- a/src/sksl/ir/SkSLFunctionReference.h
+++ b/src/sksl/ir/SkSLFunctionReference.h
@@ -40,7 +40,7 @@
 
     const std::vector<const FunctionDeclaration*> fFunctions;
 
-    typedef Expression INHERITED;
+    using INHERITED = Expression;
 
 private:
     FunctionReference(int offset, std::vector<const FunctionDeclaration*> function,
diff --git a/src/sksl/ir/SkSLIfStatement.h b/src/sksl/ir/SkSLIfStatement.h
index 0e28db2..5e82a72 100644
--- a/src/sksl/ir/SkSLIfStatement.h
+++ b/src/sksl/ir/SkSLIfStatement.h
@@ -50,7 +50,7 @@
     // may be null
     std::unique_ptr<Statement> fIfFalse;
 
-    typedef Statement INHERITED;
+    using INHERITED = Statement;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLIndexExpression.h b/src/sksl/ir/SkSLIndexExpression.h
index ad5b251..72741b5 100644
--- a/src/sksl/ir/SkSLIndexExpression.h
+++ b/src/sksl/ir/SkSLIndexExpression.h
@@ -68,7 +68,7 @@
     std::unique_ptr<Expression> fBase;
     std::unique_ptr<Expression> fIndex;
 
-    typedef Expression INHERITED;
+    using INHERITED = Expression;
 
 private:
     IndexExpression(std::unique_ptr<Expression> base, std::unique_ptr<Expression> index,
diff --git a/src/sksl/ir/SkSLIntLiteral.h b/src/sksl/ir/SkSLIntLiteral.h
index 750cafe..ed5791f 100644
--- a/src/sksl/ir/SkSLIntLiteral.h
+++ b/src/sksl/ir/SkSLIntLiteral.h
@@ -63,7 +63,7 @@
 
     const int64_t fValue;
 
-    typedef Expression INHERITED;
+    using INHERITED = Expression;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLInterfaceBlock.h b/src/sksl/ir/SkSLInterfaceBlock.h
index 56b7e2f..5507619 100644
--- a/src/sksl/ir/SkSLInterfaceBlock.h
+++ b/src/sksl/ir/SkSLInterfaceBlock.h
@@ -77,7 +77,7 @@
     std::vector<std::unique_ptr<Expression>> fSizes;
     const std::shared_ptr<SymbolTable> fTypeOwner;
 
-    typedef ProgramElement INHERITED;
+    using INHERITED = ProgramElement;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLModifiersDeclaration.h b/src/sksl/ir/SkSLModifiersDeclaration.h
index 411b4b9..36b2ec0 100644
--- a/src/sksl/ir/SkSLModifiersDeclaration.h
+++ b/src/sksl/ir/SkSLModifiersDeclaration.h
@@ -35,7 +35,7 @@
 
     Modifiers fModifiers;
 
-    typedef ProgramElement INHERITED;
+    using INHERITED = ProgramElement;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLNop.h b/src/sksl/ir/SkSLNop.h
index 74de640..1900557 100644
--- a/src/sksl/ir/SkSLNop.h
+++ b/src/sksl/ir/SkSLNop.h
@@ -34,7 +34,7 @@
         return std::unique_ptr<Statement>(new Nop());
     }
 
-    typedef Statement INHERITED;
+    using INHERITED = Statement;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLNullLiteral.h b/src/sksl/ir/SkSLNullLiteral.h
index 5ad6e0b..483bd08 100644
--- a/src/sksl/ir/SkSLNullLiteral.h
+++ b/src/sksl/ir/SkSLNullLiteral.h
@@ -45,7 +45,7 @@
         return std::unique_ptr<Expression>(new NullLiteral(fOffset, fType));
     }
 
-    typedef Expression INHERITED;
+    using INHERITED = Expression;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLPostfixExpression.h b/src/sksl/ir/SkSLPostfixExpression.h
index d75e270..c8679f1 100644
--- a/src/sksl/ir/SkSLPostfixExpression.h
+++ b/src/sksl/ir/SkSLPostfixExpression.h
@@ -43,7 +43,7 @@
     std::unique_ptr<Expression> fOperand;
     const Token::Kind fOperator;
 
-    typedef Expression INHERITED;
+    using INHERITED = Expression;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLPrefixExpression.h b/src/sksl/ir/SkSLPrefixExpression.h
index 1ddb769..3b4ff3a 100644
--- a/src/sksl/ir/SkSLPrefixExpression.h
+++ b/src/sksl/ir/SkSLPrefixExpression.h
@@ -77,7 +77,7 @@
     std::unique_ptr<Expression> fOperand;
     const Token::Kind fOperator;
 
-    typedef Expression INHERITED;
+    using INHERITED = Expression;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLProgramElement.h b/src/sksl/ir/SkSLProgramElement.h
index 74d2f4f..2f19cf7 100644
--- a/src/sksl/ir/SkSLProgramElement.h
+++ b/src/sksl/ir/SkSLProgramElement.h
@@ -51,7 +51,7 @@
 
     virtual std::unique_ptr<ProgramElement> clone() const = 0;
 
-    typedef IRNode INHERITED;
+    using INHERITED = IRNode;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLReturnStatement.h b/src/sksl/ir/SkSLReturnStatement.h
index 6126dd3..f48c30d 100644
--- a/src/sksl/ir/SkSLReturnStatement.h
+++ b/src/sksl/ir/SkSLReturnStatement.h
@@ -43,7 +43,7 @@
 
     std::unique_ptr<Expression> fExpression;
 
-    typedef Statement INHERITED;
+    using INHERITED = Statement;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLSection.h b/src/sksl/ir/SkSLSection.h
index d3be646..61bb892 100644
--- a/src/sksl/ir/SkSLSection.h
+++ b/src/sksl/ir/SkSLSection.h
@@ -41,7 +41,7 @@
     const String fArgument;
     const String fText;
 
-    typedef ProgramElement INHERITED;
+    using INHERITED = ProgramElement;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLSetting.h b/src/sksl/ir/SkSLSetting.h
index 7e3ee21..81468ba 100644
--- a/src/sksl/ir/SkSLSetting.h
+++ b/src/sksl/ir/SkSLSetting.h
@@ -49,7 +49,7 @@
     const String fName;
     std::unique_ptr<Expression> fValue;
 
-    typedef Expression INHERITED;
+    using INHERITED = Expression;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLStatement.h b/src/sksl/ir/SkSLStatement.h
index f2aa405..d781f7a 100644
--- a/src/sksl/ir/SkSLStatement.h
+++ b/src/sksl/ir/SkSLStatement.h
@@ -62,7 +62,7 @@
 
     const Kind fKind;
 
-    typedef IRNode INHERITED;
+    using INHERITED = IRNode;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLSwitchCase.h b/src/sksl/ir/SkSLSwitchCase.h
index 51a5c7b..68213f9 100644
--- a/src/sksl/ir/SkSLSwitchCase.h
+++ b/src/sksl/ir/SkSLSwitchCase.h
@@ -50,7 +50,7 @@
     std::unique_ptr<Expression> fValue;
     std::vector<std::unique_ptr<Statement>> fStatements;
 
-    typedef Statement INHERITED;
+    using INHERITED = Statement;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLSwitchStatement.h b/src/sksl/ir/SkSLSwitchStatement.h
index 5962621..643a190 100644
--- a/src/sksl/ir/SkSLSwitchStatement.h
+++ b/src/sksl/ir/SkSLSwitchStatement.h
@@ -59,7 +59,7 @@
     const std::shared_ptr<SymbolTable> fSymbols;
     std::vector<std::unique_ptr<SwitchCase>> fCases;
 
-    typedef Statement INHERITED;
+    using INHERITED = Statement;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLSwizzle.h b/src/sksl/ir/SkSLSwizzle.h
index afc1d57..913f2f1 100644
--- a/src/sksl/ir/SkSLSwizzle.h
+++ b/src/sksl/ir/SkSLSwizzle.h
@@ -147,7 +147,7 @@
     std::unique_ptr<Expression> fBase;
     std::vector<int> fComponents;
 
-    typedef Expression INHERITED;
+    using INHERITED = Expression;
 
 private:
     Swizzle(const Type& type, std::unique_ptr<Expression> base, std::vector<int> components)
diff --git a/src/sksl/ir/SkSLSymbol.h b/src/sksl/ir/SkSLSymbol.h
index e598568..272bd76 100644
--- a/src/sksl/ir/SkSLSymbol.h
+++ b/src/sksl/ir/SkSLSymbol.h
@@ -50,7 +50,7 @@
     Kind fKind;
     StringFragment fName;
 
-    typedef IRNode INHERITED;
+    using INHERITED = IRNode;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLTernaryExpression.h b/src/sksl/ir/SkSLTernaryExpression.h
index d87908a..8016c44 100644
--- a/src/sksl/ir/SkSLTernaryExpression.h
+++ b/src/sksl/ir/SkSLTernaryExpression.h
@@ -53,7 +53,7 @@
     std::unique_ptr<Expression> fIfTrue;
     std::unique_ptr<Expression> fIfFalse;
 
-    typedef Expression INHERITED;
+    using INHERITED = Expression;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLType.h b/src/sksl/ir/SkSLType.h
index f07c477..ad15508 100644
--- a/src/sksl/ir/SkSLType.h
+++ b/src/sksl/ir/SkSLType.h
@@ -422,7 +422,7 @@
     const Type& toCompound(const Context& context, int columns, int rows) const;
 
 private:
-    typedef Symbol INHERITED;
+    using INHERITED = Symbol;
 
     String fNameString;
     Kind fTypeKind;
diff --git a/src/sksl/ir/SkSLTypeReference.h b/src/sksl/ir/SkSLTypeReference.h
index a75a5c5..c1bf2b6 100644
--- a/src/sksl/ir/SkSLTypeReference.h
+++ b/src/sksl/ir/SkSLTypeReference.h
@@ -38,7 +38,7 @@
 
     const Type& fValue;
 
-    typedef Expression INHERITED;
+    using INHERITED = Expression;
 
 private:
     TypeReference(int offset, const Type& value, const Type* type)
diff --git a/src/sksl/ir/SkSLUnresolvedFunction.h b/src/sksl/ir/SkSLUnresolvedFunction.h
index 982d925..536b593 100644
--- a/src/sksl/ir/SkSLUnresolvedFunction.h
+++ b/src/sksl/ir/SkSLUnresolvedFunction.h
@@ -34,7 +34,7 @@
 
     const std::vector<const FunctionDeclaration*> fFunctions;
 
-    typedef Symbol INHERITED;
+    using INHERITED = Symbol;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLVarDeclarations.h b/src/sksl/ir/SkSLVarDeclarations.h
index 6004a89..6735154 100644
--- a/src/sksl/ir/SkSLVarDeclarations.h
+++ b/src/sksl/ir/SkSLVarDeclarations.h
@@ -63,7 +63,7 @@
     std::vector<std::unique_ptr<Expression>> fSizes;
     std::unique_ptr<Expression> fValue;
 
-    typedef Statement INHERITED;
+    using INHERITED = Statement;
 };
 
 /**
@@ -126,7 +126,7 @@
     // CFG to only have to worry about unique_ptr<Statement>
     std::vector<std::unique_ptr<Statement>> fVars;
 
-    typedef ProgramElement INHERITED;
+    using INHERITED = ProgramElement;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLVarDeclarationsStatement.h b/src/sksl/ir/SkSLVarDeclarationsStatement.h
index 3eb2632..db7f6ac 100644
--- a/src/sksl/ir/SkSLVarDeclarationsStatement.h
+++ b/src/sksl/ir/SkSLVarDeclarationsStatement.h
@@ -43,7 +43,7 @@
 
     std::unique_ptr<VarDeclarations> fDeclaration;
 
-    typedef Statement INHERITED;
+    using INHERITED = Statement;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLVariable.h b/src/sksl/ir/SkSLVariable.h
index 9f4d3b5..7ada5f2 100644
--- a/src/sksl/ir/SkSLVariable.h
+++ b/src/sksl/ir/SkSLVariable.h
@@ -78,7 +78,7 @@
     // eliminated.
     mutable int fWriteCount;
 
-    typedef Symbol INHERITED;
+    using INHERITED = Symbol;
 };
 
 } // namespace SkSL
diff --git a/src/sksl/ir/SkSLVariableReference.h b/src/sksl/ir/SkSLVariableReference.h
index 877c8b7..b0ebcb6 100644
--- a/src/sksl/ir/SkSLVariableReference.h
+++ b/src/sksl/ir/SkSLVariableReference.h
@@ -79,7 +79,7 @@
     RefKind fRefKind;
 
 private:
-    typedef Expression INHERITED;
+    using INHERITED = Expression;
 };
 
 }  // namespace SkSL
diff --git a/src/sksl/ir/SkSLWhileStatement.h b/src/sksl/ir/SkSLWhileStatement.h
index b3befff..537970f 100644
--- a/src/sksl/ir/SkSLWhileStatement.h
+++ b/src/sksl/ir/SkSLWhileStatement.h
@@ -37,7 +37,7 @@
     std::unique_ptr<Expression> fTest;
     std::unique_ptr<Statement> fStatement;
 
-    typedef Statement INHERITED;
+    using INHERITED = Statement;
 };
 
 }  // namespace SkSL
diff --git a/src/svg/SkSVGDevice.h b/src/svg/SkSVGDevice.h
index 2665164..dc7934a 100644
--- a/src/svg/SkSVGDevice.h
+++ b/src/svg/SkSVGDevice.h
@@ -63,7 +63,7 @@
     std::unique_ptr<AutoElement>    fRootElement;
     SkTArray<ClipRec>               fClipStack;
 
-    typedef SkClipStackDevice INHERITED;
+    using INHERITED = SkClipStackDevice;
 };
 
 #endif // SkSVGDevice_DEFINED
diff --git a/src/utils/SkCanvasStack.h b/src/utils/SkCanvasStack.h
index c6ee742..3b7bdb2 100644
--- a/src/utils/SkCanvasStack.h
+++ b/src/utils/SkCanvasStack.h
@@ -55,7 +55,7 @@
 
     SkTArray<CanvasData> fCanvasData;
 
-    typedef SkNWayCanvas INHERITED;
+    using INHERITED = SkNWayCanvas;
 };
 
 #endif
diff --git a/src/utils/SkCanvasStateUtils.cpp b/src/utils/SkCanvasStateUtils.cpp
index f590576..f5889cb 100644
--- a/src/utils/SkCanvasStateUtils.cpp
+++ b/src/utils/SkCanvasStateUtils.cpp
@@ -125,7 +125,7 @@
     SkCanvasLayerState* layers;
 private:
     SkCanvas* originalCanvas;
-    typedef SkCanvasState INHERITED;
+    using INHERITED = SkCanvasState;
 };
 
 ////////////////////////////////////////////////////////////////////////////////
diff --git a/src/utils/SkLuaCanvas.cpp b/src/utils/SkLuaCanvas.cpp
index 3a094c3..a284387 100644
--- a/src/utils/SkLuaCanvas.cpp
+++ b/src/utils/SkLuaCanvas.cpp
@@ -40,7 +40,7 @@
     void pushEncodedText(SkTextEncoding, const void*, size_t);
 
 private:
-    typedef SkLua INHERITED;
+    using INHERITED = SkLua;
 };
 
 #define AUTO_LUA(verb)  AutoCallLua lua(fL, fFunc.c_str(), verb)
diff --git a/src/utils/SkShadowTessellator.cpp b/src/utils/SkShadowTessellator.cpp
index 9fdc51d..8c3f5ce 100644
--- a/src/utils/SkShadowTessellator.cpp
+++ b/src/utils/SkShadowTessellator.cpp
@@ -900,7 +900,7 @@
 private:
     bool computePathPolygon(const SkPath& path, const SkMatrix& ctm);
 
-    typedef SkBaseShadowTessellator INHERITED;
+    using INHERITED = SkBaseShadowTessellator;
 };
 
 SkAmbientShadowTessellator::SkAmbientShadowTessellator(const SkPath& path,
@@ -997,7 +997,7 @@
                                     const SkMatrix& shadowTransform);
     void addToClip(const SkVector& nextPoint);
 
-    typedef SkBaseShadowTessellator INHERITED;
+    using INHERITED = SkBaseShadowTessellator;
 };
 
 SkSpotShadowTessellator::SkSpotShadowTessellator(const SkPath& path, const SkMatrix& ctm,
diff --git a/src/utils/SkShadowUtils.cpp b/src/utils/SkShadowUtils.cpp
index 6ef6781..10e1319 100644
--- a/src/utils/SkShadowUtils.cpp
+++ b/src/utils/SkShadowUtils.cpp
@@ -74,7 +74,7 @@
 private:
     SK_FLATTENABLE_HOOKS(SkGaussianColorFilter)
 
-    typedef SkColorFilterBase INHERITED;
+    using INHERITED = SkColorFilterBase;
 };
 
 sk_sp<SkFlattenable> SkGaussianColorFilter::CreateProc(SkReadBuffer&) {
diff --git a/src/xml/SkDOM.h b/src/xml/SkDOM.h
index 4ed1f35..0ed52b5 100644
--- a/src/xml/SkDOM.h
+++ b/src/xml/SkDOM.h
@@ -89,7 +89,7 @@
     Node*                        fRoot;
     std::unique_ptr<SkDOMParser> fParser;
 
-    typedef SkNoncopyable INHERITED;
+    using INHERITED = SkNoncopyable;
 };
 
 #endif
diff --git a/src/xps/SkXPSDevice.h b/src/xps/SkXPSDevice.h
index 0dcbb9b..38300b9 100644
--- a/src/xps/SkXPSDevice.h
+++ b/src/xps/SkXPSDevice.h
@@ -273,7 +273,7 @@
     SkXPSDevice(const SkXPSDevice&);
     void operator=(const SkXPSDevice&);
 
-    typedef SkClipStackDevice INHERITED;
+    using INHERITED = SkClipStackDevice;
 };
 
 #endif  // SK_BUILD_FOR_WIN
diff --git a/tests/CachedDecodingPixelRefTest.cpp b/tests/CachedDecodingPixelRefTest.cpp
index c057e61..b538fe7 100644
--- a/tests/CachedDecodingPixelRefTest.cpp
+++ b/tests/CachedDecodingPixelRefTest.cpp
@@ -82,7 +82,7 @@
     const TestType fType;
     skiatest::Reporter* const fReporter;
 
-    typedef SkImageGenerator INHERITED;
+    using INHERITED = SkImageGenerator;
 };
 
 ////////////////////////////////////////////////////////////////////////////////
diff --git a/tests/CanvasTest.cpp b/tests/CanvasTest.cpp
index 4e71559..5237954 100644
--- a/tests/CanvasTest.cpp
+++ b/tests/CanvasTest.cpp
@@ -449,7 +449,7 @@
     bool onFilter(SkPaint&) const override { return true; }
 
 private:
-    typedef SkPaintFilterCanvas INHERITED;
+    using INHERITED = SkPaintFilterCanvas;
 };
 
 } // anonymous namespace
@@ -617,7 +617,7 @@
 
     ZeroBoundsImageFilter() : INHERITED(nullptr, 0, nullptr) {}
 
-    typedef SkImageFilter_Base INHERITED;
+    using INHERITED = SkImageFilter_Base;
 };
 
 sk_sp<SkFlattenable> ZeroBoundsImageFilter::CreateProc(SkReadBuffer& buffer) {
diff --git a/tests/DrawOpAtlasTest.cpp b/tests/DrawOpAtlasTest.cpp
index da7f315..fe89dfa 100644
--- a/tests/DrawOpAtlasTest.cpp
+++ b/tests/DrawOpAtlasTest.cpp
@@ -108,7 +108,7 @@
 private:
     GrTokenTracker fTokenTracker;
 
-    typedef GrDeferredUploadTarget INHERITED;
+    using INHERITED = GrDeferredUploadTarget;
 };
 
 static bool fill_plot(GrDrawOpAtlas* atlas,
diff --git a/tests/FrontBufferedStreamTest.cpp b/tests/FrontBufferedStreamTest.cpp
index cef8c62..22ec1e9 100644
--- a/tests/FrontBufferedStreamTest.cpp
+++ b/tests/FrontBufferedStreamTest.cpp
@@ -153,7 +153,7 @@
 
 private:
     bool fIsAtEnd;
-    typedef SkMemoryStream INHERITED;
+    using INHERITED = SkMemoryStream;
 };
 
 // This test ensures that buffering the exact length of the stream and attempting to read beyond it
diff --git a/tests/GrMemoryPoolTest.cpp b/tests/GrMemoryPoolTest.cpp
index aaa8f07..1dd1c73 100644
--- a/tests/GrMemoryPoolTest.cpp
+++ b/tests/GrMemoryPoolTest.cpp
@@ -78,7 +78,7 @@
 private:
     double fDouble;
 
-    typedef A INHERITED;
+    using INHERITED = A;
 };
 
 class C : public A {
@@ -96,7 +96,7 @@
 private:
     int64_t fInt64;
 
-    typedef A INHERITED;
+    using INHERITED = A;
 };
 
 // D derives from C and owns a dynamically created B
@@ -122,7 +122,7 @@
     void*   fVoidStar;
     B*      fB;
 
-    typedef C INHERITED;
+    using INHERITED = C;
 };
 
 class E : public A {
@@ -146,7 +146,7 @@
 private:
     int   fIntArray[20];
 
-    typedef A INHERITED;
+    using INHERITED = A;
 };
 
 A* A::Create(SkRandom* r) {
diff --git a/tests/GrMeshTest.cpp b/tests/GrMeshTest.cpp
index d0eb9a4..502700e 100644
--- a/tests/GrMeshTest.cpp
+++ b/tests/GrMeshTest.cpp
@@ -448,7 +448,7 @@
     std::function<void(DrawMeshHelper*)> fPrepareFn;
     std::function<void(DrawMeshHelper*)> fExecuteFn;
 
-    typedef GrDrawOp INHERITED;
+    using INHERITED = GrDrawOp;
 };
 
 class GrMeshTestProcessor : public GrGeometryProcessor {
@@ -497,7 +497,7 @@
     Attribute fInstanceLocation;
     Attribute fInstanceColor;
 
-    typedef GrGeometryProcessor INHERITED;
+    using INHERITED = GrGeometryProcessor;
 };
 
 class GLSLMeshTestProcessor : public GrGLSLGeometryProcessor {
diff --git a/tests/GrPipelineDynamicStateTest.cpp b/tests/GrPipelineDynamicStateTest.cpp
index db3c30f..ae57c49 100644
--- a/tests/GrPipelineDynamicStateTest.cpp
+++ b/tests/GrPipelineDynamicStateTest.cpp
@@ -86,7 +86,7 @@
     };
 
     friend class GLSLPipelineDynamicStateTestProcessor;
-    typedef GrGeometryProcessor INHERITED;
+    using INHERITED = GrGeometryProcessor;
 };
 constexpr GrPrimitiveProcessor::Attribute GrPipelineDynamicStateTestProcessor::kAttributes[];
 
@@ -180,7 +180,7 @@
     GrScissorTest               fScissorTest;
     const sk_sp<const GrBuffer> fVertexBuffer;
 
-    typedef GrDrawOp INHERITED;
+    using INHERITED = GrDrawOp;
 };
 
 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(GrPipelineDynamicStateTest, reporter, ctxInfo) {
diff --git a/tests/ImageFilterTest.cpp b/tests/ImageFilterTest.cpp
index 679f18e..ba0da76 100644
--- a/tests/ImageFilterTest.cpp
+++ b/tests/ImageFilterTest.cpp
@@ -64,7 +64,7 @@
     skiatest::Reporter* fReporter;
     SkMatrix fExpectedMatrix;
 
-    typedef SkImageFilter_Base INHERITED;
+    using INHERITED = SkImageFilter_Base;
 };
 
 class FailImageFilter : public SkImageFilter_Base {
@@ -78,7 +78,7 @@
     SK_FLATTENABLE_HOOKS(FailImageFilter)
 
 private:
-    typedef SkImageFilter_Base INHERITED;
+    using INHERITED = SkImageFilter_Base;
 };
 
 sk_sp<SkFlattenable> FailImageFilter::CreateProc(SkReadBuffer& buffer) {
@@ -263,7 +263,7 @@
 
     SkIRect fBounds;
 
-    typedef SkImageFilter_Base INHERITED;
+    using INHERITED = SkImageFilter_Base;
 };
 }  // namespace
 
diff --git a/tests/LayerDrawLooperTest.cpp b/tests/LayerDrawLooperTest.cpp
index 05044a0..a9a11dc 100644
--- a/tests/LayerDrawLooperTest.cpp
+++ b/tests/LayerDrawLooperTest.cpp
@@ -39,7 +39,7 @@
     SkMatrix fLastMatrix;
 
 private:
-    typedef SkBitmapDevice INHERITED;
+    using INHERITED = SkBitmapDevice;
 };
 
 static void test_frontToBack(skiatest::Reporter* reporter) {
diff --git a/tests/LazyProxyTest.cpp b/tests/LazyProxyTest.cpp
index 07c52cb..46338ec 100644
--- a/tests/LazyProxyTest.cpp
+++ b/tests/LazyProxyTest.cpp
@@ -370,7 +370,7 @@
     int* fTestExecuteValue;
     sk_sp<GrTextureProxy> fLazyProxy;
 
-    typedef GrDrawOp INHERITED;
+    using INHERITED = GrDrawOp;
 };
 
 // Test that when a lazy proxy fails to instantiate during flush that we drop the Op that it was
diff --git a/tests/OnFlushCallbackTest.cpp b/tests/OnFlushCallbackTest.cpp
index 568e5f2..e56eb63 100644
--- a/tests/OnFlushCallbackTest.cpp
+++ b/tests/OnFlushCallbackTest.cpp
@@ -200,7 +200,7 @@
     GrSimpleMesh*  fMesh = nullptr;
     GrProgramInfo* fProgramInfo = nullptr;
 
-    typedef GrMeshDrawOp INHERITED;
+    using INHERITED = GrMeshDrawOp;
 };
 
 }  // anonymous namespace
@@ -266,7 +266,7 @@
     // The Atlased ops have an internal singly-linked list of ops that land in the same opsTask
     AtlasedRectOp* fNext;
 
-    typedef NonAARectOp INHERITED;
+    using INHERITED = NonAARectOp;
 };
 
 }  // anonymous namespace
diff --git a/tests/OpChainTest.cpp b/tests/OpChainTest.cpp
index a7c14cf..cdc9b19 100644
--- a/tests/OpChainTest.cpp
+++ b/tests/OpChainTest.cpp
@@ -162,7 +162,7 @@
     int* fResult;
     const Combinable* fCombinable;
 
-    typedef GrOp INHERITED;
+    using INHERITED = GrOp;
 };
 }  // namespace
 
diff --git a/tests/PDFPrimitivesTest.cpp b/tests/PDFPrimitivesTest.cpp
index a122f58..363d70e 100644
--- a/tests/PDFPrimitivesTest.cpp
+++ b/tests/PDFPrimitivesTest.cpp
@@ -275,7 +275,7 @@
 
     mutable bool fVisited;
 
-    typedef SkImageFilter_Base INHERITED;
+    using INHERITED = SkImageFilter_Base;
 };
 
 sk_sp<SkFlattenable> DummyImageFilter::CreateProc(SkReadBuffer& buffer) {
diff --git a/tests/PictureTest.cpp b/tests/PictureTest.cpp
index 5007abd..c2ca810 100644
--- a/tests/PictureTest.cpp
+++ b/tests/PictureTest.cpp
@@ -142,7 +142,7 @@
     unsigned int fSaveBehindCount;
     unsigned int fRestoreCount;
 
-    typedef SkCanvas INHERITED;
+    using INHERITED = SkCanvas;
 };
 
 void check_save_state(skiatest::Reporter* reporter, SkPicture* picture,
@@ -505,7 +505,7 @@
 private:
     unsigned fClipCount;
 
-    typedef SkCanvas INHERITED;
+    using INHERITED = SkCanvas;
 };
 
 static void test_clip_expansion(skiatest::Reporter* reporter) {
diff --git a/tests/PrimitiveProcessorTest.cpp b/tests/PrimitiveProcessorTest.cpp
index ae39ecf..491e302 100644
--- a/tests/PrimitiveProcessorTest.cpp
+++ b/tests/PrimitiveProcessorTest.cpp
@@ -121,7 +121,7 @@
             std::unique_ptr<SkString[]> fAttribNames;
             std::unique_ptr<Attribute[]> fAttributes;
 
-            typedef GrGeometryProcessor INHERITED;
+            using INHERITED = GrGeometryProcessor;
         };
 
         GrGeometryProcessor* gp = GP::Make(arena, fNumAttribs);
@@ -163,7 +163,7 @@
     GrSimpleMesh*  fMesh = nullptr;
     GrProgramInfo* fProgramInfo = nullptr;
 
-    typedef GrMeshDrawOp INHERITED;
+    using INHERITED = GrMeshDrawOp;
 };
 }  // namespace
 
diff --git a/tests/ProcessorTest.cpp b/tests/ProcessorTest.cpp
index e42864c..0d08777 100644
--- a/tests/ProcessorTest.cpp
+++ b/tests/ProcessorTest.cpp
@@ -79,7 +79,7 @@
 
     GrProcessorSet fProcessors;
 
-    typedef GrMeshDrawOp INHERITED;
+    using INHERITED = GrMeshDrawOp;
 };
 
 /**
@@ -139,7 +139,7 @@
 
     bool onIsEqual(const GrFragmentProcessor&) const override { return false; }
 
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 }  // namespace
 
diff --git a/tests/ProgramsTest.cpp b/tests/ProgramsTest.cpp
index 62b32b8..16c0a85 100644
--- a/tests/ProgramsTest.cpp
+++ b/tests/ProgramsTest.cpp
@@ -59,7 +59,7 @@
     }
 
 private:
-    typedef GrGLSLFragmentProcessor INHERITED;
+    using INHERITED = GrGLSLFragmentProcessor;
 };
 
 class BigKeyProcessor : public GrFragmentProcessor {
@@ -85,7 +85,7 @@
 
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
 
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 
 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(BigKeyProcessor);
@@ -121,7 +121,7 @@
         }
 
     private:
-        typedef GrGLSLFragmentProcessor INHERITED;
+        using INHERITED = GrGLSLFragmentProcessor;
     };
 
     BlockInputFragmentProcessor(std::unique_ptr<GrFragmentProcessor> child)
@@ -133,7 +133,7 @@
 
     bool onIsEqual(const GrFragmentProcessor&) const override { return true; }
 
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/tests/ResourceCacheTest.cpp b/tests/ResourceCacheTest.cpp
index ff760b8..39dfcfe 100644
--- a/tests/ResourceCacheTest.cpp
+++ b/tests/ResourceCacheTest.cpp
@@ -329,7 +329,7 @@
     static int fNumAlive;
     SimulatedProperty fProperty;
     bool fIsScratch;
-    typedef GrGpuResource INHERITED;
+    using INHERITED = GrGpuResource;
 };
 int TestResource::fNumAlive = 0;
 
diff --git a/tests/SkSLFPTest.cpp b/tests/SkSLFPTest.cpp
index 521023a..b6b6e14 100644
--- a/tests/SkSLFPTest.cpp
+++ b/tests/SkSLFPTest.cpp
@@ -135,7 +135,7 @@
     SkString onDumpInfo() const override;
 #endif
     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
-    typedef GrFragmentProcessor INHERITED;
+    using INHERITED = GrFragmentProcessor;
 };
 #endif
 )__Header__"
diff --git a/tests/SkSLInterpreterTest.cpp b/tests/SkSLInterpreterTest.cpp
index abe0fff..ec5735a 100644
--- a/tests/SkSLInterpreterTest.cpp
+++ b/tests/SkSLInterpreterTest.cpp
@@ -967,7 +967,7 @@
     const skjson::Value& fValue;
     SkSL::Compiler& fCompiler;
 
-    typedef SkSL::ExternalValue INHERITED;
+    using INHERITED = SkSL::ExternalValue;
 };
 
 class PointerExternalValue : public SkSL::ExternalValue {
@@ -998,7 +998,7 @@
     void* fData;
     size_t fSize;
 
-    typedef SkSL::ExternalValue INHERITED;
+    using INHERITED = SkSL::ExternalValue;
 };
 
 DEF_TEST(SkSLInterpreterExternalValues, r) {
@@ -1101,7 +1101,7 @@
 
     float (*fFunction)(float);
 
-    typedef SkSL::ExternalValue INHERITED;
+    using INHERITED = SkSL::ExternalValue;
 };
 
 DEF_TEST(SkSLInterpreterExternalValuesCall, r) {
@@ -1165,7 +1165,7 @@
 
     void (*fFunction)(float[4], float[4]);
 
-    typedef SkSL::ExternalValue INHERITED;
+    using INHERITED = SkSL::ExternalValue;
 };
 
 
diff --git a/tests/UtilsTest.cpp b/tests/UtilsTest.cpp
index 7a46226..95dcdd1 100644
--- a/tests/UtilsTest.cpp
+++ b/tests/UtilsTest.cpp
@@ -27,7 +27,7 @@
 private:
     int fN;
 
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 };
 
 static void test_autounref(skiatest::Reporter* reporter) {
diff --git a/tests/VkDrawableTest.cpp b/tests/VkDrawableTest.cpp
index d1df68d..1feaff2 100644
--- a/tests/VkDrawableTest.cpp
+++ b/tests/VkDrawableTest.cpp
@@ -87,7 +87,7 @@
         int32_t              fWidth;
         int32_t              fHeight;
 
-        typedef GpuDrawHandler INHERITED;
+        using INHERITED = GpuDrawHandler;
     };
 
     typedef void (*DrawProc)(TestDrawable*, const SkMatrix&, const SkIRect&,
@@ -128,7 +128,7 @@
         const SkIRect     fClipBounds;
         const SkImageInfo fBufferInfo;
 
-        typedef GpuDrawHandler INHERITED;
+        using INHERITED = GpuDrawHandler;
     };
 
     // Helper function to test drawing to a secondary command buffer that we imported into the
@@ -215,7 +215,7 @@
     int32_t              fWidth;
     int32_t              fHeight;
 
-    typedef SkDrawable INHERITED;
+    using INHERITED = SkDrawable;
 };
 
 void draw_drawable_test(skiatest::Reporter* reporter,
diff --git a/tools/DDLPromiseImageHelper.h b/tools/DDLPromiseImageHelper.h
index 29cdc87..2774a58 100644
--- a/tools/DDLPromiseImageHelper.h
+++ b/tools/DDLPromiseImageHelper.h
@@ -97,7 +97,7 @@
     int                          fUnreleasedFulfills = 0;
     int                          fDoneCnt = 0;
 
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 };
 
 // This class consolidates tracking & extraction of the original image data from an skp,
diff --git a/tools/debugger/DebugCanvas.cpp b/tools/debugger/DebugCanvas.cpp
index bc56f7d..5335e0f 100644
--- a/tools/debugger/DebugCanvas.cpp
+++ b/tools/debugger/DebugCanvas.cpp
@@ -78,7 +78,7 @@
 
 private:
 
-    typedef SkPaintFilterCanvas INHERITED;
+    using INHERITED = SkPaintFilterCanvas;
 };
 
 DebugCanvas::DebugCanvas(int width, int height)
diff --git a/tools/debugger/DebugCanvas.h b/tools/debugger/DebugCanvas.h
index 333df67..fe1d32d 100644
--- a/tools/debugger/DebugCanvas.h
+++ b/tools/debugger/DebugCanvas.h
@@ -240,7 +240,7 @@
     void drawAndCollectOps(SkCanvas*);
     void cleanupAuditTrail(SkCanvas*);
 
-    typedef SkCanvasVirtualEnforcer<SkCanvas> INHERITED;
+    using INHERITED = SkCanvasVirtualEnforcer<SkCanvas>;
 };
 
 #endif
diff --git a/tools/debugger/DrawCommand.h b/tools/debugger/DrawCommand.h
index ee1d091..4171ea3 100644
--- a/tools/debugger/DrawCommand.h
+++ b/tools/debugger/DrawCommand.h
@@ -125,7 +125,7 @@
     void execute(SkCanvas* canvas) const override;
 
 private:
-    typedef DrawCommand INHERITED;
+    using INHERITED = DrawCommand;
 };
 
 class ClearCommand : public DrawCommand {
@@ -137,7 +137,7 @@
 private:
     SkColor fColor;
 
-    typedef DrawCommand INHERITED;
+    using INHERITED = DrawCommand;
 };
 
 class ClipPathCommand : public DrawCommand {
@@ -152,7 +152,7 @@
     SkClipOp fOp;
     bool     fDoAA;
 
-    typedef DrawCommand INHERITED;
+    using INHERITED = DrawCommand;
 };
 
 class ClipRegionCommand : public DrawCommand {
@@ -165,7 +165,7 @@
     SkRegion fRegion;
     SkClipOp fOp;
 
-    typedef DrawCommand INHERITED;
+    using INHERITED = DrawCommand;
 };
 
 class ClipRectCommand : public DrawCommand {
@@ -179,7 +179,7 @@
     SkClipOp fOp;
     bool     fDoAA;
 
-    typedef DrawCommand INHERITED;
+    using INHERITED = DrawCommand;
 };
 
 class ClipRRectCommand : public DrawCommand {
@@ -194,7 +194,7 @@
     SkClipOp fOp;
     bool     fDoAA;
 
-    typedef DrawCommand INHERITED;
+    using INHERITED = DrawCommand;
 };
 
 class ClipShaderCommand : public DrawCommand {
@@ -208,7 +208,7 @@
     sk_sp<SkShader> fShader;
     SkClipOp fOp;
 
-    typedef DrawCommand INHERITED;
+    using INHERITED = DrawCommand;
 };
 
 class ConcatCommand : public DrawCommand {
@@ -220,7 +220,7 @@
 private:
     SkMatrix fMatrix;
 
-    typedef DrawCommand INHERITED;
+    using INHERITED = DrawCommand;
 };
 
 class Concat44Command : public DrawCommand {
@@ -232,7 +232,7 @@
 private:
     SkM44 fMatrix;
 
-    typedef DrawCommand INHERITED;
+    using INHERITED = DrawCommand;
 };
 
 class DrawAnnotationCommand : public DrawCommand {
@@ -246,7 +246,7 @@
     SkString      fKey;
     sk_sp<SkData> fValue;
 
-    typedef DrawCommand INHERITED;
+    using INHERITED = DrawCommand;
 };
 
 class DrawImageCommand : public DrawCommand {
@@ -262,7 +262,7 @@
     SkScalar             fTop;
     SkTLazy<SkPaint>     fPaint;
 
-    typedef DrawCommand INHERITED;
+    using INHERITED = DrawCommand;
 };
 
 class DrawImageLatticeCommand : public DrawCommand {
@@ -281,7 +281,7 @@
     SkRect               fDst;
     SkTLazy<SkPaint>     fPaint;
 
-    typedef DrawCommand INHERITED;
+    using INHERITED = DrawCommand;
 };
 
 class DrawImageNineCommand : public DrawCommand {
@@ -300,7 +300,7 @@
     SkRect               fDst;
     SkTLazy<SkPaint>     fPaint;
 
-    typedef DrawCommand INHERITED;
+    using INHERITED = DrawCommand;
 };
 
 class DrawImageRectCommand : public DrawCommand {
@@ -321,7 +321,7 @@
     SkTLazy<SkPaint>            fPaint;
     SkCanvas::SrcRectConstraint fConstraint;
 
-    typedef DrawCommand INHERITED;
+    using INHERITED = DrawCommand;
 };
 
 // Command for resolving the deferred SkImage representing an android layer
@@ -349,7 +349,7 @@
     SkTLazy<SkPaint>            fPaint;
     SkCanvas::SrcRectConstraint fConstraint;
 
-    typedef DrawCommand INHERITED;
+    using INHERITED = DrawCommand;
 };
 
 class DrawOvalCommand : public DrawCommand {
@@ -363,7 +363,7 @@
     SkRect  fOval;
     SkPaint fPaint;
 
-    typedef DrawCommand INHERITED;
+    using INHERITED = DrawCommand;
 };
 
 class DrawArcCommand : public DrawCommand {
@@ -384,7 +384,7 @@
     bool     fUseCenter;
     SkPaint  fPaint;
 
-    typedef DrawCommand INHERITED;
+    using INHERITED = DrawCommand;
 };
 
 class DrawPaintCommand : public DrawCommand {
@@ -397,7 +397,7 @@
 private:
     SkPaint fPaint;
 
-    typedef DrawCommand INHERITED;
+    using INHERITED = DrawCommand;
 };
 
 class DrawBehindCommand : public DrawCommand {
@@ -410,7 +410,7 @@
 private:
     SkPaint fPaint;
 
-    typedef DrawCommand INHERITED;
+    using INHERITED = DrawCommand;
 };
 
 class DrawPathCommand : public DrawCommand {
@@ -424,7 +424,7 @@
     SkPath  fPath;
     SkPaint fPaint;
 
-    typedef DrawCommand INHERITED;
+    using INHERITED = DrawCommand;
 };
 
 class BeginDrawPictureCommand : public DrawCommand {
@@ -439,7 +439,7 @@
     SkTLazy<SkMatrix>      fMatrix;
     SkTLazy<SkPaint>       fPaint;
 
-    typedef DrawCommand INHERITED;
+    using INHERITED = DrawCommand;
 };
 
 class EndDrawPictureCommand : public DrawCommand {
@@ -451,7 +451,7 @@
 private:
     bool fRestore;
 
-    typedef DrawCommand INHERITED;
+    using INHERITED = DrawCommand;
 };
 
 class DrawPointsCommand : public DrawCommand {
@@ -469,7 +469,7 @@
     SkTDArray<SkPoint>  fPts;
     SkPaint             fPaint;
 
-    typedef DrawCommand INHERITED;
+    using INHERITED = DrawCommand;
 };
 
 class DrawRegionCommand : public DrawCommand {
@@ -483,7 +483,7 @@
     SkRegion fRegion;
     SkPaint  fPaint;
 
-    typedef DrawCommand INHERITED;
+    using INHERITED = DrawCommand;
 };
 
 class DrawTextBlobCommand : public DrawCommand {
@@ -500,7 +500,7 @@
     SkScalar          fYPos;
     SkPaint           fPaint;
 
-    typedef DrawCommand INHERITED;
+    using INHERITED = DrawCommand;
 };
 
 class DrawPatchCommand : public DrawCommand {
@@ -522,7 +522,7 @@
     SkBlendMode fBlendMode;
     SkPaint     fPaint;
 
-    typedef DrawCommand INHERITED;
+    using INHERITED = DrawCommand;
 };
 
 class DrawRectCommand : public DrawCommand {
@@ -535,7 +535,7 @@
     SkRect  fRect;
     SkPaint fPaint;
 
-    typedef DrawCommand INHERITED;
+    using INHERITED = DrawCommand;
 };
 
 class DrawRRectCommand : public DrawCommand {
@@ -549,7 +549,7 @@
     SkRRect fRRect;
     SkPaint fPaint;
 
-    typedef DrawCommand INHERITED;
+    using INHERITED = DrawCommand;
 };
 
 class DrawDRRectCommand : public DrawCommand {
@@ -564,7 +564,7 @@
     SkRRect fInner;
     SkPaint fPaint;
 
-    typedef DrawCommand INHERITED;
+    using INHERITED = DrawCommand;
 };
 
 class DrawVerticesCommand : public DrawCommand {
@@ -578,7 +578,7 @@
     SkBlendMode       fBlendMode;
     SkPaint           fPaint;
 
-    typedef DrawCommand INHERITED;
+    using INHERITED = DrawCommand;
 };
 
 class DrawAtlasCommand : public DrawCommand {
@@ -603,7 +603,7 @@
     SkTLazy<SkRect>      fCull;
     SkTLazy<SkPaint>     fPaint;
 
-    typedef DrawCommand INHERITED;
+    using INHERITED = DrawCommand;
 };
 
 class SaveCommand : public DrawCommand {
@@ -612,7 +612,7 @@
     void execute(SkCanvas* canvas) const override;
 
 private:
-    typedef DrawCommand INHERITED;
+    using INHERITED = DrawCommand;
 };
 
 class SaveLayerCommand : public DrawCommand {
@@ -627,7 +627,7 @@
     sk_sp<const SkImageFilter> fBackdrop;
     uint32_t                   fSaveLayerFlags;
 
-    typedef DrawCommand INHERITED;
+    using INHERITED = DrawCommand;
 };
 
 class SetMatrixCommand : public DrawCommand {
@@ -639,7 +639,7 @@
 private:
     SkMatrix fMatrix;
 
-    typedef DrawCommand INHERITED;
+    using INHERITED = DrawCommand;
 };
 
 class DrawShadowCommand : public DrawCommand {
@@ -653,7 +653,7 @@
     SkPath          fPath;
     SkDrawShadowRec fShadowRec;
 
-    typedef DrawCommand INHERITED;
+    using INHERITED = DrawCommand;
 };
 
 class DrawDrawableCommand : public DrawCommand {
@@ -665,7 +665,7 @@
     sk_sp<SkDrawable> fDrawable;
     SkTLazy<SkMatrix> fMatrix;
 
-    typedef DrawCommand INHERITED;
+    using INHERITED = DrawCommand;
 };
 
 class DrawEdgeAAQuadCommand : public DrawCommand {
@@ -685,7 +685,7 @@
     SkColor4f             fColor;
     SkBlendMode           fMode;
 
-    typedef DrawCommand INHERITED;
+    using INHERITED = DrawCommand;
 };
 
 class DrawEdgeAAImageSetCommand : public DrawCommand {
@@ -706,6 +706,6 @@
     SkTLazy<SkPaint>                      fPaint;
     SkCanvas::SrcRectConstraint           fConstraint;
 
-    typedef DrawCommand INHERITED;
+    using INHERITED = DrawCommand;
 };
 #endif
diff --git a/tools/fonts/TestTypeface.h b/tools/fonts/TestTypeface.h
index 87b9fb5..bd3c923 100644
--- a/tools/fonts/TestTypeface.h
+++ b/tools/fonts/TestTypeface.h
@@ -59,7 +59,7 @@
     const char*          fName;
     SkPath*              fPaths;
     friend class TestTypeface;
-    typedef SkRefCnt INHERITED;
+    using INHERITED = SkRefCnt;
 };
 
 class TestTypeface : public SkTypeface {
diff --git a/tools/gpu/TestContext.h b/tools/gpu/TestContext.h
index ddf1935..1745dfd 100644
--- a/tools/gpu/TestContext.h
+++ b/tools/gpu/TestContext.h
@@ -112,7 +112,7 @@
     sk_sp<FlushFinishTracker> fFinishTrackers[kMaxFrameLag - 1];
     int fCurrentFlushIdx = 0;
 
-    typedef SkNoncopyable INHERITED;
+    using INHERITED = SkNoncopyable;
 };
 }  // namespace sk_gpu_test
 #endif
diff --git a/tools/gpu/d3d/D3DTestContext.cpp b/tools/gpu/d3d/D3DTestContext.cpp
index fa47043..b4c7f04 100644
--- a/tools/gpu/d3d/D3DTestContext.cpp
+++ b/tools/gpu/d3d/D3DTestContext.cpp
@@ -62,7 +62,7 @@
     void onPlatformMakeCurrent() const override {}
     std::function<void()> onPlatformGetAutoContextRestore() const override  { return nullptr; }
 
-    typedef sk_gpu_test::D3DTestContext INHERITED;
+    using INHERITED = sk_gpu_test::D3DTestContext;
 };
 }  // anonymous namespace
 
diff --git a/tools/gpu/d3d/D3DTestContext.h b/tools/gpu/d3d/D3DTestContext.h
index 2952cc7..3471238 100644
--- a/tools/gpu/d3d/D3DTestContext.h
+++ b/tools/gpu/d3d/D3DTestContext.h
@@ -32,7 +32,7 @@
     bool fOwnsContext;
 
 private:
-    typedef TestContext INHERITED;
+    using INHERITED = TestContext;
 };
 
 /**
diff --git a/tools/gpu/dawn/DawnTestContext.cpp b/tools/gpu/dawn/DawnTestContext.cpp
index a4e767e..162deaf 100644
--- a/tools/gpu/dawn/DawnTestContext.cpp
+++ b/tools/gpu/dawn/DawnTestContext.cpp
@@ -162,7 +162,7 @@
     void onPlatformMakeCurrent() const override {}
     std::function<void()> onPlatformGetAutoContextRestore() const override  { return nullptr; }
 
-    typedef sk_gpu_test::DawnTestContext INHERITED;
+    using INHERITED = sk_gpu_test::DawnTestContext;
 };
 }  // anonymous namespace
 
diff --git a/tools/gpu/dawn/DawnTestContext.h b/tools/gpu/dawn/DawnTestContext.h
index 73b4e5d..b967b05 100644
--- a/tools/gpu/dawn/DawnTestContext.h
+++ b/tools/gpu/dawn/DawnTestContext.h
@@ -30,7 +30,7 @@
     wgpu::Device fDevice;
 
 private:
-    typedef TestContext INHERITED;
+    using INHERITED = TestContext;
 };
 
 /**
diff --git a/tools/gpu/gl/GLTestContext.cpp b/tools/gpu/gl/GLTestContext.cpp
index 9291f86..30e3711 100644
--- a/tools/gpu/gl/GLTestContext.cpp
+++ b/tools/gpu/gl/GLTestContext.cpp
@@ -51,7 +51,7 @@
     GLGetQueryObjectui64vProc   fGLGetQueryObjectui64v;
 
 
-    typedef sk_gpu_test::GpuTimer INHERITED;
+    using INHERITED = sk_gpu_test::GpuTimer;
 };
 
 std::unique_ptr<GLGpuTimer> GLGpuTimer::MakeIfSupported(const sk_gpu_test::GLTestContext* ctx) {
diff --git a/tools/gpu/gl/GLTestContext.h b/tools/gpu/gl/GLTestContext.h
index 4346bfe..1fef420 100644
--- a/tools/gpu/gl/GLTestContext.h
+++ b/tools/gpu/gl/GLTestContext.h
@@ -94,7 +94,7 @@
     bool fWasInitialized = false;
 #endif
 
-    typedef TestContext INHERITED;
+    using INHERITED = TestContext;
 };
 
 /**
diff --git a/tools/gpu/mock/MockTestContext.cpp b/tools/gpu/mock/MockTestContext.cpp
index 06bd974..a9e29e5 100644
--- a/tools/gpu/mock/MockTestContext.cpp
+++ b/tools/gpu/mock/MockTestContext.cpp
@@ -35,7 +35,7 @@
     std::function<void()> onPlatformGetAutoContextRestore() const override { return nullptr; }
 
 private:
-    typedef sk_gpu_test::TestContext INHERITED;
+    using INHERITED = sk_gpu_test::TestContext;
 };
 
 } // anonymous namespace
diff --git a/tools/gpu/mtl/MtlTestContext.h b/tools/gpu/mtl/MtlTestContext.h
index dbda09d..20310ec 100644
--- a/tools/gpu/mtl/MtlTestContext.h
+++ b/tools/gpu/mtl/MtlTestContext.h
@@ -21,7 +21,7 @@
     MtlTestContext() {}
 
 private:
-    typedef TestContext INHERITED;
+    using INHERITED = TestContext;
 };
 
 /**
diff --git a/tools/gpu/mtl/MtlTestContext.mm b/tools/gpu/mtl/MtlTestContext.mm
index efd61af..f436ab5 100644
--- a/tools/gpu/mtl/MtlTestContext.mm
+++ b/tools/gpu/mtl/MtlTestContext.mm
@@ -80,7 +80,7 @@
     id<MTLDevice>        fDevice;
     id<MTLCommandQueue>  fQueue;
 
-    typedef sk_gpu_test::MtlTestContext INHERITED;
+    using INHERITED = sk_gpu_test::MtlTestContext;
 };
 
 }  // anonymous namespace
diff --git a/tools/gpu/vk/VkTestContext.cpp b/tools/gpu/vk/VkTestContext.cpp
index 6482b93..3fa461d 100644
--- a/tools/gpu/vk/VkTestContext.cpp
+++ b/tools/gpu/vk/VkTestContext.cpp
@@ -124,7 +124,7 @@
     void onPlatformMakeCurrent() const override {}
     std::function<void()> onPlatformGetAutoContextRestore() const override  { return nullptr; }
 
-    typedef sk_gpu_test::VkTestContext INHERITED;
+    using INHERITED = sk_gpu_test::VkTestContext;
 };
 }  // anonymous namespace
 
diff --git a/tools/gpu/vk/VkTestContext.h b/tools/gpu/vk/VkTestContext.h
index 5935783..42e1267 100644
--- a/tools/gpu/vk/VkTestContext.h
+++ b/tools/gpu/vk/VkTestContext.h
@@ -54,7 +54,7 @@
     PFN_vkDestroyDebugReportCallbackEXT fDestroyDebugReportCallbackEXT = nullptr;
 
 private:
-    typedef TestContext INHERITED;
+    using INHERITED = TestContext;
 };
 
 /**
diff --git a/tools/sk_app/android/GLWindowContext_android.cpp b/tools/sk_app/android/GLWindowContext_android.cpp
index f23c741..5e6815f 100644
--- a/tools/sk_app/android/GLWindowContext_android.cpp
+++ b/tools/sk_app/android/GLWindowContext_android.cpp
@@ -37,7 +37,7 @@
     // For setDisplayParams and resize which call onInitializeContext with null platformData
     ANativeWindow* fNativeWindow = nullptr;
 
-    typedef GLWindowContext INHERITED;
+    using INHERITED = GLWindowContext;
 };
 
 GLWindowContext_android::GLWindowContext_android(ANativeWindow* window,
diff --git a/tools/sk_app/android/RasterWindowContext_android.cpp b/tools/sk_app/android/RasterWindowContext_android.cpp
index 701963c..43ad82d 100644
--- a/tools/sk_app/android/RasterWindowContext_android.cpp
+++ b/tools/sk_app/android/RasterWindowContext_android.cpp
@@ -33,7 +33,7 @@
     ANativeWindow_Buffer fBuffer;
     ARect fBounds;
 
-    typedef RasterWindowContext INHERITED;
+    using INHERITED = RasterWindowContext;
 };
 
 RasterWindowContext_android::RasterWindowContext_android(ANativeWindow* window,
diff --git a/tools/sk_app/ios/GLWindowContext_ios.mm b/tools/sk_app/ios/GLWindowContext_ios.mm
index a21f88b..9e84729 100644
--- a/tools/sk_app/ios/GLWindowContext_ios.mm
+++ b/tools/sk_app/ios/GLWindowContext_ios.mm
@@ -49,7 +49,7 @@
     GLuint               fFramebuffer;
     GLuint               fRenderbuffer;
 
-    typedef GLWindowContext INHERITED;
+    using INHERITED = GLWindowContext;
 };
 
 GLWindowContext_ios::GLWindowContext_ios(const IOSWindowInfo& info, const DisplayParams& params)
diff --git a/tools/sk_app/ios/MetalWindowContext_ios.mm b/tools/sk_app/ios/MetalWindowContext_ios.mm
index f05ac20..b8cee03 100644
--- a/tools/sk_app/ios/MetalWindowContext_ios.mm
+++ b/tools/sk_app/ios/MetalWindowContext_ios.mm
@@ -42,7 +42,7 @@
     UIViewController*    fViewController;
     MetalView*           fMetalView;
 
-    typedef MetalWindowContext INHERITED;
+    using INHERITED = MetalWindowContext;
 };
 
 MetalWindowContext_ios::MetalWindowContext_ios(const IOSWindowInfo& info,
diff --git a/tools/sk_app/ios/RasterWindowContext_ios.mm b/tools/sk_app/ios/RasterWindowContext_ios.mm
index 16a21f4..6bca0a5 100644
--- a/tools/sk_app/ios/RasterWindowContext_ios.mm
+++ b/tools/sk_app/ios/RasterWindowContext_ios.mm
@@ -58,7 +58,7 @@
     GLuint               fRenderbuffer;
     sk_sp<SkSurface>     fBackbufferSurface;
 
-    typedef GLWindowContext INHERITED;
+    using INHERITED = GLWindowContext;
 };
 
 RasterWindowContext_ios::RasterWindowContext_ios(const IOSWindowInfo& info,
diff --git a/tools/sk_app/ios/Window_ios.h b/tools/sk_app/ios/Window_ios.h
index 037f992..c4c2f1a 100644
--- a/tools/sk_app/ios/Window_ios.h
+++ b/tools/sk_app/ios/Window_ios.h
@@ -45,7 +45,7 @@
 
     static Window_ios* gWindow; // there should be only one
 
-    typedef Window INHERITED;
+    using INHERITED = Window;
 };
 
 }   // namespace sk_app
diff --git a/tools/sk_app/mac/GLWindowContext_mac.mm b/tools/sk_app/mac/GLWindowContext_mac.mm
index 92154c3..775e387 100644
--- a/tools/sk_app/mac/GLWindowContext_mac.mm
+++ b/tools/sk_app/mac/GLWindowContext_mac.mm
@@ -39,7 +39,7 @@
     NSOpenGLContext*     fGLContext;
     NSOpenGLPixelFormat* fPixelFormat;
 
-    typedef GLWindowContext INHERITED;
+    using INHERITED = GLWindowContext;
 };
 
 GLWindowContext_mac::GLWindowContext_mac(const MacWindowInfo& info, const DisplayParams& params)
diff --git a/tools/sk_app/mac/MetalWindowContext_mac.mm b/tools/sk_app/mac/MetalWindowContext_mac.mm
index df8cda9..af7bddb 100644
--- a/tools/sk_app/mac/MetalWindowContext_mac.mm
+++ b/tools/sk_app/mac/MetalWindowContext_mac.mm
@@ -31,7 +31,7 @@
 private:
     NSView*              fMainView;
 
-    typedef MetalWindowContext INHERITED;
+    using INHERITED = MetalWindowContext;
 };
 
 MetalWindowContext_mac::MetalWindowContext_mac(const MacWindowInfo& info,
diff --git a/tools/sk_app/mac/RasterWindowContext_mac.mm b/tools/sk_app/mac/RasterWindowContext_mac.mm
index e300b2e..eeba9e4 100644
--- a/tools/sk_app/mac/RasterWindowContext_mac.mm
+++ b/tools/sk_app/mac/RasterWindowContext_mac.mm
@@ -47,7 +47,7 @@
     NSOpenGLPixelFormat* fPixelFormat;
     sk_sp<SkSurface>     fBackbufferSurface;
 
-    typedef GLWindowContext INHERITED;
+    using INHERITED = GLWindowContext;
 };
 
 RasterWindowContext_mac::RasterWindowContext_mac(const MacWindowInfo& info,
diff --git a/tools/sk_app/mac/Window_mac.h b/tools/sk_app/mac/Window_mac.h
index 761cd40..01c285d 100644
--- a/tools/sk_app/mac/Window_mac.h
+++ b/tools/sk_app/mac/Window_mac.h
@@ -52,7 +52,7 @@
 
     static SkTDynamicHash<Window_mac, NSInteger> gWindowMap;
 
-    typedef Window INHERITED;
+    using INHERITED = Window;
 };
 
 }   // namespace sk_app
diff --git a/tools/sk_app/unix/DawnVulkanWindowContext_unix.cpp b/tools/sk_app/unix/DawnVulkanWindowContext_unix.cpp
index 69ee084..aec034a 100644
--- a/tools/sk_app/unix/DawnVulkanWindowContext_unix.cpp
+++ b/tools/sk_app/unix/DawnVulkanWindowContext_unix.cpp
@@ -36,7 +36,7 @@
     XWindow      fWindow;
     VkSurfaceKHR fVkSurface = nullptr;
 
-    typedef DawnWindowContext INHERITED;
+    using INHERITED = DawnWindowContext;
 };
 
 DawnVulkanWindowContext_xlib::DawnVulkanWindowContext_xlib(const XlibWindowInfo& winInfo,
diff --git a/tools/sk_app/unix/GLWindowContext_unix.cpp b/tools/sk_app/unix/GLWindowContext_unix.cpp
index 4eddba3..5a7c4f7 100644
--- a/tools/sk_app/unix/GLWindowContext_unix.cpp
+++ b/tools/sk_app/unix/GLWindowContext_unix.cpp
@@ -45,7 +45,7 @@
     XVisualInfo* fVisualInfo;
     GLXContext   fGLContext;
 
-    typedef GLWindowContext INHERITED;
+    using INHERITED = GLWindowContext;
 };
 
 GLWindowContext_xlib::GLWindowContext_xlib(const XlibWindowInfo& winInfo, const DisplayParams& params)
diff --git a/tools/sk_app/unix/RasterWindowContext_unix.cpp b/tools/sk_app/unix/RasterWindowContext_unix.cpp
index e8ae942..6ac2096 100644
--- a/tools/sk_app/unix/RasterWindowContext_unix.cpp
+++ b/tools/sk_app/unix/RasterWindowContext_unix.cpp
@@ -30,7 +30,7 @@
     XWindow  fWindow;
     GC       fGC;
 
-    typedef RasterWindowContext INHERITED;
+    using INHERITED = RasterWindowContext;
 };
 
 RasterWindowContext_xlib::RasterWindowContext_xlib(Display* display, XWindow window, int width,
diff --git a/tools/sk_app/unix/Window_unix.h b/tools/sk_app/unix/Window_unix.h
index 417a79b..9589ae5 100644
--- a/tools/sk_app/unix/Window_unix.h
+++ b/tools/sk_app/unix/Window_unix.h
@@ -95,7 +95,7 @@
 
     BackendType fBackend;
 
-    typedef Window INHERITED;
+    using INHERITED = Window;
 };
 
 }   // namespace sk_app
diff --git a/tools/sk_app/win/ANGLEWindowContext_win.cpp b/tools/sk_app/win/ANGLEWindowContext_win.cpp
index 5fcccb2..048269a 100644
--- a/tools/sk_app/win/ANGLEWindowContext_win.cpp
+++ b/tools/sk_app/win/ANGLEWindowContext_win.cpp
@@ -53,7 +53,7 @@
     EGLContext fEGLContext = EGL_NO_CONTEXT;
     EGLSurface fEGLSurface = EGL_NO_SURFACE;
 
-    typedef GLWindowContext INHERITED;
+    using INHERITED = GLWindowContext;
 };
 
 ANGLEGLWindowContext_win::ANGLEGLWindowContext_win(HWND wnd, const DisplayParams& params)
diff --git a/tools/sk_app/win/GLWindowContext_win.cpp b/tools/sk_app/win/GLWindowContext_win.cpp
index 18d4e34..b58efcb 100644
--- a/tools/sk_app/win/GLWindowContext_win.cpp
+++ b/tools/sk_app/win/GLWindowContext_win.cpp
@@ -46,7 +46,7 @@
     HWND              fHWND;
     HGLRC             fHGLRC;
 
-    typedef GLWindowContext INHERITED;
+    using INHERITED = GLWindowContext;
 };
 
 GLWindowContext_win::GLWindowContext_win(HWND wnd, const DisplayParams& params)
diff --git a/tools/sk_app/win/RasterWindowContext_win.cpp b/tools/sk_app/win/RasterWindowContext_win.cpp
index 9548220..6b7f87a 100644
--- a/tools/sk_app/win/RasterWindowContext_win.cpp
+++ b/tools/sk_app/win/RasterWindowContext_win.cpp
@@ -33,7 +33,7 @@
     HWND fWnd;
 
 private:
-    typedef RasterWindowContext INHERITED;
+    using INHERITED = RasterWindowContext;
 };
 
 RasterWindowContext_win::RasterWindowContext_win(HWND wnd, const DisplayParams& params)
diff --git a/tools/sk_app/win/Window_win.h b/tools/sk_app/win/Window_win.h
index 9e108e0..0e94ece 100644
--- a/tools/sk_app/win/Window_win.h
+++ b/tools/sk_app/win/Window_win.h
@@ -37,7 +37,7 @@
     HWND      fHWnd;
     BackendType fBackend;
 
-    typedef Window INHERITED;
+    using INHERITED = Window;
 };
 
 }   // namespace sk_app
diff --git a/tools/viewer/SkottieSlide.h b/tools/viewer/SkottieSlide.h
index aec76a3..d9534bc 100644
--- a/tools/viewer/SkottieSlide.h
+++ b/tools/viewer/SkottieSlide.h
@@ -56,7 +56,7 @@
                                        fDraggingProgress   = false,
                                        fPreferGlyphPaths   = false;
 
-    typedef Slide INHERITED;
+    using INHERITED = Slide;
 };
 
 #endif // SK_ENABLE_SKOTTIE
diff --git a/tools/viewer/SvgSlide.h b/tools/viewer/SvgSlide.h
index 6a15a30..fa10ffe 100644
--- a/tools/viewer/SvgSlide.h
+++ b/tools/viewer/SvgSlide.h
@@ -29,7 +29,7 @@
     SkSize fWinSize = SkSize::MakeEmpty();
     sk_sp<SkSVGDOM> fDom;
 
-    typedef Slide INHERITED;
+    using INHERITED = Slide;
 };
 
 #endif // SvgSlide_DEFINED