PdfMetafileSkia gives out a SkCanvas, not a SkBaseDevice.

Motivation: hide SkPDFDevice and SkPDFDocument behind PdfMetafileSkia class.

pdf_metafile_skia.cc:
    Implement GetVectorCanvasForNewPage.
    Remove StartPageForVectorCanvas.
    Own the SkCanvas pointer (current_page_canvas_).
    Replace page_outstanding_ field with a method that checks to see
    if current_page_canvas_ is NULL.
    Implement SaveTo.

skia::VectorPlatformDeviceSkia
    remove class

print_web_view_helper.cc
    Remove calls to canvas->getTopDevice()->setDrawingArea(...); (SkDFDevice)
    This API is no longer effective.

print_web_view_helper_linux.cc,
print_web_view_helper_mac.mm,
print_web_view_helper_pdf_win.cc:
    call GetVectorCanvasForNewPage rather than StartPageForVectorCanvas

BUG=278148

Review URL: https://codereview.chromium.org/704813002

Cr-Commit-Position: refs/heads/master@{#303522}
diff --git a/android_webview/renderer/print_web_view_helper.cc b/android_webview/renderer/print_web_view_helper.cc
index c754e63..6a06fc4 100644
--- a/android_webview/renderer/print_web_view_helper.cc
+++ b/android_webview/renderer/print_web_view_helper.cc
@@ -25,7 +25,6 @@
 #include "net/base/escape.h"
 #include "printing/pdf_metafile_skia.h"
 #include "printing/units.h"
-#include "skia/ext/vector_platform_device_skia.h"
 #include "third_party/WebKit/public/platform/WebSize.h"
 #include "third_party/WebKit/public/platform/WebURLRequest.h"
 #include "third_party/WebKit/public/web/WebConsoleMessage.h"
@@ -426,10 +425,6 @@
     const PrintMsg_Print_Params& params) {
 #if 0
   // TODO(sgurun) android_webview hack
-  skia::VectorPlatformDeviceSkia* device =
-      static_cast<skia::VectorPlatformDeviceSkia*>(canvas->getTopDevice());
-  device->setDrawingArea(SkPDFDevice::kMargin_DrawingArea);
-
   SkAutoCanvasRestore auto_restore(canvas, true);
   canvas->scale(1 / webkit_scale_factor, 1 / webkit_scale_factor);
 
@@ -468,8 +463,6 @@
 
   web_view->close();
   frame->close();
-
-  device->setDrawingArea(SkPDFDevice::kContent_DrawingArea);
 #endif
 }
 
diff --git a/android_webview/renderer/print_web_view_helper_linux.cc b/android_webview/renderer/print_web_view_helper_linux.cc
index 6895b252..753c98bc 100644
--- a/android_webview/renderer/print_web_view_helper_linux.cc
+++ b/android_webview/renderer/print_web_view_helper_linux.cc
@@ -166,32 +166,26 @@
   gfx::Rect canvas_area =
       params.params.display_header_footer ? gfx::Rect(page_size) : content_area;
 
-  SkBaseDevice* device = metafile->StartPageForVectorCanvas(page_size,
-                                                            canvas_area,
-                                                            scale_factor);
-  if (!device)
+  skia::VectorCanvas* canvas =
+      metafile->GetVectorCanvasForNewPage(page_size, canvas_area, scale_factor);
+  if (!canvas)
     return;
 
-  // The printPage method take a reference to the canvas we pass down, so it
-  // can't be a stack object.
-  skia::RefPtr<skia::VectorCanvas> canvas =
-      skia::AdoptRef(new skia::VectorCanvas(device));
   MetafileSkiaWrapper::SetMetafileOnCanvas(*canvas, metafile);
   skia::SetIsDraftMode(*canvas, is_print_ready_metafile_sent_);
 
   if (params.params.display_header_footer) {
     // |page_number| is 0-based, so 1 is added.
     // TODO(vitalybuka) : why does it work only with 1.25?
-    PrintHeaderAndFooter(canvas.get(), params.page_number + 1,
+    PrintHeaderAndFooter(canvas, params.page_number + 1,
                          print_preview_context_.total_page_count(),
-                         scale_factor / 1.25,
-                         page_layout_in_points, *header_footer_info_,
-                         params.params);
+                         scale_factor / 1.25, page_layout_in_points,
+                         *header_footer_info_, params.params);
   }
   RenderPageContent(frame, params.page_number, canvas_area, content_area,
-                    scale_factor, canvas.get());
+                    scale_factor, canvas);
 
