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

Unified Diff: chrome/browser/local_discovery/privet_http_impl.cc

Issue 1553333002: Move cloud print specific files out of local_discovery (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@moveprn
Patch Set: Created 4 years, 11 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: chrome/browser/local_discovery/privet_http_impl.cc
diff --git a/chrome/browser/local_discovery/privet_http_impl.cc b/chrome/browser/local_discovery/privet_http_impl.cc
deleted file mode 100644
index 1a725375a5dcf32c0444bcb2529038384fc7a92e..0000000000000000000000000000000000000000
--- a/chrome/browser/local_discovery/privet_http_impl.cc
+++ /dev/null
@@ -1,804 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/local_discovery/privet_http_impl.h"
-
-#include <stddef.h>
-#include <algorithm>
-#include <utility>
-#include <vector>
-
-#include "base/bind.h"
-#include "base/command_line.h"
-#include "base/location.h"
-#include "base/rand_util.h"
-#include "base/strings/string_number_conversions.h"
-#include "base/strings/utf_string_conversions.h"
-#include "base/thread_task_runner_handle.h"
-#include "chrome/browser/extensions/api/gcd_private/privet_v3_context_getter.h"
-#include "chrome/browser/local_discovery/privet_constants.h"
-#include "chrome/common/chrome_content_client.h"
-#include "chrome/common/chrome_switches.h"
-#include "chrome/common/cloud_print/cloud_print_constants.h"
-#include "net/base/url_util.h"
-#include "url/gurl.h"
-
-#if defined(ENABLE_PRINT_PREVIEW)
-#include "chrome/browser/local_discovery/pwg_raster_converter.h"
-#include "components/cloud_devices/common/printer_description.h"
-#include "printing/pdf_render_settings.h"
-#include "printing/pwg_raster_settings.h"
-#include "ui/gfx/text_elider.h"
-#endif // ENABLE_PRINT_PREVIEW
-
-namespace local_discovery {
-
-namespace {
-
-const char kUrlPlaceHolder[] = "http://host/";
-const char kPrivetRegisterActionArgName[] = "action";
-const char kPrivetRegisterUserArgName[] = "user";
-
-const int kPrivetCancelationTimeoutSeconds = 3;
-
-#if defined(ENABLE_PRINT_PREVIEW)
-const char kPrivetURLKeyUserName[] = "user_name";
-const char kPrivetURLKeyClientName[] = "client_name";
-const char kPrivetURLKeyJobname[] = "job_name";
-const char kPrivetURLKeyOffline[] = "offline";
-const char kPrivetURLValueOffline[] = "1";
-const char kPrivetURLValueClientName[] = "Chrome";
-
-const char kPrivetContentTypePDF[] = "application/pdf";
-const char kPrivetContentTypePWGRaster[] = "image/pwg-raster";
-const char kPrivetContentTypeAny[] = "*/*";
-
-const char kPrivetKeyJobID[] = "job_id";
-
-const int kPrivetLocalPrintMaxRetries = 2;
-const int kPrivetLocalPrintDefaultTimeout = 5;
-
-const size_t kPrivetLocalPrintMaxJobNameLength = 64;
-#endif // ENABLE_PRINT_PREVIEW
-
-GURL CreatePrivetURL(const std::string& path) {
- GURL url(kUrlPlaceHolder);
- GURL::Replacements replacements;
- replacements.SetPathStr(path);
- return url.ReplaceComponents(replacements);
-}
-
-GURL CreatePrivetRegisterURL(const std::string& action,
- const std::string& user) {
- GURL url = CreatePrivetURL(kPrivetRegisterPath);
- url = net::AppendQueryParameter(url, kPrivetRegisterActionArgName, action);
- return net::AppendQueryParameter(url, kPrivetRegisterUserArgName, user);
-}
-
-GURL CreatePrivetParamURL(const std::string& path,
- const std::string& query_params) {
- GURL url(kUrlPlaceHolder);
- GURL::Replacements replacements;
- replacements.SetPathStr(path);
- if (!query_params.empty()) {
- replacements.SetQueryStr(query_params);
- }
- return url.ReplaceComponents(replacements);
-}
-
-} // namespace
-
-PrivetInfoOperationImpl::PrivetInfoOperationImpl(
- PrivetHTTPClient* privet_client,
- const PrivetJSONOperation::ResultCallback& callback)
- : privet_client_(privet_client), callback_(callback) {
-}
-
-PrivetInfoOperationImpl::~PrivetInfoOperationImpl() {
-}
-
-void PrivetInfoOperationImpl::Start() {
- url_fetcher_ = privet_client_->CreateURLFetcher(
- CreatePrivetURL(kPrivetInfoPath), net::URLFetcher::GET, this);
-
- url_fetcher_->DoNotRetryOnTransientError();
- url_fetcher_->SendEmptyPrivetToken();
-
- url_fetcher_->Start();
-}
-
-PrivetHTTPClient* PrivetInfoOperationImpl::GetHTTPClient() {
- return privet_client_;
-}
-
-void PrivetInfoOperationImpl::OnError(PrivetURLFetcher* fetcher,
- PrivetURLFetcher::ErrorType error) {
- callback_.Run(NULL);
-}
-
-void PrivetInfoOperationImpl::OnParsedJson(PrivetURLFetcher* fetcher,
- const base::DictionaryValue& value,
- bool has_error) {
- callback_.Run(&value);
-}
-
-PrivetRegisterOperationImpl::PrivetRegisterOperationImpl(
- PrivetHTTPClient* privet_client,
- const std::string& user,
- PrivetRegisterOperation::Delegate* delegate)
- : user_(user),
- delegate_(delegate),
- privet_client_(privet_client),
- ongoing_(false) {
-}
-
-PrivetRegisterOperationImpl::~PrivetRegisterOperationImpl() {
-}
-
-void PrivetRegisterOperationImpl::Start() {
- ongoing_ = true;
- next_response_handler_ =
- base::Bind(&PrivetRegisterOperationImpl::StartResponse,
- base::Unretained(this));
- SendRequest(kPrivetActionStart);
-}
-
-void PrivetRegisterOperationImpl::Cancel() {
- url_fetcher_.reset();
-
- if (ongoing_) {
- // Owned by the message loop.
- Cancelation* cancelation = new Cancelation(privet_client_, user_);
-
- base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
- FROM_HERE,
- base::Bind(&PrivetRegisterOperationImpl::Cancelation::Cleanup,
- base::Owned(cancelation)),
- base::TimeDelta::FromSeconds(kPrivetCancelationTimeoutSeconds));
-
- ongoing_ = false;
- }
-}
-
-void PrivetRegisterOperationImpl::CompleteRegistration() {
- next_response_handler_ =
- base::Bind(&PrivetRegisterOperationImpl::CompleteResponse,
- base::Unretained(this));
- SendRequest(kPrivetActionComplete);
-}
-
-PrivetHTTPClient* PrivetRegisterOperationImpl::GetHTTPClient() {
- return privet_client_;
-}
-
-void PrivetRegisterOperationImpl::OnError(PrivetURLFetcher* fetcher,
- PrivetURLFetcher::ErrorType error) {
- ongoing_ = false;
- int visible_http_code = -1;
- FailureReason reason = FAILURE_NETWORK;
-
- if (error == PrivetURLFetcher::RESPONSE_CODE_ERROR) {
- visible_http_code = fetcher->response_code();
- reason = FAILURE_HTTP_ERROR;
- } else if (error == PrivetURLFetcher::JSON_PARSE_ERROR) {
- reason = FAILURE_MALFORMED_RESPONSE;
- } else if (error == PrivetURLFetcher::TOKEN_ERROR) {
- reason = FAILURE_TOKEN;
- } else if (error == PrivetURLFetcher::UNKNOWN_ERROR) {
- reason = FAILURE_UNKNOWN;
- }
-
- delegate_->OnPrivetRegisterError(this,
- current_action_,
- reason,
- visible_http_code,
- NULL);
-}
-
-void PrivetRegisterOperationImpl::OnParsedJson(
- PrivetURLFetcher* fetcher,
- const base::DictionaryValue& value,
- bool has_error) {
- if (has_error) {
- std::string error;
- value.GetString(kPrivetKeyError, &error);
-
- ongoing_ = false;
- delegate_->OnPrivetRegisterError(this,
- current_action_,
- FAILURE_JSON_ERROR,
- fetcher->response_code(),
- &value);
- return;
- }
-
- // TODO(noamsml): Match the user&action with the user&action in the object,
- // and fail if different.
-
- next_response_handler_.Run(value);
-}
-
-void PrivetRegisterOperationImpl::OnNeedPrivetToken(
- PrivetURLFetcher* fetcher,
- const PrivetURLFetcher::TokenCallback& callback) {
- privet_client_->RefreshPrivetToken(callback);
-}
-
-void PrivetRegisterOperationImpl::SendRequest(const std::string& action) {
- current_action_ = action;
- url_fetcher_ = privet_client_->CreateURLFetcher(
- CreatePrivetRegisterURL(action, user_), net::URLFetcher::POST, this);
- url_fetcher_->Start();
-}
-
-void PrivetRegisterOperationImpl::StartResponse(
- const base::DictionaryValue& value) {
- next_response_handler_ =
- base::Bind(&PrivetRegisterOperationImpl::GetClaimTokenResponse,
- base::Unretained(this));
-
- SendRequest(kPrivetActionGetClaimToken);
-}
-
-void PrivetRegisterOperationImpl::GetClaimTokenResponse(
- const base::DictionaryValue& value) {
- std::string claimUrl;
- std::string claimToken;
- bool got_url = value.GetString(kPrivetKeyClaimURL, &claimUrl);
- bool got_token = value.GetString(kPrivetKeyClaimToken, &claimToken);
- if (got_url || got_token) {
- delegate_->OnPrivetRegisterClaimToken(this, claimToken, GURL(claimUrl));
- } else {
- delegate_->OnPrivetRegisterError(this,
- current_action_,
- FAILURE_MALFORMED_RESPONSE,
- -1,
- NULL);
- }
-}
-
-void PrivetRegisterOperationImpl::CompleteResponse(
- const base::DictionaryValue& value) {
- std::string id;
- value.GetString(kPrivetKeyDeviceID, &id);
- ongoing_ = false;
- expected_id_ = id;
- StartInfoOperation();
-}
-
-void PrivetRegisterOperationImpl::OnPrivetInfoDone(
- const base::DictionaryValue* value) {
- // TODO(noamsml): Simplify error case and depracate HTTP error value in
- // OnPrivetRegisterError.
- if (!value) {
- delegate_->OnPrivetRegisterError(this,
- kPrivetActionNameInfo,
- FAILURE_NETWORK,
- -1,
- NULL);
- return;
- }
-
- if (!value->HasKey(kPrivetInfoKeyID)) {
- if (value->HasKey(kPrivetKeyError)) {
- delegate_->OnPrivetRegisterError(this,
- kPrivetActionNameInfo,
- FAILURE_JSON_ERROR,
- -1,
- value);
- } else {
- delegate_->OnPrivetRegisterError(this,
- kPrivetActionNameInfo,
- FAILURE_MALFORMED_RESPONSE,
- -1,
- NULL);
- }
- return;
- }
-
- std::string id;
-
- if (!value->GetString(kPrivetInfoKeyID, &id) ||
- id != expected_id_) {
- delegate_->OnPrivetRegisterError(this,
- kPrivetActionNameInfo,
- FAILURE_MALFORMED_RESPONSE,
- -1,
- NULL);
- } else {
- delegate_->OnPrivetRegisterDone(this, id);
- }
-}
-
-void PrivetRegisterOperationImpl::StartInfoOperation() {
- info_operation_ = privet_client_->CreateInfoOperation(
- base::Bind(&PrivetRegisterOperationImpl::OnPrivetInfoDone,
- base::Unretained(this)));
- info_operation_->Start();
-}
-
-PrivetRegisterOperationImpl::Cancelation::Cancelation(
- PrivetHTTPClient* privet_client,
- const std::string& user) {
- url_fetcher_ =
- privet_client->CreateURLFetcher(
- CreatePrivetRegisterURL(kPrivetActionCancel, user),
- net::URLFetcher::POST, this);
- url_fetcher_->DoNotRetryOnTransientError();
- url_fetcher_->Start();
-}
-
-PrivetRegisterOperationImpl::Cancelation::~Cancelation() {
-}
-
-void PrivetRegisterOperationImpl::Cancelation::OnError(
- PrivetURLFetcher* fetcher,
- PrivetURLFetcher::ErrorType error) {
-}
-
-void PrivetRegisterOperationImpl::Cancelation::OnParsedJson(
- PrivetURLFetcher* fetcher,
- const base::DictionaryValue& value,
- bool has_error) {
-}
-
-void PrivetRegisterOperationImpl::Cancelation::Cleanup() {
- // Nothing needs to be done, as base::Owned will delete this object,
- // this callback is just here to pass ownership of the Cancelation to
- // the message loop.
-}
-
-PrivetJSONOperationImpl::PrivetJSONOperationImpl(
- PrivetHTTPClient* privet_client,
- const std::string& path,
- const std::string& query_params,
- const PrivetJSONOperation::ResultCallback& callback)
- : privet_client_(privet_client),
- path_(path),
- query_params_(query_params),
- callback_(callback) {
-}
-
-PrivetJSONOperationImpl::~PrivetJSONOperationImpl() {
-}
-
-void PrivetJSONOperationImpl::Start() {
- url_fetcher_ = privet_client_->CreateURLFetcher(
- CreatePrivetParamURL(path_, query_params_), net::URLFetcher::GET, this);
- url_fetcher_->DoNotRetryOnTransientError();
- url_fetcher_->Start();
-}
-
-PrivetHTTPClient* PrivetJSONOperationImpl::GetHTTPClient() {
- return privet_client_;
-}
-
-void PrivetJSONOperationImpl::OnError(
- PrivetURLFetcher* fetcher,
- PrivetURLFetcher::ErrorType error) {
- callback_.Run(NULL);
-}
-
-void PrivetJSONOperationImpl::OnParsedJson(PrivetURLFetcher* fetcher,
- const base::DictionaryValue& value,
- bool has_error) {
- callback_.Run(&value);
-}
-
-void PrivetJSONOperationImpl::OnNeedPrivetToken(
- PrivetURLFetcher* fetcher,
- const PrivetURLFetcher::TokenCallback& callback) {
- privet_client_->RefreshPrivetToken(callback);
-}
-
-#if defined(ENABLE_PRINT_PREVIEW)
-PrivetLocalPrintOperationImpl::PrivetLocalPrintOperationImpl(
- PrivetHTTPClient* privet_client,
- PrivetLocalPrintOperation::Delegate* delegate)
- : privet_client_(privet_client),
- delegate_(delegate),
- use_pdf_(false),
- has_extended_workflow_(false),
- started_(false),
- offline_(false),
- invalid_job_retries_(0),
- weak_factory_(this) {
-}
-
-PrivetLocalPrintOperationImpl::~PrivetLocalPrintOperationImpl() {
-}
-
-void PrivetLocalPrintOperationImpl::Start() {
- DCHECK(!started_);
-
- // We need to get the /info response so we can know which APIs are available.
- // TODO(noamsml): Use cached info when available.
- info_operation_ = privet_client_->CreateInfoOperation(
- base::Bind(&PrivetLocalPrintOperationImpl::OnPrivetInfoDone,
- base::Unretained(this)));
- info_operation_->Start();
-
- started_ = true;
-}
-
-void PrivetLocalPrintOperationImpl::OnPrivetInfoDone(
- const base::DictionaryValue* value) {
- if (value && !value->HasKey(kPrivetKeyError)) {
- has_extended_workflow_ = false;
- bool has_printing = false;
-
- const base::ListValue* api_list;
- if (value->GetList(kPrivetInfoKeyAPIList, &api_list)) {
- for (size_t i = 0; i < api_list->GetSize(); i++) {
- std::string api;
- api_list->GetString(i, &api);
- if (api == kPrivetSubmitdocPath) {
- has_printing = true;
- } else if (api == kPrivetCreatejobPath) {
- has_extended_workflow_ = true;
- }
- }
- }
-
- if (!has_printing) {
- delegate_->OnPrivetPrintingError(this, -1);
- return;
- }
-
- StartInitialRequest();
- } else {
- delegate_->OnPrivetPrintingError(this, -1);
- }
-}
-
-void PrivetLocalPrintOperationImpl::StartInitialRequest() {
- use_pdf_ = false;
- cloud_devices::printer::ContentTypesCapability content_types;
- if (content_types.LoadFrom(capabilities_)) {
- use_pdf_ = content_types.Contains(kPrivetContentTypePDF) ||
- content_types.Contains(kPrivetContentTypeAny);
- }
-
- if (use_pdf_) {
- StartPrinting();
- } else {
- StartConvertToPWG();
- }
-}
-
-void PrivetLocalPrintOperationImpl::DoCreatejob() {
- current_response_ = base::Bind(
- &PrivetLocalPrintOperationImpl::OnCreatejobResponse,
- base::Unretained(this));
-
- url_fetcher_ = privet_client_->CreateURLFetcher(
- CreatePrivetURL(kPrivetCreatejobPath), net::URLFetcher::POST, this);
- url_fetcher_->SetUploadData(cloud_print::kContentTypeJSON,
- ticket_.ToString());
-
- url_fetcher_->Start();
-}
-
-void PrivetLocalPrintOperationImpl::DoSubmitdoc() {
- current_response_ = base::Bind(
- &PrivetLocalPrintOperationImpl::OnSubmitdocResponse,
- base::Unretained(this));
-
- GURL url = CreatePrivetURL(kPrivetSubmitdocPath);
-
- url = net::AppendQueryParameter(url,
- kPrivetURLKeyClientName,
- kPrivetURLValueClientName);
-
- if (!user_.empty()) {
- url = net::AppendQueryParameter(url,
- kPrivetURLKeyUserName,
- user_);
- }
-
- base::string16 shortened_jobname;
-
- gfx::ElideString(base::UTF8ToUTF16(jobname_),
- kPrivetLocalPrintMaxJobNameLength,
- &shortened_jobname);
-
- if (!jobname_.empty()) {
- url = net::AppendQueryParameter(
- url, kPrivetURLKeyJobname, base::UTF16ToUTF8(shortened_jobname));
- }
-
- if (!jobid_.empty()) {
- url = net::AppendQueryParameter(url,
- kPrivetKeyJobID,
- jobid_);
- }
-
- if (offline_) {
- url = net::AppendQueryParameter(url,
- kPrivetURLKeyOffline,
- kPrivetURLValueOffline);
- }
-
- url_fetcher_ =
- privet_client_->CreateURLFetcher(url, net::URLFetcher::POST, this);
-
- if (!use_pdf_) {
- url_fetcher_->SetUploadFilePath(kPrivetContentTypePWGRaster,
- pwg_file_path_);
- } else {
- // TODO(noamsml): Move to file-based upload data?
- std::string data_str(reinterpret_cast<const char*>(data_->front()),
- data_->size());
- url_fetcher_->SetUploadData(kPrivetContentTypePDF, data_str);
- }
-
- url_fetcher_->Start();
-}
-
-void PrivetLocalPrintOperationImpl::StartPrinting() {
- if (has_extended_workflow_ && jobid_.empty()) {
- DoCreatejob();
- } else {
- DoSubmitdoc();
- }
-}
-
-void PrivetLocalPrintOperationImpl::StartConvertToPWG() {
- if (!pwg_raster_converter_)
- pwg_raster_converter_ = PWGRasterConverter::CreateDefault();
-
- pwg_raster_converter_->Start(
- data_.get(),
- PWGRasterConverter::GetConversionSettings(capabilities_, page_size_),
- PWGRasterConverter::GetBitmapSettings(capabilities_, ticket_),
- base::Bind(&PrivetLocalPrintOperationImpl::OnPWGRasterConverted,
- base::Unretained(this)));
-}
-
-void PrivetLocalPrintOperationImpl::OnSubmitdocResponse(
- bool has_error,
- const base::DictionaryValue* value) {
- std::string error;
- // This error is only relevant in the case of extended workflow:
- // If the print job ID is invalid, retry createjob and submitdoc,
- // rather than simply retrying the current request.
- if (has_error && value->GetString(kPrivetKeyError, &error)) {
- if (has_extended_workflow_ &&
- error == kPrivetErrorInvalidPrintJob &&
- invalid_job_retries_ < kPrivetLocalPrintMaxRetries) {
- invalid_job_retries_++;
-
- int timeout = kPrivetLocalPrintDefaultTimeout;
- value->GetInteger(kPrivetKeyTimeout, &timeout);
-
- double random_scaling_factor =
- 1 + base::RandDouble() * kPrivetMaximumTimeRandomAddition;
-
- timeout = static_cast<int>(timeout * random_scaling_factor);
-
- timeout = std::max(timeout, kPrivetMinimumTimeout);
-
- base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
- FROM_HERE, base::Bind(&PrivetLocalPrintOperationImpl::DoCreatejob,
- weak_factory_.GetWeakPtr()),
- base::TimeDelta::FromSeconds(timeout));
- } else if (use_pdf_ && error == kPrivetErrorInvalidDocumentType) {
- use_pdf_ = false;
- StartConvertToPWG();
- } else {
- delegate_->OnPrivetPrintingError(this, 200);
- }
-
- return;
- }
-
- // If we've gotten this far, there are no errors, so we've effectively
- // succeeded.
- delegate_->OnPrivetPrintingDone(this);
-}
-
-void PrivetLocalPrintOperationImpl::OnCreatejobResponse(
- bool has_error,
- const base::DictionaryValue* value) {
- if (has_error) {
- delegate_->OnPrivetPrintingError(this, 200);
- return;
- }
-
- // Try to get job ID from value. If not, jobid_ will be empty and we will use
- // simple printing.
- value->GetString(kPrivetKeyJobID, &jobid_);
-
- DoSubmitdoc();
-}
-
-void PrivetLocalPrintOperationImpl::OnPWGRasterConverted(
- bool success,
- const base::FilePath& pwg_file_path) {
- if (!success) {
- delegate_->OnPrivetPrintingError(this, -1);
- return;
- }
-
- DCHECK(!pwg_file_path.empty());
-
- pwg_file_path_ = pwg_file_path;
- StartPrinting();
-}
-
-PrivetHTTPClient* PrivetLocalPrintOperationImpl::GetHTTPClient() {
- return privet_client_;
-}
-
-void PrivetLocalPrintOperationImpl::OnError(
- PrivetURLFetcher* fetcher,
- PrivetURLFetcher::ErrorType error) {
- delegate_->OnPrivetPrintingError(this, -1);
-}
-
-void PrivetLocalPrintOperationImpl::OnParsedJson(
- PrivetURLFetcher* fetcher,
- const base::DictionaryValue& value,
- bool has_error) {
- DCHECK(!current_response_.is_null());
- current_response_.Run(has_error, &value);
-}
-
-void PrivetLocalPrintOperationImpl::OnNeedPrivetToken(
- PrivetURLFetcher* fetcher,
- const PrivetURLFetcher::TokenCallback& callback) {
- privet_client_->RefreshPrivetToken(callback);
-}
-
-void PrivetLocalPrintOperationImpl::SetData(
- const scoped_refptr<base::RefCountedBytes>& data) {
- DCHECK(!started_);
- data_ = data;
-}
-
-void PrivetLocalPrintOperationImpl::SetTicket(const std::string& ticket) {
- DCHECK(!started_);
- ticket_.InitFromString(ticket);
-}
-
-void PrivetLocalPrintOperationImpl::SetCapabilities(
- const std::string& capabilities) {
- DCHECK(!started_);
- capabilities_.InitFromString(capabilities);
-}
-
-void PrivetLocalPrintOperationImpl::SetUsername(const std::string& user) {
- DCHECK(!started_);
- user_ = user;
-}
-
-void PrivetLocalPrintOperationImpl::SetJobname(const std::string& jobname) {
- DCHECK(!started_);
- jobname_ = jobname;
-}
-
-void PrivetLocalPrintOperationImpl::SetOffline(bool offline) {
- DCHECK(!started_);
- offline_ = offline;
-}
-
-void PrivetLocalPrintOperationImpl::SetPageSize(const gfx::Size& page_size) {
- DCHECK(!started_);
- page_size_ = page_size;
-}
-
-void PrivetLocalPrintOperationImpl::SetPWGRasterConverterForTesting(
- scoped_ptr<PWGRasterConverter> pwg_raster_converter) {
- pwg_raster_converter_ = std::move(pwg_raster_converter);
-}
-#endif // ENABLE_PRINT_PREVIEW
-
-PrivetHTTPClientImpl::PrivetHTTPClientImpl(
- const std::string& name,
- const net::HostPortPair& host_port,
- const scoped_refptr<net::URLRequestContextGetter>& context_getter)
- : name_(name), context_getter_(context_getter), host_port_(host_port) {}
-
-PrivetHTTPClientImpl::~PrivetHTTPClientImpl() {
-}
-
-const std::string& PrivetHTTPClientImpl::GetName() {
- return name_;
-}
-
-scoped_ptr<PrivetJSONOperation> PrivetHTTPClientImpl::CreateInfoOperation(
- const PrivetJSONOperation::ResultCallback& callback) {
- return scoped_ptr<PrivetJSONOperation>(
- new PrivetInfoOperationImpl(this, callback));
-}
-
-scoped_ptr<PrivetURLFetcher> PrivetHTTPClientImpl::CreateURLFetcher(
- const GURL& url,
- net::URLFetcher::RequestType request_type,
- PrivetURLFetcher::Delegate* delegate) {
- GURL::Replacements replacements;
- std::string host = host_port_.HostForURL();
- replacements.SetHostStr(host);
- std::string port = base::UintToString(host_port_.port());
- replacements.SetPortStr(port);
- return scoped_ptr<PrivetURLFetcher>(
- new PrivetURLFetcher(url.ReplaceComponents(replacements), request_type,
- context_getter_, delegate));
-}
-
-void PrivetHTTPClientImpl::RefreshPrivetToken(
- const PrivetURLFetcher::TokenCallback& callback) {
- token_callbacks_.push_back(callback);
-
- if (!info_operation_) {
- info_operation_ = CreateInfoOperation(
- base::Bind(&PrivetHTTPClientImpl::OnPrivetInfoDone,
- base::Unretained(this)));
- info_operation_->Start();
- }
-}
-
-void PrivetHTTPClientImpl::OnPrivetInfoDone(
- const base::DictionaryValue* value) {
- info_operation_.reset();
- std::string token;
-
- // If this does not succeed, token will be empty, and an empty string
- // is our sentinel value, since empty X-Privet-Tokens are not allowed.
- if (value) {
- value->GetString(kPrivetInfoKeyToken, &token);
- }
-
- TokenCallbackVector token_callbacks;
- token_callbacks_.swap(token_callbacks);
-
- for (TokenCallbackVector::iterator i = token_callbacks.begin();
- i != token_callbacks.end(); i++) {
- i->Run(token);
- }
-}
-
-PrivetV1HTTPClientImpl::PrivetV1HTTPClientImpl(
- scoped_ptr<PrivetHTTPClient> info_client)
- : info_client_(std::move(info_client)) {}
-
-PrivetV1HTTPClientImpl::~PrivetV1HTTPClientImpl() {
-}
-
-const std::string& PrivetV1HTTPClientImpl::GetName() {
- return info_client()->GetName();
-}
-
-scoped_ptr<PrivetJSONOperation> PrivetV1HTTPClientImpl::CreateInfoOperation(
- const PrivetJSONOperation::ResultCallback& callback) {
- return info_client()->CreateInfoOperation(callback);
-}
-
-scoped_ptr<PrivetRegisterOperation>
-PrivetV1HTTPClientImpl::CreateRegisterOperation(
- const std::string& user,
- PrivetRegisterOperation::Delegate* delegate) {
- return scoped_ptr<PrivetRegisterOperation>(
- new PrivetRegisterOperationImpl(info_client(), user, delegate));
-}
-
-scoped_ptr<PrivetJSONOperation>
-PrivetV1HTTPClientImpl::CreateCapabilitiesOperation(
- const PrivetJSONOperation::ResultCallback& callback) {
- return scoped_ptr<PrivetJSONOperation>(new PrivetJSONOperationImpl(
- info_client(), kPrivetCapabilitiesPath, "", callback));
-}
-
-scoped_ptr<PrivetLocalPrintOperation>
-PrivetV1HTTPClientImpl::CreateLocalPrintOperation(
- PrivetLocalPrintOperation::Delegate* delegate) {
-#if defined(ENABLE_PRINT_PREVIEW)
- return scoped_ptr<PrivetLocalPrintOperation>(
- new PrivetLocalPrintOperationImpl(info_client(), delegate));
-#else
- return scoped_ptr<PrivetLocalPrintOperation>();
-#endif // ENABLE_PRINT_PREVIEW
-}
-
-} // namespace local_discovery
« no previous file with comments | « chrome/browser/local_discovery/privet_http_impl.h ('k') | chrome/browser/local_discovery/privet_http_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698