Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3241)

Unified Diff: chrome/common/cloud_print/cloud_print_cdd_conversion.cc

Issue 313723002: Convert local printer capabilites to CDD format to unify with cloud printers and PDF printer. This … (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix clang reported errors. Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/common/cloud_print/cloud_print_cdd_conversion.cc
diff --git a/chrome/service/cloud_print/cdd_conversion_win.cc b/chrome/common/cloud_print/cloud_print_cdd_conversion.cc
similarity index 53%
copy from chrome/service/cloud_print/cdd_conversion_win.cc
copy to chrome/common/cloud_print/cloud_print_cdd_conversion.cc
index dab6cd0b21c950b79067f8e9fa46df05f1bac89d..549b27dbf93436053e282ecb6efbbc3b99484efb 100644
--- a/chrome/service/cloud_print/cdd_conversion_win.cc
+++ b/chrome/common/cloud_print/cloud_print_cdd_conversion.cc
@@ -2,130 +2,14 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/service/cloud_print/cdd_conversion_win.h"
+#include "chrome/common/cloud_print/cloud_print_cdd_conversion.h"
#include "components/cloud_devices/common/printer_description.h"
#include "printing/backend/print_backend.h"
-#include "printing/backend/win_helper.h"
namespace cloud_print {
-bool IsValidCjt(const std::string& print_ticket_data) {
- cloud_devices::CloudDeviceDescription description;
- return description.InitFromString(print_ticket_data);
-}
-
-scoped_ptr<DEVMODE, base::FreeDeleter> CjtToDevMode(
- const base::string16& printer_name,
- const std::string& print_ticket) {
- scoped_ptr<DEVMODE, base::FreeDeleter> dev_mode;
-
- cloud_devices::CloudDeviceDescription description;
- if (!description.InitFromString(print_ticket))
- return dev_mode.Pass();
-
- using namespace cloud_devices::printer;
- printing::ScopedPrinterHandle printer;
- if (!printer.OpenPrinter(printer_name.c_str()))
- return dev_mode.Pass();
-
- {
- ColorTicketItem color;
- if (color.LoadFrom(description)) {
- bool is_color = color.value().type == STANDARD_COLOR;
- dev_mode = CreateDevModeWithColor(printer, printer_name, is_color);
- } else {
- dev_mode = printing::CreateDevMode(printer, NULL);
- }
- }
-
- if (!dev_mode)
- return dev_mode.Pass();
-
- ColorTicketItem color;
- DuplexTicketItem duplex;
- OrientationTicketItem orientation;
- MarginsTicketItem margins;
- DpiTicketItem dpi;
- FitToPageTicketItem fit_to_page;
- MediaTicketItem media;
- CopiesTicketItem copies;
- PageRangeTicketItem page_range;
- CollateTicketItem collate;
- ReverseTicketItem reverse;
-
- if (orientation.LoadFrom(description)) {
- dev_mode->dmFields |= DM_ORIENTATION;
- if (orientation.value() == LANDSCAPE) {
- dev_mode->dmOrientation = DMORIENT_LANDSCAPE;
- } else {
- dev_mode->dmOrientation = DMORIENT_PORTRAIT;
- }
- }
-
- if (color.LoadFrom(description)) {
- dev_mode->dmFields |= DM_COLOR;
- if (color.value().type == STANDARD_MONOCHROME) {
- dev_mode->dmColor = DMCOLOR_MONOCHROME;
- } else if (color.value().type == STANDARD_COLOR) {
- dev_mode->dmColor = DMCOLOR_COLOR;
- } else {
- NOTREACHED();
- }
- }
-
- if (duplex.LoadFrom(description)) {
- dev_mode->dmFields |= DM_DUPLEX;
- if (duplex.value() == NO_DUPLEX) {
- dev_mode->dmDuplex = DMDUP_SIMPLEX;
- } else if (duplex.value() == LONG_EDGE) {
- dev_mode->dmDuplex = DMDUP_VERTICAL;
- } else if (duplex.value() == SHORT_EDGE) {
- dev_mode->dmDuplex = DMDUP_HORIZONTAL;
- } else {
- NOTREACHED();
- }
- }
-
- if (copies.LoadFrom(description)) {
- dev_mode->dmFields |= DM_COPIES;
- dev_mode->dmCopies = copies.value();
- }
-
- if (dpi.LoadFrom(description)) {
- if (dpi.value().horizontal > 0) {
- dev_mode->dmFields |= DM_PRINTQUALITY;
- dev_mode->dmPrintQuality = dpi.value().horizontal;
- }
- if (dpi.value().vertical > 0) {
- dev_mode->dmFields |= DM_YRESOLUTION;
- dev_mode->dmYResolution = dpi.value().vertical;
- }
- }
-
- if (collate.LoadFrom(description)) {
- dev_mode->dmFields |= DM_COLLATE;
- dev_mode->dmCollate = (collate.value() ? DMCOLLATE_TRUE : DMCOLLATE_FALSE);
- }
-
- if (media.LoadFrom(description)) {
- static const size_t kFromUm = 100; // Windows uses 0.1mm.
- int width = media.value().width_um / kFromUm;
- int height = media.value().height_um / kFromUm;
- if (width > 0) {
- dev_mode->dmFields |= DM_PAPERWIDTH;
- dev_mode->dmPaperWidth = width;
- }
- if (height > 0) {
- dev_mode->dmFields |= DM_PAPERLENGTH;
- dev_mode->dmPaperLength = height;
- }
- }
-
- return printing::CreateDevMode(printer, dev_mode.get());
-}
-
-std::string CapabilitiesToCdd(
+scoped_ptr<base::DictionaryValue> PrinterSemanticCapsAndDefaultsToCdd(
const printing::PrinterSemanticCapsAndDefaults& semantic_info) {
using namespace cloud_devices::printer;
cloud_devices::CloudDeviceDescription description;
@@ -134,16 +18,16 @@ std::string CapabilitiesToCdd(
content_types.AddOption("application/pdf");
content_types.SaveTo(&description);
- ColorCapability color;
- if (semantic_info.color_default || semantic_info.color_changeable) {
- color.AddDefaultOption(Color(STANDARD_COLOR), semantic_info.color_default);
+ if (semantic_info.collate_capable) {
+ CollateCapability collate;
+ collate.set_default_value(semantic_info.collate_default);
+ collate.SaveTo(&description);
}
- if (!semantic_info.color_default || semantic_info.color_changeable) {
- color.AddDefaultOption(Color(STANDARD_MONOCHROME),
- !semantic_info.color_default);
+ if (semantic_info.copies_capable) {
+ CopiesCapability copies;
+ copies.SaveTo(&description);
}
- color.SaveTo(&description);
if (semantic_info.duplex_capable) {
DuplexCapability duplex;
@@ -156,6 +40,17 @@ std::string CapabilitiesToCdd(
duplex.SaveTo(&description);
}
+ ColorCapability color;
+ if (semantic_info.color_default || semantic_info.color_changeable) {
+ color.AddDefaultOption(Color(STANDARD_COLOR), semantic_info.color_default);
+ }
+ if (!semantic_info.color_default || semantic_info.color_changeable) {
+ color.AddDefaultOption(Color(STANDARD_MONOCHROME),
+ !semantic_info.color_default);
+ }
+ color.SaveTo(&description);
+
+#if defined(OS_WIN)
if (!semantic_info.papers.empty()) {
Media default_media(semantic_info.default_paper.name,
semantic_info.default_paper.size_um.width(),
@@ -188,17 +83,6 @@ std::string CapabilitiesToCdd(
}
}
- if (semantic_info.collate_capable) {
- CollateCapability collate;
- collate.set_default_value(semantic_info.collate_default);
- collate.SaveTo(&description);
- }
-
- if (semantic_info.copies_capable) {
- CopiesCapability copies;
- copies.SaveTo(&description);
- }
-
if (!semantic_info.dpis.empty()) {
DpiCapability dpi;
Dpi default_dpi(semantic_info.default_dpi.width(),
@@ -222,6 +106,7 @@ std::string CapabilitiesToCdd(
NOTREACHED();
}
}
+#endif
OrientationCapability orientation;
orientation.AddDefaultOption(PORTRAIT, true);
@@ -229,7 +114,7 @@ std::string CapabilitiesToCdd(
orientation.AddOption(AUTO_ORIENTATION);
orientation.SaveTo(&description);
- return description.ToString();
+ return scoped_ptr<base::DictionaryValue>(description.root().DeepCopy());
}
} // namespace cloud_print
« no previous file with comments | « chrome/common/cloud_print/cloud_print_cdd_conversion.h ('k') | chrome/service/cloud_print/cdd_conversion_win.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698