diff --git a/layout/base/tests/chrome/chrome.ini b/layout/base/tests/chrome/chrome.ini
index 013373a2c4de..e52dd16bcade 100644
--- a/layout/base/tests/chrome/chrome.ini
+++ b/layout/base/tests/chrome/chrome.ini
@@ -72,7 +72,6 @@ skip-if = (verify && (os == 'win'))
[test_scrolling_repaints.html]
[test_will_change.html]
skip-if = webrender
-[test_get_printer_paper_sizes.html]
[test_getClientRectsAndTexts.html]
[test_css_visibility_propagation.xhtml]
support-files =
diff --git a/layout/base/tests/chrome/test_get_printer_paper_sizes.html b/layout/base/tests/chrome/test_get_printer_paper_sizes.html
deleted file mode 100644
index 75c578de835b..000000000000
--- a/layout/base/tests/chrome/test_get_printer_paper_sizes.html
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/widget/cocoa/nsDeviceContextSpecX.mm b/widget/cocoa/nsDeviceContextSpecX.mm
index 5fda269fbf97..4724fc72b26b 100644
--- a/widget/cocoa/nsDeviceContextSpecX.mm
+++ b/widget/cocoa/nsDeviceContextSpecX.mm
@@ -22,7 +22,6 @@
#include "nsCRT.h"
#include "nsDirectoryServiceDefs.h"
#include "nsILocalFileMac.h"
-#include "nsPaper.h"
#include "nsPrinter.h"
#include "nsPrintSettingsX.h"
#include "nsQueryObject.h"
@@ -42,65 +41,6 @@ using mozilla::gfx::SurfaceFormat;
static LazyLogModule sDeviceContextSpecXLog("DeviceContextSpecX");
-/**
- * Retrieves the list of available paper options for a given printer name.
- */
-static nsresult FillPaperListForPrinter(PMPrinter aPrinter,
- nsTArray>& aPaperList) {
- NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT;
-
- CFArrayRef pmPaperList;
- aPaperList.ClearAndRetainStorage();
- OSStatus status = PMPrinterGetPaperList(aPrinter, &pmPaperList);
- if (status != noErr || !pmPaperList) {
- return NS_ERROR_UNEXPECTED;
- }
-
- CFIndex paperCount = CFArrayGetCount(pmPaperList);
- aPaperList.SetCapacity(paperCount);
-
- for (auto i = 0; i < paperCount; ++i) {
- PMPaper pmPaper =
- static_cast(const_cast(CFArrayGetValueAtIndex(pmPaperList, i)));
-
- // The units for width and height are points.
- double width = 0.0;
- double height = 0.0;
- CFStringRef pmPaperName;
- if (PMPaperGetWidth(pmPaper, &width) != noErr || PMPaperGetHeight(pmPaper, &height) != noErr ||
- PMPaperCreateLocalizedName(pmPaper, aPrinter, &pmPaperName) != noErr) {
- return NS_ERROR_UNEXPECTED;
- }
-
- nsAutoString name;
- nsCocoaUtils::GetStringForNSString(static_cast(pmPaperName), name);
-
- aPaperList.AppendElement(new nsPaper(name, width, height));
- }
-
- return NS_OK;
-
- NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT;
-}
-
-nsresult CreatePrinter(PMPrinter aPMPrinter, nsIPrinter** aPrinter) {
- NS_ENSURE_ARG_POINTER(aPrinter);
- *aPrinter = nullptr;
-
- nsAutoString printerName;
- NSString* name = static_cast(PMPrinterGetName(aPMPrinter));
- nsCocoaUtils::GetStringForNSString(name, printerName);
-
- nsTArray> paperList;
- nsresult rv = FillPaperListForPrinter(aPMPrinter, paperList);
- NS_ENSURE_SUCCESS(rv, rv);
-
- *aPrinter = new nsPrinter(printerName, paperList);
- NS_ADDREF(*aPrinter);
-
- return NS_OK;
-}
-
//----------------------------------------------------------------------
// nsPrinterListX
@@ -128,17 +68,13 @@ nsPrinterListX::GetPrinters(nsTArray>& aPrinters) {
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT;
aPrinters.Clear();
- CFArrayRef pmPrinterList;
- OSStatus status = PMServerCreatePrinterList(kPMServerLocal, &pmPrinterList);
- NS_ENSURE_TRUE(status == noErr && pmPrinterList, NS_ERROR_GFX_PRINTER_NO_PRINTER_AVAILABLE);
-
- const CFIndex printerCount = CFArrayGetCount(pmPrinterList);
- for (auto i = 0; i < printerCount; ++i) {
- PMPrinter pmPrinter =
- static_cast(const_cast(CFArrayGetValueAtIndex(pmPrinterList, i)));
- RefPtr printer;
- nsresult rv = CreatePrinter(pmPrinter, getter_AddRefs(printer));
- NS_ENSURE_SUCCESS(rv, rv);
+ NSArray* printerNames = [NSPrinter printerNames];
+ size_t printerCount = [printerNames count];
+ for (size_t i = 0; i < printerCount; ++i) {
+ NSString* name = [printerNames objectAtIndex:i];
+ nsAutoString printerName;
+ nsCocoaUtils::GetStringForNSString(name, printerName);
+ RefPtr printer = new nsPrinter(printerName);
aPrinters.AppendElement(std::move(printer));
}
diff --git a/widget/gtk/nsDeviceContextSpecG.cpp b/widget/gtk/nsDeviceContextSpecG.cpp
index 0124945a3588..d4f0f8288998 100644
--- a/widget/gtk/nsDeviceContextSpecG.cpp
+++ b/widget/gtk/nsDeviceContextSpecG.cpp
@@ -19,7 +19,6 @@
#include "nsReadableUtils.h"
#include "nsThreadUtils.h"
-#include "nsPaper.h"
#include "nsPrinter.h"
#include "nsPSPrinters.h"
@@ -364,8 +363,8 @@ nsPrinterListGTK::GetPrinters(nsTArray>& aPrinters) {
uint32_t numPrinters = GlobalPrinters::GetInstance()->GetNumPrinters();
for (uint32_t i = 0; i < numPrinters; ++i) {
nsString* name = GlobalPrinters::GetInstance()->GetStringAt(i);
- nsTArray> paperList;
- aPrinters.AppendElement(new nsPrinter(*name, paperList));
+ RefPtr printer = new nsPrinter(*name);
+ aPrinters.AppendElement(std::move(printer));
}
GlobalPrinters::GetInstance()->FreeGlobalPrinters();
diff --git a/widget/moz.build b/widget/moz.build
index ee9d727bfcce..f49f1530ffb5 100644
--- a/widget/moz.build
+++ b/widget/moz.build
@@ -111,7 +111,6 @@ XPIDL_SOURCES += [
'nsIGfxInfoDebug.idl',
'nsIIdleService.idl',
'nsIIdleServiceInternal.idl',
- 'nsIPaper.idl',
'nsIPrinter.idl',
'nsIPrinterList.idl',
'nsIPrintSession.idl',
@@ -144,7 +143,6 @@ EXPORTS += [
'nsIRollupListener.h',
'nsIWidget.h',
'nsIWidgetListener.h',
- 'nsPaper.h',
'nsPrinter.h',
'nsWidgetInitData.h',
'nsWidgetsCID.h',
@@ -208,7 +206,6 @@ UNIFIED_SOURCES += [
'nsIdleService.cpp',
'nsIWidgetListener.cpp',
'nsNativeBasicTheme.cpp',
- 'nsPaper.cpp',
'nsPrimitiveHelpers.cpp',
'nsPrinter.cpp',
'nsPrintSettingsImpl.cpp',
diff --git a/widget/nsIPaper.idl b/widget/nsIPaper.idl
deleted file mode 100644
index c87d78acc395..000000000000
--- a/widget/nsIPaper.idl
+++ /dev/null
@@ -1,25 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsISupports.idl"
-
-[scriptable, uuid(a4dd9675-6311-45a9-a547-44e0127304a6)]
-interface nsIPaper : nsISupports
-{
- /**
- * The name of the paper.
- */
- readonly attribute AString name;
-
- /**
- * The width of the paper in points.
- */
- readonly attribute double width;
-
- /**
- * The height of the paper in points.
- */
- readonly attribute double height;
-};
diff --git a/widget/nsIPrinter.idl b/widget/nsIPrinter.idl
index 6c1176a26a2e..db5662695c13 100644
--- a/widget/nsIPrinter.idl
+++ b/widget/nsIPrinter.idl
@@ -3,7 +3,6 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-#include "nsIPaper.idl"
#include "nsISupports.idl"
[scriptable, uuid(d2dde9bb-df86-469c-bfcc-fd95a44b1db8)]
@@ -13,9 +12,4 @@ interface nsIPrinter : nsISupports
* The name of the printer.
*/
readonly attribute AString name;
-
- /**
- * The list of available paper sizes.
- */
- readonly attribute Array paperList;
};
diff --git a/widget/nsPaper.cpp b/widget/nsPaper.cpp
deleted file mode 100644
index a63845ce3d71..000000000000
--- a/widget/nsPaper.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsPaper.h"
-
-NS_IMPL_ISUPPORTS(nsPaper, nsIPaper);
-
-NS_IMETHODIMP
-nsPaper::GetName(nsAString& aName) {
- aName = mName;
- return NS_OK;
-}
-
-NS_IMETHODIMP
-nsPaper::GetWidth(double* aWidth) {
- NS_ENSURE_ARG_POINTER(aWidth);
- *aWidth = mWidth;
- return NS_OK;
-}
-
-NS_IMETHODIMP
-nsPaper::GetHeight(double* aHeight) {
- NS_ENSURE_ARG_POINTER(aHeight);
- *aHeight = mHeight;
- return NS_OK;
-}
diff --git a/widget/nsPaper.h b/widget/nsPaper.h
deleted file mode 100644
index 8ace2588ad0a..000000000000
--- a/widget/nsPaper.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef nsPaper_h__
-#define nsPaper_h__
-
-#include "nsIPaper.h"
-#include "nsISupportsImpl.h"
-#include "nsString.h"
-
-class nsPaper final : public nsIPaper {
- public:
- NS_DECL_ISUPPORTS
- NS_DECL_NSIPAPER
- nsPaper() = delete;
- nsPaper(const nsAString& aName, double aWidth, double aHeight)
- : mName(aName), mWidth(aWidth), mHeight(aHeight) {}
-
- private:
- ~nsPaper() = default;
-
- nsString mName;
- double mWidth;
- double mHeight;
-};
-
-#endif /* nsPaper_h__ */
diff --git a/widget/nsPrinter.cpp b/widget/nsPrinter.cpp
index 3a786520f839..27cd470fed47 100644
--- a/widget/nsPrinter.cpp
+++ b/widget/nsPrinter.cpp
@@ -5,10 +5,6 @@
#include "nsPrinter.h"
-nsPrinter::nsPrinter(const nsAString& aName,
- const nsTArray>& aPaperList)
- : mName(aName), mPaperList(aPaperList.Clone()) {}
-
NS_IMPL_ISUPPORTS(nsPrinter, nsIPrinter);
NS_IMETHODIMP
@@ -16,9 +12,3 @@ nsPrinter::GetName(nsAString& aName) {
aName = mName;
return NS_OK;
}
-
-NS_IMETHODIMP
-nsPrinter::GetPaperList(nsTArray>& aPaperList) {
- aPaperList.Assign(mPaperList);
- return NS_OK;
-}
diff --git a/widget/nsPrinter.h b/widget/nsPrinter.h
index c98130a4abc4..61133d9d86e4 100644
--- a/widget/nsPrinter.h
+++ b/widget/nsPrinter.h
@@ -6,24 +6,19 @@
#ifndef nsPrinter_h__
#define nsPrinter_h__
-#include "nsIPaper.h"
#include "nsIPrinter.h"
#include "nsISupportsImpl.h"
-#include "nsString.h"
class nsPrinter final : public nsIPrinter {
public:
NS_DECL_ISUPPORTS
NS_DECL_NSIPRINTER
nsPrinter() = delete;
- nsPrinter(const nsAString& aName,
- const nsTArray>& aPaperList);
+ explicit nsPrinter(nsAString& aName) : mName(aName) {}
private:
- ~nsPrinter() = default;
-
nsString mName;
- nsTArray> mPaperList;
+ ~nsPrinter() = default;
};
#endif /* nsPrinter_h__ */
diff --git a/widget/windows/nsDeviceContextSpecWin.cpp b/widget/windows/nsDeviceContextSpecWin.cpp
index 8ac31d012b00..a2fddff5f0d4 100644
--- a/widget/windows/nsDeviceContextSpecWin.cpp
+++ b/widget/windows/nsDeviceContextSpecWin.cpp
@@ -21,7 +21,6 @@
#include "nsTArray.h"
#include "nsIPrintSettingsWin.h"
-#include "nsPaper.h"
#include "nsPrinter.h"
#include "nsReadableUtils.h"
#include "nsString.h"
@@ -512,10 +511,6 @@ nsresult nsDeviceContextSpecWin::GetDataFromPrinter(const nsAString& aName,
// Printer List
//***********************************************************
-nsPrinterListWin::~nsPrinterListWin() {
- GlobalPrinters::GetInstance()->FreeGlobalPrinters();
-}
-
NS_IMPL_ISUPPORTS(nsPrinterListWin, nsIPrinterList)
NS_IMETHODIMP
@@ -600,14 +595,17 @@ nsPrinterListWin::GetPrinters(nsTArray>& aPrinters) {
}
uint32_t numPrinters = GlobalPrinters::GetInstance()->GetNumPrinters();
+ nsTArray* printers = new nsTArray(numPrinters);
+ if (!printers) return NS_ERROR_OUT_OF_MEMORY;
+
for (uint32_t printerInx = 0; printerInx < numPrinters; ++printerInx) {
+ LPWSTR name = GlobalPrinters::GetInstance()->GetItemFromList(printerInx);
// wchar_t (used in LPWSTR) is 16 bits on Windows.
// https://docs.microsoft.com/en-us/cpp/cpp/char-wchar-t-char16-t-char32-t?view=vs-2019
- LPWSTR name = GlobalPrinters::GetInstance()->GetItemFromList(printerInx);
nsAutoString printerName;
printerName.Assign(name);
- nsTArray> paperList;
- aPrinters.AppendElement(new nsPrinter(printerName, paperList));
+ RefPtr printer = new nsPrinter(printerName);
+ aPrinters.AppendElement(std::move(printer));
}
return NS_OK;
diff --git a/widget/windows/nsDeviceContextSpecWin.h b/widget/windows/nsDeviceContextSpecWin.h
index 634a5c17c9c4..5c61816a90f6 100644
--- a/widget/windows/nsDeviceContextSpecWin.h
+++ b/widget/windows/nsDeviceContextSpecWin.h
@@ -88,6 +88,9 @@ class nsPrinterListWin final : public nsIPrinterList {
NS_DECL_ISUPPORTS
NS_DECL_NSIPRINTERLIST
nsPrinterListWin() = default;
+
+ private:
+ ~nsPrinterListWin() = default;
};
#endif