summaryrefslogtreecommitdiffstats
path: root/cloud_print/gcp20/prototype/print_job_handler.cc
diff options
context:
space:
mode:
authordominicc@google.com <dominicc@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-20 06:56:58 +0000
committerdominicc@google.com <dominicc@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-20 06:56:58 +0000
commit8fa1a691e881391cccffc3963ffe3238a687c8b9 (patch)
tree53a9830b01927c2e2e2b8c1ca27e829aa153b7eb /cloud_print/gcp20/prototype/print_job_handler.cc
parent6537756fc0ddf898c6f096c10e137c5ca41504c2 (diff)
downloadchromium_src-8fa1a691e881391cccffc3963ffe3238a687c8b9.zip
chromium_src-8fa1a691e881391cccffc3963ffe3238a687c8b9.tar.gz
chromium_src-8fa1a691e881391cccffc3963ffe3238a687c8b9.tar.bz2
Revert "GCP2.0 Device: Adding advanced printing."
I believe this broke Win build: <http://build.chromium.org/p/chromium/builders/Win/builds/16915> TBR=maksymb@chromium.org BUG= Review URL: https://codereview.chromium.org/23344002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@218419 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cloud_print/gcp20/prototype/print_job_handler.cc')
-rw-r--r--cloud_print/gcp20/prototype/print_job_handler.cc223
1 files changed, 12 insertions, 211 deletions
diff --git a/cloud_print/gcp20/prototype/print_job_handler.cc b/cloud_print/gcp20/prototype/print_job_handler.cc
index 7bbc1af..7c28560 100644
--- a/cloud_print/gcp20/prototype/print_job_handler.cc
+++ b/cloud_print/gcp20/prototype/print_job_handler.cc
@@ -4,66 +4,22 @@
#include "cloud_print/gcp20/prototype/print_job_handler.h"
-#include "base/bind.h"
-#include "base/command_line.h"
#include "base/file_util.h"
#include "base/format_macros.h"
#include "base/guid.h"
#include "base/logging.h"
-#include "base/message_loop/message_loop.h"
-#include "base/rand_util.h"
#include "base/strings/string_util.h"
#include "base/strings/stringprintf.h"
#include "base/time/time.h"
namespace {
-const int kDraftExpirationSec = 10;
-const int kLocalPrintJobExpirationSec = 20;
-const int kErrorTimeoutSec = 30;
-
-// Errors simulation constants:
-const double kPaperJamProbability = 0.2;
-const int kTooManyDraftsTimeout = 10;
-const int kMaxDrafts = 5;
+const int kLocalPrintJobInitExpiration = 5*60; // in seconds
const base::FilePath::CharType kJobsPath[] = FILE_PATH_LITERAL("printjobs");
-bool ValidateTicket(const std::string& ticket) {
- return true;
-}
-
-std::string GenerateId() {
- return StringToLowerASCII(base::GenerateGUID());
-}
-
} // namespace
-struct PrintJobHandler::LocalPrintJobExtended {
- LocalPrintJobExtended(const LocalPrintJob& job, const std::string& ticket)
- : data(job),
- ticket(ticket),
- state(LocalPrintJob::STATE_DRAFT) {}
- LocalPrintJobExtended() : state(LocalPrintJob::STATE_DRAFT) {}
- ~LocalPrintJobExtended() {}
-
- LocalPrintJob data;
- std::string ticket;
- LocalPrintJob::State state;
- base::Time expiration;
-};
-
-struct PrintJobHandler::LocalPrintJobDraft {
- LocalPrintJobDraft() {}
- LocalPrintJobDraft(const std::string& ticket, const base::Time& expiration)
- : ticket(ticket),
- expiration(expiration) {}
- ~LocalPrintJobDraft() {}
-
- std::string ticket;
- base::Time expiration;
-};
-
using base::StringPrintf;
PrintJobHandler::PrintJobHandler() {
@@ -72,87 +28,11 @@ PrintJobHandler::PrintJobHandler() {
PrintJobHandler::~PrintJobHandler() {
}
-LocalPrintJob::CreateResult PrintJobHandler::CreatePrintJob(
- const std::string& ticket,
- std::string* job_id_out,
- // TODO(maksymb): Use base::TimeDelta for timeout values
- int* expires_in_out,
- // TODO(maksymb): Use base::TimeDelta for timeout values
- int* error_timeout_out,
- std::string* error_description) {
- if (!ValidateTicket(ticket))
- return LocalPrintJob::CREATE_INVALID_TICKET;
-
- // Let's simulate at least some errors just for testing.
- if (CommandLine::ForCurrentProcess()->HasSwitch("simulate-printing-errors")) {
- if (base::RandDouble() <= kPaperJamProbability) {
- *error_description = "Paper jam, try again";
- return LocalPrintJob::CREATE_PRINTER_ERROR;
- }
-
- if (drafts.size() > kMaxDrafts) { // Another simulation of error: business
- *error_timeout_out = kTooManyDraftsTimeout;
- return LocalPrintJob::CREATE_PRINTER_BUSY;
- }
- }
-
- std::string id = GenerateId();
- drafts[id] = LocalPrintJobDraft(
- ticket,
- base::Time::Now() + base::TimeDelta::FromSeconds(kDraftExpirationSec));
- base::MessageLoop::current()->PostDelayedTask(
- FROM_HERE,
- base::Bind(&PrintJobHandler::ForgetDraft, AsWeakPtr(), id),
- base::TimeDelta::FromSeconds(kDraftExpirationSec));
-
- *job_id_out = id;
- *expires_in_out = kDraftExpirationSec;
- return LocalPrintJob::CREATE_SUCCESS;
-}
-
LocalPrintJob::SaveResult PrintJobHandler::SaveLocalPrintJob(
const LocalPrintJob& job,
- std::string* job_id_out,
- int* expires_in_out,
- std::string* error_description_out,
- int* timeout_out) {
- std::string id;
- int expires_in;
-
- switch (CreatePrintJob(std::string(), &id, &expires_in,
- timeout_out, error_description_out)) {
- case LocalPrintJob::CREATE_INVALID_TICKET:
- NOTREACHED();
- return LocalPrintJob::SAVE_SUCCESS;
-
- case LocalPrintJob::CREATE_PRINTER_BUSY:
- return LocalPrintJob::SAVE_PRINTER_BUSY;
-
- case LocalPrintJob::CREATE_PRINTER_ERROR:
- return LocalPrintJob::SAVE_PRINTER_ERROR;
-
- case LocalPrintJob::CREATE_SUCCESS:
- *job_id_out = id;
- return CompleteLocalPrintJob(job, id, expires_in_out,
- error_description_out, timeout_out);
-
- default:
- NOTREACHED();
- return LocalPrintJob::SAVE_SUCCESS;
- }
-}
-
-LocalPrintJob::SaveResult PrintJobHandler::CompleteLocalPrintJob(
- const LocalPrintJob& job,
- const std::string& job_id,
- int* expires_in_out,
- std::string* error_description_out,
- int* timeout_out) {
- if (!drafts.count(job_id)) {
- *timeout_out = kErrorTimeoutSec;
- return LocalPrintJob::SAVE_INVALID_PRINT_JOB;
- }
-
+ std::string* job_id,
+ std::string* error_description,
+ int* timeout) {
std::string suffix = StringPrintf("%s:%s",
job.user_name.c_str(),
job.client_name.c_str());
@@ -166,50 +46,23 @@ LocalPrintJob::SaveResult PrintJobHandler::CompleteLocalPrintJob(
} else if (job.content_type == "image/jpeg") {
file_extension = "jpg";
} else {
- error_description_out->clear();
+ error_description->clear();
return LocalPrintJob::SAVE_INVALID_DOCUMENT_TYPE;
}
- CompleteDraft(job_id, job);
- std::map<std::string, LocalPrintJobExtended>::iterator current_job =
- jobs.find(job_id);
- if (!SavePrintJob(current_job->second.data.content,
- current_job->second.ticket,
- base::Time::Now(),
- StringPrintf("%s", job_id.c_str()),
- suffix,
- current_job->second.data.job_name, file_extension)) {
- SetJobState(job_id, LocalPrintJob::STATE_ABORTED);
- *error_description_out = "IO error";
+ std::string id = StringToLowerASCII(base::GenerateGUID());
+ if (!SavePrintJob(job.content, std::string(),
+ base::Time::Now(),
+ StringPrintf("%s", id.c_str()),
+ suffix, job.job_name, file_extension)) {
+ *error_description = "IO error";
return LocalPrintJob::SAVE_PRINTER_ERROR;
}
- SetJobState(job_id, LocalPrintJob::STATE_DONE);
- *expires_in_out = static_cast<int>(GetJobExpiration(job_id).InSeconds());
+ *job_id = id;
return LocalPrintJob::SAVE_SUCCESS;
}
-bool PrintJobHandler::GetJobState(const std::string& id,
- LocalPrintJob::Info* info_out) {
- using base::Time;
-
- std::map<std::string, LocalPrintJobDraft>::iterator draft = drafts.find(id);
- if (draft != drafts.end()) {
- info_out->state = LocalPrintJob::STATE_DRAFT;
- info_out->expires_in =
- static_cast<int>((draft->second.expiration - Time::Now()).InSeconds());
- return true;
- }
-
- std::map<std::string, LocalPrintJobExtended>::iterator job = jobs.find(id);
- if (job != jobs.end()) {
- info_out->state = job->second.state;
- info_out->expires_in = static_cast<int>(GetJobExpiration(id).InSeconds());
- return true;
- }
- return false;
-}
-
bool PrintJobHandler::SavePrintJob(const std::string& content,
const std::string& ticket,
const base::Time& create_time,
@@ -270,55 +123,3 @@ bool PrintJobHandler::SavePrintJob(const std::string& content,
return true;
}
-void PrintJobHandler::SetJobState(const std::string& id,
- LocalPrintJob::State state) {
- DCHECK(!drafts.count(id)) << "Draft should be completed at first";
-
- std::map<std::string, LocalPrintJobExtended>::iterator job = jobs.find(id);
- DCHECK(job != jobs.end());
- job->second.state = state;
- switch (state) {
- case LocalPrintJob::STATE_DRAFT:
- NOTREACHED();
- break;
- case LocalPrintJob::STATE_ABORTED:
- case LocalPrintJob::STATE_DONE:
- job->second.expiration =
- base::Time::Now() +
- base::TimeDelta::FromSeconds(kLocalPrintJobExpirationSec);
- base::MessageLoop::current()->PostDelayedTask(
- FROM_HERE,
- base::Bind(&PrintJobHandler::ForgetLocalJob, AsWeakPtr(), id),
- base::TimeDelta::FromSeconds(kLocalPrintJobExpirationSec));
- break;
- default:
- NOTREACHED();
- }
-}
-
-void PrintJobHandler::CompleteDraft(const std::string& id,
- const LocalPrintJob& job) {
- std::map<std::string, LocalPrintJobDraft>::iterator draft = drafts.find(id);
- if (draft != drafts.end()) {
- jobs[id] = LocalPrintJobExtended(job, draft->second.ticket);
- drafts.erase(draft);
- }
-}
-
-// TODO(maksymb): Use base::Time for expiration
-base::TimeDelta PrintJobHandler::GetJobExpiration(const std::string& id) const {
- DCHECK(jobs.count(id));
- base::Time expiration = jobs.at(id).expiration;
- if (expiration.is_null())
- return base::TimeDelta::FromSeconds(kLocalPrintJobExpirationSec);
- return expiration - base::Time::Now();
-}
-
-void PrintJobHandler::ForgetDraft(const std::string& id) {
- drafts.erase(id);
-}
-
-void PrintJobHandler::ForgetLocalJob(const std::string& id) {
- jobs.erase(id);
-}
-