Chromium Code Reviews| Index: chrome/browser/ui/webui/print_preview_handler.cc |
| diff --git a/chrome/browser/ui/webui/print_preview_handler.cc b/chrome/browser/ui/webui/print_preview_handler.cc |
| index 4a8e26d2da53b848c94d1668cb54b4c22c97f2ff..9aa1c69d0eeb8763261eb48d6f08ad75a0136c17 100644 |
| --- a/chrome/browser/ui/webui/print_preview_handler.cc |
| +++ b/chrome/browser/ui/webui/print_preview_handler.cc |
| @@ -8,6 +8,7 @@ |
| #include "base/i18n/file_util_icu.h" |
| #include "base/json/json_reader.h" |
| +#include "base/metrics/histogram.h" |
| #include "base/path_service.h" |
| #include "base/threading/thread.h" |
| #include "base/threading/thread_restrictions.h" |
| @@ -87,9 +88,11 @@ class PrintSystemTaskProxy |
| BrowserThread::DeleteOnUIThread> { |
| public: |
| PrintSystemTaskProxy(const base::WeakPtr<PrintPreviewHandler>& handler, |
| - printing::PrintBackend* print_backend) |
| + printing::PrintBackend* print_backend, |
| + bool has_logged_printers_count) |
| : handler_(handler), |
| - print_backend_(print_backend) { |
| + print_backend_(print_backend), |
| + has_logged_printers_count_(has_logged_printers_count) { |
| } |
| void EnumeratePrinters() { |
| @@ -98,6 +101,13 @@ class PrintSystemTaskProxy |
| printing::PrinterList printer_list; |
| print_backend_->EnumeratePrinters(&printer_list); |
| + |
| + if (!has_logged_printers_count_) { |
| + // Record the total number of printers. |
| + UMA_HISTOGRAM_COUNTS("PrintPreview.NumberOfPrinters", |
| + printer_list.size()); |
| + } |
| + |
| int i = 0; |
| for (printing::PrinterList::iterator index = printer_list.begin(); |
| index != printer_list.end(); ++index, ++i) { |
| @@ -201,6 +211,8 @@ class PrintSystemTaskProxy |
| scoped_refptr<printing::PrintBackend> print_backend_; |
| + bool has_logged_printers_count_; |
| + |
| DISALLOW_COPY_AND_ASSIGN(PrintSystemTaskProxy); |
| }; |
| @@ -236,7 +248,11 @@ class PrintToPdfTask : public Task { |
| FilePath* PrintPreviewHandler::last_saved_path_ = NULL; |
| PrintPreviewHandler::PrintPreviewHandler() |
| - : print_backend_(printing::PrintBackend::CreateInstance(NULL)) { |
| + : print_backend_(printing::PrintBackend::CreateInstance(NULL)), |
| + regenerate_preview_request_count_(0), |
| + manage_printers_dialog_request_count_(0), |
| + print_preview_failed_count_(0), |
| + has_logged_printers_count_(false) { |
| } |
| PrintPreviewHandler::~PrintPreviewHandler() { |
| @@ -267,7 +283,12 @@ TabContents* PrintPreviewHandler::preview_tab() { |
| void PrintPreviewHandler::HandleGetPrinters(const ListValue*) { |
| scoped_refptr<PrintSystemTaskProxy> task = |
| - new PrintSystemTaskProxy(AsWeakPtr(), print_backend_.get()); |
| + new PrintSystemTaskProxy(AsWeakPtr(), |
| + print_backend_.get(), |
| + has_logged_printers_count_); |
| + if (!has_logged_printers_count_) |
|
Lei Zhang
2011/05/17 00:09:38
nit: you don't need the if statement. The branchin
kmadhusu
2011/05/17 00:22:09
Done.
|
| + has_logged_printers_count_ = true; |
| + |
| BrowserThread::PostTask( |
| BrowserThread::FILE, FROM_HERE, |
| NewRunnableMethod(task.get(), |
| @@ -275,8 +296,12 @@ void PrintPreviewHandler::HandleGetPrinters(const ListValue*) { |
| } |
| void PrintPreviewHandler::HandleGetPreview(const ListValue* args) { |
| + // Increment request count. |
| + ++regenerate_preview_request_count_; |
| + |
| TabContents* initiator_tab = GetInitiatorTab(); |
| if (!initiator_tab) { |
| + ++print_preview_failed_count_; |
| web_ui_->CallJavascriptFunction("printPreviewFailed"); |
| return; |
| } |
| @@ -289,6 +314,15 @@ void PrintPreviewHandler::HandleGetPreview(const ListValue* args) { |
| } |
| void PrintPreviewHandler::HandlePrint(const ListValue* args) { |
| + ReportStats(); |
| + UMA_HISTOGRAM_COUNTS("PrintPreview.Print", 1); |
| + |
| + // Record the number of times the user requests to regenerate preview data |
| + // before printing. |
| + UMA_HISTOGRAM_COUNTS( |
| + "PrintPreview.RegeneratePreviewRequest.BeforePrint", |
| + regenerate_preview_request_count_); |
| + |
| TabContents* initiator_tab = GetInitiatorTab(); |
| if (initiator_tab) { |
| RenderViewHost* rvh = initiator_tab->render_view_host(); |
| @@ -306,6 +340,8 @@ void PrintPreviewHandler::HandlePrint(const ListValue* args) { |
| TabContentsWrapper::GetCurrentWrapperForContents(preview_tab()); |
| if (print_to_pdf) { |
| + UMA_HISTOGRAM_COUNTS("PrintPreview.PrintToPDF", 1); |
| + |
| // Pre-populating select file dialog with print job title. |
| string16 print_job_title_utf16 = |
| preview_tab_wrapper->print_view_manager()->RenderSourceName(); |
| @@ -342,7 +378,9 @@ void PrintPreviewHandler::HandleGetPrinterCapabilities( |
| return; |
| scoped_refptr<PrintSystemTaskProxy> task = |
| - new PrintSystemTaskProxy(AsWeakPtr(), print_backend_.get()); |
| + new PrintSystemTaskProxy(AsWeakPtr(), |
| + print_backend_.get(), |
| + has_logged_printers_count_); |
| BrowserThread::PostTask( |
| BrowserThread::FILE, FROM_HERE, |
| @@ -352,6 +390,8 @@ void PrintPreviewHandler::HandleGetPrinterCapabilities( |
| } |
| void PrintPreviewHandler::HandleShowSystemDialog(const ListValue* args) { |
| + ReportStats(); |
| + UMA_HISTOGRAM_COUNTS("PrintPreview.ShowAdvanceSettings", 1); |
| TabContents* initiator_tab = GetInitiatorTab(); |
| if (!initiator_tab) |
| return; |
| @@ -365,13 +405,33 @@ void PrintPreviewHandler::HandleShowSystemDialog(const ListValue* args) { |
| } |
| void PrintPreviewHandler::HandleManagePrinters(const ListValue* args) { |
| + ++manage_printers_dialog_request_count_; |
| printing::PrinterManagerDialog::ShowPrinterManagerDialog(); |
| } |
| void PrintPreviewHandler::HandleClosePreviewTab(const ListValue* args) { |
| + ReportStats(); |
| + UMA_HISTOGRAM_COUNTS("PrintPreview.Cancel", 1); |
| + |
| + // Record the number of times the user requests to regenerate preview data |
| + // before cancelling. |
| + UMA_HISTOGRAM_COUNTS( |
| + "PrintPreview.RegeneratePreviewRequest.BeforeCancel", |
| + regenerate_preview_request_count_); |
| + |
| ActivateInitiatorTabAndClosePreviewTab(); |
| } |
| +void PrintPreviewHandler::ReportStats() { |
| + if (print_preview_failed_count_ > 0) { |
| + UMA_HISTOGRAM_COUNTS("PrintPreview.Failed.InitiatorTabDoesNotExist", |
| + print_preview_failed_count_); |
| + } |
| + |
| + UMA_HISTOGRAM_COUNTS("PrintPreview.ManagePrinters", |
| + manage_printers_dialog_request_count_); |
| +} |
| + |
| void PrintPreviewHandler::ActivateInitiatorTabAndClosePreviewTab() { |
| TabContents* initiator_tab = GetInitiatorTab(); |
| if (initiator_tab) |