| Index: src/ports/SkFontHost_FreeType.cpp | 
| diff --git a/src/ports/SkFontHost_FreeType.cpp b/src/ports/SkFontHost_FreeType.cpp | 
| index 84a74af469b35b81f01d9fb168982065f478092b..71ce865f080c78698f5d61c292ffd4c4aa87fe63 100644 | 
| --- a/src/ports/SkFontHost_FreeType.cpp | 
| +++ b/src/ports/SkFontHost_FreeType.cpp | 
| @@ -234,12 +234,11 @@ struct SkFaceRec { | 
| SkFaceRec* fNext; | 
| FT_Face fFace; | 
| FT_StreamRec fFTStream; | 
| -    SkAutoTDelete<SkStreamAsset> fSkStream; | 
| +    std::unique_ptr<SkStreamAsset> fSkStream; | 
| uint32_t fRefCnt; | 
| uint32_t fFontID; | 
|  | 
| -    // assumes ownership of the stream, will delete when its done | 
| -    SkFaceRec(SkStreamAsset* strm, uint32_t fontID); | 
| +    SkFaceRec(std::unique_ptr<SkStreamAsset> stream, uint32_t fontID); | 
| }; | 
|  | 
| extern "C" { | 
| @@ -262,12 +261,12 @@ extern "C" { | 
| static void sk_ft_stream_close(FT_Stream) {} | 
| } | 
|  | 
| -SkFaceRec::SkFaceRec(SkStreamAsset* stream, uint32_t fontID) | 
| -        : fNext(nullptr), fSkStream(stream), fRefCnt(1), fFontID(fontID) | 
| +SkFaceRec::SkFaceRec(std::unique_ptr<SkStreamAsset> stream, uint32_t fontID) | 
| +        : fNext(nullptr), fSkStream(std::move(stream)), fRefCnt(1), fFontID(fontID) | 
| { | 
| sk_bzero(&fFTStream, sizeof(fFTStream)); | 
| fFTStream.size = fSkStream->getLength(); | 
| -    fFTStream.descriptor.pointer = fSkStream; | 
| +    fFTStream.descriptor.pointer = fSkStream.get(); | 
| fFTStream.read  = sk_ft_stream_io; | 
| fFTStream.close = sk_ft_stream_close; | 
| } | 
| @@ -319,12 +318,11 @@ static FT_Face ref_ft_face(const SkTypeface* typeface) { | 
| rec = rec->fNext; | 
| } | 
|  | 
| -    SkAutoTDelete<SkFontData> data(typeface->createFontData()); | 
| +    std::unique_ptr<SkFontData> data = typeface->makeFontData(); | 
| if (nullptr == data || !data->hasStream()) { | 
| return nullptr; | 
| } | 
|  | 
| -    // this passes ownership of stream to the rec | 
| rec = new SkFaceRec(data->detachStream(), fontID); | 
|  | 
| FT_Open_Args args; | 
| @@ -1564,7 +1562,7 @@ SkTypeface_FreeType::Scanner::~Scanner() { | 
| } | 
| } | 
|  | 
| -FT_Face SkTypeface_FreeType::Scanner::openFace(SkStream* stream, int ttcIndex, | 
| +FT_Face SkTypeface_FreeType::Scanner::openFace(SkStreamAsset* stream, int ttcIndex, | 
| FT_Stream ftStream) const | 
| { | 
| if (fLibrary == nullptr) { | 
| @@ -1598,7 +1596,7 @@ FT_Face SkTypeface_FreeType::Scanner::openFace(SkStream* stream, int ttcIndex, | 
| return face; | 
| } | 
|  | 
| -bool SkTypeface_FreeType::Scanner::recognizedFont(SkStream* stream, int* numFaces) const { | 
| +bool SkTypeface_FreeType::Scanner::recognizedFont(SkStreamAsset* stream, int* numFaces) const { | 
| SkAutoMutexAcquire libraryLock(fLibraryMutex); | 
|  | 
| FT_StreamRec streamRec; | 
| @@ -1615,7 +1613,7 @@ bool SkTypeface_FreeType::Scanner::recognizedFont(SkStream* stream, int* numFace | 
|  | 
| #include "SkTSearch.h" | 
| bool SkTypeface_FreeType::Scanner::scanFont( | 
| -    SkStream* stream, int ttcIndex, | 
| +    SkStreamAsset* stream, int ttcIndex, | 
| SkString* name, SkFontStyle* style, bool* isFixedPitch, AxisDefinitions* axes) const | 
| { | 
| SkAutoMutexAcquire libraryLock(fLibraryMutex); | 
|  |