Replace SK_ARRAY_COUNT with std::size() for skia/modules

* Changed one static_assert to SkASSERT in RangeSelector.cpp:42

Change-Id: I12815a8817816261bb30f5412432109ed46826fd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/551892
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: John Stiles <johnstiles@google.com>
diff --git a/modules/androidkit/src/Canvas.cpp b/modules/androidkit/src/Canvas.cpp
index 8f36fb7..7a74dcc 100644
--- a/modules/androidkit/src/Canvas.cpp
+++ b/modules/androidkit/src/Canvas.cpp
@@ -214,6 +214,6 @@
 
     const auto clazz = env->FindClass("org/skia/androidkit/Canvas");
     return clazz
-        ? env->RegisterNatives(clazz, methods, SK_ARRAY_COUNT(methods))
+        ? env->RegisterNatives(clazz, methods, std::size(methods))
         : JNI_ERR;
 }
diff --git a/modules/androidkit/src/ColorFilters.cpp b/modules/androidkit/src/ColorFilters.cpp
index 347de51..e48e43f 100644
--- a/modules/androidkit/src/ColorFilters.cpp
+++ b/modules/androidkit/src/ColorFilters.cpp
@@ -48,7 +48,7 @@
 
     const auto clazz = env->FindClass("org/skia/androidkit/ColorFilter");
     return clazz
-        ? env->RegisterNatives(clazz, methods, SK_ARRAY_COUNT(methods))
+        ? env->RegisterNatives(clazz, methods, std::size(methods))
         : JNI_ERR;
 }
 
@@ -59,7 +59,7 @@
 
     const auto clazz = env->FindClass("org/skia/androidkit/MatrixColorFilter");
     return clazz
-        ? env->RegisterNatives(clazz, methods, SK_ARRAY_COUNT(methods))
+        ? env->RegisterNatives(clazz, methods, std::size(methods))
         : JNI_ERR;
 }
 
@@ -70,7 +70,7 @@
 
     const auto clazz = env->FindClass("org/skia/androidkit/HSLAMatrixColorFilter");
     return clazz
-        ? env->RegisterNatives(clazz, methods, SK_ARRAY_COUNT(methods))
+        ? env->RegisterNatives(clazz, methods, std::size(methods))
         : JNI_ERR;
 }
 
@@ -81,6 +81,6 @@
 
     const auto clazz = env->FindClass("org/skia/androidkit/ComposeColorFilter");
     return clazz
-        ? env->RegisterNatives(clazz, methods, SK_ARRAY_COUNT(methods))
+        ? env->RegisterNatives(clazz, methods, std::size(methods))
         : JNI_ERR;
 }
diff --git a/modules/androidkit/src/Font.cpp b/modules/androidkit/src/Font.cpp
index 346bf49..9111b04 100644
--- a/modules/androidkit/src/Font.cpp
+++ b/modules/androidkit/src/Font.cpp
@@ -35,6 +35,6 @@
 
     const auto clazz = env->FindClass("org/skia/androidkit/Font");
     return clazz
-        ? env->RegisterNatives(clazz, methods, SK_ARRAY_COUNT(methods))
+        ? env->RegisterNatives(clazz, methods, std::size(methods))
         : JNI_ERR;
 }
diff --git a/modules/androidkit/src/FontChainAdapter.cpp b/modules/androidkit/src/FontChainAdapter.cpp
index 4c16040..6604fdc 100644
--- a/modules/androidkit/src/FontChainAdapter.cpp
+++ b/modules/androidkit/src/FontChainAdapter.cpp
@@ -85,6 +85,6 @@
     };
 
     return clazz
-        ? env->RegisterNatives(clazz, methods, SK_ARRAY_COUNT(methods))
+        ? env->RegisterNatives(clazz, methods, std::size(methods))
         : JNI_ERR;
 }
diff --git a/modules/androidkit/src/Gradients.cpp b/modules/androidkit/src/Gradients.cpp
index a81b586..4f21fbb 100644
--- a/modules/androidkit/src/Gradients.cpp
+++ b/modules/androidkit/src/Gradients.cpp
@@ -132,7 +132,7 @@
 
     const auto clazz = env->FindClass("org/skia/androidkit/LinearGradient");
     return clazz
-        ? env->RegisterNatives(clazz, methods, SK_ARRAY_COUNT(methods))
+        ? env->RegisterNatives(clazz, methods, std::size(methods))
         : JNI_ERR;
 }
 
@@ -143,7 +143,7 @@
 
     const auto clazz = env->FindClass("org/skia/androidkit/RadialGradient");
     return clazz
-        ? env->RegisterNatives(clazz, methods, SK_ARRAY_COUNT(methods))
+        ? env->RegisterNatives(clazz, methods, std::size(methods))
         : JNI_ERR;
 }
 
@@ -154,7 +154,7 @@
 
     const auto clazz = env->FindClass("org/skia/androidkit/TwoPointConicalGradient");
     return clazz
-        ? env->RegisterNatives(clazz, methods, SK_ARRAY_COUNT(methods))
+        ? env->RegisterNatives(clazz, methods, std::size(methods))
         : JNI_ERR;
 }
 
@@ -165,6 +165,6 @@
 
     const auto clazz = env->FindClass("org/skia/androidkit/SweepGradient");
     return clazz
-        ? env->RegisterNatives(clazz, methods, SK_ARRAY_COUNT(methods))
+        ? env->RegisterNatives(clazz, methods, std::size(methods))
         : JNI_ERR;
 }
diff --git a/modules/androidkit/src/Image.cpp b/modules/androidkit/src/Image.cpp
index 597f7e4..9bc16bec 100644
--- a/modules/androidkit/src/Image.cpp
+++ b/modules/androidkit/src/Image.cpp
@@ -75,6 +75,6 @@
 
     const auto clazz = env->FindClass("org/skia/androidkit/Image");
     return clazz
