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

Side by Side Diff: chrome/service/cloud_print/printer_job_handler.cc

Issue 12208089: Changing CloudPrintURLFetcher instantiation to be more testable (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Incorporated Gene's suggestions Created 7 years, 10 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
« no previous file with comments | « chrome/service/cloud_print/job_status_updater.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/printer_job_handler.h" 5 #include "chrome/service/cloud_print/printer_job_handler.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/file_util.h" 9 #include "base/file_util.h"
10 #include "base/json/json_reader.h" 10 #include "base/json/json_reader.h"
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 job_details_.tags_.clear(); 274 job_details_.tags_.clear();
275 ListValue* tags = NULL; 275 ListValue* tags = NULL;
276 if (job_data->GetList(kTagsValue, &tags)) { 276 if (job_data->GetList(kTagsValue, &tags)) {
277 for (size_t i = 0; i < tags->GetSize(); i++) { 277 for (size_t i = 0; i < tags->GetSize(); i++) {
278 std::string value; 278 std::string value;
279 if (tags->GetString(i, &value)) 279 if (tags->GetString(i, &value))
280 job_details_.tags_.push_back(value); 280 job_details_.tags_.push_back(value);
281 } 281 }
282 } 282 }
283 SetNextDataHandler(&PrinterJobHandler::HandlePrintTicketResponse); 283 SetNextDataHandler(&PrinterJobHandler::HandlePrintTicketResponse);
284 request_ = new CloudPrintURLFetcher; 284 request_ = CloudPrintURLFetcher::Create();
285 request_->StartGetRequest(GURL(print_ticket_url.c_str()), 285 request_->StartGetRequest(GURL(print_ticket_url.c_str()),
286 this, 286 this,
287 kCloudPrintAPIMaxRetryCount, 287 kCloudPrintAPIMaxRetryCount,
288 std::string()); 288 std::string());
289 } 289 }
290 } 290 }
291 } 291 }
292 // If no jobs are available, go to the Stop state. 292 // If no jobs are available, go to the Stop state.
293 if (!job_available) { 293 if (!job_available) {
294 VLOG(1) << "CP_CONNECTOR: Stopping printer job handler" 294 VLOG(1) << "CP_CONNECTOR: Stopping printer job handler"
295 << ", printer id: " << printer_info_cloud_.printer_id; 295 << ", printer id: " << printer_info_cloud_.printer_id;
296 MessageLoop::current()->PostTask( 296 MessageLoop::current()->PostTask(
297 FROM_HERE, base::Bind(&PrinterJobHandler::Stop, this)); 297 FROM_HERE, base::Bind(&PrinterJobHandler::Stop, this));
298 } 298 }
299 return CloudPrintURLFetcher::STOP_PROCESSING; 299 return CloudPrintURLFetcher::STOP_PROCESSING;
300 } 300 }
301 301
302 CloudPrintURLFetcher::ResponseAction 302 CloudPrintURLFetcher::ResponseAction
303 PrinterJobHandler::HandlePrintTicketResponse(const net::URLFetcher* source, 303 PrinterJobHandler::HandlePrintTicketResponse(const net::URLFetcher* source,
304 const GURL& url, 304 const GURL& url,
305 const std::string& data) { 305 const std::string& data) {
306 VLOG(1) << "CP_CONNECTOR: Handling print ticket response" 306 VLOG(1) << "CP_CONNECTOR: Handling print ticket response"
307 << ", printer id: " << printer_info_cloud_.printer_id; 307 << ", printer id: " << printer_info_cloud_.printer_id;
308 if (print_system_->ValidatePrintTicket(printer_info_.printer_name, data)) { 308 if (print_system_->ValidatePrintTicket(printer_info_.printer_name, data)) {
309 job_details_.print_ticket_ = data; 309 job_details_.print_ticket_ = data;
310 SetNextDataHandler(&PrinterJobHandler::HandlePrintDataResponse); 310 SetNextDataHandler(&PrinterJobHandler::HandlePrintDataResponse);
311 request_ = new CloudPrintURLFetcher; 311 request_ = CloudPrintURLFetcher::Create();
312 std::string accept_headers = "Accept: "; 312 std::string accept_headers = "Accept: ";
313 accept_headers += print_system_->GetSupportedMimeTypes(); 313 accept_headers += print_system_->GetSupportedMimeTypes();
314 request_->StartGetRequest(GURL(print_data_url_.c_str()), 314 request_->StartGetRequest(GURL(print_data_url_.c_str()),
315 this, 315 this,
316 kJobDataMaxRetryCount, 316 kJobDataMaxRetryCount,
317 accept_headers); 317 accept_headers);
318 } else { 318 } else {
319 // The print ticket was not valid. We are done here. 319 // The print ticket was not valid. We are done here.
320 FailedFetchingJobData(); 320 FailedFetchingJobData();
321 } 321 }
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 << ", task in progress: " << task_in_progress_; 415 << ", task in progress: " << task_in_progress_;
416 } 416 }
417 if (!task_in_progress_ && job_check_pending_) { 417 if (!task_in_progress_ && job_check_pending_) {
418 task_in_progress_ = true; 418 task_in_progress_ = true;
419 VLOG(1) << "CP_CONNECTOR: Changed task in progress" 419 VLOG(1) << "CP_CONNECTOR: Changed task in progress"
420 ", printer id: " << printer_info_cloud_.printer_id 420 ", printer id: " << printer_info_cloud_.printer_id
421 << ", task in progress: " << task_in_progress_; 421 << ", task in progress: " << task_in_progress_;
422 job_check_pending_ = false; 422 job_check_pending_ = false;
423 // We need to fetch any pending jobs for this printer 423 // We need to fetch any pending jobs for this printer
424 SetNextJSONHandler(&PrinterJobHandler::HandleJobMetadataResponse); 424 SetNextJSONHandler(&PrinterJobHandler::HandleJobMetadataResponse);
425 request_ = new CloudPrintURLFetcher; 425 request_ = CloudPrintURLFetcher::Create();
426 request_->StartGetRequest( 426 request_->StartGetRequest(
427 GetUrlForJobFetch( 427 GetUrlForJobFetch(
428 cloud_print_server_url_, printer_info_cloud_.printer_id, 428 cloud_print_server_url_, printer_info_cloud_.printer_id,
429 job_fetch_reason_), 429 job_fetch_reason_),
430 this, 430 this,
431 kCloudPrintAPIMaxRetryCount, 431 kCloudPrintAPIMaxRetryCount,
432 std::string()); 432 std::string());
433 last_job_fetch_time_ = base::TimeTicks::Now(); 433 last_job_fetch_time_ = base::TimeTicks::Now();
434 VLOG(1) << "CP_CONNECTOR: Last job fetch time" 434 VLOG(1) << "CP_CONNECTOR: Last job fetch time"
435 << ", printer name: " << printer_info_.printer_name.c_str() 435 << ", printer name: " << printer_info_.printer_name.c_str()
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
497 return; 497 return;
498 } 498 }
499 499
500 if (error == SUCCESS) { 500 if (error == SUCCESS) {
501 SetNextJSONHandler( 501 SetNextJSONHandler(
502 &PrinterJobHandler::HandleSuccessStatusUpdateResponse); 502 &PrinterJobHandler::HandleSuccessStatusUpdateResponse);
503 } else { 503 } else {
504 SetNextJSONHandler( 504 SetNextJSONHandler(
505 &PrinterJobHandler::HandleFailureStatusUpdateResponse); 505 &PrinterJobHandler::HandleFailureStatusUpdateResponse);
506 } 506 }
507 request_ = new CloudPrintURLFetcher; 507 request_ = CloudPrintURLFetcher::Create();
508 request_->StartGetRequest(GetUrlForJobStatusUpdate(cloud_print_server_url_, 508 request_->StartGetRequest(GetUrlForJobStatusUpdate(cloud_print_server_url_,
509 job_details_.job_id_, 509 job_details_.job_id_,
510 status), 510 status),
511 this, 511 this,
512 kCloudPrintAPIMaxRetryCount, 512 kCloudPrintAPIMaxRetryCount,
513 std::string()); 513 std::string());
514 } 514 }
515 515
516 void PrinterJobHandler::SetNextJSONHandler(JSONDataHandler handler) { 516 void PrinterJobHandler::SetNextJSONHandler(JSONDataHandler handler) {
517 next_json_data_handler_ = handler; 517 next_json_data_handler_ = handler;
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
645 base::StringPrintf("%d", printer_info.printer_status), mime_boundary, 645 base::StringPrintf("%d", printer_info.printer_status), mime_boundary,
646 std::string(), &post_data); 646 std::string(), &post_data);
647 } 647 }
648 printer_info_ = printer_info; 648 printer_info_ = printer_info;
649 if (!post_data.empty()) { 649 if (!post_data.empty()) {
650 // Terminate the request body 650 // Terminate the request body
651 post_data.append("--" + mime_boundary + "--\r\n"); 651 post_data.append("--" + mime_boundary + "--\r\n");
652 std::string mime_type("multipart/form-data; boundary="); 652 std::string mime_type("multipart/form-data; boundary=");
653 mime_type += mime_boundary; 653 mime_type += mime_boundary;
654 SetNextJSONHandler(&PrinterJobHandler::HandlePrinterUpdateResponse); 654 SetNextJSONHandler(&PrinterJobHandler::HandlePrinterUpdateResponse);
655 request_ = new CloudPrintURLFetcher; 655 request_ = CloudPrintURLFetcher::Create();
656 request_->StartPostRequest( 656 request_->StartPostRequest(
657 GetUrlForPrinterUpdate( 657 GetUrlForPrinterUpdate(
658 cloud_print_server_url_, printer_info_cloud_.printer_id), 658 cloud_print_server_url_, printer_info_cloud_.printer_id),
659 this, 659 this,
660 kCloudPrintAPIMaxRetryCount, 660 kCloudPrintAPIMaxRetryCount,
661 mime_type, 661 mime_type,
662 post_data, 662 post_data,
663 std::string()); 663 std::string());
664 } else { 664 } else {
665 // We are done here. Go to the Stop state 665 // We are done here. Go to the Stop state
(...skipping 25 matching lines...) Expand all
691 job_details.print_data_mime_type_, 691 job_details.print_data_mime_type_,
692 printer_name, 692 printer_name,
693 UTF16ToUTF8(document_name), 693 UTF16ToUTF8(document_name),
694 job_details.tags_, 694 job_details.tags_,
695 this)) { 695 this)) {
696 OnJobSpoolFailed(); 696 OnJobSpoolFailed();
697 } 697 }
698 } 698 }
699 699
700 } // namespace cloud_print 700 } // namespace cloud_print
OLDNEW
« no previous file with comments | « chrome/service/cloud_print/job_status_updater.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698