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

Side by Side Diff: chrome/browser/local_discovery/privet_http_impl.cc

Issue 61643021: If a job fails when sending a PDF, retry with a PWG raster (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 1 month 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
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/browser/local_discovery/privet_http_impl.h" 5 #include "chrome/browser/local_discovery/privet_http_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
(...skipping 530 matching lines...) Expand 10 before | Expand all | Expand 10 after
541 delegate_->OnPrivetPrintingRequestPWGRaster(this); 541 delegate_->OnPrivetPrintingRequestPWGRaster(this);
542 } 542 }
543 543
544 void PrivetLocalPrintOperationImpl::OnSubmitdocResponse( 544 void PrivetLocalPrintOperationImpl::OnSubmitdocResponse(
545 bool has_error, 545 bool has_error,
546 const base::DictionaryValue* value) { 546 const base::DictionaryValue* value) {
547 std::string error; 547 std::string error;
548 // This error is only relevant in the case of extended workflow: 548 // This error is only relevant in the case of extended workflow:
549 // If the print job ID is invalid, retry createjob and submitdoc, 549 // If the print job ID is invalid, retry createjob and submitdoc,
550 // rather than simply retrying the current request. 550 // rather than simply retrying the current request.
551 if (has_error) { 551 if (has_error && value->GetString(kPrivetKeyError, &error)) {
552 if (has_extended_workflow_ && 552 if (has_extended_workflow_ &&
553 value->GetString(kPrivetKeyError, &error) &&
554 error == kPrivetErrorInvalidPrintJob && 553 error == kPrivetErrorInvalidPrintJob &&
555 invalid_job_retries_ < kPrivetLocalPrintMaxRetries) { 554 invalid_job_retries_ < kPrivetLocalPrintMaxRetries) {
556 invalid_job_retries_++; 555 invalid_job_retries_++;
557 556
558 int timeout = kPrivetLocalPrintDefaultTimeout; 557 int timeout = kPrivetLocalPrintDefaultTimeout;
559 value->GetInteger(kPrivetKeyTimeout, &timeout); 558 value->GetInteger(kPrivetKeyTimeout, &timeout);
560 559
561 double random_scaling_factor = 560 double random_scaling_factor =
562 1 + base::RandDouble() * kPrivetMaximumTimeRandomAddition; 561 1 + base::RandDouble() * kPrivetMaximumTimeRandomAddition;
563 562
564 timeout = static_cast<int>(timeout * random_scaling_factor); 563 timeout = static_cast<int>(timeout * random_scaling_factor);
565 564
566 timeout = std::max(timeout, kPrivetMinimumTimeout); 565 timeout = std::max(timeout, kPrivetMinimumTimeout);
567 566
568 base::MessageLoop::current()->PostDelayedTask( 567 base::MessageLoop::current()->PostDelayedTask(
569 FROM_HERE, base::Bind(&PrivetLocalPrintOperationImpl::DoCreatejob, 568 FROM_HERE, base::Bind(&PrivetLocalPrintOperationImpl::DoCreatejob,
570 weak_factory_.GetWeakPtr()), 569 weak_factory_.GetWeakPtr()),
571 base::TimeDelta::FromSeconds(timeout)); 570 base::TimeDelta::FromSeconds(timeout));
571 } else if (use_pdf_ && error == kPrivetErrorInvalidDocumentType) {
572 use_pdf_ = false;
573 delegate_->OnPrivetPrintingRequestPWGRaster(this);
572 } else { 574 } else {
573 delegate_->OnPrivetPrintingError(this, 200); 575 delegate_->OnPrivetPrintingError(this, 200);
574 } 576 }
575 577
576 return; 578 return;
577 } 579 }
578 580
579
580 // If we've gotten this far, there are no errors, so we've effectively 581 // If we've gotten this far, there are no errors, so we've effectively
581 // succeeded. 582 // succeeded.
582 delegate_->OnPrivetPrintingDone(this); 583 delegate_->OnPrivetPrintingDone(this);
583 } 584 }
584 585
585 void PrivetLocalPrintOperationImpl::OnCreatejobResponse( 586 void PrivetLocalPrintOperationImpl::OnCreatejobResponse(
586 bool has_error, 587 bool has_error,
587 const base::DictionaryValue* value) { 588 const base::DictionaryValue* value) {
588 if (has_error) { 589 if (has_error) {
589 delegate_->OnPrivetPrintingError(this, 200); 590 delegate_->OnPrivetPrintingError(this, 200);
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
652 DCHECK(!started_); 653 DCHECK(!started_);
653 jobname_ = jobname; 654 jobname_ = jobname;
654 } 655 }
655 656
656 void PrivetLocalPrintOperationImpl::SetOffline(bool offline) { 657 void PrivetLocalPrintOperationImpl::SetOffline(bool offline) {
657 DCHECK(!started_); 658 DCHECK(!started_);
658 offline_ = offline; 659 offline_ = offline;
659 } 660 }
660 661
661 void PrivetLocalPrintOperationImpl::SendDataInternal() { 662 void PrivetLocalPrintOperationImpl::SendDataInternal() {
662 if (has_extended_workflow_ && !ticket_.empty()) { 663 if (has_extended_workflow_ && !ticket_.empty() && jobid_.empty()) {
663 DoCreatejob(); 664 DoCreatejob();
664 } else { 665 } else {
665 DoSubmitdoc(); 666 DoSubmitdoc();
666 } 667 }
667 } 668 }
668 669
669 PrivetHTTPClientImpl::PrivetHTTPClientImpl( 670 PrivetHTTPClientImpl::PrivetHTTPClientImpl(
670 const std::string& name, 671 const std::string& name,
671 const net::HostPortPair& host_port, 672 const net::HostPortPair& host_port,
672 net::URLRequestContextGetter* request_context) 673 net::URLRequestContextGetter* request_context)
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
764 TokenCallbackVector token_callbacks; 765 TokenCallbackVector token_callbacks;
765 token_callbacks_.swap(token_callbacks); 766 token_callbacks_.swap(token_callbacks);
766 767
767 for (TokenCallbackVector::iterator i = token_callbacks.begin(); 768 for (TokenCallbackVector::iterator i = token_callbacks.begin();
768 i != token_callbacks.end(); i++) { 769 i != token_callbacks.end(); i++) {
769 i->Run(token); 770 i->Run(token);
770 } 771 }
771 } 772 }
772 773
773 } // namespace local_discovery 774 } // namespace local_discovery
OLDNEW
« no previous file with comments | « chrome/browser/local_discovery/privet_constants.cc ('k') | chrome/browser/local_discovery/privet_http_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698