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

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

Issue 166283002: "Privet" Printing reads DPI for PWG raster conversion from device capabilities. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 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 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
index 8dd6c3dd7747de0235e7d14085f7e6876ae47b67..e1a1758b3a85e9c997917a7af0b73c7cb80bd7e9 100644
--- a/chrome/browser/local_discovery/privet_http_impl.cc
+++ b/chrome/browser/local_discovery/privet_http_impl.cc
@@ -13,7 +13,9 @@
#include "base/strings/string_number_conversions.h"
#include "base/strings/stringprintf.h"
#include "chrome/browser/local_discovery/privet_constants.h"
+#include "components/cloud_devices/printer_description.h"
#include "net/base/url_util.h"
+#include "printing/units.h"
#include "url/gurl.h"
namespace local_discovery {
@@ -38,11 +40,6 @@ const char kPrivetContentTypeCJT[] = "application/json";
const char kPrivetStorageListPath[] = "/privet/storage/list";
const char kPrivetStorageParamPathFormat[] = "path=%s";
-const char kPrivetCDDKeySupportedContentTypes[] =
- "printer.supported_content_type";
-
-const char kPrivetCDDKeyContentType[] = "content_type";
-
const char kPrivetKeyJobID[] = "job_id";
const int kPrivetCancelationTimeoutSeconds = 3;
@@ -383,9 +380,15 @@ void PrivetJSONOperationImpl::OnNeedPrivetToken(
PrivetLocalPrintOperationImpl::PrivetLocalPrintOperationImpl(
PrivetHTTPClientImpl* privet_client,
PrivetLocalPrintOperation::Delegate* delegate)
- : privet_client_(privet_client), delegate_(delegate),
- use_pdf_(false), has_capabilities_(false), has_extended_workflow_(false),
- started_(false), offline_(false), invalid_job_retries_(0),
+ : privet_client_(privet_client),
+ delegate_(delegate),
+ use_pdf_(false),
+ has_capabilities_(false),
+ has_extended_workflow_(false),
+ started_(false),
+ offline_(false),
+ dpi_(printing::kDefaultPdfDpi),
+ invalid_job_retries_(0),
weak_factory_(this) {
}
@@ -442,7 +445,7 @@ void PrivetLocalPrintOperationImpl::StartInitialRequest() {
if (has_capabilities_) {
GetCapabilities();
} else {
- // Since we have no capabiltties, the only reasonable format we can
+ // Since we have no capabilities, the only reasonable format we can
// request is PWG Raster.
use_pdf_ = false;
StartConvertToPWG();
@@ -534,9 +537,14 @@ void PrivetLocalPrintOperationImpl::StartPrinting() {
void PrivetLocalPrintOperationImpl::StartConvertToPWG() {
if (!pwg_raster_converter_)
pwg_raster_converter_ = PWGRasterConverter::CreateDefault();
+ double scale = dpi_;
+ scale /= printing::kPointsPerInch;
+ // Make vertical rectangle to optimize streaming to printer. Fix orientation
+ // by autorotate.
+ gfx::Rect area(std::min(page_size_.width(), page_size_.height()) * scale,
+ std::max(page_size_.width(), page_size_.height()) * scale);
pwg_raster_converter_->Start(
- data_,
- conversion_settings_,
+ data_, printing::PdfRenderSettings(area, dpi_, true),
base::Bind(&PrivetLocalPrintOperationImpl::OnPWGRasterConverted,
base::Unretained(this)));
}
@@ -549,28 +557,26 @@ void PrivetLocalPrintOperationImpl::OnCapabilitiesResponse(
return;
}
- const base::ListValue* supported_content_types;
- use_pdf_ = false;
+ cloud_devices::CloudDeviceDescription description;
+ if (!description.InitFromDictionary(make_scoped_ptr(value->DeepCopy()))) {
+ delegate_->OnPrivetPrintingError(this, 200);
+ return;
+ }
- if (value->GetList(kPrivetCDDKeySupportedContentTypes,
- &supported_content_types)) {
- for (size_t i = 0; i < supported_content_types->GetSize(); i++) {
- const base::DictionaryValue* content_type_value;
- std::string content_type;
-
- if (supported_content_types->GetDictionary(i, &content_type_value) &&
- content_type_value->GetString(kPrivetCDDKeyContentType,
- &content_type) &&
- (content_type == kPrivetContentTypePDF ||
- content_type == kPrivetContentTypeAny) ) {
- use_pdf_ = true;
- }
- }
+ use_pdf_ = false;
+ cloud_devices::printer::ContentTypesCapability content_types;
+ if (content_types.LoadFrom(description)) {
+ use_pdf_ = content_types.Contains(kPrivetContentTypePDF) ||
+ content_types.Contains(kPrivetContentTypeAny);
}
if (use_pdf_) {
StartPrinting();
} else {
+ cloud_devices::printer::DpiCapability dpis;
+ if (dpis.LoadFrom(description)) {
+ dpi_ = std::max(dpis.GetDefault().horizontal, dpis.GetDefault().vertical);
+ }
StartConvertToPWG();
}
}
@@ -695,10 +701,9 @@ void PrivetLocalPrintOperationImpl::SetOffline(bool offline) {
offline_ = offline;
}
-void PrivetLocalPrintOperationImpl::SetConversionSettings(
- const printing::PdfRenderSettings& conversion_settings) {
+void PrivetLocalPrintOperationImpl::SetPageSize(const gfx::Size& page_size) {
DCHECK(!started_);
- conversion_settings_ = conversion_settings;
+ page_size_ = page_size;
}
void PrivetLocalPrintOperationImpl::SetPWGRasterConverterForTesting(
« no previous file with comments | « chrome/browser/local_discovery/privet_http_impl.h ('k') | chrome/browser/ui/webui/print_preview/print_preview_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698