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