blob: f7a73ddefa93e430242d7ed24729638c0d78100d [file] [log] [blame]
// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/printing/print_test_utils.h"
#include <string>
#include <utility>
#include "base/json/json_writer.h"
#include "base/values.h"
#include "chrome/browser/ui/webui/print_preview/print_preview_handler.h"
#include "printing/mojom/print.mojom.h"
#include "printing/print_job_constants.h"
namespace printing {
const char kDummyPrinterName[] = "DefaultPrinter";
base::Value::Dict GetPrintTicket(mojom::PrinterType type) {
DCHECK_NE(type, mojom::PrinterType::kPrivetDeprecated);
base::Value::Dict ticket;
// Letter
base::Value::Dict media_size;
media_size.Set(kSettingMediaSizeIsDefault, true);
media_size.Set(kSettingMediaSizeWidthMicrons, 215900);
media_size.Set(kSettingMediaSizeHeightMicrons, 279400);
ticket.Set(kSettingMediaSize, std::move(media_size));
ticket.Set(kSettingPreviewPageCount, 1);
ticket.Set(kSettingLandscape, false);
ticket.Set(kSettingColor, 2); // color printing
ticket.Set(kSettingHeaderFooterEnabled, false);
ticket.Set(kSettingMarginsType, 0); // default margins
ticket.Set(kSettingDuplexMode,
static_cast<int>(mojom::DuplexMode::kLongEdge));
ticket.Set(kSettingCopies, 1);
ticket.Set(kSettingCollate, true);
ticket.Set(kSettingShouldPrintBackgrounds, false);
ticket.Set(kSettingShouldPrintSelectionOnly, false);
ticket.Set(kSettingPreviewModifiable, true);
ticket.Set(kSettingPrinterType, static_cast<int>(type));
ticket.Set(kSettingRasterizePdf, false);
ticket.Set(kSettingScaleFactor, 100);
ticket.Set(kSettingScalingType, FIT_TO_PAGE);
ticket.Set(kSettingPagesPerSheet, 1);
ticket.Set(kSettingDpiHorizontal, kTestPrinterDpi);
ticket.Set(kSettingDpiVertical, kTestPrinterDpi);
ticket.Set(kSettingDeviceName, kDummyPrinterName);
ticket.Set(kSettingPageWidth, 215900);
ticket.Set(kSettingPageHeight, 279400);
ticket.Set(kSettingShowSystemDialog, false);
if (type == mojom::PrinterType::kExtension) {
base::Value::Dict capabilities;
capabilities.Set("duplex", true); // non-empty
std::string caps_string;
base::JSONWriter::Write(capabilities, &caps_string);
ticket.Set(kSettingCapabilities, caps_string);
base::Value::Dict print_ticket;
print_ticket.Set("version", "1.0");
print_ticket.Set("print", base::Value());
std::string ticket_string;
base::JSONWriter::Write(print_ticket, &ticket_string);
ticket.Set(kSettingTicket, ticket_string);
}
return ticket;
}
} // namespace printing