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

Unified Diff: printing/backend/print_backend_win.cc

Issue 333993003: Add paper size support for printing to local printer on Windows. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Mon 06/16/2014 11:56:53.27 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
« no previous file with comments | « chrome/service/cloud_print/cdd_conversion_win.cc ('k') | printing/printing_context_win.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: printing/backend/print_backend_win.cc
diff --git a/printing/backend/print_backend_win.cc b/printing/backend/print_backend_win.cc
index 287a1f030468226b11644fadd37c5181cbf7bc99..a8139f397e069fef04bba3c6d7dc3c7350723eaa 100644
--- a/printing/backend/print_backend_win.cc
+++ b/printing/backend/print_backend_win.cc
@@ -9,6 +9,7 @@
#include "base/memory/scoped_ptr.h"
#include "base/numerics/safe_conversions.h"
+#include "base/strings/string_number_conversions.h"
#include "base/strings/string_piece.h"
#include "base/strings/utf_string_conversions.h"
#include "base/win/scoped_bstr.h"
@@ -95,37 +96,34 @@ void LoadPaper(const wchar_t* printer,
tmp_name = tmp_name.c_str();
paper.display_name = base::WideToUTF8(tmp_name);
}
+ if (!ids.empty())
+ paper.vendor_id = base::UintToString(ids[i]);
caps->papers.push_back(paper);
}
if (devmode) {
- short default_id = 0;
- gfx::Size default_size;
+ // Copy paper with the same ID as default paper.
+ if (devmode->dmFields & DM_PAPERSIZE) {
+ for (size_t i = 0; i < ids.size(); ++i) {
+ if (ids[i] == devmode->dmPaperSize) {
+ DCHECK_EQ(ids.size(), caps->papers.size());
+ caps->default_paper = caps->papers[i];
+ break;
+ }
+ }
+ }
- if (devmode->dmFields & DM_PAPERSIZE)
- default_id = devmode->dmPaperSize;
+ gfx::Size default_size;
if (devmode->dmFields & DM_PAPERWIDTH)
default_size.set_width(devmode->dmPaperWidth * kToUm);
if (devmode->dmFields & DM_PAPERLENGTH)
default_size.set_height(devmode->dmPaperLength * kToUm);
- if (default_size.IsEmpty()) {
- for (size_t i = 0; i < ids.size(); ++i) {
- if (ids[i] == default_id) {
- PrinterSemanticCapsAndDefaults::Paper paper;
- paper.size_um.SetSize(sizes[i].x * kToUm, sizes[i].y * kToUm);
- if (!names.empty()) {
- const wchar_t* name_start = names[i].chars;
- base::string16 tmp_name(name_start, kMaxPaperName);
- // Trim trailing zeros.
- tmp_name = tmp_name.c_str();
- paper.display_name = base::WideToUTF8(tmp_name);
- }
- caps->default_paper = paper;
- break;
- }
- }
- } else {
+ if (!default_size.IsEmpty()) {
+ // Reset default paper if |dmPaperWidth| or |dmPaperLength| does not
+ // match default paper set by.
+ if (default_size != caps->default_paper.size_um)
+ caps->default_paper = PrinterSemanticCapsAndDefaults::Paper();
caps->default_paper.size_um = default_size;
}
}
« no previous file with comments | « chrome/service/cloud_print/cdd_conversion_win.cc ('k') | printing/printing_context_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698