OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "printing/backend/cups_helper.h" | 5 #include "printing/backend/cups_helper.h" |
6 | 6 |
7 #include <cups/ppd.h> | 7 #include <cups/ppd.h> |
8 | 8 |
9 #include "base/file_util.h" | 9 #include "base/file_util.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 13 matching lines...) Expand all Loading... |
24 const char kColorMode[] = "ColorMode"; | 24 const char kColorMode[] = "ColorMode"; |
25 const char kProcessColorModel[] = "ProcessColorModel"; | 25 const char kProcessColorModel[] = "ProcessColorModel"; |
26 const char kPrintoutMode[] = "PrintoutMode"; | 26 const char kPrintoutMode[] = "PrintoutMode"; |
27 const char kDraftGray[] = "Draft.Gray"; | 27 const char kDraftGray[] = "Draft.Gray"; |
28 const char kHighGray[] = "High.Gray"; | 28 const char kHighGray[] = "High.Gray"; |
29 | 29 |
30 const char kDuplex[] = "Duplex"; | 30 const char kDuplex[] = "Duplex"; |
31 const char kDuplexNone[] = "None"; | 31 const char kDuplexNone[] = "None"; |
32 | 32 |
33 #if !defined(OS_MACOSX) | 33 #if !defined(OS_MACOSX) |
34 void ParseLpOptions(const FilePath& filepath, const std::string& printer_name, | 34 void ParseLpOptions(const base::FilePath& filepath, |
| 35 const std::string& printer_name, |
35 int* num_options, cups_option_t** options) { | 36 int* num_options, cups_option_t** options) { |
36 std::string content; | 37 std::string content; |
37 if (!file_util::ReadFileToString(filepath, &content)) | 38 if (!file_util::ReadFileToString(filepath, &content)) |
38 return; | 39 return; |
39 | 40 |
40 const char kDest[] = "dest"; | 41 const char kDest[] = "dest"; |
41 const char kDefault[] = "default"; | 42 const char kDefault[] = "default"; |
42 const size_t kDestLen = sizeof(kDest) - 1; | 43 const size_t kDestLen = sizeof(kDest) - 1; |
43 const size_t kDefaultLen = sizeof(kDefault) - 1; | 44 const size_t kDefaultLen = sizeof(kDefault) - 1; |
44 std::vector<std::string> lines; | 45 std::vector<std::string> lines; |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
86 } | 87 } |
87 | 88 |
88 void MarkLpOptions(const std::string& printer_name, ppd_file_t** ppd) { | 89 void MarkLpOptions(const std::string& printer_name, ppd_file_t** ppd) { |
89 cups_option_t* options = NULL; | 90 cups_option_t* options = NULL; |
90 int num_options = 0; | 91 int num_options = 0; |
91 ppdMarkDefaults(*ppd); | 92 ppdMarkDefaults(*ppd); |
92 | 93 |
93 const char kSystemLpOptionPath[] = "/etc/cups/lpoptions"; | 94 const char kSystemLpOptionPath[] = "/etc/cups/lpoptions"; |
94 const char kUserLpOptionPath[] = ".cups/lpoptions"; | 95 const char kUserLpOptionPath[] = ".cups/lpoptions"; |
95 | 96 |
96 std::vector<FilePath> file_locations; | 97 std::vector<base::FilePath> file_locations; |
97 file_locations.push_back(FilePath(kSystemLpOptionPath)); | 98 file_locations.push_back(base::FilePath(kSystemLpOptionPath)); |
98 file_locations.push_back(FilePath( | 99 file_locations.push_back(base::FilePath( |
99 file_util::GetHomeDir().Append(kUserLpOptionPath))); | 100 file_util::GetHomeDir().Append(kUserLpOptionPath))); |
100 | 101 |
101 for (std::vector<FilePath>::const_iterator it = file_locations.begin(); | 102 for (std::vector<base::FilePath>::const_iterator it = file_locations.begin(); |
102 it != file_locations.end(); ++it) { | 103 it != file_locations.end(); ++it) { |
103 num_options = 0; | 104 num_options = 0; |
104 options = NULL; | 105 options = NULL; |
105 ParseLpOptions(*it, printer_name, &num_options, &options); | 106 ParseLpOptions(*it, printer_name, &num_options, &options); |
106 if (num_options > 0 && options) { | 107 if (num_options > 0 && options) { |
107 cupsMarkOptions(*ppd, num_options, options); | 108 cupsMarkOptions(*ppd, num_options, options); |
108 cupsFreeOptions(num_options, options); | 109 cupsFreeOptions(num_options, options); |
109 } | 110 } |
110 } | 111 } |
111 } | 112 } |
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
333 } | 334 } |
334 | 335 |
335 http_t* HttpConnectionCUPS::http() { | 336 http_t* HttpConnectionCUPS::http() { |
336 return http_; | 337 return http_; |
337 } | 338 } |
338 | 339 |
339 bool parsePpdCapabilities( | 340 bool parsePpdCapabilities( |
340 const std::string& printer_name, | 341 const std::string& printer_name, |
341 const std::string& printer_capabilities, | 342 const std::string& printer_capabilities, |
342 PrinterSemanticCapsAndDefaults* printer_info) { | 343 PrinterSemanticCapsAndDefaults* printer_info) { |
343 FilePath ppd_file_path; | 344 base::FilePath ppd_file_path; |
344 if (!file_util::CreateTemporaryFile(&ppd_file_path)) | 345 if (!file_util::CreateTemporaryFile(&ppd_file_path)) |
345 return false; | 346 return false; |
346 | 347 |
347 int data_size = printer_capabilities.length(); | 348 int data_size = printer_capabilities.length(); |
348 if (data_size != file_util::WriteFile( | 349 if (data_size != file_util::WriteFile( |
349 ppd_file_path, | 350 ppd_file_path, |
350 printer_capabilities.data(), | 351 printer_capabilities.data(), |
351 data_size)) { | 352 data_size)) { |
352 file_util::Delete(ppd_file_path, false); | 353 file_util::Delete(ppd_file_path, false); |
353 return false; | 354 return false; |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
386 caps.color_default = is_color; | 387 caps.color_default = is_color; |
387 | 388 |
388 ppdClose(ppd); | 389 ppdClose(ppd); |
389 file_util::Delete(ppd_file_path, false); | 390 file_util::Delete(ppd_file_path, false); |
390 | 391 |
391 *printer_info = caps; | 392 *printer_info = caps; |
392 return true; | 393 return true; |
393 } | 394 } |
394 | 395 |
395 } // namespace printing | 396 } // namespace printing |
OLD | NEW |