| 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 "chrome/service/cloud_print/job_status_updater.h" | 5 #include "chrome/service/cloud_print/job_status_updater.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/json/json_reader.h" | 8 #include "base/json/json_reader.h" |
| 9 #include "base/location.h" | 9 #include "base/location.h" |
| 10 #include "base/metrics/histogram_macros.h" | 10 #include "base/metrics/histogram_macros.h" |
| (...skipping 10 matching lines...) Expand all Loading... |
| 21 | 21 |
| 22 namespace { | 22 namespace { |
| 23 | 23 |
| 24 bool IsTerminalJobState(PrintJobStatus status) { | 24 bool IsTerminalJobState(PrintJobStatus status) { |
| 25 return status == PRINT_JOB_STATUS_ERROR || | 25 return status == PRINT_JOB_STATUS_ERROR || |
| 26 status == PRINT_JOB_STATUS_COMPLETED; | 26 status == PRINT_JOB_STATUS_COMPLETED; |
| 27 } | 27 } |
| 28 | 28 |
| 29 } // namespace | 29 } // namespace |
| 30 | 30 |
| 31 JobStatusUpdater::JobStatusUpdater(const std::string& printer_name, | 31 JobStatusUpdater::JobStatusUpdater( |
| 32 const std::string& job_id, | 32 const std::string& printer_name, |
| 33 PlatformJobId local_job_id, | 33 const std::string& job_id, |
| 34 const GURL& cloud_print_server_url, | 34 PlatformJobId local_job_id, |
| 35 PrintSystem* print_system, | 35 const GURL& cloud_print_server_url, |
| 36 Delegate* delegate) | 36 PrintSystem* print_system, |
| 37 Delegate* delegate, |
| 38 const net::PartialNetworkTrafficAnnotationTag& partial_traffic_annotation) |
| 37 : start_time_(base::Time::Now()), | 39 : start_time_(base::Time::Now()), |
| 38 printer_name_(printer_name), | 40 printer_name_(printer_name), |
| 39 job_id_(job_id), | 41 job_id_(job_id), |
| 40 local_job_id_(local_job_id), | 42 local_job_id_(local_job_id), |
| 41 cloud_print_server_url_(cloud_print_server_url), | 43 cloud_print_server_url_(cloud_print_server_url), |
| 42 print_system_(print_system), | 44 print_system_(print_system), |
| 43 delegate_(delegate), | 45 delegate_(delegate), |
| 44 stopped_(false) { | 46 stopped_(false), |
| 47 partial_traffic_annotation_(partial_traffic_annotation) { |
| 45 DCHECK(delegate_); | 48 DCHECK(delegate_); |
| 46 } | 49 } |
| 47 | 50 |
| 48 // Start checking the status of the local print job. | 51 // Start checking the status of the local print job. |
| 49 void JobStatusUpdater::UpdateStatus() { | 52 void JobStatusUpdater::UpdateStatus() { |
| 50 // It does not matter if we had already sent out an update and are waiting for | 53 // It does not matter if we had already sent out an update and are waiting for |
| 51 // a response. This is a new update and we will simply cancel the old request | 54 // a response. This is a new update and we will simply cancel the old request |
| 52 // and send a new one. | 55 // and send a new one. |
| 53 if (!stopped_) { | 56 if (!stopped_) { |
| 54 bool need_update = false; | 57 bool need_update = false; |
| (...skipping 15 matching lines...) Expand all Loading... |
| 70 // longer exists in the OS queue. We are going to assume it is done in | 73 // longer exists in the OS queue. We are going to assume it is done in |
| 71 // this case. | 74 // this case. |
| 72 last_job_details_.Clear(); | 75 last_job_details_.Clear(); |
| 73 last_job_details_.status = PRINT_JOB_STATUS_COMPLETED; | 76 last_job_details_.status = PRINT_JOB_STATUS_COMPLETED; |
| 74 need_update = true; | 77 need_update = true; |
| 75 } | 78 } |
| 76 UMA_HISTOGRAM_ENUMERATION("CloudPrint.NativeJobStatus", | 79 UMA_HISTOGRAM_ENUMERATION("CloudPrint.NativeJobStatus", |
| 77 last_job_details_.status, PRINT_JOB_STATUS_MAX); | 80 last_job_details_.status, PRINT_JOB_STATUS_MAX); |
| 78 } | 81 } |
| 79 if (need_update) { | 82 if (need_update) { |
| 80 request_ = CloudPrintURLFetcher::Create(); | 83 request_ = CloudPrintURLFetcher::Create(partial_traffic_annotation_); |
| 81 request_->StartGetRequest( | 84 request_->StartGetRequest( |
| 82 CloudPrintURLFetcher::REQUEST_UPDATE_JOB, | 85 CloudPrintURLFetcher::REQUEST_UPDATE_JOB, |
| 83 GetUrlForJobStatusUpdate( | 86 GetUrlForJobStatusUpdate( |
| 84 cloud_print_server_url_, job_id_, last_job_details_), | 87 cloud_print_server_url_, job_id_, last_job_details_), |
| 85 this, | 88 this, |
| 86 kCloudPrintAPIMaxRetryCount, | 89 kCloudPrintAPIMaxRetryCount, |
| 87 std::string()); | 90 std::string()); |
| 88 } | 91 } |
| 89 } | 92 } |
| 90 } | 93 } |
| (...skipping 28 matching lines...) Expand all Loading... |
| 119 return CloudPrintURLFetcher::STOP_PROCESSING; | 122 return CloudPrintURLFetcher::STOP_PROCESSING; |
| 120 } | 123 } |
| 121 | 124 |
| 122 std::string JobStatusUpdater::GetAuthHeader() { | 125 std::string JobStatusUpdater::GetAuthHeader() { |
| 123 return GetCloudPrintAuthHeaderFromStore(); | 126 return GetCloudPrintAuthHeaderFromStore(); |
| 124 } | 127 } |
| 125 | 128 |
| 126 JobStatusUpdater::~JobStatusUpdater() {} | 129 JobStatusUpdater::~JobStatusUpdater() {} |
| 127 | 130 |
| 128 } // namespace cloud_print | 131 } // namespace cloud_print |
| OLD | NEW |