Index: printing/native_metafile_factory.cc |
diff --git a/printing/native_metafile_factory.cc b/printing/native_metafile_factory.cc |
index f97145252702b7c834b805bf5bd0663d3e184ad6..670e99fd34aa425b4cb7a6f54b19474dae957e9b 100644 |
--- a/printing/native_metafile_factory.cc |
+++ b/printing/native_metafile_factory.cc |
@@ -16,13 +16,37 @@ namespace printing { |
// static |
printing::NativeMetafile* NativeMetafileFactory::Create() { |
+ NativeMetafile* metafile; |
#if defined(OS_WIN) |
- return new printing::Emf; |
+ metafile = new printing::Emf; |
vandebo (ex-Chrome)
2011/03/24 20:11:55
This code is duplicated. You should pull it out i
dpapad
2011/03/24 21:08:14
Done.
|
#elif defined(OS_MACOSX) |
- return new printing::PdfMetafile; |
+ metafile = new printing::PdfMetafile; |
#elif defined(OS_POSIX) |
- return new printing::PdfPsMetafile; |
+ metafile = new printing::PdfPsMetafile; |
#endif |
+ if (!metafile->Init()) { |
+ delete metafile; |
+ return NULL; |
+ } |
+ return metafile; |
+} |
+ |
+// static |
+printing::NativeMetafile* NativeMetafileFactory::CreateFromData( |
+ const void* src_buffer, uint32 src_buffer_size) { |
+ NativeMetafile* metafile; |
+#if defined(OS_WIN) |
+ metafile = new printing::Emf; |
+#elif defined(OS_MACOSX) |
+ metafile = new printing::PdfMetafile; |
+#elif defined(OS_POSIX) |
+ metafile = new printing::PdfPsMetafile; |
+#endif |
+ if (!metafile->InitFromData(src_buffer, src_buffer_size)) { |
+ delete metafile; |
+ return NULL; |
+ } |
+ return metafile; |
} |
} // namespace printing |