-  // Done printing. Close the device context to retrieve the compiled metafile.
+  // Done printing. Close the canvas to retrieve the compiled metafile.
   if (!metafile->FinishPage())
     NOTREACHED() << "metafile failed";
 }
diff --git a/chrome/renderer/printing/print_web_view_helper.cc b/chrome/renderer/printing/print_web_view_helper.cc
index 67e000f0..494ab7ea 100644
--- a/chrome/renderer/printing/print_web_view_helper.cc
+++ b/chrome/renderer/printing/print_web_view_helper.cc
@@ -28,7 +28,6 @@
 #include "net/base/escape.h"
 #include "printing/pdf_metafile_skia.h"
 #include "printing/units.h"
-#include "skia/ext/vector_platform_device_skia.h"
 #include "third_party/WebKit/public/platform/WebSize.h"
 #include "third_party/WebKit/public/platform/WebURLRequest.h"
 #include "third_party/WebKit/public/web/WebConsoleMessage.h"
@@ -453,10 +452,6 @@
     float webkit_scale_factor,
     const PageSizeMargins& page_layout,
     const PrintMsg_Print_Params& params) {
-  skia::VectorPlatformDeviceSkia* device =
-      static_cast<skia::VectorPlatformDeviceSkia*>(canvas->getTopDevice());
-  device->setDrawingArea(SkPDFDevice::kMargin_DrawingArea);
-
   SkAutoCanvasRestore auto_restore(canvas, true);
   canvas->scale(1 / webkit_scale_factor, 1 / webkit_scale_factor);
 
@@ -503,8 +498,6 @@
 
   web_view->close();
   frame->close();
-
-  device->setDrawingArea(SkPDFDevice::kContent_DrawingArea);
 }
 #endif  // defined(ENABLE_PRINT_PREVIEW)
 
diff --git a/chrome/renderer/printing/print_web_view_helper_linux.cc b/chrome/renderer/printing/print_web_view_helper_linux.cc
index 18bfd31..ae862d95 100644
--- a/chrome/renderer/printing/print_web_view_helper_linux.cc
+++ b/chrome/renderer/printing/print_web_view_helper_linux.cc
@@ -161,16 +161,11 @@
   gfx::Rect canvas_area =
       params.params.display_header_footer ? gfx::Rect(page_size) : content_area;
 
-  SkBaseDevice* device = metafile->StartPageForVectorCanvas(page_size,
-                                                            canvas_area,
-                                                            scale_factor);
-  if (!device)
+  skia::VectorCanvas* canvas =
+      metafile->GetVectorCanvasForNewPage(page_size, canvas_area, scale_factor);
+  if (!canvas)
     return;
 
-  // The printPage method take a reference to the canvas we pass down, so it
-  // can't be a stack object.
-  skia::RefPtr<skia::VectorCanvas> canvas =
-      skia::AdoptRef(new skia::VectorCanvas(device));
   MetafileSkiaWrapper::SetMetafileOnCanvas(*canvas, metafile);
   skia::SetIsDraftMode(*canvas, is_print_ready_metafile_sent_);
 
@@ -178,20 +173,17 @@
   if (params.params.display_header_footer) {
     // |page_number| is 0-based, so 1 is added.
     // TODO(vitalybuka) : why does it work only with 1.25?
-    PrintHeaderAndFooter(canvas.get(),
-                         params.page_number + 1,
-                         print_preview_context_.total_page_count(),
-                         *frame,
-                         scale_factor / 1.25,
-                         page_layout_in_points,
+    PrintHeaderAndFooter(canvas, params.page_number + 1,
+                         print_preview_context_.total_page_count(), *frame,
+                         scale_factor / 1.25, page_layout_in_points,
                          params.params);
   }
 #endif  // defined(ENABLE_PRINT_PREVIEW)
 
   RenderPageContent(frame, params.page_number, canvas_area, content_area,
-                    scale_factor, canvas.get());
+                    scale_factor, canvas);
 
-  // Done printing. Close the device context to retrieve the compiled metafile.
+  // Done printing. Close the canvas to retrieve the compiled metafile.
   if (!metafile->FinishPage())
     NOTREACHED() << "metafile failed";
 }
diff --git a/chrome/renderer/printing/print_web_view_helper_mac.mm b/chrome/renderer/printing/print_web_view_helper_mac.mm
index db8bb80..ffde22c 100644
--- a/chrome/renderer/printing/print_web_view_helper_mac.mm
+++ b/chrome/renderer/printing/print_web_view_helper_mac.mm
@@ -118,29 +118,23 @@
       params.display_header_footer ? gfx::Rect(*page_size) : content_area;
 
   {
-    SkBaseDevice* device = metafile->StartPageForVectorCanvas(
+    skia::VectorCanvas* canvas = metafile->GetVectorCanvasForNewPage(
         *page_size, canvas_area, scale_factor);
-    if (!device)
+    if (!canvas)
       return;
 
-    skia::RefPtr<skia::VectorCanvas> canvas =
-        skia::AdoptRef(new skia::VectorCanvas(device));
-    blink::WebCanvas* canvas_ptr = canvas.get();
     MetafileSkiaWrapper::SetMetafileOnCanvas(*canvas, metafile);
     skia::SetIsDraftMode(*canvas, is_print_ready_metafile_sent_);
     skia::SetIsPreviewMetafile(*canvas, is_preview);
 
     if (params.display_header_footer) {
-      PrintHeaderAndFooter(canvas_ptr,
+      PrintHeaderAndFooter(static_cast<blink::WebCanvas*>(canvas),
                            page_number + 1,
-                           print_preview_context_.total_page_count(),
-                           *frame,
-                           scale_factor,
-                           page_layout_in_points,
-                           params);
+                           print_preview_context_.total_page_count(), *frame,
+                           scale_factor, page_layout_in_points, params);
     }
     RenderPageContent(frame, page_number, canvas_area, content_area,
-                      scale_factor, canvas_ptr);
+                      scale_factor, static_cast<blink::WebCanvas*>(canvas));
   }
 
   // Done printing. Close the device context to retrieve the compiled metafile.
diff --git a/chrome/renderer/printing/print_web_view_helper_pdf_win.cc b/chrome/renderer/printing/print_web_view_helper_pdf_win.cc
index b6300b0..d9554d7 100644
--- a/chrome/renderer/printing/print_web_view_helper_pdf_win.cc
+++ b/chrome/renderer/printing/print_web_view_helper_pdf_win.cc
@@ -179,38 +179,26 @@
       frame->getPrintPageShrink(params.page_number);
   float scale_factor = css_scale_factor * webkit_page_shrink_factor;
 
-  SkBaseDevice* device = metafile->StartPageForVectorCanvas(page_size,
-                                                            canvas_area,
-                                                            scale_factor);
-  if (!device)
+  skia::VectorCanvas* canvas =
+      metafile->GetVectorCanvasForNewPage(page_size, canvas_area, scale_factor);
+  if (!canvas)
     return;
 
-  // The printPage method take a reference to the canvas we pass down, so it
-  // can't be a stack object.
-  skia::RefPtr<skia::VectorCanvas> canvas =
-      skia::AdoptRef(new skia::VectorCanvas(device));
   MetafileSkiaWrapper::SetMetafileOnCanvas(*canvas, metafile);
   skia::SetIsDraftMode(*canvas, is_print_ready_metafile_sent_);
 
   if (params.params.display_header_footer) {
     // |page_number| is 0-based, so 1 is added.
-    PrintHeaderAndFooter(canvas.get(),
-                         params.page_number + 1,
-                         print_preview_context_.total_page_count(),
-                         *frame,
-                         scale_factor,
-                         page_layout_in_points,
-                         params.params);
+    PrintHeaderAndFooter(canvas, params.page_number + 1,
+                         print_preview_context_.total_page_count(), *frame,
+                         scale_factor, page_layout_in_points, params.params);
   }
 
-  float webkit_scale_factor = RenderPageContent(frame,
-                                                params.page_number,
-                                                canvas_area,
-                                                content_area,
-                                                scale_factor,
-                                                canvas.get());
+  float webkit_scale_factor =
+      RenderPageContent(frame, params.page_number, canvas_area, content_area,
+                        scale_factor, canvas);
   DCHECK_GT(webkit_scale_factor, 0.0f);
-  // Done printing. Close the device context to retrieve the compiled metafile.
+  // Done printing. Close the canvas to retrieve the compiled metafile.
   if (!metafile->FinishPage())
     NOTREACHED() << "metafile failed";
 }
diff --git a/printing/pdf_metafile_skia.cc b/printing/pdf_metafile_skia.cc
index 36a42d9..c63e308 100644
--- a/printing/pdf_metafile_skia.cc
+++ b/printing/pdf_metafile_skia.cc
@@ -10,7 +10,7 @@
 #include "base/numerics/safe_conversions.h"
 #include "base/posix/eintr_wrapper.h"
 #include "skia/ext/refptr.h"
-#include "skia/ext/vector_platform_device_skia.h"
+#include "skia/ext/vector_canvas.h"
 #include "third_party/skia/include/core/SkData.h"
 #include "third_party/skia/include/core/SkRefCnt.h"
 #include "third_party/skia/include/core/SkScalar.h"
@@ -34,6 +34,7 @@
 
 struct PdfMetafileSkiaData {
   skia::RefPtr<SkPDFDevice> current_page_;
+  skia::RefPtr<SkCanvas> current_page_canvas_;
   SkPDFDocument pdf_doc_;
   SkDynamicMemoryWStream pdf_stream_;
 #if defined(OS_MACOSX)
@@ -51,11 +52,10 @@
   return data_->pdf_stream_.write(src_buffer, src_buffer_size);
 }
 
-SkBaseDevice* PdfMetafileSkia::StartPageForVectorCanvas(
-    const gfx::Size& page_size, const gfx::Rect& content_area,
-    const float& scale_factor) {
-  DCHECK(!page_outstanding_);
-  page_outstanding_ = true;
+bool PdfMetafileSkia::StartPage(const gfx::Size& page_size,
+                                const gfx::Rect& content_area,
+                                const float& scale_factor) {
+  DCHECK(!data_->current_page_canvas_);
 
   // Adjust for the margins and apply the scale factor.
   SkMatrix transform;
@@ -67,25 +67,29 @@
   SkISize pdf_page_size = SkISize::Make(page_size.width(), page_size.height());
   SkISize pdf_content_size =
       SkISize::Make(content_area.width(), content_area.height());
-  skia::RefPtr<SkPDFDevice> pdf_device =
-      skia::AdoptRef(new skia::VectorPlatformDeviceSkia(
-          pdf_page_size, pdf_content_size, transform));
-  data_->current_page_ = pdf_device;
-  return pdf_device.get();
+
+  data_->current_page_ = skia::AdoptRef(
+      new SkPDFDevice(pdf_page_size, pdf_content_size, transform));
+  data_->current_page_canvas_ =
+      skia::AdoptRef(new SkCanvas(data_->current_page_.get()));
+  return true;
 }
 
-bool PdfMetafileSkia::StartPage(const gfx::Size& page_size,
-                                const gfx::Rect& content_area,
-                                const float& scale_factor) {
-  NOTREACHED();
-  return false;
+skia::VectorCanvas* PdfMetafileSkia::GetVectorCanvasForNewPage(
+    const gfx::Size& page_size,
+    const gfx::Rect& content_area,
+    const float& scale_factor) {
+  if (!StartPage(page_size, content_area, scale_factor))
+    return nullptr;
+  return data_->current_page_canvas_.get();
 }
 
 bool PdfMetafileSkia::FinishPage() {
-  DCHECK(data_->current_page_.get());
+  DCHECK(data_->current_page_canvas_);
+  DCHECK(data_->current_page_);
 
+  data_->current_page_canvas_.clear();  // Unref SkCanvas.
   data_->pdf_doc_.appendPage(data_->current_page_.get());
-  page_outstanding_ = false;
   return true;
 }
 
@@ -94,7 +98,7 @@
   if (data_->pdf_stream_.getOffset())
     return true;
 
-  if (page_outstanding_)
+  if (data_->current_page_canvas_)
     FinishPage();
 
   data_->current_page_.clear();
@@ -179,6 +183,17 @@
 }
 #endif
 
+bool PdfMetafileSkia::SaveTo(base::File* file) const {
+  if (GetDataSize() == 0U)
+    return false;
+  SkAutoDataUnref data(data_->pdf_stream_.copyToData());
+  // TODO(halcanary): rewrite this function without extra data copy
+  // using SkStreamAsset.
+  const char* ptr = reinterpret_cast<const char*>(data->data());
+  int size = base::checked_cast<int>(data->size());
+  return file->WriteAtCurrentPos(ptr, size) == size;
+}
+
 #if defined(OS_CHROMEOS) || defined(OS_ANDROID)
 bool PdfMetafileSkia::SaveToFD(const base::FileDescriptor& fd) const {
   DCHECK_GT(data_->pdf_stream_.getOffset(), 0U);
@@ -188,10 +203,7 @@
     return false;
   }
   base::File file(fd.fd);
-  SkAutoDataUnref data(data_->pdf_stream_.copyToData());
-  bool result =
-      file.WriteAtCurrentPos(reinterpret_cast<const char*>(data->data()),
-                             GetDataSize()) == static_cast<int>(GetDataSize());
+  bool result = SaveTo(&file);
   DLOG_IF(ERROR, !result) << "Failed to save file with fd " << fd.fd;
 
   if (!fd.auto_close)
@@ -200,9 +212,7 @@
 }
 #endif
 
