Move strike cache Find*() to strike cache

BUG=skia:7515

Change-Id: Ic1580d4752d51a62df5427a28f843bc7b3181797
Reviewed-on: https://skia-review.googlesource.com/122020
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
diff --git a/bench/PathTextBench.cpp b/bench/PathTextBench.cpp
index 9379b98..38cc9e7 100644
--- a/bench/PathTextBench.cpp
+++ b/bench/PathTextBench.cpp
@@ -46,7 +46,7 @@
 
     void onDelayedSetup() override {
         SkPaint defaultPaint;
-        auto cache = SkGlyphCache::FindOrCreateStrikeExclusive(defaultPaint);
+        auto cache = SkStrikeCache::FindOrCreateStrikeExclusive(defaultPaint);
         for (int i = 0; i < kNumGlyphs; ++i) {
             SkPackedGlyphID id(cache->unicharToGlyph(kGlyphs[i]));
             sk_ignore_unused_variable(cache->getScalerContext()->getPath(id, &fGlyphs[i]));
diff --git a/bench/SkGlyphCacheBench.cpp b/bench/SkGlyphCacheBench.cpp
index 0333bfe..08d43e3 100644
--- a/bench/SkGlyphCacheBench.cpp
+++ b/bench/SkGlyphCacheBench.cpp
@@ -20,7 +20,7 @@
 static void do_font_stuff(SkPaint* paint) {
     for (SkScalar i = 8; i < 64; i++) {
         paint->setTextSize(i);
-        auto cache = SkGlyphCache::FindOrCreateStrikeExclusive(
+        auto cache = SkStrikeCache::FindOrCreateStrikeExclusive(
                 *paint, nullptr, SkScalerContextFlags::kNone, nullptr);
         uint16_t glyphs['z'];
         for (int c = ' '; c < 'z'; c++) {
diff --git a/samplecode/SamplePathText.cpp b/samplecode/SamplePathText.cpp
index 0d04b73..3dd3287 100644
--- a/samplecode/SamplePathText.cpp
+++ b/samplecode/SamplePathText.cpp
@@ -24,7 +24,7 @@
 
     PathText() {
         SkPaint defaultPaint;
-        auto cache = SkGlyphCache::FindOrCreateStrikeExclusive(defaultPaint);
+        auto cache = SkStrikeCache::FindOrCreateStrikeExclusive(defaultPaint);
         SkPath glyphPaths[52];
         for (int i = 0; i < 52; ++i) {
             // I and l are rects on OS X ...
diff --git a/src/core/SkDraw.cpp b/src/core/SkDraw.cpp
index f205080..71d0d13 100644
--- a/src/core/SkDraw.cpp
+++ b/src/core/SkDraw.cpp
@@ -1543,7 +1543,7 @@
         return;
     }
 
-    auto cache = SkGlyphCache::FindOrCreateStrikeExclusive(
+    auto cache = SkStrikeCache::FindOrCreateStrikeExclusive(
             paint, props, this->scalerContextFlags(), fMatrix);
 
     // The Blitter Choose needs to be live while using the blitter below.
@@ -1575,7 +1575,7 @@
     SkPaint::GlyphCacheProc glyphCacheProc = SkPaint::GetGlyphCacheProc(paint.getTextEncoding(),
                                                                         paint.isDevKernText(),
                                                                         true);
-    auto cache = SkGlyphCache::FindOrCreateStrikeExclusive(
+    auto cache = SkStrikeCache::FindOrCreateStrikeExclusive(
             paint, props, this->scalerContextFlags(), nullptr);
 
     const char*        stop = text + byteLength;
@@ -1623,7 +1623,7 @@
         return;
     }
 
-    auto cache = SkGlyphCache::FindOrCreateStrikeExclusive(
+    auto cache = SkStrikeCache::FindOrCreateStrikeExclusive(
             paint, props, this->scalerContextFlags(), fMatrix);
 
     // The Blitter Choose needs to be live while using the blitter below.
diff --git a/src/core/SkGlyphCache.cpp b/src/core/SkGlyphCache.cpp
index 5327d1a..3475b60 100644
--- a/src/core/SkGlyphCache.cpp
+++ b/src/core/SkGlyphCache.cpp
@@ -9,7 +9,6 @@
 #include "SkGraphics.h"
 #include "SkMutex.h"
 #include "SkOnce.h"
-#include "SkPaintPriv.h"
 #include "SkPath.h"
 #include "SkTemplates.h"
 #include "SkTypeface.h"
@@ -387,38 +386,6 @@
     SkDebugf("%s\n", msg.c_str());
 }
 
-SkExclusiveStrikePtr SkGlyphCache::FindStrikeExclusive(const SkDescriptor& desc) {
-    return SkStrikeCache::FindStrikeExclusive(desc);
-}
-
-SkExclusiveStrikePtr SkGlyphCache::FindOrCreateStrikeExclusive(
-    const SkDescriptor& desc, const SkScalerContextEffects& effects, const SkTypeface& typeface)
-{
-    auto cache = SkGlyphCache::FindStrikeExclusive(desc);
-    if (cache == nullptr) {
-        auto scaler = SkStrikeCache::CreateScalerContext(desc, effects, typeface);
-        cache = SkStrikeCache::CreateStrikeExclusive(desc, std::move(scaler));
-    }
-    return cache;
-}
-
-SkExclusiveStrikePtr SkGlyphCache::FindOrCreateStrikeExclusive(
-    const SkPaint& paint,
-    const SkSurfaceProps* surfaceProps,
-    SkScalerContextFlags scalerContextFlags,
-    const SkMatrix* deviceMatrix)
-{
-    SkAutoDescriptor ad;
-    SkScalerContextEffects effects;
-
-    auto desc = SkScalerContext::CreateDescriptorAndEffectsUsingPaint(
-        paint, surfaceProps, scalerContextFlags, deviceMatrix, &ad, &effects);
-
-    auto tf = SkPaintPriv::GetTypefaceOrDefault(paint);
-
-    return FindOrCreateStrikeExclusive(*desc, effects, *tf);
-}
-
 #ifdef SK_DEBUG
 
 void SkGlyphCache::validate() const {
diff --git a/src/core/SkGlyphCache.h b/src/core/SkGlyphCache.h
index ca6ae8f..8d5098a 100644
--- a/src/core/SkGlyphCache.h
+++ b/src/core/SkGlyphCache.h
@@ -123,24 +123,6 @@
 
     SkScalerContext* getScalerContext() const { return fScalerContext.get(); }
 
-    static SkExclusiveStrikePtr FindStrikeExclusive(const SkDescriptor& desc);
-
-    static SkExclusiveStrikePtr FindOrCreateStrikeExclusive(
-        const SkDescriptor& desc,
-        const SkScalerContextEffects& effects,
-        const SkTypeface& typeface);
-
-    static SkExclusiveStrikePtr FindOrCreateStrikeExclusive(
-        const SkPaint& paint,
-        const SkSurfaceProps* surfaceProps,
-        SkScalerContextFlags scalerContextFlags,
-        const SkMatrix* deviceMatrix);
-
-    static SkExclusiveStrikePtr FindOrCreateStrikeExclusive(const SkPaint& paint) {
-        return FindOrCreateStrikeExclusive(
-                paint, nullptr, SkScalerContextFlags::kFakeGammaAndBoostContrast, nullptr);
-    }
-
 #ifdef SK_DEBUG
     void validate() const;
 #else
@@ -244,11 +226,9 @@
     SkAutoGlyphCacheNoGamma(const SkPaint& paint,
                             const SkSurfaceProps* surfaceProps,
                             const SkMatrix* matrix)
-        : INHERITED(SkGlyphCache::FindOrCreateStrikeExclusive(
+        : SkExclusiveStrikePtr(SkStrikeCache::FindOrCreateStrikeExclusive(
             paint, surfaceProps, SkScalerContextFlags::kNone, matrix)) {}
 
-private:
-    using INHERITED = SkExclusiveStrikePtr;
 };
 #define SkAutoGlyphCacheNoGamma(...) SK_REQUIRE_LOCAL_VAR(SkAutoGlyphCacheNoGamma)
 #endif
diff --git a/src/core/SkOverdrawCanvas.cpp b/src/core/SkOverdrawCanvas.cpp
index eee7d83..118b943 100644
--- a/src/core/SkOverdrawCanvas.cpp
+++ b/src/core/SkOverdrawCanvas.cpp
@@ -63,7 +63,7 @@
     ProcessOneGlyphBounds processBounds(this);
     SkSurfaceProps props(0, kUnknown_SkPixelGeometry);
     this->getProps(&props);
-    auto cache = SkGlyphCache::FindOrCreateStrikeExclusive(
+    auto cache = SkStrikeCache::FindOrCreateStrikeExclusive(
             paint, &props, SkScalerContextFlags::kNone, &this->getTotalMatrix());
     SkFindAndPlaceGlyph::ProcessText(paint.getTextEncoding(), (const char*) text, byteLength,
                                      SkPoint::Make(x, y), SkMatrix(), paint.getTextAlign(),
@@ -76,7 +76,7 @@
     ProcessOneGlyphBounds processBounds(this);
     SkSurfaceProps props(0, kUnknown_SkPixelGeometry);
     this->getProps(&props);
-    auto cache = SkGlyphCache::FindOrCreateStrikeExclusive(
+    auto cache = SkStrikeCache::FindOrCreateStrikeExclusive(
             paint, &props, SkScalerContextFlags::kNone, &this->getTotalMatrix());
     SkFindAndPlaceGlyph::ProcessPosText(paint.getTextEncoding(), (const char*) text, byteLength,
                                         SkPoint::Make(0, 0), SkMatrix(), (const SkScalar*) pos, 2,
diff --git a/src/core/SkPaint.cpp b/src/core/SkPaint.cpp
index 3dc0af6..141b60b 100644
--- a/src/core/SkPaint.cpp
+++ b/src/core/SkPaint.cpp
@@ -430,7 +430,7 @@
         return SkToInt(byteLength >> 1);
     }
 
-    auto cache = SkGlyphCache::FindOrCreateStrikeExclusive(*this);
+    auto cache = SkStrikeCache::FindOrCreateStrikeExclusive(*this);
 
     const char* text = (const char*)textData;
     const char* stop = text + byteLength;
@@ -487,7 +487,7 @@
         return true;
     }
 
-    auto cache = SkGlyphCache::FindOrCreateStrikeExclusive(*this);
+    auto cache = SkStrikeCache::FindOrCreateStrikeExclusive(*this);
 
     switch (this->getTextEncoding()) {
         case SkPaint::kUTF8_TextEncoding: {
@@ -536,7 +536,7 @@
     SkASSERT(textData != nullptr);
 
     SkSurfaceProps props(0, kUnknown_SkPixelGeometry);
-    auto cache = SkGlyphCache::FindOrCreateStrikeExclusive(
+    auto cache = SkStrikeCache::FindOrCreateStrikeExclusive(
             *this, &props, SkScalerContextFlags::kFakeGammaAndBoostContrast, nullptr);
 
     for (int index = 0; index < count; index++) {
@@ -801,7 +801,7 @@
     const SkPaint& paint = canon.getPaint();
     SkScalar scale = canon.getScale();
 
-    auto cache = SkGlyphCache::FindOrCreateStrikeExclusive(paint);
+    auto cache = SkStrikeCache::FindOrCreateStrikeExclusive(paint);
 
     SkScalar width = 0;
 
@@ -854,7 +854,7 @@
         maxWidth /= scale;
     }
 
-    auto cache = SkGlyphCache::FindOrCreateStrikeExclusive(paint);
+    auto cache = SkStrikeCache::FindOrCreateStrikeExclusive(paint);
 
     GlyphCacheProc   glyphCacheProc = SkPaint::GetGlyphCacheProc(paint.getTextEncoding(),
                                                                  paint.isDevKernText(),
@@ -924,7 +924,7 @@
 
     {
         auto typeface = SkPaintPriv::GetTypefaceOrDefault(paint);
-        auto cache = SkGlyphCache::FindOrCreateStrikeExclusive(*desc, effects, *typeface);
+        auto cache = SkStrikeCache::FindOrCreateStrikeExclusive(*desc, effects, *typeface);
         *metrics = cache->getFontMetrics();
     }
 
@@ -959,7 +959,7 @@
     const SkPaint& paint = canon.getPaint();
     SkScalar scale = canon.getScale();
 
-    auto cache = SkGlyphCache::FindOrCreateStrikeExclusive(paint);
+    auto cache = SkStrikeCache::FindOrCreateStrikeExclusive(paint);
     GlyphCacheProc      glyphCacheProc = SkPaint::GetGlyphCacheProc(paint.getTextEncoding(),
                                                                     paint.isDevKernText(),
                                                                     nullptr != bounds);
@@ -1741,7 +1741,7 @@
     }
 
     // SRGBTODO: Is this correct?
-    fCache = SkGlyphCache::FindOrCreateStrikeExclusive(
+    fCache = SkStrikeCache::FindOrCreateStrikeExclusive(
         fPaint, nullptr,
         SkScalerContextFlags::kFakeGammaAndBoostContrast, nullptr);
 
diff --git a/src/core/SkRemoteGlyphCache.cpp b/src/core/SkRemoteGlyphCache.cpp
index 9252589..d736223 100644
--- a/src/core/SkRemoteGlyphCache.cpp
+++ b/src/core/SkRemoteGlyphCache.cpp
@@ -326,7 +326,7 @@
     auto typefaceID = SkTypefaceProxy::DownCast(runPaint.getTypeface())->remoteTypefaceID();
     auto& diffs = fStrikeCacheDiff->findStrikeDifferences(*desc, typefaceID);
 
-    auto cache = SkGlyphCache::FindStrikeExclusive(*desc);
+    auto cache = SkStrikeCache::FindStrikeExclusive(*desc);
     bool isSubpixel = SkToBool(rec.fFlags & SkScalerContext::kSubpixelPositioning_Flag);
     SkAxisAlignment axisAlignment = SkAxisAlignment::kNone_SkAxisAlignment;
     if (it.positioning() == SkTextBlob::kHorizontal_Positioning) {
@@ -480,7 +480,7 @@
 
         // TODO: implement effects handling.
         SkScalerContextEffects effects;
-        auto strike = SkGlyphCache::FindStrikeExclusive(*desc);
+        auto strike = SkStrikeCache::FindStrikeExclusive(*desc);
         if (strike == nullptr) {
             auto scaler = SkStrikeCache::CreateScalerContext(*desc, effects, *tf);
             strike = SkStrikeCache::CreateStrikeExclusive(*desc, std::move(scaler), fontMetrics);
diff --git a/src/core/SkStrikeCache.cpp b/src/core/SkStrikeCache.cpp
index 8d0b832..f5ae5bc 100644
--- a/src/core/SkStrikeCache.cpp
+++ b/src/core/SkStrikeCache.cpp
@@ -17,6 +17,7 @@
 #include "SkTraceMemoryDump.h"
 #include "SkTypeface.h"
 #include "SkTypefaceCache.h"
+#include "SkPaintPriv.h"
 
 // Returns the shared globals
 static SkStrikeCache& get_globals() {
@@ -378,4 +379,37 @@
     }
 
     return SkExclusiveStrikePtr(new SkGlyphCache(desc, move(scaler), fontMetrics));
+}
+
+SkExclusiveStrikePtr SkStrikeCache::FindOrCreateStrikeExclusive(
+    const SkDescriptor& desc, const SkScalerContextEffects& effects, const SkTypeface& typeface)
+{
+    auto cache = FindStrikeExclusive(desc);
+    if (cache == nullptr) {
+        auto scaler = CreateScalerContext(desc, effects, typeface);
+        cache = CreateStrikeExclusive(desc, move(scaler));
+    }
+    return cache;
+}
+
+SkExclusiveStrikePtr SkStrikeCache::FindOrCreateStrikeExclusive(
+    const SkPaint& paint,
+    const SkSurfaceProps* surfaceProps,
+    SkScalerContextFlags scalerContextFlags,
+    const SkMatrix* deviceMatrix)
+{
+    SkAutoDescriptor ad;
+    SkScalerContextEffects effects;
+
+    auto desc = SkScalerContext::CreateDescriptorAndEffectsUsingPaint(
+        paint, surfaceProps, scalerContextFlags, deviceMatrix, &ad, &effects);
+
+    auto tf = SkPaintPriv::GetTypefaceOrDefault(paint);
+
+    return FindOrCreateStrikeExclusive(*desc, effects, *tf);
+}
+
+SkExclusiveStrikePtr SkStrikeCache::FindOrCreateStrikeExclusive(const SkPaint& paint) {
+    return FindOrCreateStrikeExclusive(
+            paint, nullptr, kFakeGammaAndBoostContrast, nullptr);
 }
\ No newline at end of file
diff --git a/src/core/SkStrikeCache.h b/src/core/SkStrikeCache.h
index 078adfe..a72e71f 100644
--- a/src/core/SkStrikeCache.h
+++ b/src/core/SkStrikeCache.h
@@ -46,14 +46,27 @@
 
     static ExclusiveStrikePtr FindStrikeExclusive(const SkDescriptor&);
 
-    static std::unique_ptr<SkScalerContext> CreateScalerContext(
-        const SkDescriptor&, const SkScalerContextEffects&, const SkTypeface&);
-
     static ExclusiveStrikePtr CreateStrikeExclusive(
             const SkDescriptor& desc,
             std::unique_ptr<SkScalerContext> scaler,
             SkPaint::FontMetrics* maybeMetrics = nullptr);
 
+    static ExclusiveStrikePtr FindOrCreateStrikeExclusive(
+            const SkDescriptor& desc,
+            const SkScalerContextEffects& effects,
+            const SkTypeface& typeface);
+
+    static ExclusiveStrikePtr FindOrCreateStrikeExclusive(
+            const SkPaint& paint,
+            const SkSurfaceProps* surfaceProps,
+            SkScalerContextFlags scalerContextFlags,
+            const SkMatrix* deviceMatrix);
+
+    static ExclusiveStrikePtr FindOrCreateStrikeExclusive(const SkPaint& paint);
+
+    static std::unique_ptr<SkScalerContext> CreateScalerContext(
+            const SkDescriptor&, const SkScalerContextEffects&, const SkTypeface&);
+
     static void PurgeAll();
 
     static void Dump();
diff --git a/src/gpu/text/GrAtlasTextBlob.cpp b/src/gpu/text/GrAtlasTextBlob.cpp
index 73c8721..611abf7 100644
--- a/src/gpu/text/GrAtlasTextBlob.cpp
+++ b/src/gpu/text/GrAtlasTextBlob.cpp
@@ -71,7 +71,7 @@
     run->fTypeface = SkPaintPriv::RefTypefaceOrDefault(skPaint);
     run->fPathEffect = sk_ref_sp(effects.fPathEffect);
     run->fMaskFilter = sk_ref_sp(effects.fMaskFilter);
-    return SkGlyphCache::FindOrCreateStrikeExclusive(*desc->getDesc(), effects, *run->fTypeface);
+    return SkStrikeCache::FindOrCreateStrikeExclusive(*desc->getDesc(), effects, *run->fTypeface);
 }
 
 void GrAtlasTextBlob::appendGlyph(int runIndex,
diff --git a/src/gpu/text/GrAtlasTextBlobVertexRegenerator.cpp b/src/gpu/text/GrAtlasTextBlobVertexRegenerator.cpp
index 92d6eb0..e2d4fe1 100644
--- a/src/gpu/text/GrAtlasTextBlobVertexRegenerator.cpp
+++ b/src/gpu/text/GrAtlasTextBlobVertexRegenerator.cpp
@@ -245,7 +245,7 @@
             effects.fPathEffect = fRun->fPathEffect.get();
             effects.fMaskFilter = fRun->fMaskFilter.get();
             *fLazyCache =
-                SkGlyphCache::FindOrCreateStrikeExclusive(*desc, effects, *fRun->fTypeface);
+                SkStrikeCache::FindOrCreateStrikeExclusive(*desc, effects, *fRun->fTypeface);
         }
 
         if (regenGlyphs) {
diff --git a/src/gpu/text/GrAtlasTextContext.cpp b/src/gpu/text/GrAtlasTextContext.cpp
index b0f5405..6be6b5b 100644
--- a/src/gpu/text/GrAtlasTextContext.cpp
+++ b/src/gpu/text/GrAtlasTextContext.cpp
@@ -500,7 +500,7 @@
     SkPaint::GlyphCacheProc glyphCacheProc = SkPaint::GetGlyphCacheProc(pathPaint.getTextEncoding(),
                                                                         pathPaint.isDevKernText(),
                                                                         true);
-    auto cache = SkGlyphCache::FindOrCreateStrikeExclusive(
+    auto cache = SkStrikeCache::FindOrCreateStrikeExclusive(
             pathPaint, &props, SkScalerContextFlags::kFakeGammaAndBoostContrast, nullptr);
 
     const char*        stop = text + byteLength;
@@ -703,7 +703,7 @@
 
     {
         auto origPaintCache =
-            SkGlyphCache::FindOrCreateStrikeExclusive(*desc.getDesc(), effects, *typeface);
+            SkStrikeCache::FindOrCreateStrikeExclusive(*desc.getDesc(), effects, *typeface);
 
         SkAutoKern autokern;
         const char* stop = text + byteLength;
diff --git a/src/pdf/SkPDFDevice.cpp b/src/pdf/SkPDFDevice.cpp
index 95864d9..ff14c41 100644
--- a/src/pdf/SkPDFDevice.cpp
+++ b/src/pdf/SkPDFDevice.cpp
@@ -1368,7 +1368,7 @@
         scaledGlyphCachePaint.setTextScaleX(paint.getTextScaleX());
         scaledGlyphCachePaint.setTextSkewX(paint.getTextSkewX());
         scaledGlyphCachePaint.setTypeface(sk_ref_sp(typeface));
-        auto scaledGlyphCache = SkGlyphCache::FindOrCreateStrikeExclusive(scaledGlyphCachePaint);
+        auto scaledGlyphCache = SkStrikeCache::FindOrCreateStrikeExclusive(scaledGlyphCachePaint);
         SkTHashMap<SkPDFCanon::BitmapGlyphKey, SkPDFCanon::BitmapGlyph>* map =
             &this->getCanon()->fBitmapGlyphImages;
         for (PositionedGlyph positionedGlyph : fMissingGlyphs) {
diff --git a/src/pdf/SkPDFFont.cpp b/src/pdf/SkPDFFont.cpp
index c9230f0..11c4b58 100644
--- a/src/pdf/SkPDFFont.cpp
+++ b/src/pdf/SkPDFFont.cpp
@@ -38,7 +38,7 @@
     }
     tmpPaint.setTextSize((SkScalar)unitsPerEm);
     const SkSurfaceProps props(0, kUnknown_SkPixelGeometry);
-    return SkGlyphCache::FindOrCreateStrikeExclusive(
+    return SkStrikeCache::FindOrCreateStrikeExclusive(
             tmpPaint, &props, SkScalerContextFlags::kFakeGammaAndBoostContrast, nullptr);
 }
 
diff --git a/src/xps/SkXPSDevice.cpp b/src/xps/SkXPSDevice.cpp
index 2cfb545..856cafe 100644
--- a/src/xps/SkXPSDevice.cpp
+++ b/src/xps/SkXPSDevice.cpp
@@ -1876,7 +1876,7 @@
     newTypefaceUse.fontData = fontData;
     newTypefaceUse.xpsFont = xpsFontResource.release();
     auto glyphCache =
-        SkGlyphCache::FindOrCreateStrikeExclusive(
+        SkStrikeCache::FindOrCreateStrikeExclusive(
             paint, &this->surfaceProps(),
             SkScalerContextFlags::kNone, nullptr);
     unsigned int glyphCount = glyphCache->getGlyphCount();
@@ -2063,7 +2063,7 @@
     HRV(CreateTypefaceUse(paint, &typeface));
 
     auto cache =
-        SkGlyphCache::FindOrCreateStrikeExclusive(
+        SkStrikeCache::FindOrCreateStrikeExclusive(
             paint, &this->surfaceProps(),
             SkScalerContextFlags::kNone, nullptr);
 
@@ -2121,7 +2121,7 @@
     HRV(CreateTypefaceUse(paint, &typeface));
 
     auto cache =
-        SkGlyphCache::FindOrCreateStrikeExclusive(
+        SkStrikeCache::FindOrCreateStrikeExclusive(
             paint, &this->surfaceProps(),
             SkScalerContextFlags::kNone, nullptr);