summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvitalybuka@chromium.org <vitalybuka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-12 01:28:20 +0000
committervitalybuka@chromium.org <vitalybuka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-12 01:28:20 +0000
commit82b6e0fcf42a1806b0c8e88d62cb7670fb0ffd9e (patch)
treece5c5c1621e31b6bb6ead919942b44fea77cc481
parent28d0021fff7a2fccb3a1b3d6289d391f85af5fcf (diff)
downloadchromium_src-82b6e0fcf42a1806b0c8e88d62cb7670fb0ffd9e.zip
chromium_src-82b6e0fcf42a1806b0c8e88d62cb7670fb0ffd9e.tar.gz
chromium_src-82b6e0fcf42a1806b0c8e88d62cb7670fb0ffd9e.tar.bz2
Use page count from page preview. Page range is not enough for exact printed page calculation.
TBR=gene Review URL: https://chromiumcodereview.appspot.com/12220093 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@181808 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/resources/print_preview/native_layer.js1
-rw-r--r--chrome/browser/ui/webui/print_preview/print_preview_handler.cc32
-rw-r--r--printing/print_job_constants.cc3
-rw-r--r--printing/print_job_constants.h1
4 files changed, 14 insertions, 23 deletions
diff --git a/chrome/browser/resources/print_preview/native_layer.js b/chrome/browser/resources/print_preview/native_layer.js
index 2404164..ff45714 100644
--- a/chrome/browser/resources/print_preview/native_layer.js
+++ b/chrome/browser/resources/print_preview/native_layer.js
@@ -217,6 +217,7 @@ cr.define('print_preview', function() {
var ticket = {
'pageRange': printTicketStore.hasPageRangeCapability() ?
printTicketStore.getPageNumberSet().getPageRanges() : [],
+ 'pageCount': printTicketStore.getPageNumberSet().size,
'landscape': printTicketStore.isLandscapeEnabled(),
'color': printTicketStore.isColorEnabled() ?
NativeLayer.ColorMode_.COLOR : NativeLayer.ColorMode_.GRAY,
diff --git a/chrome/browser/ui/webui/print_preview/print_preview_handler.cc b/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
index 02b4248..49cf455 100644
--- a/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
+++ b/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
@@ -186,27 +186,10 @@ DictionaryValue* GetSettingsDictionary(const ListValue* args) {
return settings.release();
}
-void ReportPageCount(const DictionaryValue& settings,
- const std::string& printer_type) {
- int count = 0;
- const ListValue* page_range_array;
- if (settings.GetList(printing::kSettingPageRange, &page_range_array)) {
- for (size_t index = 0; index < page_range_array->GetSize(); ++index) {
- const DictionaryValue* dict;
- if (!page_range_array->GetDictionary(index, &dict))
- continue;
-
- printing::PageRange range;
- if (!dict->GetInteger(printing::kSettingPageRangeFrom, &range.from) ||
- !dict->GetInteger(printing::kSettingPageRangeTo, &range.to)) {
- continue;
- }
- count += (range.to - range.from) + 1;
- }
- }
+void ReportPageCount(int page_count, const std::string& printer_type) {
UMA_HISTOGRAM_COUNTS(base::StringPrintf("PrintPreview.PageCount.%s",
printer_type.c_str()),
- count);
+ page_count);
}
// Track the popularity of print settings and report the stats.
@@ -454,8 +437,11 @@ void PrintPreviewHandler::HandlePrint(const ListValue* args) {
is_cloud_printer = settings->HasKey(printing::kSettingCloudPrintId);
}
+ int page_count = 0;
+ settings->GetInteger(printing::kSettingPreviewPageCount, &page_count);
+
if (print_to_pdf) {
- ReportPageCount(*settings, "PrintToPDF");
+ ReportPageCount(page_count, "PrintToPDF");
ReportUserActionHistogram(PRINT_TO_PDF);
PrintToPdf();
return;
@@ -469,14 +455,14 @@ void PrintPreviewHandler::HandlePrint(const ListValue* args) {
}
if (is_cloud_printer) {
- ReportPageCount(*settings, "PrintToCloudPrint");
+ ReportPageCount(page_count, "PrintToCloudPrint");
ReportUserActionHistogram(PRINT_WITH_CLOUD_PRINT);
SendCloudPrintJob(data);
} else if (is_cloud_dialog) {
- ReportPageCount(*settings, "PrintToCloudPrintWebDialog");
+ ReportPageCount(page_count, "PrintToCloudPrintWebDialog");
PrintWithCloudPrintDialog(data, title);
} else {
- ReportPageCount(*settings, "PrintToPrinter");
+ ReportPageCount(page_count, "PrintToPrinter");
ReportUserActionHistogram(PRINT_TO_PRINTER);
ReportPrintSettingsStats(*settings);
diff --git a/printing/print_job_constants.cc b/printing/print_job_constants.cc
index cd0aaae..f659aed 100644
--- a/printing/print_job_constants.cc
+++ b/printing/print_job_constants.cc
@@ -93,6 +93,9 @@ const char kSettingMarginsCustom[] = "marginsCustom";
// MarginType enum.
const char kSettingMarginsType[] = "marginsType";
+// Number of pages to print.
+const char kSettingPreviewPageCount[] = "pageCount";
+
// A page range.
const char kSettingPageRange[] = "pageRange";
diff --git a/printing/print_job_constants.h b/printing/print_job_constants.h
index 065f3ff..b5b3130 100644
--- a/printing/print_job_constants.h
+++ b/printing/print_job_constants.h
@@ -37,6 +37,7 @@ PRINTING_EXPORT extern const char kSettingMarginRight[];
PRINTING_EXPORT extern const char kSettingMarginTop[];
PRINTING_EXPORT extern const char kSettingMarginsCustom[];
PRINTING_EXPORT extern const char kSettingMarginsType[];
+PRINTING_EXPORT extern const char kSettingPreviewPageCount[];
PRINTING_EXPORT extern const char kSettingPageRange[];
PRINTING_EXPORT extern const char kSettingPageRangeFrom[];
PRINTING_EXPORT extern const char kSettingPageRangeTo[];