-PdfMetafileSkia::PdfMetafileSkia()
-    : data_(new PdfMetafileSkiaData),
-      page_outstanding_(false) {
+PdfMetafileSkia::PdfMetafileSkia() : data_(new PdfMetafileSkiaData) {
 }
 
 scoped_ptr<PdfMetafileSkia> PdfMetafileSkia::GetMetafileForCurrentPage() {
diff --git a/printing/pdf_metafile_skia.h b/printing/pdf_metafile_skia.h
index bc75abd..58e928b 100644
--- a/printing/pdf_metafile_skia.h
+++ b/printing/pdf_metafile_skia.h
@@ -10,6 +10,7 @@
 #include "base/memory/scoped_ptr.h"
 #include "build/build_config.h"
 #include "printing/metafile.h"
+#include "skia/ext/vector_canvas.h"
 
 #if defined(OS_WIN)
 #include <windows.h>
@@ -62,6 +63,8 @@
                   const MacRenderPageParams& params) const override;
 #endif
 
+  bool SaveTo(base::File* file) const override;
+
 #if defined(OS_CHROMEOS) || defined(OS_ANDROID)
   // TODO(vitalybuka): replace with SaveTo().
   bool SaveToFD(const base::FileDescriptor& fd) const;
@@ -71,17 +74,18 @@
   scoped_ptr<PdfMetafileSkia> GetMetafileForCurrentPage();
 
   // This method calls StartPage and then returns an appropriate
-  // VectorPlatformDevice implementation bound to the context created by
-  // StartPage or NULL on error.
-  SkBaseDevice* StartPageForVectorCanvas(const gfx::Size& page_size,
-                                         const gfx::Rect& content_area,
-                                         const float& scale_factor);
+  // VectorCanvas implementation bound to the context created by
+  // StartPage or NULL on error.  The skia::VectorCanvas pointer that
+  // is returned is owned by this PdfMetafileSkia object and does not
+  // need to be ref()ed or unref()ed.  The canvas will remain valid
+  // until FinishPage() or FinishDocument() is called.
+  skia::VectorCanvas* GetVectorCanvasForNewPage(const gfx::Size& page_size,
+                                                const gfx::Rect& content_area,
+                                                const float& scale_factor);
+
  private:
   scoped_ptr<PdfMetafileSkiaData> data_;
 
-  // True when finish page is outstanding for current page.
-  bool page_outstanding_;
-
   DISALLOW_COPY_AND_ASSIGN(PdfMetafileSkia);
 };
 
