| Index: src/pdf/SkPDFTypes.h | 
| diff --git a/src/pdf/SkPDFTypes.h b/src/pdf/SkPDFTypes.h | 
| index a6a3e12ee65122f24c15f4e0b87e2726db0276bd..f93b030465736216a796eeb51cc8f4f3a7626067 100644 | 
| --- a/src/pdf/SkPDFTypes.h | 
| +++ b/src/pdf/SkPDFTypes.h | 
| @@ -39,7 +39,6 @@ public: | 
| *  @param catalog  The object catalog to use. | 
| *  @param stream   The writable output stream to send the output to. | 
| */ | 
| -    // TODO(halcanary): make this method const | 
| virtual void emitObject(SkWStream* stream, | 
| const SkPDFObjNumMap& objNumMap, | 
| const SkPDFSubstituteMap& substitutes) const = 0; | 
| @@ -65,8 +64,6 @@ private: | 
| */ | 
| class SkPDFUnion { | 
| public: | 
| -    // u.move() is analogous to std::move(u). It returns an rvalue. | 
| -    SkPDFUnion move() { return static_cast<SkPDFUnion&&>(*this); } | 
| // Move contstructor and assignemnt operator destroy the argument | 
| // and steal their references (if needed). | 
| SkPDFUnion(SkPDFUnion&& other); | 
| @@ -85,7 +82,7 @@ public: | 
|  | 
| static SkPDFUnion Scalar(SkScalar); | 
|  | 
| -    /** These two functions do NOT take ownership of ptr, and do NOT | 
| +    /** These two functions do NOT take ownership of char*, and do NOT | 
| copy the string.  Suitable for passing in static const | 
| strings. For example: | 
| SkPDFUnion n = SkPDFUnion::Name("Length"); | 
| @@ -108,17 +105,8 @@ public: | 
| /** SkPDFUnion::String will encode the passed string. */ | 
| static SkPDFUnion String(const SkString&); | 
|  | 
| -    /** This function DOES take ownership of the object. E.g. | 
| -          auto dict = sk_make_sp<SkPDFDict>(); | 
| -          dict->insert(.....); | 
| -          SkPDFUnion u = SkPDFUnion::Object(dict.detach()) */ | 
| -    static SkPDFUnion Object(SkPDFObject*); | 
| - | 
| -    /** This function DOES take ownership of the object. E.g. | 
| -          sk_sp<SkPDFBitmap> image( | 
| -                 SkPDFBitmap::Create(fCanon, bitmap)); | 
| -          SkPDFUnion u = SkPDFUnion::ObjRef(image.detach()) */ | 
| -    static SkPDFUnion ObjRef(SkPDFObject*); | 
| +    static SkPDFUnion Object(sk_sp<SkPDFObject>); | 
| +    static SkPDFUnion ObjRef(sk_sp<SkPDFObject>); | 
|  | 
| /** These two non-virtual methods mirror SkPDFObject's | 
| corresponding virtuals. */ | 
| @@ -174,7 +162,7 @@ public: | 
| const SkPDFObjNumMap& objNumMap, | 
| const SkPDFSubstituteMap& substitutes) final; | 
| void addResources(SkPDFObjNumMap*, const SkPDFSubstituteMap&) const final; | 
| -    SkPDFAtom(SkPDFUnion&& v) : fValue(v.move()) {} | 
| +    SkPDFAtom(SkPDFUnion&& v) : fValue(std::move(v) {} | 
|  | 
| private: | 
| const SkPDFUnion fValue; | 
| @@ -223,9 +211,8 @@ public: | 
| void appendName(const SkString&); | 
| void appendString(const char[]); | 
| void appendString(const SkString&); | 
| -    /** appendObject and appendObjRef take ownership of the passed object */ | 
| -    void appendObject(SkPDFObject*); | 
| -    void appendObjRef(SkPDFObject*); | 
| +    void appendObject(sk_sp<SkPDFObject>); | 
| +    void appendObjRef(sk_sp<SkPDFObject>); | 
|  | 
| private: | 
| SkTDArray<SkPDFUnion> fValues; | 
| @@ -261,15 +248,14 @@ public: | 
| */ | 
| int size() const; | 
|  | 
| -    /** Add the value to the dictionary with the given key.  Takes | 
| -     *  ownership of the object. | 
| +    /** Add the value to the dictionary with the given key. | 
| *  @param key   The text of the key for this dictionary entry. | 
| *  @param value The value for this dictionary entry. | 
| */ | 
| -    void insertObject(const char key[], SkPDFObject* value); | 
| -    void insertObject(const SkString& key, SkPDFObject* value); | 
| -    void insertObjRef(const char key[], SkPDFObject* value); | 
| -    void insertObjRef(const SkString& key, SkPDFObject* value); | 
| +    void insertObject(const char key[], sk_sp<SkPDFObject>); | 
| +    void insertObject(const SkString& key, sk_sp<SkPDFObject>); | 
| +    void insertObjRef(const char key[], sk_sp<SkPDFObject>); | 
| +    void insertObjRef(const SkString& key, sk_sp<SkPDFObject>); | 
|  | 
| /** Add the value to the dictionary with the given key. | 
| *  @param key   The text of the key for this dictionary entry. | 
| @@ -317,7 +303,8 @@ private: | 
| class SkPDFSharedStream final : public SkPDFObject { | 
| public: | 
| // Takes ownership of asset. | 
| -    SkPDFSharedStream(SkStreamAsset* data) : fAsset(data), fDict(new SkPDFDict) { SkASSERT(data); } | 
| +    SkPDFSharedStream(SkStreamAsset* data) | 
| +        : fAsset(data), fDict(new SkPDFDict) { SkASSERT(data); } | 
| SkPDFDict* dict() { return fDict.get(); } | 
| void emitObject(SkWStream*, | 
| const SkPDFObjNumMap&, | 
|  |