зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1399787 - Part 11.c. Add assertions to make sure no page-done callback from the PrintTarget after the print job done. r=jwatt
MozReview-Commit-ID: FsDqjpy2wtR --HG-- extra : rebase_source : 40b66df0674e5a571e647e17957032c6bfedd28e
This commit is contained in:
Родитель
25c71788a4
Коммит
f07e4b883f
|
@ -27,6 +27,7 @@ namespace layout {
|
||||||
|
|
||||||
RemotePrintJobParent::RemotePrintJobParent(nsIPrintSettings* aPrintSettings)
|
RemotePrintJobParent::RemotePrintJobParent(nsIPrintSettings* aPrintSettings)
|
||||||
: mPrintSettings(aPrintSettings)
|
: mPrintSettings(aPrintSettings)
|
||||||
|
, mIsDoingPrinting(false)
|
||||||
{
|
{
|
||||||
MOZ_COUNT_CTOR(RemotePrintJobParent);
|
MOZ_COUNT_CTOR(RemotePrintJobParent);
|
||||||
}
|
}
|
||||||
|
@ -92,6 +93,8 @@ RemotePrintJobParent::InitializePrintDevice(const nsString& aDocumentTitle,
|
||||||
mPrintDeviceContext->RegisterPageDoneCallback([this](nsresult aResult) { PageDone(aResult); });
|
mPrintDeviceContext->RegisterPageDoneCallback([this](nsresult aResult) { PageDone(aResult); });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mIsDoingPrinting = true;
|
||||||
|
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -151,6 +154,8 @@ RemotePrintJobParent::PrintPage(PRFileDescStream& aRecording)
|
||||||
void
|
void
|
||||||
RemotePrintJobParent::PageDone(nsresult aResult)
|
RemotePrintJobParent::PageDone(nsresult aResult)
|
||||||
{
|
{
|
||||||
|
MOZ_ASSERT(mIsDoingPrinting);
|
||||||
|
|
||||||
if (NS_FAILED(aResult)) {
|
if (NS_FAILED(aResult)) {
|
||||||
Unused << SendAbortPrint(aResult);
|
Unused << SendAbortPrint(aResult);
|
||||||
} else {
|
} else {
|
||||||
|
@ -181,6 +186,8 @@ RemotePrintJobParent::RecvFinalizePrint()
|
||||||
mPrintDeviceContext->UnregisterPageDoneCallback();
|
mPrintDeviceContext->UnregisterPageDoneCallback();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mIsDoingPrinting = false;
|
||||||
|
|
||||||
Unused << Send__delete__(this);
|
Unused << Send__delete__(this);
|
||||||
return IPC_OK();
|
return IPC_OK();
|
||||||
}
|
}
|
||||||
|
@ -193,6 +200,8 @@ RemotePrintJobParent::RecvAbortPrint(const nsresult& aRv)
|
||||||
mPrintDeviceContext->UnregisterPageDoneCallback();
|
mPrintDeviceContext->UnregisterPageDoneCallback();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mIsDoingPrinting = false;
|
||||||
|
|
||||||
Unused << Send__delete__(this);
|
Unused << Send__delete__(this);
|
||||||
return IPC_OK();
|
return IPC_OK();
|
||||||
}
|
}
|
||||||
|
@ -265,6 +274,8 @@ RemotePrintJobParent::ActorDestroy(ActorDestroyReason aWhy)
|
||||||
if (mPrintDeviceContext) {
|
if (mPrintDeviceContext) {
|
||||||
mPrintDeviceContext->UnregisterPageDoneCallback();
|
mPrintDeviceContext->UnregisterPageDoneCallback();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mIsDoingPrinting = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace layout
|
} // namespace layout
|
||||||
|
|
|
@ -87,6 +87,7 @@ private:
|
||||||
UniquePtr<PrintTranslator> mPrintTranslator;
|
UniquePtr<PrintTranslator> mPrintTranslator;
|
||||||
nsCOMArray<nsIWebProgressListener> mPrintProgressListeners;
|
nsCOMArray<nsIWebProgressListener> mPrintProgressListeners;
|
||||||
PRFileDescStream mCurrentPageStream;
|
PRFileDescStream mCurrentPageStream;
|
||||||
|
bool mIsDoingPrinting;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace layout
|
} // namespace layout
|
||||||
|
|
|
@ -2869,6 +2869,17 @@ nsPrintEngine::PrintPage(nsPrintObject* aPO,
|
||||||
return donePrinting;
|
return donePrinting;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
nsPrintEngine::PageDone(nsresult aResult)
|
||||||
|
{
|
||||||
|
MOZ_ASSERT(mIsDoingPrinting);
|
||||||
|
|
||||||
|
// mPagePrintTimer might be released during RemotePrintFinished, keep a
|
||||||
|
// reference here to make sure it lives long enough.
|
||||||
|
RefPtr<nsPagePrintTimer> timer = mPagePrintTimer;
|
||||||
|
timer->RemotePrintFinished();
|
||||||
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------
|
//-----------------------------------------------------------------
|
||||||
//-- Done: Printing Methods
|
//-- Done: Printing Methods
|
||||||
//-----------------------------------------------------------------
|
//-----------------------------------------------------------------
|
||||||
|
|
Загрузка…
Ссылка в новой задаче