-        ? env->RegisterNatives(clazz, methods, SK_ARRAY_COUNT(methods))
+        ? env->RegisterNatives(clazz, methods, std::size(methods))
         : JNI_ERR;
 }
diff --git a/modules/androidkit/src/ImageFilter.cpp b/modules/androidkit/src/ImageFilter.cpp
index 86e7b18..80dcda1 100644
--- a/modules/androidkit/src/ImageFilter.cpp
+++ b/modules/androidkit/src/ImageFilter.cpp
@@ -75,6 +75,6 @@
 
     const auto clazz = env->FindClass("org/skia/androidkit/ImageFilter");
     return clazz
-        ? env->RegisterNatives(clazz, methods, SK_ARRAY_COUNT(methods))
+        ? env->RegisterNatives(clazz, methods, std::size(methods))
         : JNI_ERR;
 }
diff --git a/modules/androidkit/src/Matrix.cpp b/modules/androidkit/src/Matrix.cpp
index 41b017f..0a41dc8 100644
--- a/modules/androidkit/src/Matrix.cpp
+++ b/modules/androidkit/src/Matrix.cpp
@@ -123,6 +123,6 @@
 
     const auto clazz = env->FindClass("org/skia/androidkit/Matrix");
     return clazz
-        ? env->RegisterNatives(clazz, methods, SK_ARRAY_COUNT(methods))
+        ? env->RegisterNatives(clazz, methods, std::size(methods))
         : JNI_ERR;
 }
diff --git a/modules/androidkit/src/Paint.cpp b/modules/androidkit/src/Paint.cpp
index 35e9156..7268f2d 100644
--- a/modules/androidkit/src/Paint.cpp
+++ b/modules/androidkit/src/Paint.cpp
@@ -122,6 +122,6 @@
 
     const auto clazz = env->FindClass("org/skia/androidkit/Paint");
     return clazz
-        ? env->RegisterNatives(clazz, methods, SK_ARRAY_COUNT(methods))
+        ? env->RegisterNatives(clazz, methods, std::size(methods))
         : JNI_ERR;
 }
diff --git a/modules/androidkit/src/Path.cpp b/modules/androidkit/src/Path.cpp
index 8ea4bc6..89ef879 100644
--- a/modules/androidkit/src/Path.cpp
+++ b/modules/androidkit/src/Path.cpp
@@ -23,6 +23,6 @@
 
     const auto clazz = env->FindClass("org/skia/androidkit/Path");
     return clazz
-        ? env->RegisterNatives(clazz, methods, SK_ARRAY_COUNT(methods))
+        ? env->RegisterNatives(clazz, methods, std::size(methods))
         : JNI_ERR;
 }
diff --git a/modules/androidkit/src/PathBuilder.cpp b/modules/androidkit/src/PathBuilder.cpp
index a0a8504..a091d52 100644
--- a/modules/androidkit/src/PathBuilder.cpp
+++ b/modules/androidkit/src/PathBuilder.cpp
@@ -103,6 +103,6 @@
 
     const auto clazz = env->FindClass("org/skia/androidkit/PathBuilder");
     return clazz
-        ? env->RegisterNatives(clazz, methods, SK_ARRAY_COUNT(methods))
+        ? env->RegisterNatives(clazz, methods, std::size(methods))
         : JNI_ERR;
 }
diff --git a/modules/androidkit/src/RuntimeShaderBuilder.cpp b/modules/androidkit/src/RuntimeShaderBuilder.cpp
index df86a98..c390e90 100644
--- a/modules/androidkit/src/RuntimeShaderBuilder.cpp
+++ b/modules/androidkit/src/RuntimeShaderBuilder.cpp
@@ -78,6 +78,6 @@
 
     const auto clazz = env->FindClass("org/skia/androidkit/RuntimeShaderBuilder");
     return clazz
-        ? env->RegisterNatives(clazz, methods, SK_ARRAY_COUNT(methods))
+        ? env->RegisterNatives(clazz, methods, std::size(methods))
         : JNI_ERR;
 }
diff --git a/modules/androidkit/src/Shader.cpp b/modules/androidkit/src/Shader.cpp
index 81cd257..9d9980a 100644
--- a/modules/androidkit/src/Shader.cpp
+++ b/modules/androidkit/src/Shader.cpp
@@ -23,6 +23,6 @@
 
     const auto clazz = env->FindClass("org/skia/androidkit/Shader");
     return clazz
-        ? env->RegisterNatives(clazz, methods, SK_ARRAY_COUNT(methods))
+        ? env->RegisterNatives(clazz, methods, std::size(methods))
         : JNI_ERR;
 }
diff --git a/modules/androidkit/src/SkottieAnimation.cpp b/modules/androidkit/src/SkottieAnimation.cpp
index 14c2de1..3a67a3e 100644
--- a/modules/androidkit/src/SkottieAnimation.cpp
+++ b/modules/androidkit/src/SkottieAnimation.cpp
@@ -86,6 +86,6 @@
 
     const auto clazz = env->FindClass("org/skia/androidkit/SkottieAnimation");
     return clazz
-        ? env->RegisterNatives(clazz, methods, SK_ARRAY_COUNT(methods))
+        ? env->RegisterNatives(clazz, methods, std::size(methods))
         : JNI_ERR;
 }
diff --git a/modules/androidkit/src/Surface.cpp b/modules/androidkit/src/Surface.cpp
index 8732f9f..f113625 100644
--- a/modules/androidkit/src/Surface.cpp
+++ b/modules/androidkit/src/Surface.cpp
@@ -268,6 +268,6 @@
 
     const auto clazz = env->FindClass("org/skia/androidkit/Surface");
     return clazz
-        ? env->RegisterNatives(clazz, methods, SK_ARRAY_COUNT(methods))
+        ? env->RegisterNatives(clazz, methods, std::size(methods))
         : JNI_ERR;
 }
