1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 #include "nsPrintSettingsServiceX.h"
9 #include "nsQueryObject.h"
10 #include "nsPrintSettingsX.h"
11 #include "nsCocoaUtils.h"
13 using namespace mozilla::embedding;
16 nsPrintSettingsServiceX::SerializeToPrintData(nsIPrintSettings* aSettings, PrintData* data) {
17 nsresult rv = nsPrintSettingsService::SerializeToPrintData(aSettings, data);
18 if (NS_WARN_IF(NS_FAILED(rv))) {
22 RefPtr<nsPrintSettingsX> settingsX(do_QueryObject(aSettings));
23 if (NS_WARN_IF(!settingsX)) {
24 return NS_ERROR_FAILURE;
27 settingsX->GetDisposition(data->disposition());
28 settingsX->GetDestination(&data->destination());
34 nsPrintSettingsServiceX::DeserializeToPrintSettings(const PrintData& data,
35 nsIPrintSettings* settings) {
36 nsresult rv = nsPrintSettingsService::DeserializeToPrintSettings(data, settings);
37 if (NS_WARN_IF(NS_FAILED(rv))) {
41 RefPtr<nsPrintSettingsX> settingsX(do_QueryObject(settings));
42 if (NS_WARN_IF(!settingsX)) {
43 return NS_ERROR_FAILURE;
46 settingsX->SetDisposition(data.disposition());
47 settingsX->SetDestination(data.destination());
52 nsresult nsPrintSettingsServiceX::_CreatePrintSettings(nsIPrintSettings** _retval) {
56 nsPrintSettingsX* printSettings = new nsPrintSettingsX; // does not initially ref count
57 NS_ENSURE_TRUE(printSettings, NS_ERROR_OUT_OF_MEMORY);
58 NS_ADDREF(*_retval = printSettings);
60 rv = printSettings->Init();
66 auto globalPrintSettings = nsIPrintSettings::kGlobalSettings;
68 // XXX Why is Mac special? Why are we copying global print settings here?
69 // nsPrintSettingsService::InitPrintSettingsFromPrefs already gets the few
70 // global defaults that we want, doesn't it?
71 InitPrintSettingsFromPrefs(*_retval, false, globalPrintSettings);