Index: chrome/service/cloud_print/printer_job_handler.cc |
=================================================================== |
--- chrome/service/cloud_print/printer_job_handler.cc (revision 107156) |
+++ chrome/service/cloud_print/printer_job_handler.cc (working copy) |
@@ -51,26 +51,17 @@ |
shutting_down_(false), |
job_check_pending_(false), |
printer_update_pending_(true), |
- printer_delete_pending_(false), |
task_in_progress_(false) { |
} |
bool PrinterJobHandler::Initialize() { |
- if (print_system_->IsValidPrinter( |
- printer_info_.printer_name)) { |
- printer_watcher_ = print_system_->CreatePrinterWatcher( |
- printer_info_.printer_name); |
- printer_watcher_->StartWatching(this); |
- CheckForJobs(kJobFetchReasonStartup); |
- } else { |
- // This printer does not exist any more. Check if we should delete it from |
- // the server. |
- bool delete_from_server = false; |
- delegate_->OnPrinterNotFound(printer_info_.printer_name, |
- &delete_from_server); |
- if (delete_from_server) |
- OnPrinterDeleted(); |
- } |
+ if (!print_system_->IsValidPrinter(printer_info_.printer_name)) |
+ return false; |
+ |
+ printer_watcher_ = print_system_->CreatePrinterWatcher( |
+ printer_info_.printer_name); |
+ printer_watcher_->StartWatching(this); |
+ CheckForJobs(kJobFetchReasonStartup); |
return true; |
} |
@@ -86,6 +77,10 @@ |
print_thread_.Stop(); |
} |
+std::string PrinterJobHandler::GetPrinterName() const { |
+ return printer_info_.printer_name; |
+} |
+ |
void PrinterJobHandler::Start() { |
VLOG(1) << "CP_PROXY: Start printer job handler, id: " |
<< printer_info_cloud_.printer_id |
@@ -99,18 +94,6 @@ |
if (!shutting_down_) { |
// Check if we have work to do. |
if (HavePendingTasks()) { |
- if (printer_delete_pending_) { |
- printer_delete_pending_ = false; |
- task_in_progress_ = true; |
- SetNextJSONHandler(&PrinterJobHandler::HandlePrinterDeleteResponse); |
- request_ = new CloudPrintURLFetcher; |
- request_->StartGetRequest( |
- CloudPrintHelpers::GetUrlForPrinterDelete( |
- cloud_print_server_url_, printer_info_cloud_.printer_id), |
- this, |
- kCloudPrintAPIMaxRetryCount, |
- std::string()); |
- } |
if (!task_in_progress_ && printer_update_pending_) { |
printer_update_pending_ = false; |
task_in_progress_ = UpdatePrinterInfo(); |
@@ -316,10 +299,7 @@ |
DictionaryValue* json_data, |
bool succeeded) { |
DCHECK(next_json_data_handler_); |
- return (this->*next_json_data_handler_)(source, |
- url, |
- json_data, |
- succeeded); |
+ return (this->*next_json_data_handler_)(source, url, json_data, succeeded); |
} |
void PrinterJobHandler::OnRequestGiveUp() { |
@@ -333,10 +313,17 @@ |
JOB_DOWNLOAD_FAILED)); |
} |
-void PrinterJobHandler::OnRequestAuthError() { |
+CloudPrintURLFetcher::ResponseAction PrinterJobHandler::OnRequestAuthError() { |
+ // TODO(gene): We might consider stop processing if we get auth error here. |
OnAuthError(); |
+ // Continue processing as a network error. |
+ return CloudPrintURLFetcher::CONTINUE_PROCESSING; |
} |
+std::string PrinterJobHandler::GetAuthHeader() { |
+ return CloudPrintHelpers::GetCloudPrintAuthHeader(); |
+} |
+ |
// JobStatusUpdater::Delegate implementation |
bool PrinterJobHandler::OnJobCompleted(JobStatusUpdater* updater) { |
bool ret = false; |
@@ -357,11 +344,8 @@ |
} |
void PrinterJobHandler::OnPrinterDeleted() { |
- printer_delete_pending_ = true; |
- if (!task_in_progress_) { |
- MessageLoop::current()->PostTask( |
- FROM_HERE, NewRunnableMethod(this, &PrinterJobHandler::Start)); |
- } |
+ if (delegate_) |
+ delegate_->OnPrinterDeleted(printer_info_cloud_.printer_id); |
} |
void PrinterJobHandler::OnPrinterChanged() { |
@@ -399,20 +383,6 @@ |
} |
CloudPrintURLFetcher::ResponseAction |
-PrinterJobHandler::HandlePrinterDeleteResponse( |
- const content::URLFetcher* source, |
- const GURL& url, |
- DictionaryValue* json_data, |
- bool succeeded) { |
- VLOG(1) << "CP_PROXY: Handler printer delete response, id: " |
- << printer_info_cloud_.printer_id; |
- // The printer has been deleted. Shutdown the handler class. |
- MessageLoop::current()->PostTask( |
- FROM_HERE, NewRunnableMethod(this, &PrinterJobHandler::Shutdown)); |
- return CloudPrintURLFetcher::STOP_PROCESSING; |
-} |
- |
-CloudPrintURLFetcher::ResponseAction |
PrinterJobHandler::HandleJobMetadataResponse( |
const content::URLFetcher* source, |
const GURL& url, |
@@ -596,10 +566,6 @@ |
// remove the updater object from the list. |
job_status_updater_list_.front()->Stop(); |
} |
- if (delegate_) { |
- delegate_->OnPrinterJobHandlerShutdown(this, |
- printer_info_cloud_.printer_id); |
- } |
} |
void PrinterJobHandler::UpdateJobStatus(cloud_print::PrintJobStatus status, |
@@ -640,8 +606,7 @@ |
} |
bool PrinterJobHandler::HavePendingTasks() { |
- return (job_check_pending_ || printer_update_pending_ || |
- printer_delete_pending_); |
+ return (job_check_pending_ || printer_update_pending_); |
} |
void PrinterJobHandler::FailedFetchingJobData() { |