diff --git a/modules/androidkit/src/Text.cpp b/modules/androidkit/src/Text.cpp
index e87e53c..f3a3293 100644
--- a/modules/androidkit/src/Text.cpp
+++ b/modules/androidkit/src/Text.cpp
@@ -46,6 +46,6 @@
 
     const auto clazz = env->FindClass("org/skia/androidkit/Text");
     return clazz
-        ? env->RegisterNatives(clazz, methods, SK_ARRAY_COUNT(methods))
+        ? env->RegisterNatives(clazz, methods, std::size(methods))
         : JNI_ERR;
 }
diff --git a/modules/skottie/gm/ExternalProperties.cpp b/modules/skottie/gm/ExternalProperties.cpp
index cac7767..7679838 100644
--- a/modules/skottie/gm/ExternalProperties.cpp
+++ b/modules/skottie/gm/ExternalProperties.cpp
@@ -105,7 +105,7 @@
             { "update #3", SK_ColorMAGENTA, SK_ColorCYAN  , 150.f },
         };
 
-        SkASSERT(i - 1 < SK_ARRAY_COUNT(gTests));
+        SkASSERT(i - 1 < std::size(gTests));
         const auto& tst = gTests[i - 1];
 
         for (const auto& prop : fPropManager->getColorProps()) {
diff --git a/modules/skottie/gm/SkottieGM.cpp b/modules/skottie/gm/SkottieGM.cpp
index e0dab25..70324a8 100644
--- a/modules/skottie/gm/SkottieGM.cpp
+++ b/modules/skottie/gm/SkottieGM.cpp
@@ -148,7 +148,7 @@
         };
 
         if (uni == 'c') {
-            fColorIndex = (fColorIndex + 1) % SK_ARRAY_COUNT(kColors);
+            fColorIndex = (fColorIndex + 1) % std::size(kColors);
             for (const auto& prop : fColorProps) {
                 fPropManager->setColor(prop, kColors[fColorIndex]);
             }
diff --git a/modules/skottie/src/Layer.cpp b/modules/skottie/src/Layer.cpp
index 1057a6f..2a957f2 100644
--- a/modules/skottie/src/Layer.cpp
+++ b/modules/skottie/src/Layer.cpp
@@ -450,7 +450,7 @@
         { nullptr                              ,                 0 },  // 'ty': 14 -> light
     };
 
-    if (fType < 0 || static_cast<size_t>(fType) >= SK_ARRAY_COUNT(gLayerBuildInfo)) {
+    if (fType < 0 || static_cast<size_t>(fType) >= std::size(gLayerBuildInfo)) {
         return nullptr;
     }
 
@@ -557,7 +557,7 @@
             sksg::MaskEffect::Mode::kLumaInvert,  // tt: 4
         };
 
-        if (matte_mode <= SK_ARRAY_COUNT(gMatteModes)) {
+        if (matte_mode <= std::size(gMatteModes)) {
             // The current layer is masked with the previous layer *content*.
             layer = sksg::MaskEffect::Make(std::move(layer),
                                            prev_layer->fContentTree,
diff --git a/modules/skottie/src/Skottie.cpp b/modules/skottie/src/Skottie.cpp
index 8c96b52..6dcaf1b 100644
--- a/modules/skottie/src/Skottie.cpp
+++ b/modules/skottie/src/Skottie.cpp
@@ -115,7 +115,7 @@
     };
 
     const size_t bm_index = ParseDefault<size_t>(jobject["bm"], 0);
-    if (bm_index >= SK_ARRAY_COUNT(kBlendModeMap)) {
+    if (bm_index >= std::size(kBlendModeMap)) {
         abuilder->log(Logger::Level::kWarning, &jobject, "Unsupported blend mode %zu\n", bm_index);
         return SkBlendMode::kSrcOver;
     }
diff --git a/modules/skottie/src/effects/CornerPinEffect.cpp b/modules/skottie/src/effects/CornerPinEffect.cpp
index 1490f08..0719e45 100644
--- a/modules/skottie/src/effects/CornerPinEffect.cpp
+++ b/modules/skottie/src/effects/CornerPinEffect.cpp
@@ -55,10 +55,10 @@
                                { fUR.x, fUR.y},
                                { fLR.x, fLR.y},
                                { fLL.x, fLL.y}};
-        static_assert(SK_ARRAY_COUNT(src) == SK_ARRAY_COUNT(dst));
+        static_assert(std::size(src) == std::size(dst));
 
         SkMatrix m;
-        if (m.setPolyToPoly(src, dst, SK_ARRAY_COUNT(src))) {
+        if (m.setPolyToPoly(src, dst, std::size(src))) {
             fMatrixNode->setMatrix(m);
         }
     }
diff --git a/modules/skottie/src/effects/DisplacementMapEffect.cpp b/modules/skottie/src/effects/DisplacementMapEffect.cpp
index b90e6d4..04343e7 100644
--- a/modules/skottie/src/effects/DisplacementMapEffect.cpp
+++ b/modules/skottie/src/effects/DisplacementMapEffect.cpp
@@ -153,7 +153,7 @@
         };
 
         const auto i = static_cast<size_t>(sel);
-        SkASSERT(i < SK_ARRAY_COUNT(gCoeffs));
+        SkASSERT(i < std::size(gCoeffs));
 
         return gCoeffs[i];
     }
diff --git a/modules/skottie/src/effects/Effects.cpp b/modules/skottie/src/effects/Effects.cpp
index 1072b1e..434e151 100644
--- a/modules/skottie/src/effects/Effects.cpp
+++ b/modules/skottie/src/effects/Effects.cpp
@@ -158,8 +158,8 @@
 
         const auto style_type =
                 ParseDefault<size_t>((*jstyle)["ty"], std::numeric_limits<size_t>::max());
