| Index: src/pdf/SkPDFDevice.h | 
| diff --git a/src/pdf/SkPDFDevice.h b/src/pdf/SkPDFDevice.h | 
| index b214839f5a1c24055711475cd6aa613083fa1940..138ec19b5938e3edc73a2ba4e2cfdff14a559e62 100644 | 
| --- a/src/pdf/SkPDFDevice.h | 
| +++ b/src/pdf/SkPDFDevice.h | 
| @@ -25,6 +25,7 @@ | 
| class SkPDFArray; | 
| class SkPDFCanon; | 
| class SkPDFDevice; | 
| +class SkPDFDocument; | 
| class SkPDFDict; | 
| class SkPDFFont; | 
| class SkPDFFormXObject; | 
| @@ -59,20 +60,23 @@ public: | 
| *         while rendering, and it would be slower to be processed | 
| *         or sent online or to printer.  A good choice is | 
| *         SK_ScalarDefaultRasterDPI(72.0f). | 
| -     *  @param SkPDFCanon.  Should be non-null, and shared by all | 
| -     *         devices in a document. | 
| +     *  @param SkPDFDocument.  A non-null pointer back to the | 
| +     *         document.  The document is repsonsible for | 
| +     *         de-duplicating across pages (via the SkPDFCanon) and | 
| +     *         for early serializing of large immutable objects, such | 
| +     *         as images (via SkPDFDocument::serialize()). | 
| */ | 
| static SkPDFDevice* Create(SkISize pageSize, | 
| SkScalar rasterDpi, | 
| -                               SkPDFCanon* canon) { | 
| -        return new SkPDFDevice(pageSize, rasterDpi, canon, true); | 
| +                               SkPDFDocument* doc) { | 
| +        return new SkPDFDevice(pageSize, rasterDpi, doc, true); | 
| } | 
|  | 
| /** Create a PDF drawing context without fipping the y-axis. */ | 
| static SkPDFDevice* CreateUnflipped(SkISize pageSize, | 
| SkScalar rasterDpi, | 
| -                                        SkPDFCanon* canon) { | 
| -        return new SkPDFDevice(pageSize, rasterDpi, canon, false); | 
| +                                        SkPDFDocument* doc) { | 
| +        return new SkPDFDevice(pageSize, rasterDpi, doc, false); | 
| } | 
|  | 
| virtual ~SkPDFDevice(); | 
| @@ -184,7 +188,7 @@ public: | 
| return *(fFontGlyphUsage.get()); | 
| } | 
|  | 
| -    SkPDFCanon* getCanon() const { return fCanon; } | 
| +    SkPDFCanon* getCanon() const; | 
|  | 
| protected: | 
| const SkBitmap& onAccessBitmap() override { | 
| @@ -261,12 +265,12 @@ private: | 
|  | 
| SkBitmap fLegacyBitmap; | 
|  | 
| -    SkPDFCanon* fCanon;  // Owned by SkDocument_PDF | 
| +    SkPDFDocument* fDocument; | 
| //////////////////////////////////////////////////////////////////////////// | 
|  | 
| SkPDFDevice(SkISize pageSize, | 
| SkScalar rasterDpi, | 
| -                SkPDFCanon* canon, | 
| +                SkPDFDocument* doc, | 
| bool flip); | 
|  | 
| ContentEntry* getLastContentEntry(); | 
|  |