Bug 1761357 [wpt PR 33355] - Fix #33204: Move Safari stable runs to Big Sur, a=testonly
[gecko.git] / widget / cocoa / nsPrintSettingsServiceX.mm
blob4be66dddeb7eaff76f895b6b6144ce235fb46d8f
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"
8 #include "nsCOMPtr.h"
9 #include "nsQueryObject.h"
10 #include "nsPrintSettingsX.h"
11 #include "nsCocoaUtils.h"
13 using namespace mozilla::embedding;
15 NS_IMETHODIMP
16 nsPrintSettingsServiceX::SerializeToPrintData(nsIPrintSettings* aSettings, PrintData* data) {
17   nsresult rv = nsPrintSettingsService::SerializeToPrintData(aSettings, data);
18   if (NS_WARN_IF(NS_FAILED(rv))) {
19     return rv;
20   }
22   RefPtr<nsPrintSettingsX> settingsX(do_QueryObject(aSettings));
23   if (NS_WARN_IF(!settingsX)) {
24     return NS_ERROR_FAILURE;
25   }
27   settingsX->GetDisposition(data->disposition());
28   settingsX->GetDestination(&data->destination());
30   return NS_OK;
33 NS_IMETHODIMP
34 nsPrintSettingsServiceX::DeserializeToPrintSettings(const PrintData& data,
35                                                     nsIPrintSettings* settings) {
36   nsresult rv = nsPrintSettingsService::DeserializeToPrintSettings(data, settings);
37   if (NS_WARN_IF(NS_FAILED(rv))) {
38     return rv;
39   }
41   RefPtr<nsPrintSettingsX> settingsX(do_QueryObject(settings));
42   if (NS_WARN_IF(!settingsX)) {
43     return NS_ERROR_FAILURE;
44   }
46   settingsX->SetDisposition(data.disposition());
47   settingsX->SetDestination(data.destination());
49   return NS_OK;
52 nsresult nsPrintSettingsServiceX::_CreatePrintSettings(nsIPrintSettings** _retval) {
53   nsresult rv;
54   *_retval = nullptr;
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();
61   if (NS_FAILED(rv)) {
62     NS_RELEASE(*_retval);
63     return rv;
64   }
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);
72   return rv;