-        auto builder = style_type < SK_ARRAY_COUNT(gStyleBuilders) ? gStyleBuilders[style_type]
-                                                                   : nullptr;
+        auto builder = style_type < std::size(gStyleBuilders) ? gStyleBuilders[style_type]
+                                                              : nullptr;
 
         if (!builder) {
             fBuilder->log(Logger::Level::kWarning, jstyle, "Unsupported layer style.");
diff --git a/modules/skottie/src/effects/FractalNoiseEffect.cpp b/modules/skottie/src/effects/FractalNoiseEffect.cpp
index 8e1711b..8220c54 100644
--- a/modules/skottie/src/effects/FractalNoiseEffect.cpp
+++ b/modules/skottie/src/effects/FractalNoiseEffect.cpp
@@ -216,8 +216,8 @@
         gFractalTurbulentSharpSkSL
     };
 
-    static_assert(static_cast<size_t>(FILTER)  < SK_ARRAY_COUNT(gFilters));
-    static_assert(static_cast<size_t>(FRACTAL) < SK_ARRAY_COUNT(gFractals));
+    static_assert(static_cast<size_t>(FILTER)  < std::size(gFilters));
+    static_assert(static_cast<size_t>(FRACTAL) < std::size(gFractals));
 
     static const SkRuntimeEffect* effect =
             make_noise_effect(LOOPS,
diff --git a/modules/skottie/src/effects/GaussianBlurEffect.cpp b/modules/skottie/src/effects/GaussianBlurEffect.cpp
index ac1d7c7..8dfea54 100644
--- a/modules/skottie/src/effects/GaussianBlurEffect.cpp
+++ b/modules/skottie/src/effects/GaussianBlurEffect.cpp
@@ -55,7 +55,7 @@
         };
 
         const auto dim_index = SkTPin<size_t>(static_cast<size_t>(fDimensions),
-                                              1, SK_ARRAY_COUNT(kDimensionsMap)) - 1;
+                                              1, std::size(kDimensionsMap)) - 1;
 
         const auto sigma = fBlurriness * kBlurSizeToSigma;
 
@@ -68,7 +68,7 @@
         };
 
         const auto repeat_index = SkTPin<size_t>(static_cast<size_t>(fRepeatEdge),
-                                                 0, SK_ARRAY_COUNT(kRepeatEdgeMap) - 1);
+                                                 0, std::size(kRepeatEdgeMap) - 1);
         fBlur->setTileMode(kRepeatEdgeMap[repeat_index]);
     }
 
diff --git a/modules/skottie/src/effects/MotionTileEffect.cpp b/modules/skottie/src/effects/MotionTileEffect.cpp
index f316281..971e2df 100644
--- a/modules/skottie/src/effects/MotionTileEffect.cpp
+++ b/modules/skottie/src/effects/MotionTileEffect.cpp
@@ -108,7 +108,7 @@
                                      tile.y() + 2 * (tile.height() - phase_vec.fY) }};
 
             auto mask_shader = SkGradientShader::MakeLinear(pts, colors, pos,
-                                                            SK_ARRAY_COUNT(colors),
+                                                            std::size(colors),
                                                             SkTileMode::kRepeat);
 
             // First drawing pass: in-place masked layer content.
diff --git a/modules/skottie/src/effects/RadialWipeEffect.cpp b/modules/skottie/src/effects/RadialWipeEffect.cpp
index d36cf14..5002571 100644
--- a/modules/skottie/src/effects/RadialWipeEffect.cpp
+++ b/modules/skottie/src/effects/RadialWipeEffect.cpp
@@ -75,7 +75,7 @@
 
             fMaskShader = SkGradientShader::MakeSweep(fWipeCenter.x(), fWipeCenter.y(),
                                                       grad_colors, grad_pos,
-                                                      SK_ARRAY_COUNT(grad_colors),
+                                                      std::size(grad_colors),
                                                       SkTileMode::kClamp,
                                                       a0, a1, 0, nullptr);
 
diff --git a/modules/skottie/src/effects/ShiftChannelsEffect.cpp b/modules/skottie/src/effects/ShiftChannelsEffect.cpp
index cbed0be..cf98d2c 100644
--- a/modules/skottie/src/effects/ShiftChannelsEffect.cpp
+++ b/modules/skottie/src/effects/ShiftChannelsEffect.cpp
@@ -87,7 +87,7 @@
             {             0,              0,              0, 0, 1}, // kFullOn
             {             0,              0,              0, 0, 0}, // kFullOff
         };
-        static_assert(SK_ARRAY_COUNT(gSourceCoeffs) == static_cast<size_t>(Source::kMax), "");
+        static_assert(std::size(gSourceCoeffs) == static_cast<size_t>(Source::kMax), "");
 
         auto coeffs = [](float src) {
             // Channel sources are encoded as Source enum values.
diff --git a/modules/skottie/src/effects/VenetianBlindsEffect.cpp b/modules/skottie/src/effects/VenetianBlindsEffect.cpp
index f21271b..6e0269f 100644
--- a/modules/skottie/src/effects/VenetianBlindsEffect.cpp
+++ b/modules/skottie/src/effects/VenetianBlindsEffect.cpp
@@ -128,7 +128,7 @@
             1 - df1 - df0,  // fp3
             1,
         };
-        static_assert(SK_ARRAY_COUNT(colors) == SK_ARRAY_COUNT(pos), "");
+        static_assert(std::size(colors) == std::size(pos), "");
 
         const auto center = SkPoint::Make(0.5f * this->layerSize().width(),
                                           0.5f * this->layerSize().height()),
