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

Side by Side Diff: chrome/service/cloud_print/printer_info.h

Issue 2519002: Redesign cloud printing subsystem layer. (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: '' Created 10 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef CHROME_SERVICE_CLOUD_PRINT_PRINTER_INFO_H_
6 #define CHROME_SERVICE_CLOUD_PRINT_PRINTER_INFO_H_
7
8 #include <map>
9 #include <string>
10 #include <vector>
11
12 #include "base/file_path.h"
13
14 // This is the interface for platform-specific code for cloud print
15 namespace cloud_print {
16
17 typedef int PlatformJobId;
18
19 struct PrinterBasicInfo {
20 std::string printer_name;
21 std::string printer_description;
22 int printer_status;
23 std::map<std::string, std::string> options;
24 PrinterBasicInfo() : printer_status(0) {
25 }
26 };
27
28 typedef std::vector<PrinterBasicInfo> PrinterList;
29
30 struct PrinterCapsAndDefaults {
31 std::string printer_capabilities;
32 std::string caps_mime_type;
33 std::string printer_defaults;
34 std::string defaults_mime_type;
35 };
36
37 enum PrintJobStatus {
38 PRINT_JOB_STATUS_INVALID,
39 PRINT_JOB_STATUS_IN_PROGRESS,
40 PRINT_JOB_STATUS_ERROR,
41 PRINT_JOB_STATUS_COMPLETED
42 };
43
44 struct PrintJobDetails {
45 PrintJobStatus status;
46 int platform_status_flags;
47 std::string status_message;
48 int total_pages;
49 int pages_printed;
50 PrintJobDetails() : status(PRINT_JOB_STATUS_INVALID),
51 platform_status_flags(0), total_pages(0),
52 pages_printed(0) {
53 }
54 void Clear() {
55 status = PRINT_JOB_STATUS_INVALID;
56 platform_status_flags = 0;
57 status_message.clear();
58 total_pages = 0;
59 pages_printed = 0;
60 }
61 bool operator ==(const PrintJobDetails& other) const {
62 return (status == other.status) &&
63 (platform_status_flags == other.platform_status_flags) &&
64 (status_message == other.status_message) &&
65 (total_pages == other.total_pages) &&
66 (pages_printed == other.pages_printed);
67 }
68 bool operator !=(const PrintJobDetails& other) const {
69 return !(*this == other);
70 }
71 };
72
73 // Enumerates the list of installed local and network printers.
74 void EnumeratePrinters(PrinterList* printer_list);
75 // Gets the capabilities and defaults for a specific printer.
76 bool GetPrinterCapsAndDefaults(const std::string& printer_name,
77 PrinterCapsAndDefaults* printer_info);
78 bool ValidatePrintTicket(const std::string& printer_name,
79 const std::string& print_ticket_data);
80 std::string GenerateProxyId();
81 bool SpoolPrintJob(const std::string& print_ticket,
82 const FilePath& print_data_file_path,
83 const std::string& print_data_mime_type,
84 const std::string& printer_name,
85 const std::string& job_title,
86 PlatformJobId* job_id_ret);
87
88 bool GetJobDetails(const std::string& printer_name,
89 PlatformJobId job_id,
90 PrintJobDetails *job_details);
91 bool IsValidPrinter(const std::string& printer_name);
92
93 // A class that watches changes to a printer or a print server.
94 // The set of notifications are very coarse-grained (even though the Windows
95 // API allows for listening to fine-grained details about a printer, this class
96 // does not support that level of fine-grained control.
97 class PrinterChangeNotifier {
98 public:
99 class Delegate {
100 public:
101 virtual void OnPrinterAdded() = 0;
102 virtual void OnPrinterDeleted() = 0;
103 virtual void OnPrinterChanged() = 0;
104 virtual void OnJobChanged() = 0;
105 };
106 PrinterChangeNotifier();
107 ~PrinterChangeNotifier();
108 bool StartWatching(const std::string& printer_name, Delegate* delegate);
109 bool StopWatching();
110 bool GetCurrentPrinterInfo(PrinterBasicInfo* printer_info);
111 private:
112 // Internal state maintained by the PrinterChangeNotifier class.
113 class NotificationState;
114 NotificationState* state_;
115 DISALLOW_COPY_AND_ASSIGN(PrinterChangeNotifier);
116 };
117
118 // This typedef is to workaround the issue with certain versions of
119 // Visual Studio where it gets confused between multiple Delegate
120 // classes and gives a C2500 error. (I saw this error on the try bots -
121 // the workaround was not needed for my machine).
122 typedef PrinterChangeNotifier::Delegate PrinterChangeNotifierDelegate;
123
124 } // namespace cloud_print
125
126 #endif // CHROME_SERVICE_CLOUD_PRINT_PRINTER_INFO_H_
127
OLDNEW
« no previous file with comments | « chrome/service/cloud_print/print_system_win.cc ('k') | chrome/service/cloud_print/printer_info_cups.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698