diff --git a/dom/base/nsGlobalWindow.cpp b/dom/base/nsGlobalWindow.cpp index 020417ba4e88..74c0045bb967 100644 --- a/dom/base/nsGlobalWindow.cpp +++ b/dom/base/nsGlobalWindow.cpp @@ -8156,7 +8156,7 @@ nsGlobalWindow::PrintOuter(ErrorResult& aError) printSettingsService->GetGlobalPrintSettings(getter_AddRefs(printSettings)); nsAutoString printerName; - printSettings->GetPrinterName(getter_Copies(printerName)); + printSettings->GetPrinterName(printerName); bool shouldGetDefaultPrinterName = printerName.IsEmpty(); #ifdef MOZ_X11 @@ -8170,10 +8170,10 @@ nsGlobalWindow::PrintOuter(ErrorResult& aError) } #endif if (shouldGetDefaultPrinterName) { - printSettingsService->GetDefaultPrinterName(getter_Copies(printerName)); - printSettings->SetPrinterName(printerName.get()); + printSettingsService->GetDefaultPrinterName(printerName); + printSettings->SetPrinterName(printerName); } - printSettingsService->InitPrintSettingsFromPrinter(printerName.get(), + printSettingsService->InitPrintSettingsFromPrinter(printerName, printSettings); printSettingsService->InitPrintSettingsFromPrefs(printSettings, true, diff --git a/layout/generic/nsPageFrame.cpp b/layout/generic/nsPageFrame.cpp index a6b7df8c5403..14ef1e874c19 100644 --- a/layout/generic/nsPageFrame.cpp +++ b/layout/generic/nsPageFrame.cpp @@ -642,17 +642,17 @@ nsPageFrame::PaintHeaderFooter(gfxContext& aRenderingContext, // print document headers and footers nsString headerLeft, headerCenter, headerRight; - mPD->mPrintSettings->GetHeaderStrLeft(getter_Copies(headerLeft)); - mPD->mPrintSettings->GetHeaderStrCenter(getter_Copies(headerCenter)); - mPD->mPrintSettings->GetHeaderStrRight(getter_Copies(headerRight)); + mPD->mPrintSettings->GetHeaderStrLeft(headerLeft); + mPD->mPrintSettings->GetHeaderStrCenter(headerCenter); + mPD->mPrintSettings->GetHeaderStrRight(headerRight); DrawHeaderFooter(aRenderingContext, *fontMet, eHeader, headerLeft, headerCenter, headerRight, rect, ascent, visibleHeight); nsString footerLeft, footerCenter, footerRight; - mPD->mPrintSettings->GetFooterStrLeft(getter_Copies(footerLeft)); - mPD->mPrintSettings->GetFooterStrCenter(getter_Copies(footerCenter)); - mPD->mPrintSettings->GetFooterStrRight(getter_Copies(footerRight)); + mPD->mPrintSettings->GetFooterStrLeft(footerLeft); + mPD->mPrintSettings->GetFooterStrCenter(footerCenter); + mPD->mPrintSettings->GetFooterStrRight(footerRight); DrawHeaderFooter(aRenderingContext, *fontMet, eFooter, footerLeft, footerCenter, footerRight, rect, ascent, visibleHeight); diff --git a/layout/printing/nsPrintEngine.cpp b/layout/printing/nsPrintEngine.cpp index 860726d777e5..fcf0f9dc8c6f 100644 --- a/layout/printing/nsPrintEngine.cpp +++ b/layout/printing/nsPrintEngine.cpp @@ -1011,7 +1011,7 @@ nsPrintEngine::CheckForPrinters(nsIPrintSettings* aPrintSettings) // See if aPrintSettings already has a printer nsString printerName; - nsresult rv = aPrintSettings->GetPrinterName(getter_Copies(printerName)); + nsresult rv = aPrintSettings->GetPrinterName(printerName); if (NS_SUCCEEDED(rv) && !printerName.IsEmpty()) { return NS_OK; } @@ -1021,9 +1021,9 @@ nsPrintEngine::CheckForPrinters(nsIPrintSettings* aPrintSettings) do_GetService(sPrintSettingsServiceContractID, &rv); NS_ENSURE_SUCCESS(rv, rv); - rv = printSettingsService->GetDefaultPrinterName(getter_Copies(printerName)); + rv = printSettingsService->GetDefaultPrinterName(printerName); if (NS_SUCCEEDED(rv) && !printerName.IsEmpty()) { - rv = aPrintSettings->SetPrinterName(printerName.get()); + rv = aPrintSettings->SetPrinterName(printerName); } return rv; #endif @@ -1455,21 +1455,8 @@ nsPrintEngine::GetDisplayTitleAndURL(const UniquePtr& aPO, // First check to see if the PrintSettings has defined an alternate title // and use that if it did if (mPrt->mPrintSettings) { - char16_t * docTitleStrPS = nullptr; - char16_t * docURLStrPS = nullptr; - mPrt->mPrintSettings->GetTitle(&docTitleStrPS); - mPrt->mPrintSettings->GetDocURL(&docURLStrPS); - - if (docTitleStrPS) { - aTitle = docTitleStrPS; - } - - if (docURLStrPS) { - aURLStr = docURLStrPS; - } - - free(docTitleStrPS); - free(docURLStrPS); + mPrt->mPrintSettings->GetTitle(aTitle); + mPrt->mPrintSettings->GetDocURL(aURLStr); } nsAutoString docTitle; @@ -1828,7 +1815,7 @@ nsPrintEngine::SetupToPrintContent() printData->mPrintSettings->GetPrintToFile(&isPrintToFile); if (isPrintToFile) { // On some platforms The BeginDocument needs to know the name of the file. - printData->mPrintSettings->GetToFileName(getter_Copies(fileNameStr)); + printData->mPrintSettings->GetToFileName(fileNameStr); } nsAutoString docTitleStr; diff --git a/toolkit/components/printingui/ipc/PrintingParent.cpp b/toolkit/components/printingui/ipc/PrintingParent.cpp index 309702af5dde..b44fea5cc036 100644 --- a/toolkit/components/printingui/ipc/PrintingParent.cpp +++ b/toolkit/components/printingui/ipc/PrintingParent.cpp @@ -137,17 +137,17 @@ PrintingParent::ShowPrintDialog(PBrowserParent* aParent, NS_ENSURE_SUCCESS(rv, rv); nsString printerName; - settings->GetPrinterName(getter_Copies(printerName)); + settings->GetPrinterName(printerName); #ifdef MOZ_X11 // Requesting the default printer name on Linux has been removed in the child, // because it was causing a sandbox violation (see Bug 1329216). // If no printer name is set at this point, use the print settings service // to get the default printer name. if (printerName.IsEmpty()) { - mPrintSettingsSvc->GetDefaultPrinterName(getter_Copies(printerName)); - settings->SetPrinterName(printerName.get()); + mPrintSettingsSvc->GetDefaultPrinterName(printerName); + settings->SetPrinterName(printerName); } - mPrintSettingsSvc->InitPrintSettingsFromPrinter(printerName.get(), settings); + mPrintSettingsSvc->InitPrintSettingsFromPrinter(printerName, settings); #endif // If this is for print preview or we are printing silently then we just need @@ -155,8 +155,7 @@ PrintingParent::ShowPrintDialog(PBrowserParent* aParent, if (isPrintPreview || printSilently || Preferences::GetBool("print.always_print_silent", printSilently)) { settings->SetIsInitializedFromPrinter(false); - mPrintSettingsSvc->InitPrintSettingsFromPrinter(printerName.get(), - settings); + mPrintSettingsSvc->InitPrintSettingsFromPrinter(printerName, settings); } else { rv = pps->ShowPrintDialog(parentWin, wbp, settings); NS_ENSURE_SUCCESS(rv, rv); diff --git a/toolkit/components/printingui/win/nsPrintDialogUtil.cpp b/toolkit/components/printingui/win/nsPrintDialogUtil.cpp index 2a95a5140184..1bd8a2383053 100644 --- a/toolkit/components/printingui/win/nsPrintDialogUtil.cpp +++ b/toolkit/components/printingui/win/nsPrintDialogUtil.cpp @@ -535,7 +535,7 @@ static void GetDefaultPrinterNameFromGlobalPrinters(nsAString &printerName) { nsCOMPtr prtEnum = do_GetService("@mozilla.org/gfx/printerenumerator;1"); if (prtEnum) { - prtEnum->GetDefaultPrinterName(getter_Copies(printerName)); + prtEnum->GetDefaultPrinterName(printerName); } } @@ -570,7 +570,7 @@ ShowNativePrintDialog(HWND aHWnd, // Get the Print Name to be used nsString printerName; - aPrintSettings->GetPrinterName(getter_Copies(printerName)); + aPrintSettings->GetPrinterName(printerName); // If there is no name then use the default printer if (printerName.IsEmpty()) { @@ -696,12 +696,12 @@ ShowNativePrintDialog(HWND aHWnd, if (prntdlg.Flags & PD_PRINTTOFILE) { char16ptr_t fileName = &(((wchar_t *)devnames)[devnames->wOutputOffset]); NS_ASSERTION(wcscmp(fileName, L"FILE:") == 0, "FileName must be `FILE:`"); - aPrintSettings->SetToFileName(fileName); + aPrintSettings->SetToFileName(nsDependentString(fileName)); aPrintSettings->SetPrintToFile(true); } else { // clear "print to file" info aPrintSettings->SetPrintToFile(false); - aPrintSettings->SetToFileName(nullptr); + aPrintSettings->SetToFileName(EmptyString()); } nsCOMPtr psWin(do_QueryInterface(aPrintSettings)); @@ -710,15 +710,15 @@ ShowNativePrintDialog(HWND aHWnd, } // Setup local Data members - psWin->SetDeviceName(device); - psWin->SetDriverName(driver); + psWin->SetDeviceName(nsDependentString(device)); + psWin->SetDriverName(nsDependentString(driver)); #if defined(DEBUG_rods) || defined(DEBUG_dcone) wprintf(L"printer: driver %s, device %s flags: %d\n", driver, device, prntdlg.Flags); #endif // fill the print options with the info from the dialog - aPrintSettings->SetPrinterName(device); + aPrintSettings->SetPrinterName(nsDependentString(device)); if (prntdlg.Flags & PD_SELECTION) { aPrintSettings->SetPrintRange(nsIPrintSettings::kRangeSelection); diff --git a/widget/android/nsDeviceContextAndroid.cpp b/widget/android/nsDeviceContextAndroid.cpp index 6a1542875551..43d4e8101fb3 100644 --- a/widget/android/nsDeviceContextAndroid.cpp +++ b/widget/android/nsDeviceContextAndroid.cpp @@ -62,7 +62,7 @@ nsDeviceContextSpecAndroid::EndDocument() { nsString targetPath; nsCOMPtr destFile; - mPrintSettings->GetToFileName(getter_Copies(targetPath)); + mPrintSettings->GetToFileName(targetPath); nsresult rv = NS_NewLocalFile(targetPath, false, getter_AddRefs(destFile)); NS_ENSURE_SUCCESS(rv, rv); diff --git a/widget/android/nsPrintOptionsAndroid.cpp b/widget/android/nsPrintOptionsAndroid.cpp index 03afba827152..9c5ea485919b 100644 --- a/widget/android/nsPrintOptionsAndroid.cpp +++ b/widget/android/nsPrintOptionsAndroid.cpp @@ -12,8 +12,7 @@ public: { // The aim here is to set up the objects enough that silent printing works SetOutputFormat(nsIPrintSettings::kOutputFormatPDF); - SetPrinterName(u"PDF printer"); - + SetPrinterName(NS_LITERAL_STRING("PDF printer")); } }; diff --git a/widget/cocoa/nsPrintDialogX.mm b/widget/cocoa/nsPrintDialogX.mm index fd648f809ea8..6de96a480129 100644 --- a/widget/cocoa/nsPrintDialogX.mm +++ b/widget/cocoa/nsPrintDialogX.mm @@ -515,32 +515,32 @@ static const char sHeaderFooterTags[][4] = {"", "&T", "&U", "&D", "&P", "&PT"}; // Lists nsString sel; - mSettings->GetHeaderStrLeft(getter_Copies(sel)); + mSettings->GetHeaderStrLeft(sel); mHeaderLeftList = [self headerFooterItemListWithFrame:NSMakeRect(156, 44, 100, 22) selectedItem:sel]; [self addSubview:mHeaderLeftList]; - mSettings->GetHeaderStrCenter(getter_Copies(sel)); + mSettings->GetHeaderStrCenter(sel); mHeaderCenterList = [self headerFooterItemListWithFrame:NSMakeRect(256, 44, 100, 22) selectedItem:sel]; [self addSubview:mHeaderCenterList]; - mSettings->GetHeaderStrRight(getter_Copies(sel)); + mSettings->GetHeaderStrRight(sel); mHeaderRightList = [self headerFooterItemListWithFrame:NSMakeRect(356, 44, 100, 22) selectedItem:sel]; [self addSubview:mHeaderRightList]; - mSettings->GetFooterStrLeft(getter_Copies(sel)); + mSettings->GetFooterStrLeft(sel); mFooterLeftList = [self headerFooterItemListWithFrame:NSMakeRect(156, 0, 100, 22) selectedItem:sel]; [self addSubview:mFooterLeftList]; - mSettings->GetFooterStrCenter(getter_Copies(sel)); + mSettings->GetFooterStrCenter(sel); mFooterCenterList = [self headerFooterItemListWithFrame:NSMakeRect(256, 0, 100, 22) selectedItem:sel]; [self addSubview:mFooterCenterList]; - mSettings->GetFooterStrRight(getter_Copies(sel)); + mSettings->GetFooterStrRight(sel); mFooterRightList = [self headerFooterItemListWithFrame:NSMakeRect(356, 0, 100, 22) selectedItem:sel]; [self addSubview:mFooterRightList]; @@ -570,22 +570,22 @@ static const char sHeaderFooterTags[][4] = {"", "&T", "&U", "&D", "&P", "&PT"}; { const char* headerFooterStr; headerFooterStr = [self headerFooterStringForList:mHeaderLeftList]; - mSettings->SetHeaderStrLeft(NS_ConvertUTF8toUTF16(headerFooterStr).get()); + mSettings->SetHeaderStrLeft(NS_ConvertUTF8toUTF16(headerFooterStr)); headerFooterStr = [self headerFooterStringForList:mHeaderCenterList]; - mSettings->SetHeaderStrCenter(NS_ConvertUTF8toUTF16(headerFooterStr).get()); + mSettings->SetHeaderStrCenter(NS_ConvertUTF8toUTF16(headerFooterStr)); headerFooterStr = [self headerFooterStringForList:mHeaderRightList]; - mSettings->SetHeaderStrRight(NS_ConvertUTF8toUTF16(headerFooterStr).get()); + mSettings->SetHeaderStrRight(NS_ConvertUTF8toUTF16(headerFooterStr)); headerFooterStr = [self headerFooterStringForList:mFooterLeftList]; - mSettings->SetFooterStrLeft(NS_ConvertUTF8toUTF16(headerFooterStr).get()); + mSettings->SetFooterStrLeft(NS_ConvertUTF8toUTF16(headerFooterStr)); headerFooterStr = [self headerFooterStringForList:mFooterCenterList]; - mSettings->SetFooterStrCenter(NS_ConvertUTF8toUTF16(headerFooterStr).get()); + mSettings->SetFooterStrCenter(NS_ConvertUTF8toUTF16(headerFooterStr)); headerFooterStr = [self headerFooterStringForList:mFooterRightList]; - mSettings->SetFooterStrRight(NS_ConvertUTF8toUTF16(headerFooterStr).get()); + mSettings->SetFooterStrRight(NS_ConvertUTF8toUTF16(headerFooterStr)); } // Summary diff --git a/widget/cocoa/nsPrintSettingsX.h b/widget/cocoa/nsPrintSettingsX.h index a0e2fae46ddd..5b45af83454f 100644 --- a/widget/cocoa/nsPrintSettingsX.h +++ b/widget/cocoa/nsPrintSettingsX.h @@ -68,7 +68,7 @@ public: NS_IMETHOD SetScaling(double aScaling) override; NS_IMETHOD GetScaling(double *aScaling) override; - NS_IMETHOD SetToFileName(const char16_t * aToFileName) override; + NS_IMETHOD SetToFileName(const nsAString& aToFileName) override; NS_IMETHOD GetOrientation(int32_t *aOrientation) override; NS_IMETHOD SetOrientation(int32_t aOrientation) override; diff --git a/widget/cocoa/nsPrintSettingsX.mm b/widget/cocoa/nsPrintSettingsX.mm index a30736dee987..8275efa9e84a 100644 --- a/widget/cocoa/nsPrintSettingsX.mm +++ b/widget/cocoa/nsPrintSettingsX.mm @@ -328,7 +328,7 @@ nsPrintSettingsX::GetScaling(double *aScaling) } NS_IMETHODIMP -nsPrintSettingsX::SetToFileName(const char16_t *aToFileName) +nsPrintSettingsX::SetToFileName(const nsAString& aToFileName) { NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT; @@ -341,10 +341,9 @@ nsPrintSettingsX::SetToFileName(const char16_t *aToFileName) NSMutableDictionary* printInfoDict = [mPrintInfo dictionary]; - if (aToFileName && aToFileName[0]) { + if (!aToFileName.IsEmpty()) { NSURL* jobSavingURL = - [NSURL fileURLWithPath: nsCocoaUtils::ToNSString( - nsDependentString(aToFileName))]; + [NSURL fileURLWithPath: nsCocoaUtils::ToNSString(aToFileName)]; if (jobSavingURL) { [printInfoDict setObject: NSPrintSaveJob forKey: NSPrintJobDisposition]; [printInfoDict setObject: jobSavingURL forKey: NSPrintJobSavingURL]; diff --git a/widget/gtk/nsDeviceContextSpecG.cpp b/widget/gtk/nsDeviceContextSpecG.cpp index 62f775e4c439..f0de247407f0 100644 --- a/widget/gtk/nsDeviceContextSpecG.cpp +++ b/widget/gtk/nsDeviceContextSpecG.cpp @@ -63,7 +63,7 @@ public: uint32_t GetNumPrinters() { return mGlobalPrinterList ? mGlobalPrinterList->Length() : 0; } nsString* GetStringAt(int32_t aInx) { return &mGlobalPrinterList->ElementAt(aInx); } - void GetDefaultPrinterName(char16_t **aDefaultPrinterName); + void GetDefaultPrinterName(nsAString& aDefaultPrinterName); protected: GlobalPrinters() {} @@ -246,7 +246,7 @@ gboolean nsDeviceContextSpecGTK::PrinterEnumerator(GtkPrinter *aPrinter, // Find the printer whose name matches the one inside the settings. nsString printerName; nsresult rv = - spec->mPrintSettings->GetPrinterName(getter_Copies(printerName)); + spec->mPrintSettings->GetPrinterName(printerName); if (NS_SUCCEEDED(rv) && !printerName.IsVoid()) { NS_ConvertUTF16toUTF8 requestedName(printerName); const char* currentName = gtk_printer_get_name(aPrinter); @@ -328,7 +328,7 @@ NS_IMETHODIMP nsDeviceContextSpecGTK::EndDocument() // Handle print-to-file ourselves for the benefit of embedders nsString targetPath; nsCOMPtr destFile; - mPrintSettings->GetToFileName(getter_Copies(targetPath)); + mPrintSettings->GetToFileName(targetPath); nsresult rv = NS_NewLocalFile(targetPath, false, getter_AddRefs(destFile)); NS_ENSURE_SUCCESS(rv, rv); @@ -388,18 +388,19 @@ NS_IMETHODIMP nsPrinterEnumeratorGTK::GetPrinterNameList(nsIStringEnumerator **a return NS_NewAdoptingStringEnumerator(aPrinterNameList, printers); } -NS_IMETHODIMP nsPrinterEnumeratorGTK::GetDefaultPrinterName(char16_t **aDefaultPrinterName) +NS_IMETHODIMP nsPrinterEnumeratorGTK::GetDefaultPrinterName(nsAString& aDefaultPrinterName) { DO_PR_DEBUG_LOG(("nsPrinterEnumeratorGTK::GetDefaultPrinterName()\n")); - NS_ENSURE_ARG_POINTER(aDefaultPrinterName); GlobalPrinters::GetInstance()->GetDefaultPrinterName(aDefaultPrinterName); - DO_PR_DEBUG_LOG(("GetDefaultPrinterName(): default printer='%s'.\n", NS_ConvertUTF16toUTF8(*aDefaultPrinterName).get())); + DO_PR_DEBUG_LOG(("GetDefaultPrinterName(): default printer='%s'.\n", NS_ConvertUTF16toUTF8(aDefaultPrinterName).get())); return NS_OK; } -NS_IMETHODIMP nsPrinterEnumeratorGTK::InitPrintSettingsFromPrinter(const char16_t *aPrinterName, nsIPrintSettings *aPrintSettings) +NS_IMETHODIMP +nsPrinterEnumeratorGTK::InitPrintSettingsFromPrinter(const nsAString& aPrinterName, + nsIPrintSettings *aPrintSettings) { DO_PR_DEBUG_LOG(("nsPrinterEnumeratorGTK::InitPrintSettingsFromPrinter()")); @@ -418,7 +419,7 @@ NS_IMETHODIMP nsPrinterEnumeratorGTK::InitPrintSettingsFromPrinter(const char16_ filename.AssignLiteral("mozilla.pdf"); DO_PR_DEBUG_LOG(("Setting default filename to '%s'\n", filename.get())); - aPrintSettings->SetToFileName(NS_ConvertUTF8toUTF16(filename).get()); + aPrintSettings->SetToFileName(NS_ConvertUTF8toUTF16(filename)); aPrintSettings->SetIsInitializedFromPrinter(true); @@ -470,9 +471,9 @@ void GlobalPrinters::FreeGlobalPrinters() } void -GlobalPrinters::GetDefaultPrinterName(char16_t **aDefaultPrinterName) +GlobalPrinters::GetDefaultPrinterName(nsAString& aDefaultPrinterName) { - *aDefaultPrinterName = nullptr; + aDefaultPrinterName.Truncate(); bool allocate = !GlobalPrinters::GetInstance()->PrintersAreAllocated(); @@ -487,7 +488,7 @@ GlobalPrinters::GetDefaultPrinterName(char16_t **aDefaultPrinterName) if (GlobalPrinters::GetInstance()->GetNumPrinters() == 0) return; - *aDefaultPrinterName = ToNewUnicode(*GlobalPrinters::GetInstance()->GetStringAt(0)); + aDefaultPrinterName = *GlobalPrinters::GetInstance()->GetStringAt(0); if (allocate) { GlobalPrinters::GetInstance()->FreeGlobalPrinters(); diff --git a/widget/gtk/nsPrintDialogGTK.cpp b/widget/gtk/nsPrintDialogGTK.cpp index 08b288c0642c..91c6c5861a12 100644 --- a/widget/gtk/nsPrintDialogGTK.cpp +++ b/widget/gtk/nsPrintDialogGTK.cpp @@ -277,9 +277,9 @@ nsPrintDialogWidgetGTK::nsPrintDialogWidgetGTK(nsPIDOMWindowOuter *aParent, GtkWidget* header_footer_table = gtk_table_new(3, 3, FALSE); // 3x3 table nsString header_footer_str[3]; - aSettings->GetHeaderStrLeft(getter_Copies(header_footer_str[0])); - aSettings->GetHeaderStrCenter(getter_Copies(header_footer_str[1])); - aSettings->GetHeaderStrRight(getter_Copies(header_footer_str[2])); + aSettings->GetHeaderStrLeft(header_footer_str[0]); + aSettings->GetHeaderStrCenter(header_footer_str[1]); + aSettings->GetHeaderStrRight(header_footer_str[2]); for (unsigned int i = 0; i < ArrayLength(header_dropdown); i++) { header_dropdown[i] = ConstructHeaderFooterDropdown(header_footer_str[i].get()); @@ -296,9 +296,9 @@ nsPrintDialogWidgetGTK::nsPrintDialogWidgetGTK(nsPIDOMWindowOuter *aParent, i, (i + 1), 1, 2, (GtkAttachOptions) 0, (GtkAttachOptions) 0, 2, 2); } - aSettings->GetFooterStrLeft(getter_Copies(header_footer_str[0])); - aSettings->GetFooterStrCenter(getter_Copies(header_footer_str[1])); - aSettings->GetFooterStrRight(getter_Copies(header_footer_str[2])); + aSettings->GetFooterStrLeft(header_footer_str[0]); + aSettings->GetFooterStrCenter(header_footer_str[1]); + aSettings->GetFooterStrRight(header_footer_str[2]); for (unsigned int i = 0; i < ArrayLength(footer_dropdown); i++) { footer_dropdown[i] = ConstructHeaderFooterDropdown(header_footer_str[i].get()); @@ -371,22 +371,22 @@ nsPrintDialogWidgetGTK::ExportHeaderFooter(nsIPrintSettings *aNS) { const char* header_footer_str; header_footer_str = OptionWidgetToString(header_dropdown[0]); - aNS->SetHeaderStrLeft(NS_ConvertUTF8toUTF16(header_footer_str).get()); + aNS->SetHeaderStrLeft(NS_ConvertUTF8toUTF16(header_footer_str)); header_footer_str = OptionWidgetToString(header_dropdown[1]); - aNS->SetHeaderStrCenter(NS_ConvertUTF8toUTF16(header_footer_str).get()); + aNS->SetHeaderStrCenter(NS_ConvertUTF8toUTF16(header_footer_str)); header_footer_str = OptionWidgetToString(header_dropdown[2]); - aNS->SetHeaderStrRight(NS_ConvertUTF8toUTF16(header_footer_str).get()); + aNS->SetHeaderStrRight(NS_ConvertUTF8toUTF16(header_footer_str)); header_footer_str = OptionWidgetToString(footer_dropdown[0]); - aNS->SetFooterStrLeft(NS_ConvertUTF8toUTF16(header_footer_str).get()); + aNS->SetFooterStrLeft(NS_ConvertUTF8toUTF16(header_footer_str)); header_footer_str = OptionWidgetToString(footer_dropdown[1]); - aNS->SetFooterStrCenter(NS_ConvertUTF8toUTF16(header_footer_str).get()); + aNS->SetFooterStrCenter(NS_ConvertUTF8toUTF16(header_footer_str)); header_footer_str = OptionWidgetToString(footer_dropdown[2]); - aNS->SetFooterStrRight(NS_ConvertUTF8toUTF16(header_footer_str).get()); + aNS->SetFooterStrRight(NS_ConvertUTF8toUTF16(header_footer_str)); } nsresult @@ -583,10 +583,10 @@ nsPrintDialogServiceGTK::ShowPageSetup(nsPIDOMWindowOuter *aParent, nsCOMPtr psService = do_GetService("@mozilla.org/gfx/printsettings-service;1"); if (psService) { nsString printName; - aNSSettings->GetPrinterName(getter_Copies(printName)); + aNSSettings->GetPrinterName(printName); if (printName.IsVoid()) { - psService->GetDefaultPrinterName(getter_Copies(printName)); - aNSSettings->SetPrinterName(printName.get()); + psService->GetDefaultPrinterName(printName); + aNSSettings->SetPrinterName(printName); } psService->InitPrintSettingsFromPrefs(aNSSettings, true, nsIPrintSettings::kInitSaveAll); } diff --git a/widget/gtk/nsPrintSettingsGTK.cpp b/widget/gtk/nsPrintSettingsGTK.cpp index 013fc671e11e..c063af52c90a 100644 --- a/widget/gtk/nsPrintSettingsGTK.cpp +++ b/widget/gtk/nsPrintSettingsGTK.cpp @@ -409,12 +409,12 @@ nsPrintSettingsGTK::SetOrientation(int32_t aOrientation) } NS_IMETHODIMP -nsPrintSettingsGTK::GetToFileName(char16_t * *aToFileName) +nsPrintSettingsGTK::GetToFileName(nsAString& aToFileName) { // Get the gtk output filename const char* gtk_output_uri = gtk_print_settings_get(mPrintSettings, GTK_PRINT_SETTINGS_OUTPUT_URI); if (!gtk_output_uri) { - *aToFileName = ToNewUnicode(mToFileName); + aToFileName = mToFileName; return NS_OK; } @@ -426,33 +426,27 @@ nsPrintSettingsGTK::GetToFileName(char16_t * *aToFileName) return rv; // Extract the path - nsAutoString path; - rv = file->GetPath(path); - NS_ENSURE_SUCCESS(rv, rv); - - *aToFileName = ToNewUnicode(path); - return NS_OK; + return file->GetPath(aToFileName); } NS_IMETHODIMP -nsPrintSettingsGTK::SetToFileName(const char16_t * aToFileName) +nsPrintSettingsGTK::SetToFileName(const nsAString& aToFileName) { - if (aToFileName[0] == 0) { + if (aToFileName.IsEmpty()) { mToFileName.SetLength(0); gtk_print_settings_set(mPrintSettings, GTK_PRINT_SETTINGS_OUTPUT_URI, nullptr); return NS_OK; } - if (StringEndsWith(nsDependentString(aToFileName), NS_LITERAL_STRING(".ps"))) { + if (StringEndsWith(aToFileName, NS_LITERAL_STRING(".ps"))) { gtk_print_settings_set(mPrintSettings, GTK_PRINT_SETTINGS_OUTPUT_FILE_FORMAT, "ps"); } else { gtk_print_settings_set(mPrintSettings, GTK_PRINT_SETTINGS_OUTPUT_FILE_FORMAT, "pdf"); } nsCOMPtr file; - nsresult rv = NS_NewLocalFile(nsDependentString(aToFileName), true, - getter_AddRefs(file)); + nsresult rv = NS_NewLocalFile(aToFileName, true, getter_AddRefs(file)); NS_ENSURE_SUCCESS(rv, rv); // Convert the nsIFile to a URL @@ -467,7 +461,7 @@ nsPrintSettingsGTK::SetToFileName(const char16_t * aToFileName) } NS_IMETHODIMP -nsPrintSettingsGTK::GetPrinterName(char16_t * *aPrinter) +nsPrintSettingsGTK::GetPrinterName(nsAString& aPrinter) { const char* gtkPrintName = gtk_print_settings_get_printer(mPrintSettings); if (!gtkPrintName) { @@ -475,17 +469,16 @@ nsPrintSettingsGTK::GetPrinterName(char16_t * *aPrinter) gtkPrintName = gtk_printer_get_name(mGTKPrinter); } else { // This mimics what nsPrintSettingsImpl does when we try to Get before we Set - nsString nullPrintName; - *aPrinter = ToNewUnicode(nullPrintName); + aPrinter.Truncate(); return NS_OK; } } - *aPrinter = UTF8ToNewUnicode(nsDependentCString(gtkPrintName)); + aPrinter = NS_ConvertUTF8toUTF16(gtkPrintName); return NS_OK; } NS_IMETHODIMP -nsPrintSettingsGTK::SetPrinterName(const char16_t * aPrinter) +nsPrintSettingsGTK::SetPrinterName(const nsAString& aPrinter) { NS_ConvertUTF16toUTF8 gtkPrinter(aPrinter); @@ -537,16 +530,15 @@ nsPrintSettingsGTK::SetScaling(double aScaling) } NS_IMETHODIMP -nsPrintSettingsGTK::GetPaperName(char16_t * *aPaperName) +nsPrintSettingsGTK::GetPaperName(nsAString& aPaperName) { - NS_ENSURE_ARG_POINTER(aPaperName); const gchar* name = gtk_paper_size_get_name(gtk_page_setup_get_paper_size(mPageSetup)); - *aPaperName = ToNewUnicode(NS_ConvertUTF8toUTF16(name)); + aPaperName = NS_ConvertUTF8toUTF16(name); return NS_OK; } NS_IMETHODIMP -nsPrintSettingsGTK::SetPaperName(const char16_t * aPaperName) +nsPrintSettingsGTK::SetPaperName(const nsAString& aPaperName) { NS_ConvertUTF16toUTF8 gtkPaperName(aPaperName); diff --git a/widget/gtk/nsPrintSettingsGTK.h b/widget/gtk/nsPrintSettingsGTK.h index 21f38944913d..202a67fa537f 100644 --- a/widget/gtk/nsPrintSettingsGTK.h +++ b/widget/gtk/nsPrintSettingsGTK.h @@ -68,13 +68,13 @@ public: NS_IMETHOD GetOrientation(int32_t *aOrientation) override; NS_IMETHOD SetOrientation(int32_t aOrientation) override; - NS_IMETHOD GetToFileName(char16_t * *aToFileName) override; - NS_IMETHOD SetToFileName(const char16_t * aToFileName) override; + NS_IMETHOD GetToFileName(nsAString& aToFileName) override; + NS_IMETHOD SetToFileName(const nsAString& aToFileName) override; // Gets/Sets the printer name in the GtkPrintSettings. If no printer name is specified there, // you will get back the name of the current internal GtkPrinter. - NS_IMETHOD GetPrinterName(char16_t * *aPrinter) override; - NS_IMETHOD SetPrinterName(const char16_t * aPrinter) override; + NS_IMETHOD GetPrinterName(nsAString& Printer) override; + NS_IMETHOD SetPrinterName(const nsAString& aPrinter) override; // Number of copies is stored/gotten from the GtkPrintSettings. NS_IMETHOD GetNumCopies(int32_t *aNumCopies) override; @@ -84,8 +84,8 @@ public: NS_IMETHOD SetScaling(double aScaling) override; // A name recognised by GTK is strongly advised here, as this is used to create a GtkPaperSize. - NS_IMETHOD GetPaperName(char16_t * *aPaperName) override; - NS_IMETHOD SetPaperName(const char16_t * aPaperName) override; + NS_IMETHOD GetPaperName(nsAString& aPaperName) override; + NS_IMETHOD SetPaperName(const nsAString& aPaperName) override; NS_IMETHOD SetUnwriteableMarginInTwips(nsIntMargin& aUnwriteableMargin) override; NS_IMETHOD SetUnwriteableMarginTop(double aUnwriteableMarginTop) override; diff --git a/widget/nsIPrintSettings.idl b/widget/nsIPrintSettings.idl index 5c391c1ac894..947687028553 100644 --- a/widget/nsIPrintSettings.idl +++ b/widget/nsIPrintSettings.idl @@ -202,16 +202,16 @@ interface nsIPrintSettings : nsISupports attribute short printRange; - attribute wstring title; - attribute wstring docURL; + attribute AString title; + attribute AString docURL; - attribute wstring headerStrLeft; - attribute wstring headerStrCenter; - attribute wstring headerStrRight; + attribute AString headerStrLeft; + attribute AString headerStrCenter; + attribute AString headerStrRight; - attribute wstring footerStrLeft; - attribute wstring footerStrCenter; - attribute wstring footerStrRight; + attribute AString footerStrLeft; + attribute AString footerStrCenter; + attribute AString footerStrRight; attribute short howToEnableFrameUI; /* indicates how to enable the frameset UI */ attribute boolean isCancelled; /* indicates whether the print job has been cancelled */ @@ -222,7 +222,7 @@ interface nsIPrintSettings : nsISupports attribute boolean showPrintProgress; /* indicates whether the progress dialog should be shown */ /* Additional XP Related */ - attribute wstring paperName; /* name of paper */ + attribute AString paperName; /* name of paper */ attribute short paperData; /* native data value */ attribute double paperWidth; /* width of the paper in inches or mm */ attribute double paperHeight; /* height of the paper in inches or mm */ @@ -233,10 +233,10 @@ interface nsIPrintSettings : nsISupports attribute long orientation; /* see orientation consts */ attribute long numCopies; - attribute wstring printerName; /* name of destination printer */ + attribute AString printerName; /* name of destination printer */ attribute boolean printToFile; - attribute wstring toFileName; + attribute AString toFileName; attribute short outputFormat; attribute long printPageDelay; /* in milliseconds */ diff --git a/widget/nsIPrintSettingsService.idl b/widget/nsIPrintSettingsService.idl index 198581b34308..846881fd9276 100644 --- a/widget/nsIPrintSettingsService.idl +++ b/widget/nsIPrintSettingsService.idl @@ -58,7 +58,7 @@ interface nsIPrintSettingsService : nsISupports /** * The name of the last printer used, or else the system default printer. */ - readonly attribute wstring defaultPrinterName; + readonly attribute AString defaultPrinterName; /** * Initializes certain settings from the native printer into the PrintSettings @@ -68,7 +68,8 @@ interface nsIPrintSettingsService : nsISupports * Page Size * Number of Copies */ - void initPrintSettingsFromPrinter(in wstring aPrinterName, in nsIPrintSettings aPrintSettings); + void initPrintSettingsFromPrinter(in AString aPrinterName, + in nsIPrintSettings aPrintSettings); /** * Reads PrintSettings values from Prefs, diff --git a/widget/nsIPrintSettingsWin.idl b/widget/nsIPrintSettingsWin.idl index ae840b085543..65bb304bd1c9 100644 --- a/widget/nsIPrintSettingsWin.idl +++ b/widget/nsIPrintSettingsWin.idl @@ -35,8 +35,8 @@ interface nsIPrintSettingsWin : nsISupports * via the "m_pd" data member of the CPrintDialog * in MFC. */ - [noscript] attribute wstring deviceName; - [noscript] attribute wstring driverName; + [noscript] attribute AString deviceName; + [noscript] attribute AString driverName; [noscript] attribute nsDevMode devMode; diff --git a/widget/nsIPrinterEnumerator.idl b/widget/nsIPrinterEnumerator.idl index d9d00be3424a..b5dde214d3f6 100644 --- a/widget/nsIPrinterEnumerator.idl +++ b/widget/nsIPrinterEnumerator.idl @@ -18,7 +18,7 @@ interface nsIPrinterEnumerator : nsISupports * default printer; see nsIPrintSettingsService.defaultPrinterName * for that. */ - readonly attribute wstring defaultPrinterName; + readonly attribute AString defaultPrinterName; /** * Initializes certain settings from the native printer into the PrintSettings @@ -27,7 +27,8 @@ interface nsIPrinterEnumerator : nsISupports * Page Size * Number of Copies */ - void initPrintSettingsFromPrinter(in wstring aPrinterName, in nsIPrintSettings aPrintSettings); + void initPrintSettingsFromPrinter(in AString aPrinterName, + in nsIPrintSettings aPrintSettings); /** * The list of printer names diff --git a/widget/nsPrintOptionsImpl.cpp b/widget/nsPrintOptionsImpl.cpp index c2b5e113612e..7c77a8a35b92 100644 --- a/widget/nsPrintOptionsImpl.cpp +++ b/widget/nsPrintOptionsImpl.cpp @@ -138,40 +138,16 @@ nsPrintOptions::SerializeToPrintData(nsIPrintSettings* aSettings, aSettings->GetPrintBGImages(&data->printBGImages()); aSettings->GetPrintRange(&data->printRange()); - // I have no idea if I'm doing this string copying correctly... - nsString title; - aSettings->GetTitle(getter_Copies(title)); - data->title() = title; + aSettings->GetTitle(data->title()); + aSettings->GetDocURL(data->docURL()); - nsString docURL; - aSettings->GetDocURL(getter_Copies(docURL)); - data->docURL() = docURL; + aSettings->GetHeaderStrLeft(data->headerStrLeft()); + aSettings->GetHeaderStrCenter(data->headerStrCenter()); + aSettings->GetHeaderStrRight(data->headerStrRight()); - // Header strings... - nsString headerStrLeft; - aSettings->GetHeaderStrLeft(getter_Copies(headerStrLeft)); - data->headerStrLeft() = headerStrLeft; - - nsString headerStrCenter; - aSettings->GetHeaderStrCenter(getter_Copies(headerStrCenter)); - data->headerStrCenter() = headerStrCenter; - - nsString headerStrRight; - aSettings->GetHeaderStrRight(getter_Copies(headerStrRight)); - data->headerStrRight() = headerStrRight; - - // Footer strings... - nsString footerStrLeft; - aSettings->GetFooterStrLeft(getter_Copies(footerStrLeft)); - data->footerStrLeft() = footerStrLeft; - - nsString footerStrCenter; - aSettings->GetFooterStrCenter(getter_Copies(footerStrCenter)); - data->footerStrCenter() = footerStrCenter; - - nsString footerStrRight; - aSettings->GetFooterStrRight(getter_Copies(footerStrRight)); - data->footerStrRight() = footerStrRight; + aSettings->GetFooterStrLeft(data->footerStrLeft()); + aSettings->GetFooterStrCenter(data->footerStrCenter()); + aSettings->GetFooterStrRight(data->footerStrRight()); aSettings->GetHowToEnableFrameUI(&data->howToEnableFrameUI()); aSettings->GetIsCancelled(&data->isCancelled()); @@ -181,10 +157,7 @@ nsPrintOptions::SerializeToPrintData(nsIPrintSettings* aSettings, aSettings->GetShrinkToFit(&data->shrinkToFit()); aSettings->GetShowPrintProgress(&data->showPrintProgress()); - nsString paperName; - aSettings->GetPaperName(getter_Copies(paperName)); - data->paperName() = paperName; - + aSettings->GetPaperName(data->paperName()); aSettings->GetPaperData(&data->paperData()); aSettings->GetPaperWidth(&data->paperWidth()); aSettings->GetPaperHeight(&data->paperHeight()); @@ -196,15 +169,11 @@ nsPrintOptions::SerializeToPrintData(nsIPrintSettings* aSettings, aSettings->GetNumCopies(&data->numCopies()); - nsString printerName; - aSettings->GetPrinterName(getter_Copies(printerName)); - data->printerName() = printerName; + aSettings->GetPrinterName(data->printerName()); aSettings->GetPrintToFile(&data->printToFile()); - nsString toFileName; - aSettings->GetToFileName(getter_Copies(toFileName)); - data->toFileName() = toFileName; + aSettings->GetToFileName(data->toFileName()); aSettings->GetOutputFormat(&data->outputFormat()); aSettings->GetPrintPageDelay(&data->printPageDelay()); @@ -276,19 +245,18 @@ nsPrintOptions::DeserializeToPrintSettings(const PrintData& data, settings->SetPrintBGImages(data.printBGImages()); settings->SetPrintRange(data.printRange()); - // I have no idea if I'm doing this string copying correctly... - settings->SetTitle(data.title().get()); - settings->SetDocURL(data.docURL().get()); + settings->SetTitle(data.title()); + settings->SetDocURL(data.docURL()); // Header strings... - settings->SetHeaderStrLeft(data.headerStrLeft().get()); - settings->SetHeaderStrCenter(data.headerStrCenter().get()); - settings->SetHeaderStrRight(data.headerStrRight().get()); + settings->SetHeaderStrLeft(data.headerStrLeft()); + settings->SetHeaderStrCenter(data.headerStrCenter()); + settings->SetHeaderStrRight(data.headerStrRight()); // Footer strings... - settings->SetFooterStrLeft(data.footerStrLeft().get()); - settings->SetFooterStrCenter(data.footerStrCenter().get()); - settings->SetFooterStrRight(data.footerStrRight().get()); + settings->SetFooterStrLeft(data.footerStrLeft()); + settings->SetFooterStrCenter(data.footerStrCenter()); + settings->SetFooterStrRight(data.footerStrRight()); settings->SetHowToEnableFrameUI(data.howToEnableFrameUI()); settings->SetIsCancelled(data.isCancelled()); @@ -298,7 +266,7 @@ nsPrintOptions::DeserializeToPrintSettings(const PrintData& data, settings->SetShrinkToFit(data.shrinkToFit()); settings->SetShowPrintProgress(data.showPrintProgress()); - settings->SetPaperName(data.paperName().get()); + settings->SetPaperName(data.paperName()); settings->SetPaperData(data.paperData()); settings->SetPaperWidth(data.paperWidth()); @@ -311,11 +279,11 @@ nsPrintOptions::DeserializeToPrintSettings(const PrintData& data, settings->SetNumCopies(data.numCopies()); - settings->SetPrinterName(data.printerName().get()); + settings->SetPrinterName(data.printerName()); settings->SetPrintToFile(data.printToFile()); - settings->SetToFileName(data.toFileName().get()); + settings->SetToFileName(data.toFileName()); settings->SetOutputFormat(data.outputFormat()); settings->SetPrintPageDelay(data.printPageDelay()); @@ -533,7 +501,7 @@ nsPrintOptions::ReadPrefs(nsIPrintSettings* aPS, const nsAString& aPrinterName, DUMP_DBL(kReadStr, kPrintPaperWidth, width); aPS->SetPaperHeight(height); DUMP_DBL(kReadStr, kPrintPaperHeight, height); - aPS->SetPaperName(str.get()); + aPS->SetPaperName(str); DUMP_STR(kReadStr, kPrintPaperName, str.get()); #if defined(XP_WIN) if (saveSanitizedSizePrefs) { @@ -560,42 +528,42 @@ nsPrintOptions::ReadPrefs(nsIPrintSettings* aPS, const nsAString& aPrinterName, if (aFlags & nsIPrintSettings::kInitSaveHeaderLeft) { if (GETSTRPREF(kPrintHeaderStrLeft, str)) { - aPS->SetHeaderStrLeft(str.get()); + aPS->SetHeaderStrLeft(str); DUMP_STR(kReadStr, kPrintHeaderStrLeft, str.get()); } } if (aFlags & nsIPrintSettings::kInitSaveHeaderCenter) { if (GETSTRPREF(kPrintHeaderStrCenter, str)) { - aPS->SetHeaderStrCenter(str.get()); + aPS->SetHeaderStrCenter(str); DUMP_STR(kReadStr, kPrintHeaderStrCenter, str.get()); } } if (aFlags & nsIPrintSettings::kInitSaveHeaderRight) { if (GETSTRPREF(kPrintHeaderStrRight, str)) { - aPS->SetHeaderStrRight(str.get()); + aPS->SetHeaderStrRight(str); DUMP_STR(kReadStr, kPrintHeaderStrRight, str.get()); } } if (aFlags & nsIPrintSettings::kInitSaveFooterLeft) { if (GETSTRPREF(kPrintFooterStrLeft, str)) { - aPS->SetFooterStrLeft(str.get()); + aPS->SetFooterStrLeft(str); DUMP_STR(kReadStr, kPrintFooterStrLeft, str.get()); } } if (aFlags & nsIPrintSettings::kInitSaveFooterCenter) { if (GETSTRPREF(kPrintFooterStrCenter, str)) { - aPS->SetFooterStrCenter(str.get()); + aPS->SetFooterStrCenter(str); DUMP_STR(kReadStr, kPrintFooterStrCenter, str.get()); } } if (aFlags & nsIPrintSettings::kInitSaveFooterRight) { if (GETSTRPREF(kPrintFooterStrRight, str)) { - aPS->SetFooterStrRight(str.get()); + aPS->SetFooterStrRight(str); DUMP_STR(kReadStr, kPrintFooterStrRight, str.get()); } } @@ -651,7 +619,7 @@ nsPrintOptions::ReadPrefs(nsIPrintSettings* aPS, const nsAString& aPrinterName, if (aFlags & nsIPrintSettings::kInitSaveToFileName) { if (GETSTRPREF(kPrintToFileName, str)) { - aPS->SetToFileName(str.get()); + aPS->SetToFileName(str); DUMP_STR(kReadStr, kPrintToFileName, str.get()); } } @@ -771,7 +739,7 @@ nsPrintOptions::WritePrefs(nsIPrintSettings *aPS, const nsAString& aPrinterName, NS_SUCCEEDED(aPS->GetPaperSizeUnit(&sizeUnit)) && NS_SUCCEEDED(aPS->GetPaperWidth(&width)) && NS_SUCCEEDED(aPS->GetPaperHeight(&height)) && - NS_SUCCEEDED(aPS->GetPaperName(getter_Copies(name))) + NS_SUCCEEDED(aPS->GetPaperName(name)) ) { DUMP_INT(kWriteStr, kPrintPaperSizeUnit, sizeUnit); Preferences::SetInt(GetPrefName(kPrintPaperSizeUnit, aPrinterName), @@ -822,7 +790,7 @@ nsPrintOptions::WritePrefs(nsIPrintSettings *aPS, const nsAString& aPrinterName, } if (aFlags & nsIPrintSettings::kInitSaveHeaderLeft) { - if (NS_SUCCEEDED(aPS->GetHeaderStrLeft(getter_Copies(uStr)))) { + if (NS_SUCCEEDED(aPS->GetHeaderStrLeft(uStr))) { DUMP_STR(kWriteStr, kPrintHeaderStrLeft, uStr.get()); Preferences::SetString(GetPrefName(kPrintHeaderStrLeft, aPrinterName), uStr); @@ -830,7 +798,7 @@ nsPrintOptions::WritePrefs(nsIPrintSettings *aPS, const nsAString& aPrinterName, } if (aFlags & nsIPrintSettings::kInitSaveHeaderCenter) { - if (NS_SUCCEEDED(aPS->GetHeaderStrCenter(getter_Copies(uStr)))) { + if (NS_SUCCEEDED(aPS->GetHeaderStrCenter(uStr))) { DUMP_STR(kWriteStr, kPrintHeaderStrCenter, uStr.get()); Preferences::SetString(GetPrefName(kPrintHeaderStrCenter, aPrinterName), uStr); @@ -838,7 +806,7 @@ nsPrintOptions::WritePrefs(nsIPrintSettings *aPS, const nsAString& aPrinterName, } if (aFlags & nsIPrintSettings::kInitSaveHeaderRight) { - if (NS_SUCCEEDED(aPS->GetHeaderStrRight(getter_Copies(uStr)))) { + if (NS_SUCCEEDED(aPS->GetHeaderStrRight(uStr))) { DUMP_STR(kWriteStr, kPrintHeaderStrRight, uStr.get()); Preferences::SetString(GetPrefName(kPrintHeaderStrRight, aPrinterName), uStr); @@ -846,7 +814,7 @@ nsPrintOptions::WritePrefs(nsIPrintSettings *aPS, const nsAString& aPrinterName, } if (aFlags & nsIPrintSettings::kInitSaveFooterLeft) { - if (NS_SUCCEEDED(aPS->GetFooterStrLeft(getter_Copies(uStr)))) { + if (NS_SUCCEEDED(aPS->GetFooterStrLeft(uStr))) { DUMP_STR(kWriteStr, kPrintFooterStrLeft, uStr.get()); Preferences::SetString(GetPrefName(kPrintFooterStrLeft, aPrinterName), uStr); @@ -854,7 +822,7 @@ nsPrintOptions::WritePrefs(nsIPrintSettings *aPS, const nsAString& aPrinterName, } if (aFlags & nsIPrintSettings::kInitSaveFooterCenter) { - if (NS_SUCCEEDED(aPS->GetFooterStrCenter(getter_Copies(uStr)))) { + if (NS_SUCCEEDED(aPS->GetFooterStrCenter(uStr))) { DUMP_STR(kWriteStr, kPrintFooterStrCenter, uStr.get()); Preferences::SetString(GetPrefName(kPrintFooterStrCenter, aPrinterName), uStr); @@ -862,7 +830,7 @@ nsPrintOptions::WritePrefs(nsIPrintSettings *aPS, const nsAString& aPrinterName, } if (aFlags & nsIPrintSettings::kInitSaveFooterRight) { - if (NS_SUCCEEDED(aPS->GetFooterStrRight(getter_Copies(uStr)))) { + if (NS_SUCCEEDED(aPS->GetFooterStrRight(uStr))) { DUMP_STR(kWriteStr, kPrintFooterStrRight, uStr.get()); Preferences::SetString(GetPrefName(kPrintFooterStrRight, aPrinterName), uStr); @@ -915,7 +883,7 @@ nsPrintOptions::WritePrefs(nsIPrintSettings *aPS, const nsAString& aPrinterName, // Only the general version of this pref is saved if ((aFlags & nsIPrintSettings::kInitSavePrinterName) && aPrinterName.IsEmpty()) { - if (NS_SUCCEEDED(aPS->GetPrinterName(getter_Copies(uStr)))) { + if (NS_SUCCEEDED(aPS->GetPrinterName(uStr))) { DUMP_STR(kWriteStr, kPrinterName, uStr.get()); Preferences::SetString(kPrinterName, uStr); } @@ -929,7 +897,7 @@ nsPrintOptions::WritePrefs(nsIPrintSettings *aPS, const nsAString& aPrinterName, } if (aFlags & nsIPrintSettings::kInitSaveToFileName) { - if (NS_SUCCEEDED(aPS->GetToFileName(getter_Copies(uStr)))) { + if (NS_SUCCEEDED(aPS->GetToFileName(uStr))) { DUMP_STR(kWriteStr, kPrintToFileName, uStr.get()); Preferences::SetString(GetPrefName(kPrintToFileName, aPrinterName), uStr); } @@ -985,9 +953,9 @@ nsresult nsPrintOptions::_CreatePrintSettings(nsIPrintSettings **_retval) NS_ADDREF(*_retval = printSettings); // ref count nsString printerName; - nsresult rv = GetDefaultPrinterName(getter_Copies(printerName)); + nsresult rv = GetDefaultPrinterName(printerName); NS_ENSURE_SUCCESS(rv, rv); - (*_retval)->SetPrinterName(printerName.get()); + (*_retval)->SetPrinterName(printerName); (void)InitPrintSettingsFromPrefs(*_retval, false, nsIPrintSettings::kInitSaveAll); @@ -1015,7 +983,7 @@ nsPrintOptions::GetNewPrintSettings(nsIPrintSettings * *aNewPrintSettings) } NS_IMETHODIMP -nsPrintOptions::GetDefaultPrinterName(char16_t * *aDefaultPrinterName) +nsPrintOptions::GetDefaultPrinterName(nsAString& aDefaultPrinterName) { nsresult rv; nsCOMPtr prtEnum = @@ -1040,7 +1008,7 @@ nsPrintOptions::GetDefaultPrinterName(char16_t * *aDefaultPrinterName) } } if (isValid) { - *aDefaultPrinterName = ToNewUnicode(lastPrinterName); + aDefaultPrinterName = lastPrinterName; return NS_OK; } } @@ -1052,7 +1020,7 @@ nsPrintOptions::GetDefaultPrinterName(char16_t * *aDefaultPrinterName) } NS_IMETHODIMP -nsPrintOptions::InitPrintSettingsFromPrinter(const char16_t *aPrinterName, +nsPrintOptions::InitPrintSettingsFromPrinter(const nsAString& aPrinterName, nsIPrintSettings *aPrintSettings) { // Don't get print settings from the printer in the child when printing via @@ -1062,11 +1030,10 @@ nsPrintOptions::InitPrintSettingsFromPrinter(const char16_t *aPrinterName, } NS_ENSURE_ARG_POINTER(aPrintSettings); - NS_ENSURE_ARG_POINTER(aPrinterName); #ifdef DEBUG nsString printerName; - aPrintSettings->GetPrinterName(getter_Copies(printerName)); + aPrintSettings->GetPrinterName(printerName); if (!printerName.Equals(aPrinterName)) { NS_WARNING("Printer names should match!"); } @@ -1105,7 +1072,7 @@ GetAdjustedPrinterName(nsIPrintSettings* aPS, bool aUsePNP, // Get the Printer Name from the PrintSettings // to use as a prefix for Pref Names - nsresult rv = aPS->GetPrinterName(getter_Copies(aPrinterName)); + nsresult rv = aPS->GetPrinterName(aPrinterName); NS_ENSURE_SUCCESS(rv, rv); // Convert any whitespaces, carriage returns or newlines to _ diff --git a/widget/nsPrintSettingsImpl.cpp b/widget/nsPrintSettingsImpl.cpp index 48cce8625df5..d8a81e7cc239 100644 --- a/widget/nsPrintSettingsImpl.cpp +++ b/widget/nsPrintSettingsImpl.cpp @@ -192,19 +192,15 @@ NS_IMETHODIMP nsPrintSettings::SetDuplex(const int32_t aDuplex) return NS_OK; } -NS_IMETHODIMP nsPrintSettings::GetPrinterName(char16_t * *aPrinter) +NS_IMETHODIMP nsPrintSettings::GetPrinterName(nsAString& aPrinter) { - NS_ENSURE_ARG_POINTER(aPrinter); - - *aPrinter = ToNewUnicode(mPrinter); - NS_ENSURE_TRUE(*aPrinter, NS_ERROR_OUT_OF_MEMORY); - + aPrinter = mPrinter; return NS_OK; } -NS_IMETHODIMP nsPrintSettings::SetPrinterName(const char16_t * aPrinter) +NS_IMETHODIMP nsPrintSettings::SetPrinterName(const nsAString& aPrinter) { - if (!aPrinter || !mPrinter.Equals(aPrinter)) { + if (!mPrinter.Equals(aPrinter)) { mIsInitedFromPrinter = false; mIsInitedFromPrefs = false; } @@ -237,19 +233,14 @@ NS_IMETHODIMP nsPrintSettings::SetPrintToFile(bool aPrintToFile) return NS_OK; } -NS_IMETHODIMP nsPrintSettings::GetToFileName(char16_t * *aToFileName) +NS_IMETHODIMP nsPrintSettings::GetToFileName(nsAString& aToFileName) { - //NS_ENSURE_ARG_POINTER(aToFileName); - *aToFileName = ToNewUnicode(mToFileName); + aToFileName = mToFileName; return NS_OK; } -NS_IMETHODIMP nsPrintSettings::SetToFileName(const char16_t * aToFileName) +NS_IMETHODIMP nsPrintSettings::SetToFileName(const nsAString& aToFileName) { - if (aToFileName) { - mToFileName = aToFileName; - } else { - mToFileName.SetLength(0); - } + mToFileName = aToFileName; return NS_OK; } @@ -501,43 +492,25 @@ NS_IMETHODIMP nsPrintSettings::SetPrintRange(int16_t aPrintRange) return NS_OK; } -NS_IMETHODIMP nsPrintSettings::GetTitle(char16_t * *aTitle) +NS_IMETHODIMP nsPrintSettings::GetTitle(nsAString& aTitle) { - NS_ENSURE_ARG_POINTER(aTitle); - if (!mTitle.IsEmpty()) { - *aTitle = ToNewUnicode(mTitle); - } else { - *aTitle = nullptr; - } + aTitle = mTitle; return NS_OK; } -NS_IMETHODIMP nsPrintSettings::SetTitle(const char16_t * aTitle) +NS_IMETHODIMP nsPrintSettings::SetTitle(const nsAString& aTitle) { - if (aTitle) { - mTitle = aTitle; - } else { - mTitle.SetLength(0); - } + mTitle = aTitle; return NS_OK; } -NS_IMETHODIMP nsPrintSettings::GetDocURL(char16_t * *aDocURL) +NS_IMETHODIMP nsPrintSettings::GetDocURL(nsAString& aDocURL) { - NS_ENSURE_ARG_POINTER(aDocURL); - if (!mURL.IsEmpty()) { - *aDocURL = ToNewUnicode(mURL); - } else { - *aDocURL = nullptr; - } + aDocURL = mURL; return NS_OK; } -NS_IMETHODIMP nsPrintSettings::SetDocURL(const char16_t * aDocURL) +NS_IMETHODIMP nsPrintSettings::SetDocURL(const nsAString& aDocURL) { - if (aDocURL) { - mURL = aDocURL; - } else { - mURL.SetLength(0); - } + mURL = aDocURL; return NS_OK; } @@ -586,103 +559,70 @@ nsPrintSettings::SetPrintOptionsBits(int32_t aBits) return NS_OK; } -nsresult -nsPrintSettings::GetMarginStrs(char16_t * *aTitle, - nsHeaderFooterEnum aType, - int16_t aJust) +NS_IMETHODIMP nsPrintSettings::GetHeaderStrLeft(nsAString& aTitle) { - NS_ENSURE_ARG_POINTER(aTitle); - *aTitle = nullptr; - if (aType == eHeader) { - switch (aJust) { - case kJustLeft: *aTitle = ToNewUnicode(mHeaderStrs[0]);break; - case kJustCenter: *aTitle = ToNewUnicode(mHeaderStrs[1]);break; - case kJustRight: *aTitle = ToNewUnicode(mHeaderStrs[2]);break; - } //switch - } else { - switch (aJust) { - case kJustLeft: *aTitle = ToNewUnicode(mFooterStrs[0]);break; - case kJustCenter: *aTitle = ToNewUnicode(mFooterStrs[1]);break; - case kJustRight: *aTitle = ToNewUnicode(mFooterStrs[2]);break; - } //switch - } + aTitle = mHeaderStrs[0]; + return NS_OK; +} +NS_IMETHODIMP nsPrintSettings::SetHeaderStrLeft(const nsAString& aTitle) +{ + mHeaderStrs[0] = aTitle; return NS_OK; } -nsresult -nsPrintSettings::SetMarginStrs(const char16_t * aTitle, - nsHeaderFooterEnum aType, - int16_t aJust) +NS_IMETHODIMP nsPrintSettings::GetHeaderStrCenter(nsAString& aTitle) { - NS_ENSURE_ARG_POINTER(aTitle); - if (aType == eHeader) { - switch (aJust) { - case kJustLeft: mHeaderStrs[0] = aTitle;break; - case kJustCenter: mHeaderStrs[1] = aTitle;break; - case kJustRight: mHeaderStrs[2] = aTitle;break; - } //switch - } else { - switch (aJust) { - case kJustLeft: mFooterStrs[0] = aTitle;break; - case kJustCenter: mFooterStrs[1] = aTitle;break; - case kJustRight: mFooterStrs[2] = aTitle;break; - } //switch - } + aTitle = mHeaderStrs[1]; + return NS_OK; +} +NS_IMETHODIMP nsPrintSettings::SetHeaderStrCenter(const nsAString& aTitle) +{ + mHeaderStrs[1] = aTitle; return NS_OK; } -NS_IMETHODIMP nsPrintSettings::GetHeaderStrLeft(char16_t * *aTitle) +NS_IMETHODIMP nsPrintSettings::GetHeaderStrRight(nsAString& aTitle) { - return GetMarginStrs(aTitle, eHeader, kJustLeft); + aTitle = mHeaderStrs[2]; + return NS_OK; } -NS_IMETHODIMP nsPrintSettings::SetHeaderStrLeft(const char16_t * aTitle) +NS_IMETHODIMP nsPrintSettings::SetHeaderStrRight(const nsAString& aTitle) { - return SetMarginStrs(aTitle, eHeader, kJustLeft); + mHeaderStrs[2] = aTitle; + return NS_OK; } -NS_IMETHODIMP nsPrintSettings::GetHeaderStrCenter(char16_t * *aTitle) +NS_IMETHODIMP nsPrintSettings::GetFooterStrLeft(nsAString& aTitle) { - return GetMarginStrs(aTitle, eHeader, kJustCenter); + aTitle = mFooterStrs[0]; + return NS_OK; } -NS_IMETHODIMP nsPrintSettings::SetHeaderStrCenter(const char16_t * aTitle) +NS_IMETHODIMP nsPrintSettings::SetFooterStrLeft(const nsAString& aTitle) { - return SetMarginStrs(aTitle, eHeader, kJustCenter); + mFooterStrs[0] = aTitle; + return NS_OK; } -NS_IMETHODIMP nsPrintSettings::GetHeaderStrRight(char16_t * *aTitle) +NS_IMETHODIMP nsPrintSettings::GetFooterStrCenter(nsAString& aTitle) { - return GetMarginStrs(aTitle, eHeader, kJustRight); + aTitle = mFooterStrs[1]; + return NS_OK; } -NS_IMETHODIMP nsPrintSettings::SetHeaderStrRight(const char16_t * aTitle) +NS_IMETHODIMP nsPrintSettings::SetFooterStrCenter(const nsAString& aTitle) { - return SetMarginStrs(aTitle, eHeader, kJustRight); + mFooterStrs[1] = aTitle; + return NS_OK; } -NS_IMETHODIMP nsPrintSettings::GetFooterStrLeft(char16_t * *aTitle) +NS_IMETHODIMP nsPrintSettings::GetFooterStrRight(nsAString& aTitle) { - return GetMarginStrs(aTitle, eFooter, kJustLeft); + aTitle = mFooterStrs[2]; + return NS_OK; } -NS_IMETHODIMP nsPrintSettings::SetFooterStrLeft(const char16_t * aTitle) +NS_IMETHODIMP nsPrintSettings::SetFooterStrRight(const nsAString& aTitle) { - return SetMarginStrs(aTitle, eFooter, kJustLeft); -} - -NS_IMETHODIMP nsPrintSettings::GetFooterStrCenter(char16_t * *aTitle) -{ - return GetMarginStrs(aTitle, eFooter, kJustCenter); -} -NS_IMETHODIMP nsPrintSettings::SetFooterStrCenter(const char16_t * aTitle) -{ - return SetMarginStrs(aTitle, eFooter, kJustCenter); -} - -NS_IMETHODIMP nsPrintSettings::GetFooterStrRight(char16_t * *aTitle) -{ - return GetMarginStrs(aTitle, eFooter, kJustRight); -} -NS_IMETHODIMP nsPrintSettings::SetFooterStrRight(const char16_t * aTitle) -{ - return SetMarginStrs(aTitle, eFooter, kJustRight); + mFooterStrs[2] = aTitle; + return NS_OK; } NS_IMETHODIMP nsPrintSettings::GetPrintFrameTypeUsage(int16_t *aPrintFrameTypeUsage) @@ -745,23 +685,14 @@ NS_IMETHODIMP nsPrintSettings::SetShowPrintProgress(bool aShowPrintProgress) return NS_OK; } -NS_IMETHODIMP nsPrintSettings::GetPaperName(char16_t * *aPaperName) +NS_IMETHODIMP nsPrintSettings::GetPaperName(nsAString& aPaperName) { - NS_ENSURE_ARG_POINTER(aPaperName); - if (!mPaperName.IsEmpty()) { - *aPaperName = ToNewUnicode(mPaperName); - } else { - *aPaperName = nullptr; - } + aPaperName = mPaperName; return NS_OK; } -NS_IMETHODIMP nsPrintSettings::SetPaperName(const char16_t * aPaperName) +NS_IMETHODIMP nsPrintSettings::SetPaperName(const nsAString& aPaperName) { - if (aPaperName) { - mPaperName = aPaperName; - } else { - mPaperName.SetLength(0); - } + mPaperName = aPaperName; return NS_OK; } diff --git a/widget/nsPrintSettingsImpl.h b/widget/nsPrintSettingsImpl.h index 8e344d06fdfc..32b2a69b0f68 100644 --- a/widget/nsPrintSettingsImpl.h +++ b/widget/nsPrintSettingsImpl.h @@ -42,9 +42,6 @@ protected: } nsHeaderFooterEnum; - nsresult GetMarginStrs(char16_t * *aTitle, nsHeaderFooterEnum aType, int16_t aJust); - nsresult SetMarginStrs(const char16_t * aTitle, nsHeaderFooterEnum aType, int16_t aJust); - // Members nsWeakPtr mSession; // Should never be touched by Clone or Assign diff --git a/widget/windows/nsDeviceContextSpecWin.cpp b/widget/windows/nsDeviceContextSpecWin.cpp index ff5278faa622..ef0cfc593356 100644 --- a/widget/windows/nsDeviceContextSpecWin.cpp +++ b/widget/windows/nsDeviceContextSpecWin.cpp @@ -68,7 +68,7 @@ public: bool PrintersAreAllocated() { return mPrinters != nullptr; } LPWSTR GetItemFromList(int32_t aInx) { return mPrinters?mPrinters->ElementAt(aInx):nullptr; } nsresult EnumeratePrinterList(); - void GetDefaultPrinterName(nsString& aDefaultPrinterName); + void GetDefaultPrinterName(nsAString& aDefaultPrinterName); uint32_t GetNumPrinters() { return mPrinters?mPrinters->Length():0; } protected: @@ -94,8 +94,6 @@ struct AutoFreeGlobalPrinters //---------------------------------------------------------------------------------- nsDeviceContextSpecWin::nsDeviceContextSpecWin() { - mDriverName = nullptr; - mDeviceName = nullptr; mDevMode = nullptr; #ifdef MOZ_ENABLE_SKIA_PDF mPrintViaSkPDF = false; @@ -113,14 +111,12 @@ NS_IMPL_ISUPPORTS(nsDeviceContextSpecWin, nsIDeviceContextSpec) nsDeviceContextSpecWin::~nsDeviceContextSpecWin() { - SetDeviceName(nullptr); - SetDriverName(nullptr); SetDevMode(nullptr); nsCOMPtr psWin(do_QueryInterface(mPrintSettings)); if (psWin) { - psWin->SetDeviceName(nullptr); - psWin->SetDriverName(nullptr); + psWin->SetDeviceName(EmptyString()); + psWin->SetDriverName(EmptyString()); psWin->SetDevMode(nullptr); } @@ -133,16 +129,6 @@ nsDeviceContextSpecWin::~nsDeviceContextSpecWin() GlobalPrinters::GetInstance()->FreeGlobalPrinters(); } - -//------------------------------------------------------------------ -// helper -static char16_t * GetDefaultPrinterNameFromGlobalPrinters() -{ - nsAutoString printerName; - GlobalPrinters::GetInstance()->GetDefaultPrinterName(printerName); - return ToNewUnicode(printerName); -} - //---------------------------------------------------------------------------------- NS_IMETHODIMP nsDeviceContextSpecWin::Init(nsIWidget* aWidget, nsIPrintSettings* aPrintSettings, @@ -171,15 +157,15 @@ NS_IMETHODIMP nsDeviceContextSpecWin::Init(nsIWidget* aWidget, nsCOMPtr psWin(do_QueryInterface(aPrintSettings)); if (psWin) { - char16_t* deviceName; - char16_t* driverName; - psWin->GetDeviceName(&deviceName); // creates new memory (makes a copy) - psWin->GetDriverName(&driverName); // creates new memory (makes a copy) + nsAutoString deviceName; + nsAutoString driverName; + psWin->GetDeviceName(deviceName); + psWin->GetDriverName(driverName); LPDEVMODEW devMode; psWin->GetDevMode(&devMode); // creates new memory (makes a copy) - if (deviceName && driverName && devMode) { + if (!deviceName.IsEmpty() && !driverName.IsEmpty() && devMode) { // Scaling is special, it is one of the few // devMode items that we control in layout if (devMode->dmFields & DM_SCALE) { @@ -194,15 +180,9 @@ NS_IMETHODIMP nsDeviceContextSpecWin::Init(nsIWidget* aWidget, SetDriverName(driverName); SetDevMode(devMode); - // clean up - free(deviceName); - free(driverName); - return NS_OK; } else { PR_PL(("***** nsDeviceContextSpecWin::Init - deviceName/driverName/devMode was NULL!\n")); - if (deviceName) free(deviceName); - if (driverName) free(driverName); if (devMode) ::HeapFree(::GetProcessHeap(), 0, devMode); } } @@ -211,41 +191,24 @@ NS_IMETHODIMP nsDeviceContextSpecWin::Init(nsIWidget* aWidget, } // Get the Printer Name to be used and output format. - char16_t * printerName = nullptr; + nsAutoString printerName; if (mPrintSettings) { - mPrintSettings->GetPrinterName(&printerName); + mPrintSettings->GetPrinterName(printerName); } // If there is no name then use the default printer - if (!printerName || (printerName && !*printerName)) { - printerName = GetDefaultPrinterNameFromGlobalPrinters(); + if (printerName.IsEmpty()) { + GlobalPrinters::GetInstance()->GetDefaultPrinterName(printerName); } - NS_ASSERTION(printerName, "We have to have a printer name"); - if (!printerName || !*printerName) return rv; + if (printerName.IsEmpty()) { + return rv; + } return GetDataFromPrinter(printerName, mPrintSettings); } //---------------------------------------------------------- -// Helper Function - Free and reallocate the string -static void CleanAndCopyString(wchar_t*& aStr, const wchar_t* aNewStr) -{ - if (aStr != nullptr) { - if (aNewStr != nullptr && wcslen(aStr) > wcslen(aNewStr)) { // reuse it if we can - wcscpy(aStr, aNewStr); - return; - } else { - free(aStr); - aStr = nullptr; - } - } - - if (nullptr != aNewStr) { - aStr = (wchar_t*) malloc(sizeof(wchar_t) * (wcslen(aNewStr) + 1)); - wcscpy(aStr, aNewStr); - } -} already_AddRefed nsDeviceContextSpecWin::MakePrintTarget() { @@ -266,7 +229,7 @@ already_AddRefed nsDeviceContextSpecWin::MakePrintTarget() if (mOutputFormat == nsIPrintSettings::kOutputFormatPDF) { nsString filename; - mPrintSettings->GetToFileName(getter_Copies(filename)); + mPrintSettings->GetToFileName(filename); nsAutoCString printFile(NS_ConvertUTF16toUTF8(filename).get()); auto skStream = MakeUnique(printFile.get()); @@ -311,7 +274,7 @@ already_AddRefed nsDeviceContextSpecWin::MakePrintTarget() if (mOutputFormat == nsIPrintSettings::kOutputFormatPDF) { nsString filename; - mPrintSettings->GetToFileName(getter_Copies(filename)); + mPrintSettings->GetToFileName(filename); double width, height; mPrintSettings->GetEffectivePageSize(&width, &height); @@ -339,8 +302,8 @@ already_AddRefed nsDeviceContextSpecWin::MakePrintTarget() } if (mDevMode) { - NS_WARNING_ASSERTION(mDriverName, "No driver!"); - HDC dc = ::CreateDCW(mDriverName, mDeviceName, nullptr, mDevMode); + NS_WARNING_ASSERTION(!mDriverName.IsEmpty(), "No driver!"); + HDC dc = ::CreateDCW(mDriverName.get(), mDeviceName.get(), nullptr, mDevMode); if (!dc) { gfxCriticalError(gfxCriticalError::DefaultOptions(false)) << "Failed to create device context in GetSurfaceForPrinter"; @@ -457,8 +420,8 @@ nsDeviceContextSpecWin::BeginDocument(const nsAString& aTitle, // to once we reach EndDocument. The only reason we create it here rather // than in EndDocument is so that we don't need to store aTitle and // aPrintToFileName as member data. - NS_WARNING_ASSERTION(mDriverName, "No driver!"); - mDC = ::CreateDCW(mDriverName, mDeviceName, nullptr, mDevMode); + NS_WARNING_ASSERTION(!mDriverName.IsEmpty(), "No driver!"); + mDC = ::CreateDCW(mDriverName.get(), mDeviceName.get(), nullptr, mDevMode); if (mDC == NULL) { gfxCriticalError(gfxCriticalError::DefaultOptions(false)) << "Failed to create device context in GetSurfaceForPrinter"; @@ -527,15 +490,15 @@ nsDeviceContextSpecWin::EndDocument() } //---------------------------------------------------------------------------------- -void nsDeviceContextSpecWin::SetDeviceName(char16ptr_t aDeviceName) +void nsDeviceContextSpecWin::SetDeviceName(const nsAString& aDeviceName) { - CleanAndCopyString(mDeviceName, aDeviceName); + mDeviceName = aDeviceName; } //---------------------------------------------------------------------------------- -void nsDeviceContextSpecWin::SetDriverName(char16ptr_t aDriverName) +void nsDeviceContextSpecWin::SetDriverName(const nsAString& aDriverName) { - CleanAndCopyString(mDriverName, aDriverName); + mDriverName = aDriverName; } //---------------------------------------------------------------------------------- @@ -560,7 +523,8 @@ nsDeviceContextSpecWin::GetDevMode(LPDEVMODEW &aDevMode) //---------------------------------------------------------------------------------- // Setup the object's data member with the selected printer's data nsresult -nsDeviceContextSpecWin::GetDataFromPrinter(char16ptr_t aName, nsIPrintSettings* aPS) +nsDeviceContextSpecWin::GetDataFromPrinter(const nsAString& aName, + nsIPrintSettings* aPS) { nsresult rv = NS_ERROR_FAILURE; @@ -574,7 +538,8 @@ nsDeviceContextSpecWin::GetDataFromPrinter(char16ptr_t aName, nsIPrintSettings* } nsHPRINTER hPrinter = nullptr; - wchar_t *name = (wchar_t*)aName; // Windows APIs use non-const name argument + const nsString& flat = PromiseFlatString(aName); + wchar_t* name = (wchar_t*)flat.get(); // Windows APIs use non-const name argument BOOL status = ::OpenPrinterW(name, &hPrinter, nullptr); if (status) { @@ -589,7 +554,7 @@ nsDeviceContextSpecWin::GetDataFromPrinter(char16ptr_t aName, nsIPrintSettings* PR_PL(("**** nsDeviceContextSpecWin::GetDataFromPrinter - Couldn't get " "size of DEVMODE using DocumentPropertiesW(pDeviceName = \"%s\"). " "GetLastEror() = %08x\n", - aName ? NS_ConvertUTF16toUTF8(aName).get() : "", GetLastError())); + NS_ConvertUTF16toUTF8(aName).get(), GetLastError())); return NS_ERROR_FAILURE; } @@ -614,7 +579,7 @@ nsDeviceContextSpecWin::GetDataFromPrinter(char16ptr_t aName, nsIPrintSettings* // because they may have been set from invalid prefs. if (ret == IDOK) { // We need to get information from the device as well. - nsAutoHDC printerDC(::CreateICW(kDriverName, aName, nullptr, pDevMode)); + nsAutoHDC printerDC(::CreateICW(kDriverName, name, nullptr, pDevMode)); if (NS_WARN_IF(!printerDC)) { ::HeapFree(::GetProcessHeap(), 0, pDevMode); return NS_ERROR_FAILURE; @@ -635,7 +600,7 @@ nsDeviceContextSpecWin::GetDataFromPrinter(char16ptr_t aName, nsIPrintSettings* SetDeviceName(aName); - SetDriverName(kDriverName); + SetDriverName(nsDependentString(kDriverName)); rv = NS_OK; } else { @@ -664,22 +629,19 @@ NS_IMPL_ISUPPORTS(nsPrinterEnumeratorWin, nsIPrinterEnumerator) //---------------------------------------------------------------------------------- // Return the Default Printer name NS_IMETHODIMP -nsPrinterEnumeratorWin::GetDefaultPrinterName(char16_t * *aDefaultPrinterName) +nsPrinterEnumeratorWin::GetDefaultPrinterName(nsAString& aDefaultPrinterName) { - NS_ENSURE_ARG_POINTER(aDefaultPrinterName); - - *aDefaultPrinterName = GetDefaultPrinterNameFromGlobalPrinters(); // helper - + GlobalPrinters::GetInstance()->GetDefaultPrinterName(aDefaultPrinterName); return NS_OK; } NS_IMETHODIMP -nsPrinterEnumeratorWin::InitPrintSettingsFromPrinter(const char16_t *aPrinterName, nsIPrintSettings *aPrintSettings) +nsPrinterEnumeratorWin::InitPrintSettingsFromPrinter(const nsAString& aPrinterName, + nsIPrintSettings *aPrintSettings) { - NS_ENSURE_ARG_POINTER(aPrinterName); NS_ENSURE_ARG_POINTER(aPrintSettings); - if (!*aPrinterName) { + if (aPrinterName.IsEmpty()) { return NS_OK; } @@ -724,7 +686,8 @@ nsPrinterEnumeratorWin::InitPrintSettingsFromPrinter(const char16_t *aPrinterNam aPrintSettings->SetPrinterName(aPrinterName); // We need to get information from the device as well. - char16ptr_t printerName = aPrinterName; + const nsString& flat = PromiseFlatString(aPrinterName); + char16ptr_t printerName = flat.get(); HDC dc = ::CreateICW(kDriverName, printerName, nullptr, devmode); if (NS_WARN_IF(!dc)) { return NS_ERROR_FAILURE; @@ -833,7 +796,7 @@ GlobalPrinters::EnumerateNativePrinters() //------------------------------------------------------------------ // Uses the GetProfileString to get the default printer from the registry void -GlobalPrinters::GetDefaultPrinterName(nsString& aDefaultPrinterName) +GlobalPrinters::GetDefaultPrinterName(nsAString& aDefaultPrinterName) { aDefaultPrinterName.Truncate(); WCHAR szDefaultPrinterName[1024]; @@ -853,7 +816,8 @@ GlobalPrinters::GetDefaultPrinterName(nsString& aDefaultPrinterName) aDefaultPrinterName = EmptyString(); } - PR_PL(("DEFAULT PRINTER [%s]\n", aDefaultPrinterName.get())); + PR_PL(("DEFAULT PRINTER [%s]\n", + PromiseFlatString(aDefaultPrinterName).get())); } //---------------------------------------------------------------------------------- diff --git a/widget/windows/nsDeviceContextSpecWin.h b/widget/windows/nsDeviceContextSpecWin.h index 4548445a3ea3..ec65fc0fab66 100644 --- a/widget/windows/nsDeviceContextSpecWin.h +++ b/widget/windows/nsDeviceContextSpecWin.h @@ -51,8 +51,8 @@ public: float GetPrintingScale() final; - void GetDriverName(wchar_t *&aDriverName) const { aDriverName = mDriverName; } - void GetDeviceName(wchar_t *&aDeviceName) const { aDeviceName = mDeviceName; } + void GetDriverName(nsAString& aDriverName) const { aDriverName = mDriverName; } + void GetDeviceName(nsAString& aDeviceName) const { aDeviceName = mDeviceName; } // The GetDevMode will return a pointer to a DevMode // whether it is from the Global memory handle or just the DevMode @@ -61,18 +61,19 @@ public: void GetDevMode(LPDEVMODEW &aDevMode); // helper functions - nsresult GetDataFromPrinter(char16ptr_t aName, nsIPrintSettings* aPS = nullptr); + nsresult GetDataFromPrinter(const nsAString& aName, + nsIPrintSettings* aPS = nullptr); protected: - void SetDeviceName(char16ptr_t aDeviceName); - void SetDriverName(char16ptr_t aDriverName); + void SetDeviceName(const nsAString& aDeviceName); + void SetDriverName(const nsAString& aDriverName); void SetDevMode(LPDEVMODEW aDevMode); virtual ~nsDeviceContextSpecWin(); - wchar_t* mDriverName; - wchar_t* mDeviceName; + nsString mDriverName; + nsString mDeviceName; LPDEVMODEW mDevMode; nsCOMPtr mPrintSettings; diff --git a/widget/windows/nsPrintOptionsWin.cpp b/widget/windows/nsPrintOptionsWin.cpp index 97b15fa3fbc5..162660f88ad6 100644 --- a/widget/windows/nsPrintOptionsWin.cpp +++ b/widget/windows/nsPrintOptionsWin.cpp @@ -55,18 +55,15 @@ nsPrintOptionsWin::SerializeToPrintData(nsIPrintSettings* aSettings, return NS_ERROR_FAILURE; } - char16_t* deviceName; - char16_t* driverName; + nsAutoString deviceName; + nsAutoString driverName; - psWin->GetDeviceName(&deviceName); - psWin->GetDriverName(&driverName); + psWin->GetDeviceName(deviceName); + psWin->GetDriverName(driverName); data->deviceName().Assign(deviceName); data->driverName().Assign(driverName); - free(deviceName); - free(driverName); - // When creating the print dialog on Windows, we only need to send certain // print settings information from the parent to the child not vice versa. if (XRE_IsParentProcess()) { @@ -117,8 +114,8 @@ nsPrintOptionsWin::DeserializeToPrintSettings(const PrintData& data, } if (XRE_IsContentProcess()) { - psWin->SetDeviceName(data.deviceName().get()); - psWin->SetDriverName(data.driverName().get()); + psWin->SetDeviceName(data.deviceName()); + psWin->SetDriverName(data.driverName()); psWin->SetPrintableWidthInInches(data.printableWidthInInches()); psWin->SetPrintableHeightInInches(data.printableHeightInInches()); diff --git a/widget/windows/nsPrintSettingsWin.cpp b/widget/windows/nsPrintSettingsWin.cpp index 80e73e530b98..4aff0aed80e6 100644 --- a/widget/windows/nsPrintSettingsWin.cpp +++ b/widget/windows/nsPrintSettingsWin.cpp @@ -154,10 +154,8 @@ nsPrintSettingsWin::nsPrintSettingsWin() : * See documentation in nsPrintSettingsWin.h * @update */ -nsPrintSettingsWin::nsPrintSettingsWin(const nsPrintSettingsWin& aPS) : - mDeviceName(nullptr), - mDriverName(nullptr), - mDevMode(nullptr) +nsPrintSettingsWin::nsPrintSettingsWin(const nsPrintSettingsWin& aPS) + : mDevMode(nullptr) { *this = aPS; } @@ -168,38 +166,28 @@ nsPrintSettingsWin::nsPrintSettingsWin(const nsPrintSettingsWin& aPS) : */ nsPrintSettingsWin::~nsPrintSettingsWin() { - if (mDeviceName) free(mDeviceName); - if (mDriverName) free(mDriverName); if (mDevMode) ::HeapFree(::GetProcessHeap(), 0, mDevMode); } -NS_IMETHODIMP nsPrintSettingsWin::SetDeviceName(const char16_t * aDeviceName) +NS_IMETHODIMP nsPrintSettingsWin::SetDeviceName(const nsAString& aDeviceName) { - if (mDeviceName) { - free(mDeviceName); - } - mDeviceName = aDeviceName?wcsdup(char16ptr_t(aDeviceName)):nullptr; + mDeviceName = aDeviceName; return NS_OK; } -NS_IMETHODIMP nsPrintSettingsWin::GetDeviceName(char16_t **aDeviceName) +NS_IMETHODIMP nsPrintSettingsWin::GetDeviceName(nsAString& aDeviceName) { - NS_ENSURE_ARG_POINTER(aDeviceName); - *aDeviceName = mDeviceName?reinterpret_cast(wcsdup(mDeviceName)):nullptr; + aDeviceName = mDeviceName; return NS_OK; } -NS_IMETHODIMP nsPrintSettingsWin::SetDriverName(const char16_t * aDriverName) +NS_IMETHODIMP nsPrintSettingsWin::SetDriverName(const nsAString& aDriverName) { - if (mDriverName) { - free(mDriverName); - } - mDriverName = aDriverName?wcsdup(char16ptr_t(aDriverName)):nullptr; + mDriverName = aDriverName; return NS_OK; } -NS_IMETHODIMP nsPrintSettingsWin::GetDriverName(char16_t **aDriverName) +NS_IMETHODIMP nsPrintSettingsWin::GetDriverName(nsAString& aDriverName) { - NS_ENSURE_ARG_POINTER(aDriverName); - *aDriverName = mDriverName?reinterpret_cast(wcsdup(mDriverName)):nullptr; + aDriverName = mDriverName; return NS_OK; } @@ -425,21 +413,13 @@ nsPrintSettingsWin& nsPrintSettingsWin::operator=(const nsPrintSettingsWin& rhs) ((nsPrintSettings&) *this) = rhs; - if (mDeviceName) { - free(mDeviceName); - } - - if (mDriverName) { - free(mDriverName); - } - // Use free because we used the native malloc to create the memory if (mDevMode) { ::HeapFree(::GetProcessHeap(), 0, mDevMode); } - mDeviceName = rhs.mDeviceName?wcsdup(rhs.mDeviceName):nullptr; - mDriverName = rhs.mDriverName?wcsdup(rhs.mDriverName):nullptr; + mDeviceName = rhs.mDeviceName; + mDriverName = rhs.mDriverName; if (rhs.mDevMode) { CopyDevMode(rhs.mDevMode, mDevMode); diff --git a/widget/windows/nsPrintSettingsWin.h b/widget/windows/nsPrintSettingsWin.h index d4a31b41e20a..db25e447e82f 100644 --- a/widget/windows/nsPrintSettingsWin.h +++ b/widget/windows/nsPrintSettingsWin.h @@ -47,8 +47,8 @@ public: protected: void CopyDevMode(DEVMODEW* aInDevMode, DEVMODEW *& aOutDevMode); - wchar_t* mDeviceName; - wchar_t* mDriverName; + nsString mDeviceName; + nsString mDriverName; LPDEVMODEW mDevMode; double mPrintableWidthInInches = 0l; double mPrintableHeightInInches = 0l;