@@ -141,7 +141,7 @@
         };
 
         return {
-            SkGradientShader::MakeLinear(pts, colors, pos, SK_ARRAY_COUNT(colors),
+            SkGradientShader::MakeLinear(pts, colors, pos, std::size(colors),
                                          SkTileMode::kRepeat),
             true
         };
diff --git a/modules/skottie/src/layers/shapelayer/FillStroke.cpp b/modules/skottie/src/layers/shapelayer/FillStroke.cpp
index 1193219..73f77f8 100644
--- a/modules/skottie/src/layers/shapelayer/FillStroke.cpp
+++ b/modules/skottie/src/layers/shapelayer/FillStroke.cpp
@@ -49,7 +49,7 @@
             };
             this->node()->setStrokeJoin(
                         gJoins[std::min<size_t>(ParseDefault<size_t>(jpaint["lj"], 1) - 1,
-                                              SK_ARRAY_COUNT(gJoins) - 1)]);
+                                              std::size(gJoins) - 1)]);
 
             static constexpr SkPaint::Cap gCaps[] = {
                 SkPaint::kButt_Cap,
@@ -58,7 +58,7 @@
             };
             this->node()->setStrokeCap(
                         gCaps[std::min<size_t>(ParseDefault<size_t>(jpaint["lc"], 1) - 1,
-                                             SK_ARRAY_COUNT(gCaps) - 1)]);
+                                             std::size(gCaps) - 1)]);
         }
 
         if (fShaderType == ShaderType::kColor) {
diff --git a/modules/skottie/src/layers/shapelayer/MergePaths.cpp b/modules/skottie/src/layers/shapelayer/MergePaths.cpp
index e2e41d6..b2bcd9c 100644
--- a/modules/skottie/src/layers/shapelayer/MergePaths.cpp
+++ b/modules/skottie/src/layers/shapelayer/MergePaths.cpp
@@ -39,7 +39,7 @@
     };
 
     const auto mode = gModes[std::min<size_t>(ParseDefault<size_t>(jmerge["mm"], 1) - 1,
-                                            SK_ARRAY_COUNT(gModes) - 1)];
+                                            std::size(gModes) - 1)];
 
     std::vector<sk_sp<sksg::GeometryNode>> merged;
     merged.push_back(ShapeBuilder::MergeGeometry(std::move(geos), mode));
diff --git a/modules/skottie/src/layers/shapelayer/OffsetPaths.cpp b/modules/skottie/src/layers/shapelayer/OffsetPaths.cpp
index d50f308..ca22591 100644
--- a/modules/skottie/src/layers/shapelayer/OffsetPaths.cpp
+++ b/modules/skottie/src/layers/shapelayer/OffsetPaths.cpp
@@ -31,7 +31,7 @@
         };
 
         const auto join = ParseDefault<int>(joffset["lj"], 1) - 1;
-        this->node()->setJoin(gJoinMap[SkTPin<int>(join, 0, SK_ARRAY_COUNT(gJoinMap) - 1)]);
+        this->node()->setJoin(gJoinMap[SkTPin<int>(join, 0, std::size(gJoinMap) - 1)]);
 
         this->bind(abuilder, joffset["a" ], fAmount);
         this->bind(abuilder, joffset["ml"], fMiterLimit);
diff --git a/modules/skottie/src/layers/shapelayer/Polystar.cpp b/modules/skottie/src/layers/shapelayer/Polystar.cpp
index f573f34..f77d843 100644
--- a/modules/skottie/src/layers/shapelayer/Polystar.cpp
+++ b/modules/skottie/src/layers/shapelayer/Polystar.cpp
@@ -90,7 +90,7 @@
     };
 
     const auto type = ParseDefault<size_t>(jstar["sy"], 0) - 1;
-    if (type >= SK_ARRAY_COUNT(gTypes)) {
+    if (type >= std::size(gTypes)) {
         abuilder->log(Logger::Level::kError, &jstar, "Unknown polystar type.");
         return nullptr;
     }
diff --git a/modules/skottie/src/layers/shapelayer/ShapeLayer.cpp b/modules/skottie/src/layers/shapelayer/ShapeLayer.cpp
index 04bbc87..f1584f5 100644
--- a/modules/skottie/src/layers/shapelayer/ShapeLayer.cpp
+++ b/modules/skottie/src/layers/shapelayer/ShapeLayer.cpp
@@ -67,7 +67,7 @@
     nullptr,                             // gradient fill
     ShapeBuilder::AdjustStrokeGeometry,  // gradient stroke
 };
