OLD | NEW |
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 <map> | 9 #include <map> |
10 #include <string> | 10 #include <string> |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
114 COLOR, | 114 COLOR, |
115 BLACK_AND_WHITE, | 115 BLACK_AND_WHITE, |
116 COLLATE, | 116 COLLATE, |
117 SIMPLEX, | 117 SIMPLEX, |
118 DUPLEX, | 118 DUPLEX, |
119 TOTAL, | 119 TOTAL, |
120 HEADERS_AND_FOOTERS, | 120 HEADERS_AND_FOOTERS, |
121 CSS_BACKGROUND, | 121 CSS_BACKGROUND, |
122 SELECTION_ONLY, | 122 SELECTION_ONLY, |
123 EXTERNAL_PDF_PREVIEW, | 123 EXTERNAL_PDF_PREVIEW, |
| 124 PAGE_RANGE, |
| 125 DEFAULT_MEDIA, |
| 126 NON_DEFAULT_MEDIA, |
| 127 COPIES, |
| 128 NON_DEFAULT_MARGINS, |
124 PRINT_SETTINGS_BUCKET_BOUNDARY | 129 PRINT_SETTINGS_BUCKET_BOUNDARY |
125 }; | 130 }; |
126 | 131 |
127 void ReportUserActionHistogram(enum UserActionBuckets event) { | 132 void ReportUserActionHistogram(enum UserActionBuckets event) { |
128 UMA_HISTOGRAM_ENUMERATION("PrintPreview.UserAction", event, | 133 UMA_HISTOGRAM_ENUMERATION("PrintPreview.UserAction", event, |
129 USERACTION_BUCKET_BOUNDARY); | 134 USERACTION_BUCKET_BOUNDARY); |
130 } | 135 } |
131 | 136 |
132 void ReportPrintSettingHistogram(enum PrintSettingsBuckets setting) { | 137 void ReportPrintSettingHistogram(enum PrintSettingsBuckets setting) { |
133 UMA_HISTOGRAM_ENUMERATION("PrintPreview.PrintSettings", setting, | 138 UMA_HISTOGRAM_ENUMERATION("PrintPreview.PrintSettings", setting, |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
189 return NULL; | 194 return NULL; |
190 } | 195 } |
191 | 196 |
192 return settings.release(); | 197 return settings.release(); |
193 } | 198 } |
194 | 199 |
195 // Track the popularity of print settings and report the stats. | 200 // Track the popularity of print settings and report the stats. |
196 void ReportPrintSettingsStats(const base::DictionaryValue& settings) { | 201 void ReportPrintSettingsStats(const base::DictionaryValue& settings) { |
197 ReportPrintSettingHistogram(TOTAL); | 202 ReportPrintSettingHistogram(TOTAL); |
198 | 203 |
| 204 const base::ListValue* page_range_array = NULL; |
| 205 if (settings.GetList(printing::kSettingPageRange, &page_range_array) && |
| 206 !page_range_array->empty()) { |
| 207 ReportPrintSettingHistogram(PAGE_RANGE); |
| 208 } |
| 209 |
| 210 const base::DictionaryValue* media_size_value = NULL; |
| 211 if (settings.GetDictionary(printing::kSettingMediaSize, &media_size_value) && |
| 212 !media_size_value->empty()) { |
| 213 bool is_default = false; |
| 214 if (media_size_value->GetBoolean(printing::kSettingMediaSizeIsDefault, |
| 215 &is_default) && |
| 216 is_default) { |
| 217 ReportPrintSettingHistogram(DEFAULT_MEDIA); |
| 218 } else { |
| 219 ReportPrintSettingHistogram(NON_DEFAULT_MEDIA); |
| 220 } |
| 221 } |
| 222 |
199 bool landscape = false; | 223 bool landscape = false; |
200 if (settings.GetBoolean(printing::kSettingLandscape, &landscape)) | 224 if (settings.GetBoolean(printing::kSettingLandscape, &landscape)) |
201 ReportPrintSettingHistogram(landscape ? LANDSCAPE : PORTRAIT); | 225 ReportPrintSettingHistogram(landscape ? LANDSCAPE : PORTRAIT); |
202 | 226 |
| 227 int copies = 1; |
| 228 if (settings.GetInteger(printing::kSettingCopies, &copies) && copies > 1) |
| 229 ReportPrintSettingHistogram(COPIES); |
| 230 |
203 bool collate = false; | 231 bool collate = false; |
204 if (settings.GetBoolean(printing::kSettingCollate, &collate) && collate) | 232 if (settings.GetBoolean(printing::kSettingCollate, &collate) && collate) |
205 ReportPrintSettingHistogram(COLLATE); | 233 ReportPrintSettingHistogram(COLLATE); |
206 | 234 |
207 int duplex_mode = 0; | 235 int duplex_mode = 0; |
208 if (settings.GetInteger(printing::kSettingDuplexMode, &duplex_mode)) | 236 if (settings.GetInteger(printing::kSettingDuplexMode, &duplex_mode)) |
209 ReportPrintSettingHistogram(duplex_mode ? DUPLEX : SIMPLEX); | 237 ReportPrintSettingHistogram(duplex_mode ? DUPLEX : SIMPLEX); |
210 | 238 |
211 int color_mode = 0; | 239 int color_mode = 0; |
212 if (settings.GetInteger(printing::kSettingColor, &color_mode)) { | 240 if (settings.GetInteger(printing::kSettingColor, &color_mode)) { |
213 ReportPrintSettingHistogram( | 241 ReportPrintSettingHistogram( |
214 printing::IsColorModelSelected(color_mode) ? COLOR : BLACK_AND_WHITE); | 242 printing::IsColorModelSelected(color_mode) ? COLOR : BLACK_AND_WHITE); |
215 } | 243 } |
216 | 244 |
| 245 int margins_type = 0; |
| 246 if (settings.GetInteger(printing::kSettingMarginsType, &margins_type) && |
| 247 margins_type != 0) { |
| 248 ReportPrintSettingHistogram(NON_DEFAULT_MARGINS); |
| 249 } |
| 250 |
217 bool headers = false; | 251 bool headers = false; |
218 if (settings.GetBoolean(printing::kSettingHeaderFooterEnabled, &headers) && | 252 if (settings.GetBoolean(printing::kSettingHeaderFooterEnabled, &headers) && |
219 headers) { | 253 headers) { |
220 ReportPrintSettingHistogram(HEADERS_AND_FOOTERS); | 254 ReportPrintSettingHistogram(HEADERS_AND_FOOTERS); |
221 } | 255 } |
222 | 256 |
223 bool css_background = false; | 257 bool css_background = false; |
224 if (settings.GetBoolean(printing::kSettingShouldPrintBackgrounds, | 258 if (settings.GetBoolean(printing::kSettingShouldPrintBackgrounds, |
225 &css_background) && css_background) { | 259 &css_background) && css_background) { |
226 ReportPrintSettingHistogram(CSS_BACKGROUND); | 260 ReportPrintSettingHistogram(CSS_BACKGROUND); |
(...skipping 524 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
751 | 785 |
752 // Record the number of times the user requests to regenerate preview data | 786 // Record the number of times the user requests to regenerate preview data |
753 // before printing. | 787 // before printing. |
754 UMA_HISTOGRAM_COUNTS("PrintPreview.RegeneratePreviewRequest.BeforePrint", | 788 UMA_HISTOGRAM_COUNTS("PrintPreview.RegeneratePreviewRequest.BeforePrint", |
755 regenerate_preview_request_count_); | 789 regenerate_preview_request_count_); |
756 | 790 |
757 scoped_ptr<base::DictionaryValue> settings(GetSettingsDictionary(args)); | 791 scoped_ptr<base::DictionaryValue> settings(GetSettingsDictionary(args)); |
758 if (!settings.get()) | 792 if (!settings.get()) |
759 return; | 793 return; |
760 | 794 |
| 795 ReportPrintSettingsStats(*settings); |
| 796 |
761 // Never try to add headers/footers here. It's already in the generated PDF. | 797 // Never try to add headers/footers here. It's already in the generated PDF. |
762 settings->SetBoolean(printing::kSettingHeaderFooterEnabled, false); | 798 settings->SetBoolean(printing::kSettingHeaderFooterEnabled, false); |
763 | 799 |
764 bool print_to_pdf = false; | 800 bool print_to_pdf = false; |
765 bool is_cloud_printer = false; | 801 bool is_cloud_printer = false; |
766 bool print_with_privet = false; | 802 bool print_with_privet = false; |
767 | 803 |
768 bool open_pdf_in_preview = false; | 804 bool open_pdf_in_preview = false; |
769 #if defined(OS_MACOSX) | 805 #if defined(OS_MACOSX) |
770 open_pdf_in_preview = settings->HasKey(printing::kSettingOpenPDFInPreview); | 806 open_pdf_in_preview = settings->HasKey(printing::kSettingOpenPDFInPreview); |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
829 } else { | 865 } else { |
830 bool system_dialog = false; | 866 bool system_dialog = false; |
831 settings->GetBoolean(printing::kSettingShowSystemDialog, &system_dialog); | 867 settings->GetBoolean(printing::kSettingShowSystemDialog, &system_dialog); |
832 if (system_dialog) { | 868 if (system_dialog) { |
833 UMA_HISTOGRAM_COUNTS("PrintPreview.PageCount.SystemDialog", page_count); | 869 UMA_HISTOGRAM_COUNTS("PrintPreview.PageCount.SystemDialog", page_count); |
834 ReportUserActionHistogram(FALLBACK_TO_ADVANCED_SETTINGS_DIALOG); | 870 ReportUserActionHistogram(FALLBACK_TO_ADVANCED_SETTINGS_DIALOG); |
835 } else { | 871 } else { |
836 UMA_HISTOGRAM_COUNTS("PrintPreview.PageCount.PrintToPrinter", page_count); | 872 UMA_HISTOGRAM_COUNTS("PrintPreview.PageCount.PrintToPrinter", page_count); |
837 ReportUserActionHistogram(PRINT_TO_PRINTER); | 873 ReportUserActionHistogram(PRINT_TO_PRINTER); |
838 } | 874 } |
839 ReportPrintSettingsStats(*settings); | |
840 | 875 |
841 // This tries to activate the initiator as well, so do not clear the | 876 // This tries to activate the initiator as well, so do not clear the |
842 // association with the initiator yet. | 877 // association with the initiator yet. |
843 PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>( | 878 PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>( |
844 web_ui()->GetController()); | 879 web_ui()->GetController()); |
845 print_preview_ui->OnHidePreviewDialog(); | 880 print_preview_ui->OnHidePreviewDialog(); |
846 | 881 |
847 // Do this so the initiator can open a new print preview dialog, while the | 882 // Do this so the initiator can open a new print preview dialog, while the |
848 // current print preview dialog is still handling its print job. | 883 // current print preview dialog is still handling its print job. |
849 WebContents* initiator = GetInitiator(); | 884 WebContents* initiator = GetInitiator(); |
(...skipping 745 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1595 | 1630 |
1596 void PrintPreviewHandler::UnregisterForMergeSession() { | 1631 void PrintPreviewHandler::UnregisterForMergeSession() { |
1597 if (reconcilor_) | 1632 if (reconcilor_) |
1598 reconcilor_->RemoveMergeSessionObserver(this); | 1633 reconcilor_->RemoveMergeSessionObserver(this); |
1599 } | 1634 } |
1600 | 1635 |
1601 void PrintPreviewHandler::SetPdfSavedClosureForTesting( | 1636 void PrintPreviewHandler::SetPdfSavedClosureForTesting( |
1602 const base::Closure& closure) { | 1637 const base::Closure& closure) { |
1603 pdf_file_saved_closure_ = closure; | 1638 pdf_file_saved_closure_ = closure; |
1604 } | 1639 } |
OLD | NEW |