DM: add pdf

BUG=skia:2598
R=halcanary@google.com, mtklein@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/312873002
diff --git a/dm/DMPDFTask.h b/dm/DMPDFTask.h
new file mode 100644
index 0000000..d273df6
--- /dev/null
+++ b/dm/DMPDFTask.h
@@ -0,0 +1,40 @@
+#ifndef DMPDFTask_DEFINED
+#define DMPDFTask_DEFINED
+
+#include "DMPDFRasterizeTask.h"
+#include "DMExpectations.h"
+#include "DMTask.h"
+#include "SkBitmap.h"
+#include "SkString.h"
+#include "SkTemplates.h"
+#include "gm.h"
+
+namespace DM {
+
+// This task renders a GM using Skia's PDF backend.
+// If rasterizePdfProc is non-NULL, it will spawn a PDFRasterizeTask.
+class PDFTask : public CpuTask {
+public:
+    PDFTask(const char* suffix,
+            Reporter*,
+            TaskRunner*,
+            const Expectations&,
+            skiagm::GMRegistry::Factory,
+            RasterizePdfProc);
+
+    virtual void draw() SK_OVERRIDE;
+
+    virtual bool shouldSkip() const SK_OVERRIDE;
+
+    virtual SkString name() const SK_OVERRIDE { return fName; }
+
+private:
+    SkAutoTDelete<skiagm::GM> fGM;
+    const SkString fName;
+    const Expectations& fExpectations;
+    RasterizePdfProc fRasterize;
+};
+
+}  // namespace DM
+
+#endif  // DMPDFTask_DEFINED