diff --git a/skia/BUILD.gn b/skia/BUILD.gn
index 19441835..fffe5a0 100644
--- a/skia/BUILD.gn
+++ b/skia/BUILD.gn
@@ -312,8 +312,6 @@
     "ext/vector_canvas.h",
     "ext/vector_platform_device_emf_win.cc",
     "ext/vector_platform_device_emf_win.h",
-    "ext/vector_platform_device_skia.cc",
-    "ext/vector_platform_device_skia.h",
   ]
 
   # The skia gypi values are relative to the skia_dir, so we need to rebase.
@@ -426,16 +424,12 @@
   if (is_posix) {
     sources -= [ "ext/SkThread_chrome.cc" ]
   }
-  if (is_ios) {
-    sources -= [ "ext/vector_platform_device_skia.cc" ]
-  }
   if (is_win) {
     sources -= [ "ext/SkThread_chrome.cc" ]
   }
   if (is_android && (!enable_basic_printing && !enable_print_preview)) {
     sources -= [
       "ext/skia_utils_base.cc",
-      "ext/vector_platform_device_skia.cc"
     ]
   }
 
diff --git a/skia/ext/vector_platform_device_skia.cc b/skia/ext/vector_platform_device_skia.cc
deleted file mode 100644
index 5b8217c1..0000000
--- a/skia/ext/vector_platform_device_skia.cc
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "skia/ext/vector_platform_device_skia.h"
-
-#include "skia/ext/bitmap_platform_device.h"
-#include "third_party/skia/include/core/SkClipStack.h"
-#include "third_party/skia/include/core/SkDraw.h"
-#include "third_party/skia/include/core/SkRect.h"
-#include "third_party/skia/include/core/SkRegion.h"
-#include "third_party/skia/include/core/SkScalar.h"
-
-namespace skia {
-
-static inline SkBitmap makeABitmap(int width, int height) {
-  SkBitmap bitmap;
-  bitmap.setInfo(SkImageInfo::MakeUnknown(width, height));
-  return bitmap;
-}
-
-VectorPlatformDeviceSkia::VectorPlatformDeviceSkia(
-    const SkISize& pageSize,
-    const SkISize& contentSize,
-    const SkMatrix& initialTransform)
-    : SkPDFDevice(pageSize, contentSize, initialTransform) {
-  SetPlatformDevice(this, this);
-}
-
-VectorPlatformDeviceSkia::~VectorPlatformDeviceSkia() {
-}
-
-bool VectorPlatformDeviceSkia::SupportsPlatformPaint() {
-  return false;
-}
-
-PlatformSurface VectorPlatformDeviceSkia::BeginPlatformPaint() {
-  // Even when drawing a vector representation of the page, we have to
-  // provide a raster surface for plugins to render into - they don't have
-  // a vector interface.  Therefore we create a BitmapPlatformDevice here
-  // and return the context from it, then layer on the raster data as an
-  // image in EndPlatformPaint.
-  DCHECK(raster_surface_ == NULL);
-  raster_surface_ = skia::AdoptRef(
-      BitmapPlatformDevice::CreateAndClear(width(), height(), false));
-  return raster_surface_->BeginPlatformPaint();
-}
-
-void VectorPlatformDeviceSkia::EndPlatformPaint() {
-  DCHECK(raster_surface_ != NULL);
-  SkPaint paint;
-  // SkPDFDevice checks the passed SkDraw for an empty clip (only).  Fake
-  // it out by setting a non-empty clip.
-  SkDraw draw;
-  SkRegion clip(SkIRect::MakeWH(width(), height()));
-  draw.fClip=&clip;
-  drawSprite(draw, raster_surface_->accessBitmap(false), 0, 0, paint);
-  // BitmapPlatformDevice matches begin and end calls.
-  raster_surface_->EndPlatformPaint();
-  raster_surface_.clear();
-}
-
-#if defined(OS_WIN)
-void VectorPlatformDeviceSkia::DrawToNativeContext(HDC dc,
-                                                   int x,
-                                                   int y,
-                                                   const RECT* src_rect) {
-  SkASSERT(false);
-}
-#elif defined(OS_MACOSX)
-void VectorPlatformDeviceSkia::DrawToNativeContext(CGContext* context, int x,
-    int y, const CGRect* src_rect) {
-  SkASSERT(false);
-}
-
-CGContextRef VectorPlatformDeviceSkia::GetBitmapContext() {
-  SkASSERT(false);
-  return NULL;
-}
-#elif defined(OS_POSIX)
-void VectorPlatformDeviceSkia::DrawToNativeContext(
-    PlatformSurface surface, int x, int y, const PlatformRect* src_rect) {
-  // Should never be called on Linux.
-  SkASSERT(false);
-}
-#endif
-
-}  // namespace skia
diff --git a/skia/ext/vector_platform_device_skia.h b/skia/ext/vector_platform_device_skia.h
deleted file mode 100644
index 528eac9..0000000
--- a/skia/ext/vector_platform_device_skia.h
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef SKIA_EXT_VECTOR_PLATFORM_DEVICE_SKIA_H_
-#define SKIA_EXT_VECTOR_PLATFORM_DEVICE_SKIA_H_
-
-#include "base/basictypes.h"
-#include "base/compiler_specific.h"
-#include "base/logging.h"
-#include "skia/ext/platform_device.h"
-#include "skia/ext/refptr.h"
-#include "third_party/skia/include/pdf/SkPDFDevice.h"
-
-class SkMatrix;
-
-namespace skia {
-
-class BitmapPlatformDevice;
-
-class VectorPlatformDeviceSkia : public SkPDFDevice, public PlatformDevice {
- public:
-  SK_API VectorPlatformDeviceSkia(const SkISize& pageSize,
-                                  const SkISize& contentSize,
-                                  const SkMatrix& initialTransform);
-  ~VectorPlatformDeviceSkia() override;
-
-  // PlatformDevice methods.
-  bool SupportsPlatformPaint() override;
-
-  PlatformSurface BeginPlatformPaint() override;
-  void EndPlatformPaint() override;
-#if defined(OS_WIN)
-  virtual void DrawToNativeContext(HDC dc,
-                                   int x,
-                                   int y,
-                                   const RECT* src_rect) override;
-#elif defined(OS_MACOSX)
-  void DrawToNativeContext(CGContext* context,
-                           int x,
-                           int y,
-                           const CGRect* src_rect) override;
-  CGContextRef GetBitmapContext() override;
-#elif defined(OS_POSIX)
-  virtual void DrawToNativeContext(PlatformSurface surface,
-                                   int x,
-                                   int y,
-                                   const PlatformRect* src_rect) override;
-#endif
-
- private:
-  skia::RefPtr<BitmapPlatformDevice> raster_surface_;
-
-  DISALLOW_COPY_AND_ASSIGN(VectorPlatformDeviceSkia);
-};
-
-}  // namespace skia
-
-#endif  // SKIA_EXT_VECTOR_PLATFORM_DEVICE_SKIA_H_
diff --git a/skia/skia_chrome.gypi b/skia/skia_chrome.gypi
index 0f975563..7db9009 100644
--- a/skia/skia_chrome.gypi
+++ b/skia/skia_chrome.gypi
@@ -83,8 +83,6 @@
     'ext/vector_canvas.h',
     'ext/vector_platform_device_emf_win.cc',
     'ext/vector_platform_device_emf_win.h',
-    'ext/vector_platform_device_skia.cc',
-    'ext/vector_platform_device_skia.h',
   ],
   'conditions': [
     [ 'OS == "android" and '
@@ -93,15 +91,7 @@
         'ext/skia_utils_base.cc',
       ],
     }],
-    [ 'enable_basic_printing==0 and enable_print_preview==0', {
-      'sources!': [
-        'ext/vector_platform_device_skia.cc',
-      ],
-    }],
     ['OS == "ios"', {
-      'sources/': [
-        ['exclude', '^ext/vector_platform_device_skia\\.'],
-      ],
       'dependencies!': [
         'skia_chrome_opts',
       ],