-static_assert(SK_ARRAY_COUNT(gPaintGeometryAdjusters) == SK_ARRAY_COUNT(gPaintAttachers), "");
+static_assert(std::size(gPaintGeometryAdjusters) == std::size(gPaintAttachers), "");
 
 using DrawEffectAttacherT =
     std::vector<sk_sp<sksg::RenderNode>> (*)(const skjson::ObjectValue&,
@@ -126,7 +126,7 @@
 
     const auto* info = bsearch(type->begin(),
                                gShapeInfo,
-                               SK_ARRAY_COUNT(gShapeInfo),
+                               std::size(gShapeInfo),
                                sizeof(ShapeInfo),
                                [](const void* key, const void* info) {
                                   return strcmp(static_cast<const char*>(key),
@@ -210,7 +210,7 @@
             jtransform = shape;
             break;
         case ShapeType::kGeometryEffect:
-            SkASSERT(info->fAttacherIndex < SK_ARRAY_COUNT(gGeometryEffectAttachers));
+            SkASSERT(info->fAttacherIndex < std::size(gGeometryEffectAttachers));
             ctx->fGeometryEffectStack->push_back(
                 { *shape, gGeometryEffectAttachers[info->fAttacherIndex] });
             break;
@@ -237,14 +237,14 @@
 
         switch (rec->fInfo.fShapeType) {
         case ShapeType::kGeometry: {
-            SkASSERT(rec->fInfo.fAttacherIndex < SK_ARRAY_COUNT(gGeometryAttachers));
+            SkASSERT(rec->fInfo.fAttacherIndex < std::size(gGeometryAttachers));
             if (auto geo = gGeometryAttachers[rec->fInfo.fAttacherIndex](rec->fJson, this)) {
                 geos.push_back(std::move(geo));
             }
         } break;
         case ShapeType::kGeometryEffect: {
             // Apply the current effect and pop from the stack.
-            SkASSERT(rec->fInfo.fAttacherIndex < SK_ARRAY_COUNT(gGeometryEffectAttachers));
+            SkASSERT(rec->fInfo.fAttacherIndex < std::size(gGeometryEffectAttachers));
             if (!geos.empty()) {
                 geos = gGeometryEffectAttachers[rec->fInfo.fAttacherIndex](rec->fJson,
                                                                            this,
@@ -268,7 +268,7 @@
             }
         } break;
         case ShapeType::kPaint: {
-            SkASSERT(rec->fInfo.fAttacherIndex < SK_ARRAY_COUNT(gPaintAttachers));
+            SkASSERT(rec->fInfo.fAttacherIndex < std::size(gPaintAttachers));
             auto paint = gPaintAttachers[rec->fInfo.fAttacherIndex](rec->fJson, this);
             if (!paint || geos.empty() || rec->fSuppressed)
                 break;
@@ -282,7 +282,7 @@
             }
 
             // Apply local paint geometry adjustments (e.g. dashing).
-            SkASSERT(rec->fInfo.fAttacherIndex < SK_ARRAY_COUNT(gPaintGeometryAdjusters));
+            SkASSERT(rec->fInfo.fAttacherIndex < std::size(gPaintGeometryAdjusters));
             if (const auto adjuster = gPaintGeometryAdjusters[rec->fInfo.fAttacherIndex]) {
                 drawGeos = adjuster(rec->fJson, this, std::move(drawGeos));
             }
@@ -297,7 +297,7 @@
             ctx->fCommittedAnimators = fCurrentAnimatorScope->size();
         } break;
         case ShapeType::kDrawEffect: {
-            SkASSERT(rec->fInfo.fAttacherIndex < SK_ARRAY_COUNT(gDrawEffectAttachers));
+            SkASSERT(rec->fInfo.fAttacherIndex < std::size(gDrawEffectAttachers));
             if (!draws.empty()) {
                 draws = gDrawEffectAttachers[rec->fInfo.fAttacherIndex](rec->fJson,
                                                                         this,
diff --git a/modules/skottie/src/layers/shapelayer/TrimPaths.cpp b/modules/skottie/src/layers/shapelayer/TrimPaths.cpp
index bc2dc15..cdf814b 100644
--- a/modules/skottie/src/layers/shapelayer/TrimPaths.cpp
+++ b/modules/skottie/src/layers/shapelayer/TrimPaths.cpp
@@ -81,7 +81,7 @@
     } gModes[] = { Mode::kParallel, Mode::kSerial};
 
     const auto mode = gModes[std::min<size_t>(ParseDefault<size_t>(jtrim["m"], 1) - 1,
-                                            SK_ARRAY_COUNT(gModes) - 1)];
+                                            std::size(gModes) - 1)];
 
     std::vector<sk_sp<sksg::GeometryNode>> inputs;
     if (mode == Mode::kSerial) {
diff --git a/modules/skottie/src/text/RangeSelector.cpp b/modules/skottie/src/text/RangeSelector.cpp
index 47c8157..9d9316d 100644
--- a/modules/skottie/src/text/RangeSelector.cpp
+++ b/modules/skottie/src/text/RangeSelector.cpp
@@ -28,7 +28,7 @@
 
     const auto idx = ParseDefault<int>(jenum, 1);
 
-    if (idx > 0 && SkToSizeT(idx) <= SK_ARRAY_COUNT(arr)) {
+    if (idx > 0 && SkToSizeT(idx) <= std::size(arr)) {
         return arr[idx - 1];
     }
 
@@ -39,7 +39,7 @@
                       "Ignoring unknown range selector %s '%d'", warn_name, idx);
     }
 
-    static_assert(SK_ARRAY_COUNT(arr) > 0, "");
+    SkASSERT(std::size(arr) > 0);
     return arr[0];
 }
 
@@ -363,7 +363,7 @@
     auto          r0 = std::get<0>(range),
                  len = std::max(std::get<1>(range) - r0, std::numeric_limits<float>::epsilon());
 
-    SkASSERT(static_cast<size_t>(fShape) < SK_ARRAY_COUNT(gShapeInfo));
+    SkASSERT(static_cast<size_t>(fShape) < std::size(gShapeInfo));
     ShapeGenerator gen(gShapeInfo[static_cast<size_t>(fShape)], ease_lo, ease_hi);
 
     if (fShape == Shape::kSquare) {
diff --git a/modules/skottie/src/text/TextAdapter.cpp b/modules/skottie/src/text/TextAdapter.cpp
index c918f5d..94954f8 100644
--- a/modules/skottie/src/text/TextAdapter.cpp
+++ b/modules/skottie/src/text/TextAdapter.cpp
@@ -216,7 +216,7 @@
         AnchorPointGrouping::kAll,       // 'g': 4
     };
     const auto apg = jm
-            ? SkTPin<int>(ParseDefault<int>((*jm)["g"], 1), 1, SK_ARRAY_COUNT(gGroupingMap))
+            ? SkTPin<int>(ParseDefault<int>((*jm)["g"], 1), 1, std::size(gGroupingMap))
             : 1;
 
     auto adapter = sk_sp<TextAdapter>(new TextAdapter(std::move(fontmgr),
diff --git a/modules/skottie/src/text/TextValue.cpp b/modules/skottie/src/text/TextValue.cpp
index 5db03cf..d62c48e 100644
--- a/modules/skottie/src/text/TextValue.cpp
+++ b/modules/skottie/src/text/TextValue.cpp
@@ -46,7 +46,7 @@
         SkTextUtils::kCenter_Align // 'j': 2
     };
     v->fHAlign = gAlignMap[std::min<size_t>(ParseDefault<size_t>((*jtxt)["j"], 0),
-                                            SK_ARRAY_COUNT(gAlignMap) - 1)];
+                                            std::size(gAlignMap) - 1)];
 
     // Optional text box size.
     if (const skjson::ArrayValue* jsz = (*jtxt)["sz"]) {
@@ -72,7 +72,7 @@
     // TODO: remove "sk_rs" support after migrating clients.
     v->fResize = gResizeMap[std::min(std::max(ParseDefault<size_t>((*jtxt)[   "rs"], 0),
                                               ParseDefault<size_t>((*jtxt)["sk_rs"], 0)),
-                                     SK_ARRAY_COUNT(gResizeMap) - 1)];
+                                     std::size(gResizeMap) - 1)];
 
     // Optional min/max font size and line count (used when aute-resizing)
     v->fMinTextSize = ParseDefault<SkScalar>((*jtxt)["mf"], 0.0f);
@@ -100,7 +100,7 @@
         Shaper::Capitalization::kUpperCase, // 'ca': 1
     };
     v->fCapitalization = gCapMap[std::min<size_t>(ParseDefault<size_t>((*jtxt)["ca"], 0),
-                                                  SK_ARRAY_COUNT(gCapMap) - 1)];
+                                                  std::size(gCapMap) - 1)];
 
     // In point mode, the text is baseline-aligned.
     v->fVAlign = v->fBox.isEmpty() ? Shaper::VAlign::kTopBaseline
