Commit 1ae2572f authored by abodenha@chromium.org's avatar abodenha@chromium.org

Add additional stats for print preview.

Adds a new histogram that can be called from JS to record stats on the upcoming destination selector.

BUG=128275
TEST=No user visible change.


Review URL: https://chromiumcodereview.appspot.com/10387162

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@137620 0039d316-1c4b-4281-b951-d872f2087c98
parent 2e79ac55
......@@ -96,6 +96,15 @@ enum PrintSettingsBuckets {
PRINT_SETTINGS_BUCKET_BOUNDARY
};
enum PrintDestinationBuckets {
DESTINATION_SHOWN,
DESTINATION_CLOSED_CHANGED,
DESTINATION_CLOSED_UNCHANGED,
SIGNIN_PROMPT,
SIGNIN_TRIGGERED,
PRINT_DESTINATION_BUCKET_BOUNDARY
};
void ReportUserActionHistogram(enum UserActionBuckets event) {
UMA_HISTOGRAM_ENUMERATION("PrintPreview.UserAction", event,
USERACTION_BUCKET_BOUNDARY);
......@@ -106,6 +115,11 @@ void ReportPrintSettingHistogram(enum PrintSettingsBuckets setting) {
PRINT_SETTINGS_BUCKET_BOUNDARY);
}
void ReportPrintDestinationHistogram(enum PrintDestinationBuckets event) {
UMA_HISTOGRAM_ENUMERATION("PrintPreview.DestinationAction", event,
PRINT_DESTINATION_BUCKET_BOUNDARY);
}
// Name of a dictionary fielad holdong cloud print related data;
const char kCloudPrintData[] = "cloudPrintData";
// Name of a dictionary field holding the initiator tab title.
......@@ -211,6 +225,7 @@ PrintPreviewHandler::PrintPreviewHandler()
: print_backend_(printing::PrintBackend::CreateInstance(NULL)),
regenerate_preview_request_count_(0),
manage_printers_dialog_request_count_(0),
manage_cloud_printers_dialog_request_count_(0),
reported_failed_preview_(false),
has_logged_printers_count_(false) {
ReportUserActionHistogram(PREVIEW_STARTED);
......@@ -261,6 +276,9 @@ void PrintPreviewHandler::RegisterMessages() {
web_ui()->RegisterMessageCallback("getInitialSettings",
base::Bind(&PrintPreviewHandler::HandleGetInitialSettings,
base::Unretained(this)));
web_ui()->RegisterMessageCallback("reportDestinationEvent",
base::Bind(&PrintPreviewHandler::HandleReportDestinationEvent,
base::Unretained(this)));
}
TabContentsWrapper* PrintPreviewHandler::preview_tab_wrapper() const {
......@@ -537,7 +555,6 @@ void PrintPreviewHandler::HandlePrintWithCloudPrint() {
// Record the number of times the user asks to print via cloud print
// instead of the print preview dialog.
ReportStats();
ReportUserActionHistogram(PRINT_WITH_CLOUD_PRINT);
PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>(
web_ui()->GetController());
......@@ -563,6 +580,7 @@ void PrintPreviewHandler::HandlePrintWithCloudPrint() {
}
void PrintPreviewHandler::HandleManageCloudPrint(const ListValue* /*args*/) {
++manage_cloud_printers_dialog_request_count_;
Browser* browser = BrowserList::GetLastActive();
if (browser != NULL)
browser->OpenURL(OpenURLParams(
......@@ -609,6 +627,8 @@ void PrintPreviewHandler::HandleClosePreviewTab(const ListValue* /*args*/) {
void PrintPreviewHandler::ReportStats() {
UMA_HISTOGRAM_COUNTS("PrintPreview.ManagePrinters",
manage_printers_dialog_request_count_);
UMA_HISTOGRAM_COUNTS("PrintPreview.ManageCloudPrinters",
manage_cloud_printers_dialog_request_count_);
}
void PrintPreviewHandler::GetNumberFormatAndMeasurementSystem(
......@@ -637,6 +657,18 @@ void PrintPreviewHandler::HandleGetInitialSettings(const ListValue* /*args*/) {
base::Bind(&PrintSystemTaskProxy::GetDefaultPrinter, task.get()));
}
void PrintPreviewHandler::HandleReportDestinationEvent(const ListValue* args) {
int event_number;
bool ret = args->GetInteger(0, &event_number);
if (!ret)
return;
enum PrintDestinationBuckets event =
static_cast<enum PrintDestinationBuckets>(event_number);
if (event >= PRINT_DESTINATION_BUCKET_BOUNDARY)
return;
ReportPrintDestinationHistogram(event);
}
void PrintPreviewHandler::SendInitialSettings(
const std::string& default_printer,
const std::string& cloud_print_data) {
......@@ -710,6 +742,7 @@ void PrintPreviewHandler::SendCloudPrintEnabled() {
void PrintPreviewHandler::SendCloudPrintJob(const DictionaryValue& settings,
std::string print_ticket) {
ReportUserActionHistogram(PRINT_WITH_CLOUD_PRINT);
scoped_refptr<base::RefCountedBytes> data;
PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>(
web_ui()->GetController());
......
......@@ -145,6 +145,9 @@ class PrintPreviewHandler : public content::WebUIMessageHandler,
// preview is displayed.
void HandleGetInitialSettings(const base::ListValue* args);
// Reports histogram data for the print destination UI.
void HandleReportDestinationEvent(const base::ListValue* args);
void SendInitialSettings(
const std::string& default_printer,
const std::string& cloud_print_data);
......@@ -195,6 +198,7 @@ class PrintPreviewHandler : public content::WebUIMessageHandler,
// A count of how many requests received to show manage printers dialog.
int manage_printers_dialog_request_count_;
int manage_cloud_printers_dialog_request_count_;
// Whether we have already logged a failed print preview.
bool reported_failed_preview_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment