| Index: third_party/WebKit/Source/web/WebLocalFrameImpl.cpp
 | 
| diff --git a/third_party/WebKit/Source/web/WebLocalFrameImpl.cpp b/third_party/WebKit/Source/web/WebLocalFrameImpl.cpp
 | 
| index 2baa0920fbaf765e7f5b7b761280d412f670c0fd..6ca410e1ffcd5393e182a58895680b441100072b 100644
 | 
| --- a/third_party/WebKit/Source/web/WebLocalFrameImpl.cpp
 | 
| +++ b/third_party/WebKit/Source/web/WebLocalFrameImpl.cpp
 | 
| @@ -271,7 +271,7 @@ WebPluginContainerImpl* WebLocalFrameImpl::pluginContainerFromNode(LocalFrame* f
 | 
|  
 | 
|  // Simple class to override some of PrintContext behavior. Some of the methods
 | 
|  // made virtual so that they can be overridden by ChromePluginPrintContext.
 | 
| -class ChromePrintContext : public PrintContext, public DisplayItemClient {
 | 
| +class ChromePrintContext : public PrintContext {
 | 
|      WTF_MAKE_NONCOPYABLE(ChromePrintContext);
 | 
|  public:
 | 
|      ChromePrintContext(LocalFrame* frame)
 | 
| @@ -309,7 +309,7 @@ public:
 | 
|          SkPictureBuilder pictureBuilder(pageRect, &skia::GetMetaData(*canvas));
 | 
|          pictureBuilder.context().setPrinting(true);
 | 
|  
 | 
| -        float scale = spoolPage(pictureBuilder.context(), pageNumber);
 | 
| +        float scale = spoolPage(pictureBuilder, pageNumber);
 | 
|          pictureBuilder.endRecording()->playback(canvas);
 | 
|          return scale;
 | 
|      }
 | 
| @@ -339,7 +339,7 @@ public:
 | 
|  
 | 
|          // Fill the whole background by white.
 | 
|          {
 | 
| -            DrawingRecorder backgroundRecorder(context, *this, DisplayItem::PrintedContentBackground, allPagesRect);
 | 
| +            DrawingRecorder backgroundRecorder(context, pictureBuilder, DisplayItem::PrintedContentBackground, allPagesRect);
 | 
|              context.fillRect(FloatRect(0, 0, pageWidth, totalHeight), Color::white);
 | 
|          }
 | 
|  
 | 
| @@ -348,7 +348,7 @@ public:
 | 
|              ScopeRecorder scopeRecorder(context);
 | 
|              // Draw a line for a page boundary if this isn't the first page.
 | 
|              if (pageIndex > 0) {
 | 
| -                DrawingRecorder lineBoundaryRecorder(context, *this, DisplayItem::PrintedContentLineBoundary, allPagesRect);
 | 
| +                DrawingRecorder lineBoundaryRecorder(context, pictureBuilder, DisplayItem::PrintedContentLineBoundary, allPagesRect);
 | 
|                  context.save();
 | 
|                  context.setStrokeColor(Color(0, 0, 255));
 | 
|                  context.setFillColor(Color(0, 0, 255));
 | 
| @@ -364,42 +364,39 @@ public:
 | 
|              float scale = getPageShrink(pageIndex);
 | 
|              transform.scale(scale, scale);
 | 
|  #endif
 | 
| -            TransformRecorder transformRecorder(context, *this, transform);
 | 
| -            spoolPage(context, pageIndex);
 | 
| +            TransformRecorder transformRecorder(context, pictureBuilder, transform);
 | 
| +            spoolPage(pictureBuilder, pageIndex);
 | 
|  
 | 
|              currentHeight += pageSizeInPixels.height() + 1;
 | 
|          }
 | 
|          pictureBuilder.endRecording()->playback(canvas);
 | 
|      }
 | 
|  
 | 
| -    // DisplayItemClient methods
 | 
| -    String debugName() const final { return "ChromePrintContext"; }
 | 
| -    LayoutRect visualRect() const override { return LayoutRect(); }
 | 
| -
 | 
|  protected:
 | 
|      // Spools the printed page, a subrect of frame(). Skip the scale step.
 | 
|      // NativeTheme doesn't play well with scaling. Scaling is done browser side
 | 
|      // instead. Returns the scale to be applied.
 | 
|      // On Linux, we don't have the problem with NativeTheme, hence we let WebKit
 | 
|      // do the scaling and ignore the return value.
 | 
| -    virtual float spoolPage(GraphicsContext& context, int pageNumber)
 | 
| +    virtual float spoolPage(SkPictureBuilder& pictureBuilder, int pageNumber)
 | 
|      {
 | 
|          IntRect pageRect = m_pageRects[pageNumber];
 | 
|          float scale = m_printedPageWidth / pageRect.width();
 | 
| +        GraphicsContext& context = pictureBuilder.context();
 | 
|  
 | 
|          AffineTransform transform;
 | 
|  #if OS(POSIX) && !OS(MACOSX)
 | 
|          transform.scale(scale);
 | 
|  #endif
 | 
|          transform.translate(static_cast<float>(-pageRect.x()), static_cast<float>(-pageRect.y()));
 | 
| -        TransformRecorder transformRecorder(context, *this, transform);
 | 
| +        TransformRecorder transformRecorder(context, pictureBuilder, transform);
 | 
|  
 | 
| -        ClipRecorder clipRecorder(context, *this, DisplayItem::ClipPrintedPage, LayoutRect(pageRect));
 | 
| +        ClipRecorder clipRecorder(context, pictureBuilder, DisplayItem::ClipPrintedPage, LayoutRect(pageRect));
 | 
|  
 | 
|          frame()->view()->paintContents(context, GlobalPaintNormalPhase, pageRect);
 | 
|  
 | 
|          {
 | 
| -            DrawingRecorder lineBoundaryRecorder(context, *this, DisplayItem::PrintedContentDestinationLocations, pageRect);
 | 
| +            DrawingRecorder lineBoundaryRecorder(context, pictureBuilder, DisplayItem::PrintedContentDestinationLocations, pageRect);
 | 
|              outputLinkedDestinations(context, pageRect);
 | 
|          }
 | 
|  
 | 
| @@ -471,10 +468,10 @@ protected:
 | 
|      // Spools the printed page, a subrect of frame(). Skip the scale step.
 | 
|      // NativeTheme doesn't play well with scaling. Scaling is done browser side
 | 
|      // instead. Returns the scale to be applied.
 | 
| -    float spoolPage(GraphicsContext& context, int pageNumber) override
 | 
| +    float spoolPage(SkPictureBuilder& pictureBuilder, int pageNumber) override
 | 
|      {
 | 
|          IntRect pageRect = m_pageRects[pageNumber];
 | 
| -        m_plugin->printPage(pageNumber, context, pageRect);
 | 
| +        m_plugin->printPage(pageNumber, pictureBuilder.context(), pageRect);
 | 
|  
 | 
|          return 1.0;
 | 
|      }
 | 
| 
 |