@@ -114,7 +114,7 @@
     size_t vj;
     if (skottie::Parse((*jtxt)[   "vj"], &vj) ||
         skottie::Parse((*jtxt)["sk_vj"], &vj)) { // TODO: remove after migrating clients.
-        if (vj < SK_ARRAY_COUNT(gVAlignMap)) {
+        if (vj < std::size(gVAlignMap)) {
             v->fVAlign = gVAlignMap[vj];
         } else {
             // Legacy sk_vj values.
@@ -168,7 +168,7 @@
             SkPaint::kBevel_Join,  // lj: 3
         };
         v->fStrokeJoin = gJoins[std::min<size_t>(ParseDefault<size_t>((*jtxt)["lj"], 1) - 1,
-                                                 SK_ARRAY_COUNT(gJoins) - 1)];
+                                                 std::size(gJoins) - 1)];
     }
 
     return true;
diff --git a/modules/skplaintexteditor/app/editor_application.cpp b/modules/skplaintexteditor/app/editor_application.cpp
index 0409756..8e31785 100644
--- a/modules/skplaintexteditor/app/editor_application.cpp
+++ b/modules/skplaintexteditor/app/editor_application.cpp
@@ -80,7 +80,7 @@
 
 static constexpr float kFontSize = 18;
 static const char* kTypefaces[3] = {"sans-serif", "serif", "monospace"};
-static constexpr size_t kTypefaceCount = SK_ARRAY_COUNT(kTypefaces);
+static constexpr size_t kTypefaceCount = std::size(kTypefaces);
 
 static constexpr SkFontStyle::Weight kFontWeight = SkFontStyle::kNormal_Weight;
 static constexpr SkFontStyle::Width  kFontWidth  = SkFontStyle::kNormal_Width;
diff --git a/modules/skresources/src/SkResources.cpp b/modules/skresources/src/SkResources.cpp
index 96d8436..0cdf3dc 100644
--- a/modules/skresources/src/SkResources.cpp
+++ b/modules/skresources/src/SkResources.cpp
@@ -287,7 +287,7 @@
         return nullptr;
     }
 
