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

Side by Side Diff: chrome/browser/ui/webui/print_preview/print_preview_handler.cc

Issue 12209086: Page range comparisons should use document size. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/webui/print_preview/print_preview_handler.h" 5 #include "chrome/browser/ui/webui/print_preview/print_preview_handler.h"
6 6
7 #include <ctype.h> 7 #include <ctype.h>
8 8
9 #include <string> 9 #include <string>
10 10
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 } 179 }
180 180
181 if (settings->empty()) { 181 if (settings->empty()) {
182 NOTREACHED() << "Print job settings dictionary is empty"; 182 NOTREACHED() << "Print job settings dictionary is empty";
183 return NULL; 183 return NULL;
184 } 184 }
185 185
186 return settings.release(); 186 return settings.release();
187 } 187 }
188 188
189 void ReportPageCount(const DictionaryValue& settings, 189 void ReportPageCount(int page_count, const std::string& printer_type) {
190 const std::string& printer_type) {
191 int count = 0;
192 const ListValue* page_range_array;
193 if (settings.GetList(printing::kSettingPageRange, &page_range_array)) {
194 for (size_t index = 0; index < page_range_array->GetSize(); ++index) {
195 const DictionaryValue* dict;
196 if (!page_range_array->GetDictionary(index, &dict))
197 continue;
198
199 printing::PageRange range;
200 if (!dict->GetInteger(printing::kSettingPageRangeFrom, &range.from) ||
201 !dict->GetInteger(printing::kSettingPageRangeTo, &range.to)) {
202 continue;
203 }
204 count += (range.to - range.from) + 1;
205 }
206 }
207 UMA_HISTOGRAM_COUNTS(base::StringPrintf("PrintPreview.PageCount.%s", 190 UMA_HISTOGRAM_COUNTS(base::StringPrintf("PrintPreview.PageCount.%s",
208 printer_type.c_str()), 191 printer_type.c_str()),
209 count); 192 page_count);
210 } 193 }
211 194
212 // Track the popularity of print settings and report the stats. 195 // Track the popularity of print settings and report the stats.
213 void ReportPrintSettingsStats(const DictionaryValue& settings) { 196 void ReportPrintSettingsStats(const DictionaryValue& settings) {
214 bool landscape; 197 bool landscape;
215 if (settings.GetBoolean(printing::kSettingLandscape, &landscape)) 198 if (settings.GetBoolean(printing::kSettingLandscape, &landscape))
216 ReportPrintSettingHistogram(landscape ? LANDSCAPE : PORTRAIT); 199 ReportPrintSettingHistogram(landscape ? LANDSCAPE : PORTRAIT);
217 200
218 bool collate; 201 bool collate;
219 if (settings.GetBoolean(printing::kSettingCollate, &collate) && collate) 202 if (settings.GetBoolean(printing::kSettingCollate, &collate) && collate)
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
447 #if defined(OS_MACOSX) 430 #if defined(OS_MACOSX)
448 open_pdf_in_preview = settings->HasKey(printing::kSettingOpenPDFInPreview); 431 open_pdf_in_preview = settings->HasKey(printing::kSettingOpenPDFInPreview);
449 #endif 432 #endif
450 433
451 if (!open_pdf_in_preview) { 434 if (!open_pdf_in_preview) {
452 settings->GetBoolean(printing::kSettingPrintToPDF, &print_to_pdf); 435 settings->GetBoolean(printing::kSettingPrintToPDF, &print_to_pdf);
453 settings->GetBoolean(printing::kSettingCloudPrintDialog, &is_cloud_dialog); 436 settings->GetBoolean(printing::kSettingCloudPrintDialog, &is_cloud_dialog);
454 is_cloud_printer = settings->HasKey(printing::kSettingCloudPrintId); 437 is_cloud_printer = settings->HasKey(printing::kSettingCloudPrintId);
455 } 438 }
456 439
440 int page_count = 0;
441 settings->GetInteger(printing::kSettingPreviewPageCount, &page_count);
442
457 if (print_to_pdf) { 443 if (print_to_pdf) {
458 ReportPageCount(*settings, "PrintToPDF"); 444 ReportPageCount(page_count, "PrintToPDF");
459 ReportUserActionHistogram(PRINT_TO_PDF); 445 ReportUserActionHistogram(PRINT_TO_PDF);
460 PrintToPdf(); 446 PrintToPdf();
461 return; 447 return;
462 } 448 }
463 449
464 scoped_refptr<base::RefCountedBytes> data; 450 scoped_refptr<base::RefCountedBytes> data;
465 string16 title; 451 string16 title;
466 if (!GetPreviewDataAndTitle(&data, &title)) { 452 if (!GetPreviewDataAndTitle(&data, &title)) {
467 // Nothing to print, no preview available. 453 // Nothing to print, no preview available.
468 return; 454 return;
469 } 455 }
470 456
471 if (is_cloud_printer) { 457 if (is_cloud_printer) {
472 ReportPageCount(*settings, "PrintToCloudPrint"); 458 ReportPageCount(page_count, "PrintToCloudPrint");
473 ReportUserActionHistogram(PRINT_WITH_CLOUD_PRINT); 459 ReportUserActionHistogram(PRINT_WITH_CLOUD_PRINT);
474 SendCloudPrintJob(data); 460 SendCloudPrintJob(data);
475 } else if (is_cloud_dialog) { 461 } else if (is_cloud_dialog) {
476 ReportPageCount(*settings, "PrintToCloudPrintWebDialog"); 462 ReportPageCount(page_count, "PrintToCloudPrintWebDialog");
477 PrintWithCloudPrintDialog(data, title); 463 PrintWithCloudPrintDialog(data, title);
478 } else { 464 } else {
479 ReportPageCount(*settings, "PrintToPrinter"); 465 ReportPageCount(page_count, "PrintToPrinter");
480 ReportUserActionHistogram(PRINT_TO_PRINTER); 466 ReportUserActionHistogram(PRINT_TO_PRINTER);
481 ReportPrintSettingsStats(*settings); 467 ReportPrintSettingsStats(*settings);
482 468
483 // This tries to activate the initiator tab as well, so do not clear the 469 // This tries to activate the initiator tab as well, so do not clear the
484 // association with the initiator tab yet. 470 // association with the initiator tab yet.
485 PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>( 471 PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>(
486 web_ui()->GetController()); 472 web_ui()->GetController());
487 print_preview_ui->OnHidePreviewDialog(); 473 print_preview_ui->OnHidePreviewDialog();
488 474
489 // Do this so the initiator tab can open a new print preview dialog. 475 // Do this so the initiator tab can open a new print preview dialog.
(...skipping 496 matching lines...) Expand 10 before | Expand all | Expand 10 after
986 // Nothing to print, no preview available. 972 // Nothing to print, no preview available.
987 return false; 973 return false;
988 } 974 }
989 DCHECK(tmp_data->size() && tmp_data->front()); 975 DCHECK(tmp_data->size() && tmp_data->front());
990 976
991 *data = tmp_data; 977 *data = tmp_data;
992 *title = print_preview_ui->initiator_tab_title(); 978 *title = print_preview_ui->initiator_tab_title();
993 return true; 979 return true;
994 } 980 }
995 981
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698