mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-10 21:28:04 +02:00
128 lines
3.6 KiB
C++
128 lines
3.6 KiB
C++
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim: set sw=2 ts=8 et tw=80 : */
|
|
/* 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 "PrintDataUtils.h"
|
|
#include "nsIPrintSettings.h"
|
|
#include "nsIServiceManager.h"
|
|
#include "nsIWebBrowserPrint.h"
|
|
#include "nsString.h"
|
|
|
|
namespace mozilla {
|
|
namespace embedding {
|
|
|
|
/**
|
|
* MockWebBrowserPrint is a mostly useless implementation of nsIWebBrowserPrint,
|
|
* but wraps a PrintData so that it's able to return information to print
|
|
* settings dialogs that need an nsIWebBrowserPrint to interrogate.
|
|
*/
|
|
|
|
NS_IMPL_ISUPPORTS(MockWebBrowserPrint, nsIWebBrowserPrint);
|
|
|
|
MockWebBrowserPrint::MockWebBrowserPrint(const PrintData &aData)
|
|
: mData(aData) {}
|
|
|
|
MockWebBrowserPrint::~MockWebBrowserPrint() {}
|
|
|
|
NS_IMETHODIMP
|
|
MockWebBrowserPrint::GetGlobalPrintSettings(
|
|
nsIPrintSettings **aGlobalPrintSettings) {
|
|
return NS_ERROR_NOT_IMPLEMENTED;
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
MockWebBrowserPrint::GetCurrentPrintSettings(
|
|
nsIPrintSettings **aCurrentPrintSettings) {
|
|
return NS_ERROR_NOT_IMPLEMENTED;
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
MockWebBrowserPrint::GetDoingPrint(bool *aDoingPrint) {
|
|
return NS_ERROR_NOT_IMPLEMENTED;
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
MockWebBrowserPrint::GetDoingPrintPreview(bool *aDoingPrintPreview) {
|
|
return NS_ERROR_NOT_IMPLEMENTED;
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
MockWebBrowserPrint::GetIsFramesetDocument(bool *aIsFramesetDocument) {
|
|
*aIsFramesetDocument = mData.isFramesetDocument();
|
|
return NS_OK;
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
MockWebBrowserPrint::GetIsFramesetFrameSelected(
|
|
bool *aIsFramesetFrameSelected) {
|
|
*aIsFramesetFrameSelected = mData.isFramesetFrameSelected();
|
|
return NS_OK;
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
MockWebBrowserPrint::GetIsIFrameSelected(bool *aIsIFrameSelected) {
|
|
*aIsIFrameSelected = mData.isIFrameSelected();
|
|
return NS_OK;
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
MockWebBrowserPrint::GetIsRangeSelection(bool *aIsRangeSelection) {
|
|
*aIsRangeSelection = mData.isRangeSelection();
|
|
return NS_OK;
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
MockWebBrowserPrint::GetPrintPreviewNumPages(int32_t *aPrintPreviewNumPages) {
|
|
return NS_ERROR_NOT_IMPLEMENTED;
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
MockWebBrowserPrint::Print(nsIPrintSettings *aThePrintSettings,
|
|
nsIWebProgressListener *aWPListener) {
|
|
return NS_ERROR_NOT_IMPLEMENTED;
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
MockWebBrowserPrint::PrintPreview(nsIPrintSettings *aThePrintSettings,
|
|
mozIDOMWindowProxy *aChildDOMWin,
|
|
nsIWebProgressListener *aWPListener) {
|
|
return NS_ERROR_NOT_IMPLEMENTED;
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
MockWebBrowserPrint::PrintPreviewNavigate(int16_t aNavType, int32_t aPageNum) {
|
|
return NS_ERROR_NOT_IMPLEMENTED;
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
MockWebBrowserPrint::Cancel() { return NS_ERROR_NOT_IMPLEMENTED; }
|
|
|
|
NS_IMETHODIMP
|
|
MockWebBrowserPrint::EnumerateDocumentNames(uint32_t *aCount,
|
|
char16_t ***aResult) {
|
|
*aCount = 0;
|
|
*aResult = nullptr;
|
|
|
|
if (mData.printJobName().IsEmpty()) {
|
|
return NS_OK;
|
|
}
|
|
|
|
// The only consumer that cares about this is the OS X printing
|
|
// dialog, and even then, it only cares about the first document
|
|
// name. That's why we only send a single document name through
|
|
// PrintData.
|
|
char16_t **array = (char16_t **)moz_xmalloc(sizeof(char16_t *));
|
|
array[0] = ToNewUnicode(mData.printJobName());
|
|
|
|
*aCount = 1;
|
|
*aResult = array;
|
|
return NS_OK;
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
MockWebBrowserPrint::ExitPrintPreview() { return NS_ERROR_NOT_IMPLEMENTED; }
|
|
|
|
} // namespace embedding
|
|
} // namespace mozilla
|