-    const char* b64Data = encoding + SK_ARRAY_COUNT(kDataURIEncodingStr) - 1;
+    const char* b64Data = encoding + std::size(kDataURIEncodingStr) - 1;
     size_t b64DataLen = strlen(b64Data);
     size_t dataLen;
     if (SkBase64::Decode(b64Data, b64DataLen, nullptr, &dataLen) != SkBase64::kNoError) {
diff --git a/modules/svg/include/SkSVGAttributeParser.h b/modules/svg/include/SkSVGAttributeParser.h
index bc30876..e4ac579 100644
--- a/modules/svg/include/SkSVGAttributeParser.h
+++ b/modules/svg/include/SkSVGAttributeParser.h
@@ -141,7 +141,7 @@
 
     template <typename T, typename TArray>
     bool parseEnumMap(const TArray& arr, T* result) {
-        for (size_t i = 0; i < SK_ARRAY_COUNT(arr); ++i) {
+        for (size_t i = 0; i < std::size(arr); ++i) {
             if (this->parseExpectedStringToken(std::get<0>(arr[i]))) {
                 *result = std::get<1>(arr[i]);
                 return true;
diff --git a/modules/svg/src/SkSVGAttributeParser.cpp b/modules/svg/src/SkSVGAttributeParser.cpp
index 1be34fe..92b23c7 100644
--- a/modules/svg/src/SkSVGAttributeParser.cpp
+++ b/modules/svg/src/SkSVGAttributeParser.cpp
@@ -229,7 +229,7 @@
         { "pc", SkSVGLength::Unit::kPC         },
     };
 
-    for (size_t i = 0; i < SK_ARRAY_COUNT(gUnitInfo); ++i) {
+    for (size_t i = 0; i < std::size(gUnitInfo); ++i) {
         if (this->parseExpectedStringToken(gUnitInfo[i].fUnitName)) {
             *unit = gUnitInfo[i].fUnit;
             return true;
@@ -745,7 +745,7 @@
     };
 
     bool parsedValue = false;
-    for (size_t i = 0; i < SK_ARRAY_COUNT(gCapInfo); ++i) {
+    for (size_t i = 0; i < std::size(gCapInfo); ++i) {
         if (this->parseExpectedStringToken(gCapInfo[i].fName)) {
             *cap = SkSVGLineCap(gCapInfo[i].fType);
             parsedValue = true;
@@ -770,7 +770,7 @@
     };
 
     bool parsedValue = false;
-    for (size_t i = 0; i < SK_ARRAY_COUNT(gJoinInfo); ++i) {
+    for (size_t i = 0; i < std::size(gJoinInfo); ++i) {
         if (this->parseExpectedStringToken(gJoinInfo[i].fName)) {
             *join = SkSVGLineJoin(gJoinInfo[i].fType);
             parsedValue = true;
@@ -859,7 +859,7 @@
     };
 
     bool parsedValue = false;
-    for (size_t i = 0; i < SK_ARRAY_COUNT(gFillRuleInfo); ++i) {
+    for (size_t i = 0; i < std::size(gFillRuleInfo); ++i) {
         if (this->parseExpectedStringToken(gFillRuleInfo[i].fName)) {
             *fillRule = SkSVGFillRule(gFillRuleInfo[i].fType);
             parsedValue = true;
diff --git a/modules/svg/src/SkSVGDOM.cpp b/modules/svg/src/SkSVGDOM.cpp
index a0a3edf..68b58fe 100644
--- a/modules/svg/src/SkSVGDOM.cpp
+++ b/modules/svg/src/SkSVGDOM.cpp
@@ -291,7 +291,7 @@
     }
 
     const int attrIndex = SkStrSearch(&gAttributeParseInfo[0].fKey,
-                                      SkTo<int>(SK_ARRAY_COUNT(gAttributeParseInfo)),
+                                      SkTo<int>(std::size(gAttributeParseInfo)),
                                       name, sizeof(gAttributeParseInfo[0]));
     if (attrIndex < 0) {
 #if defined(SK_VERBOSE_SVG_PARSING)
@@ -300,7 +300,7 @@
         return false;
     }
 
-    SkASSERT(SkTo<size_t>(attrIndex) < SK_ARRAY_COUNT(gAttributeParseInfo));
+    SkASSERT(SkTo<size_t>(attrIndex) < std::size(gAttributeParseInfo));
     const auto& attrInfo = gAttributeParseInfo[attrIndex].fValue;
     if (!attrInfo.fSetter(node, attrInfo.fAttr, value)) {
 #if defined(SK_VERBOSE_SVG_PARSING)
@@ -351,7 +351,7 @@
         }
 
         const int tagIndex = SkStrSearch(&gTagFactories[0].fKey,
-                                         SkTo<int>(SK_ARRAY_COUNT(gTagFactories)),
+                                         SkTo<int>(std::size(gTagFactories)),
                                          elem, sizeof(gTagFactories[0]));
         if (tagIndex < 0) {
 #if defined(SK_VERBOSE_SVG_PARSING)
@@ -359,7 +359,7 @@
 #endif
             return nullptr;
         }
-        SkASSERT(SkTo<size_t>(tagIndex) < SK_ARRAY_COUNT(gTagFactories));
+        SkASSERT(SkTo<size_t>(tagIndex) < std::size(gTagFactories));
 
         return gTagFactories[tagIndex].fValue();
     };
diff --git a/modules/svg/src/SkSVGGradient.cpp b/modules/svg/src/SkSVGGradient.cpp
index cf09ee5..b39e578 100644
--- a/modules/svg/src/SkSVGGradient.cpp
+++ b/modules/svg/src/SkSVGGradient.cpp
@@ -109,7 +109,7 @@
     };
 
     bool parsedValue = false;
-    for (size_t i = 0; i < SK_ARRAY_COUNT(gSpreadInfo); ++i) {
+    for (size_t i = 0; i < std::size(gSpreadInfo); ++i) {
         if (this->parseExpectedStringToken(gSpreadInfo[i].fName)) {
             *spread = SkSVGSpreadMethod(gSpreadInfo[i].fType);
             parsedValue = true;
diff --git a/modules/svg/src/SkSVGNode.cpp b/modules/svg/src/SkSVGNode.cpp
index c3a5bd0..7734ede 100644
--- a/modules/svg/src/SkSVGNode.cpp
+++ b/modules/svg/src/SkSVGNode.cpp
@@ -162,8 +162,8 @@
         const size_t x_coeff = par.fAlign >> 0 & 0x03,
                      y_coeff = par.fAlign >> 2 & 0x03;
 
-        SkASSERT(x_coeff < SK_ARRAY_COUNT(gAlignCoeffs) &&
-                 y_coeff < SK_ARRAY_COUNT(gAlignCoeffs));
+        SkASSERT(x_coeff < std::size(gAlignCoeffs) &&
+                 y_coeff < std::size(gAlignCoeffs));
 
         const auto tx = -viewBox.x() * scale.x,
                    ty = -viewBox.y() * scale.y,
diff --git a/modules/svg/src/SkSVGOpenTypeSVGDecoder.cpp b/modules/svg/src/SkSVGOpenTypeSVGDecoder.cpp
index c7d6572..848db61 100644
--- a/modules/svg/src/SkSVGOpenTypeSVGDecoder.cpp
+++ b/modules/svg/src/SkSVGOpenTypeSVGDecoder.cpp
@@ -56,7 +56,7 @@
             return nullptr;
         }
 
-        const char* b64Data = encoding + SK_ARRAY_COUNT(kDataURIEncodingStr) - 1;
+        const char* b64Data = encoding + std::size(kDataURIEncodingStr) - 1;
         size_t b64DataLen = strlen(b64Data);
         size_t dataLen;
         if (SkBase64::Decode(b64Data, b64DataLen, nullptr, &dataLen) != SkBase64::kNoError) {