| Index: third_party/WebKit/Source/platform/graphics/paint/DrawingDisplayItem.cpp
 | 
| diff --git a/third_party/WebKit/Source/platform/graphics/paint/DrawingDisplayItem.cpp b/third_party/WebKit/Source/platform/graphics/paint/DrawingDisplayItem.cpp
 | 
| index 05f254c6f2397c7cd71053b4a4fc33aec3eb0757..a2ca92cd4e8db44923a3ad436fec64fe936d8abd 100644
 | 
| --- a/third_party/WebKit/Source/platform/graphics/paint/DrawingDisplayItem.cpp
 | 
| +++ b/third_party/WebKit/Source/platform/graphics/paint/DrawingDisplayItem.cpp
 | 
| @@ -5,6 +5,7 @@
 | 
|  #include "platform/graphics/paint/DrawingDisplayItem.h"
 | 
|  
 | 
|  #include "platform/graphics/GraphicsContext.h"
 | 
| +#include "platform/graphics/paint/PaintCanvas.h"
 | 
|  #include "public/platform/WebDisplayItemList.h"
 | 
|  #include "third_party/skia/include/core/SkBitmap.h"
 | 
|  #include "third_party/skia/include/core/SkCanvas.h"
 | 
| @@ -47,28 +48,30 @@ void DrawingDisplayItem::dumpPropertiesAsDebugString(
 | 
|  }
 | 
|  #endif
 | 
|  
 | 
| -static bool picturesEqual(const SkPicture* picture1,
 | 
| -                          const SkPicture* picture2) {
 | 
| +static bool picturesEqual(const PaintRecord* picture1,
 | 
| +                          const PaintRecord* picture2) {
 | 
|    if (picture1->approximateOpCount() != picture2->approximateOpCount())
 | 
|      return false;
 | 
|  
 | 
| -  sk_sp<SkData> data1 = picture1->serialize();
 | 
| -  sk_sp<SkData> data2 = picture2->serialize();
 | 
| +  sk_sp<SkData> data1 = ToSkPicture(picture1)->serialize();
 | 
| +  sk_sp<SkData> data2 = ToSkPicture(picture2)->serialize();
 | 
|    return data1->equals(data2.get());
 | 
|  }
 | 
|  
 | 
| -static SkBitmap pictureToBitmap(const SkPicture* picture) {
 | 
| +static SkBitmap pictureToBitmap(const PaintRecord* picture) {
 | 
|    SkBitmap bitmap;
 | 
|    SkRect rect = picture->cullRect();
 | 
|    bitmap.allocPixels(SkImageInfo::MakeN32Premul(rect.width(), rect.height()));
 | 
| -  SkCanvas canvas(bitmap);
 | 
| +  SkCanvas bitmapCanvas(bitmap);
 | 
| +  PaintCanvasPassThrough canvas(&bitmapCanvas);
 | 
|    canvas.clear(SK_ColorTRANSPARENT);
 | 
|    canvas.translate(-rect.x(), -rect.y());
 | 
|    canvas.drawPicture(picture);
 | 
|    return bitmap;
 | 
|  }
 | 
|  
 | 
| -static bool bitmapsEqual(const SkPicture* picture1, const SkPicture* picture2) {
 | 
| +static bool bitmapsEqual(const PaintRecord* picture1,
 | 
| +                         const PaintRecord* picture2) {
 | 
|    SkRect rect = picture1->cullRect();
 | 
|    if (rect != picture2->cullRect())
 | 
|      return false;
 | 
| @@ -99,8 +102,8 @@ bool DrawingDisplayItem::equals(const DisplayItem& other) const {
 | 
|    if (!DisplayItem::equals(other))
 | 
|      return false;
 | 
|  
 | 
| -  const SkPicture* picture = this->picture();
 | 
| -  const SkPicture* otherPicture =
 | 
| +  const PaintRecord* picture = this->picture();
 | 
| +  const PaintRecord* otherPicture =
 | 
|        static_cast<const DrawingDisplayItem&>(other).picture();
 | 
|  
 | 
|    if (!picture && !otherPicture)
 | 
| 
 |