diff --git a/gfx/thebes/PrintTargetEMF.cpp b/gfx/thebes/PrintTargetEMF.cpp index 741fae70ba43..f024605b545a 100644 --- a/gfx/thebes/PrintTargetEMF.cpp +++ b/gfx/thebes/PrintTargetEMF.cpp @@ -6,6 +6,7 @@ #include "PrintTargetEMF.h" #include "nsAnonymousTemporaryFile.h" #include "nsIFile.h" +#include "mozilla/widget/PDFiumProcessParent.h" using mozilla::gfx::DrawTarget; @@ -18,6 +19,13 @@ PrintTargetEMF::PrintTargetEMF(HDC aDC, const IntSize& aSize) { } +PrintTargetEMF::~PrintTargetEMF() +{ + if (mPDFiumProcess) { + mPDFiumProcess->Delete(); + } +} + /* static */ already_AddRefed PrintTargetEMF::CreateOrNull(HDC aDC, const IntSize& aSizeInPoints) { @@ -51,6 +59,9 @@ PrintTargetEMF::BeginPrinting(const nsAString& aTitle, ::StartDocW(mPrinterDC, &docinfo); + mPDFiumProcess = new PDFiumProcessParent(); + NS_ENSURE_TRUE(mPDFiumProcess->Launch(), NS_ERROR_FAILURE); + return NS_OK; } diff --git a/gfx/thebes/PrintTargetEMF.h b/gfx/thebes/PrintTargetEMF.h index 6c0faa0bb0dc..22fcffc59cc1 100644 --- a/gfx/thebes/PrintTargetEMF.h +++ b/gfx/thebes/PrintTargetEMF.h @@ -11,6 +11,12 @@ /* include windows.h for the HDC definitions that we need. */ #include +namespace mozilla { +namespace widget { + class PDFiumProcessParent; +} +} + namespace mozilla { namespace gfx { @@ -26,6 +32,7 @@ class PrintTargetEMF final : public mozilla::gfx::PrintTarget { public: typedef gfx::IntSize IntSize; + typedef mozilla::widget::PDFiumProcessParent PDFiumProcessParent; static already_AddRefed CreateOrNull(HDC aDC, const IntSize& aSizeInPoints); @@ -48,11 +55,13 @@ public: private: PrintTargetEMF(HDC aDC, const IntSize& aSize); + ~PrintTargetEMF() override; nsString mTitle; RefPtr mTargetForCurrentPage; nsCOMPtr mPDFFileForOnePage; RefPtr mRefTarget; + PDFiumProcessParent* mPDFiumProcess; HDC mPrinterDC; }; diff --git a/widget/windows/moz.build b/widget/windows/moz.build index 3b14dcf55c91..e01a498b9a14 100644 --- a/widget/windows/moz.build +++ b/widget/windows/moz.build @@ -27,6 +27,7 @@ EXPORTS.mozilla.widget += [ 'PDFiumEngineShim.h', 'PDFiumParent.h', 'PDFiumProcessChild.h', + 'PDFiumProcessParent.h', 'PDFViaEMFPrintHelper.h', 'WinCompositorWidget.h', 'WinMessages.h',