Bug 1270447 Part 1: Use the RemotePrintJob's print settings in the parent when available. r=jimm

MozReview-Commit-ID: 4PnVf4pzHWr

--HG--
extra : rebase_source : 44f19893b27a2f2987cbd7f38d454f5d31aba5c3
This commit is contained in:
Bob Owen 2016-05-29 19:53:24 +01:00
parent 8d58a3b347
commit 9cf07da276
3 changed files with 23 additions and 6 deletions

View File

@ -98,9 +98,18 @@ PrintingParent::ShowPrintDialog(PBrowserParent* aParent,
// nsIWebBrowserPrint to keep the dialogs happy.
nsCOMPtr<nsIWebBrowserPrint> wbp = new MockWebBrowserPrint(aData);
// Use the existing RemotePrintJob and its settings, if we have one, to make
// sure they stay current.
RemotePrintJobParent* remotePrintJob =
static_cast<RemotePrintJobParent*>(aData.remotePrintJobParent());
nsCOMPtr<nsIPrintSettings> settings;
nsresult rv = mPrintSettingsSvc->GetNewPrintSettings(getter_AddRefs(settings));
NS_ENSURE_SUCCESS(rv, rv);
nsresult rv;
if (remotePrintJob) {
settings = remotePrintJob->GetPrintSettings();
} else {
rv = mPrintSettingsSvc->GetNewPrintSettings(getter_AddRefs(settings));
NS_ENSURE_SUCCESS(rv, rv);
}
rv = mPrintSettingsSvc->DeserializeToPrintSettings(aData, settings);
NS_ENSURE_SUCCESS(rv, rv);
@ -108,10 +117,6 @@ PrintingParent::ShowPrintDialog(PBrowserParent* aParent,
rv = pps->ShowPrintDialog(parentWin, wbp, settings);
NS_ENSURE_SUCCESS(rv, rv);
// Serialize back to aResult. Use the existing RemotePrintJob if we have one
// otherwise SerializeAndEnsureRemotePrintJob() will create a new one.
RemotePrintJobParent* remotePrintJob =
static_cast<RemotePrintJobParent*>(aData.remotePrintJobParent());
rv = SerializeAndEnsureRemotePrintJob(settings, nullptr, remotePrintJob,
aResult);

View File

@ -200,6 +200,13 @@ RemotePrintJobParent::RegisterListener(nsIWebProgressListener* aListener)
mPrintProgressListeners.AppendElement(aListener);
}
already_AddRefed<nsIPrintSettings>
RemotePrintJobParent::GetPrintSettings()
{
nsCOMPtr<nsIPrintSettings> printSettings = mPrintSettings;
return printSettings.forget();
}
RemotePrintJobParent::~RemotePrintJobParent()
{
MOZ_COUNT_DTOR(RemotePrintJobParent);

View File

@ -57,6 +57,11 @@ public:
*/
void RegisterListener(nsIWebProgressListener* aListener);
/**
* @return the print settings for this remote print job.
*/
already_AddRefed<nsIPrintSettings> GetPrintSettings();
private:
~RemotePrintJobParent() final;