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

Unified Diff: cloud_print/gcp20/prototype/cloud_print_requester.cc

Issue 20238002: GCP2.0 Device: XMPP (without pings). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@DEPS-jingle
Patch Set: Created 7 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: cloud_print/gcp20/prototype/cloud_print_requester.cc
diff --git a/cloud_print/gcp20/prototype/cloud_print_requester.cc b/cloud_print/gcp20/prototype/cloud_print_requester.cc
index f0d192618c00243b9ca6a803fe751d536e0b13b8..1154d62b38f5b867fad08e725c8bd4008a2e3807 100644
--- a/cloud_print/gcp20/prototype/cloud_print_requester.cc
+++ b/cloud_print/gcp20/prototype/cloud_print_requester.cc
@@ -9,13 +9,13 @@
#include "base/message_loop/message_loop.h"
#include "base/rand_util.h"
#include "base/strings/stringprintf.h"
+#include "cloud_print/gcp20/prototype/cloud_print_url_request_context_getter.h"
#include "google_apis/google_api_keys.h"
#include "net/base/mime_util.h"
#include "net/base/url_util.h"
+#include "net/http/http_status_code.h"
#include "net/proxy/proxy_config_service_fixed.h"
#include "net/url_request/url_request_context.h"
-#include "net/url_request/url_request_context_builder.h"
-#include "net/url_request/url_request_context_getter.h"
#include "url/gurl.h"
const char kCloudPrintUrl[] = "https://www.google.com/cloudprint";
@@ -51,44 +51,6 @@ GURL CreateControlUrl(const std::string& job_id, const std::string& status) {
using cloud_print_response_parser::Job;
-// Used to return a dummy context, which lives on the message loop
-// given in the constructor.
-class CloudPrintURLRequestContextGetter : public net::URLRequestContextGetter {
- public:
- // |task_runner| must not be NULL.
- explicit CloudPrintURLRequestContextGetter(
- scoped_refptr<base::SingleThreadTaskRunner> task_runner) {
- DCHECK(task_runner);
- network_task_runner_ = task_runner;
- }
-
- // URLRequestContextGetter implementation.
- virtual net::URLRequestContext* GetURLRequestContext() OVERRIDE {
- if (!context_) {
- net::URLRequestContextBuilder builder;
-#if defined(OS_LINUX) || defined(OS_ANDROID)
- builder.set_proxy_config_service(
- new net::ProxyConfigServiceFixed(net::ProxyConfig()));
-#endif // defined(OS_LINUX) || defined(OS_ANDROID)
- context_.reset(builder.Build());
- }
- return context_.get();
- }
-
- virtual scoped_refptr<base::SingleThreadTaskRunner>
- GetNetworkTaskRunner() const OVERRIDE {
- return network_task_runner_;
- }
-
- protected:
- virtual ~CloudPrintURLRequestContextGetter() {}
-
- scoped_refptr<base::SingleThreadTaskRunner> network_task_runner_;
- scoped_ptr<net::URLRequestContext> context_;
-
- DISALLOW_COPY_AND_ASSIGN(CloudPrintURLRequestContextGetter);
-};
-
CloudPrintRequester::CloudPrintRequester(
scoped_refptr<base::SingleThreadTaskRunner> task_runner,
Delegate* delegate)
@@ -143,33 +105,29 @@ void CloudPrintRequester::StartRegistration(const std::string& proxy_id,
data,
data_mimetype,
base::Bind(&CloudPrintRequester::ParseRegisterStart, AsWeakPtr()));
- request_->Run(access_token_, context_getter_);
+ request_->Run(delegate_->GetAccessToken(), context_getter_);
}
void CloudPrintRequester::CompleteRegistration() {
request_ = CreateGet(
GURL(polling_url_ + oauth_client_info_.client_id),
base::Bind(&CloudPrintRequester::ParseRegisterComplete, AsWeakPtr()));
- request_->Run(access_token_, context_getter_);
+ request_->Run(delegate_->GetAccessToken(), context_getter_);
}
-void CloudPrintRequester::FetchPrintJobs(const std::string& refresh_token,
- const std::string& device_id) {
+void CloudPrintRequester::FetchPrintJobs(const std::string& device_id) {
VLOG(3) << "Function: " << __FUNCTION__;
if (IsBusy())
return;
- if (access_token_.empty()) {
- UpdateAccesstoken(refresh_token);
- return;
- }
+ DCHECK(!delegate_->GetAccessToken().empty());
VLOG(3) << "Function: " << __FUNCTION__ <<
": request created";
request_ = CreateGet(
CreateFetchUrl(device_id),
base::Bind(&CloudPrintRequester::ParseFetch, AsWeakPtr()));
- request_->Run(access_token_, context_getter_);
+ request_->Run(delegate_->GetAccessToken(), context_getter_);
}
void CloudPrintRequester::UpdateAccesstoken(const std::string& refresh_token) {
@@ -178,7 +136,6 @@ void CloudPrintRequester::UpdateAccesstoken(const std::string& refresh_token) {
gaia_.reset(new gaia::GaiaOAuthClient(context_getter_.get()));
gaia_->RefreshToken(oauth_client_info_, refresh_token,
std::vector<std::string>(), kGaiaMaxRetries, this);
- delegate_->OnServerError("Access token requested.");
}
void CloudPrintRequester::RequestPrintJob(const Job& job) {
@@ -187,7 +144,7 @@ void CloudPrintRequester::RequestPrintJob(const Job& job) {
request_ = CreateGet(
CreateControlUrl(current_print_job_->job_id, "IN_PROGRESS"),
base::Bind(&CloudPrintRequester::ParsePrintJobInProgress, AsWeakPtr()));
- request_->Run(access_token_, context_getter_);
+ request_->Run(delegate_->GetAccessToken(), context_getter_);
}
void CloudPrintRequester::SendPrintJobDone(const std::string& job_id) {
@@ -195,7 +152,7 @@ void CloudPrintRequester::SendPrintJobDone(const std::string& job_id) {
request_ = CreateGet(
CreateControlUrl(job_id, "DONE"),
base::Bind(&CloudPrintRequester::ParsePrintJobDone, AsWeakPtr()));
- request_->Run(access_token_, context_getter_);
+ request_->Run(delegate_->GetAccessToken(), context_getter_);
}
void CloudPrintRequester::OnFetchComplete(const std::string& response) {
@@ -212,6 +169,8 @@ void CloudPrintRequester::OnFetchError(const std::string& server_api,
EraseRequest();
current_print_job_.reset();
delegate_->OnServerError("Fetch error");
+
+ // TODO(maksymb): |server_api| and other
NOTIMPLEMENTED();
}
@@ -227,8 +186,8 @@ void CloudPrintRequester::OnGetTokensResponse(const std::string& refresh_token,
int expires_in_seconds) {
VLOG(3) << "Function: " << __FUNCTION__;
gaia_.reset();
- access_token_ = access_token;
- delegate_->OnGetAuthCodeResponseParsed(refresh_token);
+ delegate_->OnGetAuthCodeResponseParsed(refresh_token,
+ access_token, expires_in_seconds);
}
void CloudPrintRequester::OnRefreshTokenResponse(
@@ -236,20 +195,24 @@ void CloudPrintRequester::OnRefreshTokenResponse(
int expires_in_seconds) {
VLOG(3) << "Function: " << __FUNCTION__;
gaia_.reset();
- access_token_ = access_token;
- LOG(INFO) << "New accesstoken: " << access_token;
+ delegate_->OnAccesstokenReceviced(access_token, expires_in_seconds);
}
void CloudPrintRequester::OnOAuthError() {
VLOG(3) << "Function: " << __FUNCTION__;
gaia_.reset();
- NOTIMPLEMENTED();
+ delegate_->OnAuthError();
}
void CloudPrintRequester::OnNetworkError(int response_code) {
VLOG(3) << "Function: " << __FUNCTION__;
gaia_.reset();
- NOTIMPLEMENTED();
+
+ if (response_code == net::HTTP_FORBIDDEN) {
+ // TODO(maksymb): delegate_->OnPrinterDeleted();
+ } else {
+ delegate_->OnNetworkError();
+ }
}
scoped_ptr<CloudPrintRequest> CloudPrintRequester::CreateGet(
@@ -308,12 +271,16 @@ void CloudPrintRequester::ParseRegisterComplete(const std::string& response) {
std::string error_description;
std::string authorization_code;
+ std::string xmpp_jid;
bool success = cloud_print_response_parser::ParseRegisterCompleteResponse(
response,
&error_description,
- &authorization_code);
+ &authorization_code,
+ &xmpp_jid);
if (success) {
+ delegate_->OnXmppJidReceived(xmpp_jid);
+
gaia_.reset(new gaia::GaiaOAuthClient(context_getter_.get()));
gaia_->GetTokensFromAuthCode(oauth_client_info_, authorization_code,
kGaiaMaxRetries, this);
@@ -348,7 +315,7 @@ void CloudPrintRequester::ParseGetPrintJobTicket(const std::string& response) {
GURL(current_print_job_->file_url),
base::Bind(&CloudPrintRequester::ParseGetPrintJobData, AsWeakPtr()));
request_->AddHeader("Accept: \"application/pdf\"");
- request_->Run(access_token_, context_getter_);
+ request_->Run(delegate_->GetAccessToken(), context_getter_);
}
void CloudPrintRequester::ParseGetPrintJobData(const std::string& response) {
@@ -370,6 +337,6 @@ void CloudPrintRequester::ParsePrintJobInProgress(const std::string& response) {
request_ = CreateGet(
GURL(current_print_job_->ticket_url),
base::Bind(&CloudPrintRequester::ParseGetPrintJobTicket, AsWeakPtr()));
- request_->Run(access_token_, context_getter_);
+ request_->Run(delegate_->GetAccessToken(), context_getter_);
}
« no previous file with comments | « cloud_print/gcp20/prototype/cloud_print_requester.h ('k') | cloud_print/gcp20/prototype/cloud_print_response_parser.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698