| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 #ifndef CHROME_SERVICE_CLOUD_PRINT_PRINTER_JOB_HANDLER_H_ | 5 #ifndef CHROME_SERVICE_CLOUD_PRINT_PRINTER_JOB_HANDLER_H_ |
| 6 #define CHROME_SERVICE_CLOUD_PRINT_PRINTER_JOB_HANDLER_H_ | 6 #define CHROME_SERVICE_CLOUD_PRINT_PRINTER_JOB_HANDLER_H_ |
| 7 #pragma once | 7 #pragma once |
| 8 | 8 |
| 9 #include <list> | 9 #include <list> |
| 10 #include <string> | 10 #include <string> |
| (...skipping 15 matching lines...) Expand all Loading... |
| 26 // imlements a state machine that transitions from Start to various states. The | 26 // imlements a state machine that transitions from Start to various states. The |
| 27 // various states are shown in the below diagram. | 27 // various states are shown in the below diagram. |
| 28 // the status on the server. | 28 // the status on the server. |
| 29 | 29 |
| 30 // Start --> No pending tasks --> Done | 30 // Start --> No pending tasks --> Done |
| 31 // | | 31 // | |
| 32 // | | 32 // | |
| 33 // | Have Pending tasks | 33 // | Have Pending tasks |
| 34 // | | 34 // | |
| 35 // | | 35 // | |
| 36 // <----Delete Pending -- | ---Update Pending-----> | 36 // | ---Update Pending-----> |
| 37 // | | | | 37 // | | |
| 38 // | | | | 38 // | | |
| 39 // | | | | 39 // | | |
| 40 // Delete Printer from server | Update Printer info on server | 40 // | Update Printer info on server |
| 41 // Shutdown | Go to Stop | 41 // | Go to Stop |
| 42 // | | 42 // | |
| 43 // | Job Available | 43 // | Job Available |
| 44 // | | 44 // | |
| 45 // | | 45 // | |
| 46 // Fetch Next Job Metadata | 46 // Fetch Next Job Metadata |
| 47 // Fetch Print Ticket | 47 // Fetch Print Ticket |
| 48 // Fetch Print Data | 48 // Fetch Print Data |
| 49 // Spool Print Job | 49 // Spool Print Job |
| 50 // Create Job StatusUpdater for job | 50 // Create Job StatusUpdater for job |
| 51 // Mark job as "in progress" on server | 51 // Mark job as "in progress" on server |
| (...skipping 29 matching lines...) Expand all Loading... |
| 81 std::string job_title_; | 81 std::string job_title_; |
| 82 std::string print_ticket_; | 82 std::string print_ticket_; |
| 83 FilePath print_data_file_path_; | 83 FilePath print_data_file_path_; |
| 84 std::string print_data_mime_type_; | 84 std::string print_data_mime_type_; |
| 85 std::vector<std::string> tags_; | 85 std::vector<std::string> tags_; |
| 86 }; | 86 }; |
| 87 | 87 |
| 88 public: | 88 public: |
| 89 class Delegate { | 89 class Delegate { |
| 90 public: | 90 public: |
| 91 virtual void OnPrinterJobHandlerShutdown( | 91 // Notify delegate about authentication error. |
| 92 PrinterJobHandler* job_handler, const std::string& printer_id) = 0; | |
| 93 virtual void OnAuthError() = 0; | 92 virtual void OnAuthError() = 0; |
| 94 // Called when the PrinterJobHandler cannot find the printer locally. The | 93 // Notify delegate that printer has been deleted. |
| 95 // delegate returns |delete_from_server| to true if the printer should be | 94 virtual void OnPrinterDeleted(const std::string& printer_name) = 0; |
| 96 // deleted from the server,false otherwise. | |
| 97 virtual void OnPrinterNotFound(const std::string& printer_name, | |
| 98 bool* delete_from_server) = 0; | |
| 99 | 95 |
| 100 protected: | 96 protected: |
| 101 virtual ~Delegate() {} | 97 virtual ~Delegate() {} |
| 102 }; | 98 }; |
| 103 | 99 |
| 104 struct PrinterInfoFromCloud { | 100 struct PrinterInfoFromCloud { |
| 105 std::string printer_id; | 101 std::string printer_id; |
| 106 std::string caps_hash; | 102 std::string caps_hash; |
| 107 std::string tags_hash; | 103 std::string tags_hash; |
| 108 }; | 104 }; |
| 109 | 105 |
| 110 // Begin public interface | 106 // Begin public interface |
| 111 PrinterJobHandler(const printing::PrinterBasicInfo& printer_info, | 107 PrinterJobHandler(const printing::PrinterBasicInfo& printer_info, |
| 112 const PrinterInfoFromCloud& printer_info_from_server, | 108 const PrinterInfoFromCloud& printer_info_from_server, |
| 113 const GURL& cloud_print_server_url, | 109 const GURL& cloud_print_server_url, |
| 114 cloud_print::PrintSystem* print_system, | 110 cloud_print::PrintSystem* print_system, |
| 115 Delegate* delegate); | 111 Delegate* delegate); |
| 116 virtual ~PrinterJobHandler(); | 112 virtual ~PrinterJobHandler(); |
| 117 bool Initialize(); | 113 bool Initialize(); |
| 114 std::string GetPrinterName() const; |
| 118 // Requests a job check. |reason| is the reason for fetching the job. Used | 115 // Requests a job check. |reason| is the reason for fetching the job. Used |
| 119 // for logging and diagnostc purposes. | 116 // for logging and diagnostc purposes. |
| 120 void CheckForJobs(const std::string& reason); | 117 void CheckForJobs(const std::string& reason); |
| 121 // Shutdown everything (the process is exiting). | 118 // Shutdown everything (the process is exiting). |
| 122 void Shutdown(); | 119 void Shutdown(); |
| 123 base::TimeTicks last_job_fetch_time() const { return last_job_fetch_time_; } | 120 base::TimeTicks last_job_fetch_time() const { return last_job_fetch_time_; } |
| 124 // End public interface | 121 // End public interface |
| 125 | 122 |
| 126 // Begin Delegate implementations | 123 // Begin Delegate implementations |
| 127 | 124 |
| 128 // CloudPrintURLFetcher::Delegate implementation. | 125 // CloudPrintURLFetcher::Delegate implementation. |
| 129 virtual CloudPrintURLFetcher::ResponseAction HandleRawResponse( | 126 virtual CloudPrintURLFetcher::ResponseAction HandleRawResponse( |
| 130 const URLFetcher* source, | 127 const URLFetcher* source, |
| 131 const GURL& url, | 128 const GURL& url, |
| 132 const net::URLRequestStatus& status, | 129 const net::URLRequestStatus& status, |
| 133 int response_code, | 130 int response_code, |
| 134 const net::ResponseCookies& cookies, | 131 const net::ResponseCookies& cookies, |
| 135 const std::string& data); | 132 const std::string& data); |
| 136 virtual CloudPrintURLFetcher::ResponseAction HandleRawData( | 133 virtual CloudPrintURLFetcher::ResponseAction HandleRawData( |
| 137 const URLFetcher* source, | 134 const URLFetcher* source, |
| 138 const GURL& url, | 135 const GURL& url, |
| 139 const std::string& data); | 136 const std::string& data); |
| 140 virtual CloudPrintURLFetcher::ResponseAction HandleJSONData( | 137 virtual CloudPrintURLFetcher::ResponseAction HandleJSONData( |
| 141 const URLFetcher* source, | 138 const URLFetcher* source, |
| 142 const GURL& url, | 139 const GURL& url, |
| 143 base::DictionaryValue* json_data, | 140 base::DictionaryValue* json_data, |
| 144 bool succeeded); | 141 bool succeeded); |
| 145 virtual void OnRequestGiveUp(); | 142 virtual void OnRequestGiveUp(); |
| 146 virtual void OnRequestAuthError(); | 143 virtual CloudPrintURLFetcher::ResponseAction OnRequestAuthError(); |
| 144 virtual std::string GetAuthHeader(); |
| 147 | 145 |
| 148 // JobStatusUpdater::Delegate implementation | 146 // JobStatusUpdater::Delegate implementation |
| 149 virtual bool OnJobCompleted(JobStatusUpdater* updater); | 147 virtual bool OnJobCompleted(JobStatusUpdater* updater); |
| 150 virtual void OnAuthError(); | 148 virtual void OnAuthError(); |
| 151 | 149 |
| 152 // cloud_print::PrinterWatcherDelegate implementation | 150 // cloud_print::PrinterWatcherDelegate implementation |
| 153 virtual void OnPrinterDeleted(); | 151 virtual void OnPrinterDeleted(); |
| 154 virtual void OnPrinterChanged(); | 152 virtual void OnPrinterChanged(); |
| 155 virtual void OnJobChanged(); | 153 virtual void OnJobChanged(); |
| 156 | 154 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 173 (PrinterJobHandler::*DataHandler)(const URLFetcher* source, | 171 (PrinterJobHandler::*DataHandler)(const URLFetcher* source, |
| 174 const GURL& url, | 172 const GURL& url, |
| 175 const std::string& data); | 173 const std::string& data); |
| 176 // Begin request handlers for each state in the state machine | 174 // Begin request handlers for each state in the state machine |
| 177 CloudPrintURLFetcher::ResponseAction HandlePrinterUpdateResponse( | 175 CloudPrintURLFetcher::ResponseAction HandlePrinterUpdateResponse( |
| 178 const URLFetcher* source, | 176 const URLFetcher* source, |
| 179 const GURL& url, | 177 const GURL& url, |
| 180 base::DictionaryValue* json_data, | 178 base::DictionaryValue* json_data, |
| 181 bool succeeded); | 179 bool succeeded); |
| 182 | 180 |
| 183 CloudPrintURLFetcher::ResponseAction HandlePrinterDeleteResponse( | |
| 184 const URLFetcher* source, | |
| 185 const GURL& url, | |
| 186 base::DictionaryValue* json_data, | |
| 187 bool succeeded); | |
| 188 | |
| 189 CloudPrintURLFetcher::ResponseAction HandleJobMetadataResponse( | 181 CloudPrintURLFetcher::ResponseAction HandleJobMetadataResponse( |
| 190 const URLFetcher* source, | 182 const URLFetcher* source, |
| 191 const GURL& url, | 183 const GURL& url, |
| 192 base::DictionaryValue* json_data, | 184 base::DictionaryValue* json_data, |
| 193 bool succeeded); | 185 bool succeeded); |
| 194 | 186 |
| 195 CloudPrintURLFetcher::ResponseAction HandlePrintTicketResponse( | 187 CloudPrintURLFetcher::ResponseAction HandlePrintTicketResponse( |
| 196 const URLFetcher* source, | 188 const URLFetcher* source, |
| 197 const GURL& url, | 189 const GURL& url, |
| 198 const std::string& data); | 190 const std::string& data); |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 281 // There may be pending tasks in the message queue when Shutdown is called. | 273 // There may be pending tasks in the message queue when Shutdown is called. |
| 282 // We set this flag so as to do nothing in those tasks. | 274 // We set this flag so as to do nothing in those tasks. |
| 283 bool shutting_down_; | 275 bool shutting_down_; |
| 284 | 276 |
| 285 // A string indicating the reason we are fetching jobs from the server | 277 // A string indicating the reason we are fetching jobs from the server |
| 286 // (used to specify the reason in the fetch URL). | 278 // (used to specify the reason in the fetch URL). |
| 287 std::string job_fetch_reason_; | 279 std::string job_fetch_reason_; |
| 288 // Flags that specify various pending server updates | 280 // Flags that specify various pending server updates |
| 289 bool job_check_pending_; | 281 bool job_check_pending_; |
| 290 bool printer_update_pending_; | 282 bool printer_update_pending_; |
| 291 bool printer_delete_pending_; | |
| 292 | 283 |
| 293 // Some task in the state machine is in progress. | 284 // Some task in the state machine is in progress. |
| 294 bool task_in_progress_; | 285 bool task_in_progress_; |
| 295 scoped_refptr<cloud_print::PrintSystem::PrinterWatcher> printer_watcher_; | 286 scoped_refptr<cloud_print::PrintSystem::PrinterWatcher> printer_watcher_; |
| 296 typedef std::list< scoped_refptr<JobStatusUpdater> > JobStatusUpdaterList; | 287 typedef std::list< scoped_refptr<JobStatusUpdater> > JobStatusUpdaterList; |
| 297 JobStatusUpdaterList job_status_updater_list_; | 288 JobStatusUpdaterList job_status_updater_list_; |
| 298 | 289 |
| 299 base::TimeTicks last_job_fetch_time_; | 290 base::TimeTicks last_job_fetch_time_; |
| 300 | 291 |
| 301 DISALLOW_COPY_AND_ASSIGN(PrinterJobHandler); | 292 DISALLOW_COPY_AND_ASSIGN(PrinterJobHandler); |
| 302 }; | 293 }; |
| 303 | 294 |
| 304 // This typedef is to workaround the issue with certain versions of | 295 // This typedef is to workaround the issue with certain versions of |
| 305 // Visual Studio where it gets confused between multiple Delegate | 296 // Visual Studio where it gets confused between multiple Delegate |
| 306 // classes and gives a C2500 error. (I saw this error on the try bots - | 297 // classes and gives a C2500 error. (I saw this error on the try bots - |
| 307 // the workaround was not needed for my machine). | 298 // the workaround was not needed for my machine). |
| 308 typedef PrinterJobHandler::Delegate PrinterJobHandlerDelegate; | 299 typedef PrinterJobHandler::Delegate PrinterJobHandlerDelegate; |
| 309 | 300 |
| 310 #endif // CHROME_SERVICE_CLOUD_PRINT_PRINTER_JOB_HANDLER_H_ | 301 #endif // CHROME_SERVICE_CLOUD_PRINT_PRINTER_JOB_HANDLER_H_ |
| OLD | NEW |