diff options
author | vitalybuka@chromium.org <vitalybuka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-12 01:28:20 +0000 |
---|---|---|
committer | vitalybuka@chromium.org <vitalybuka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-12 01:28:20 +0000 |
commit | 82b6e0fcf42a1806b0c8e88d62cb7670fb0ffd9e (patch) | |
tree | ce5c5c1621e31b6bb6ead919942b44fea77cc481 | |
parent | 28d0021fff7a2fccb3a1b3d6289d391f85af5fcf (diff) | |
download | chromium_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.js | 1 | ||||
-rw-r--r-- | chrome/browser/ui/webui/print_preview/print_preview_handler.cc | 32 | ||||
-rw-r--r-- | printing/print_job_constants.cc | 3 | ||||
-rw-r--r-- | printing/print_job_constants.h | 1 |
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[]; |