Chromium Code Reviews| 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 <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 88 LANDSCAPE, | 88 LANDSCAPE, |
| 89 PORTRAIT, | 89 PORTRAIT, |
| 90 COLOR, | 90 COLOR, |
| 91 BLACK_AND_WHITE, | 91 BLACK_AND_WHITE, |
| 92 COLLATE, | 92 COLLATE, |
| 93 SIMPLEX, | 93 SIMPLEX, |
| 94 DUPLEX, | 94 DUPLEX, |
| 95 PRINT_SETTINGS_BUCKET_BOUNDARY | 95 PRINT_SETTINGS_BUCKET_BOUNDARY |
| 96 }; | 96 }; |
| 97 | 97 |
| 98 enum PrintDestinationBuckets { | |
| 99 DESTINATION_SHOWN, | |
| 100 DESTINATION_CLOSED_CHANGED, | |
| 101 DESTINATION_CLOSED_UNCHANGED, | |
| 102 SIGNIN_PROMPT, | |
| 103 SIGNIN_TRIGGERED, | |
| 104 PRINT_DESTINATION_BUCKET_BOUNDARY | |
| 105 }; | |
| 106 | |
| 98 void ReportUserActionHistogram(enum UserActionBuckets event) { | 107 void ReportUserActionHistogram(enum UserActionBuckets event) { |
| 99 UMA_HISTOGRAM_ENUMERATION("PrintPreview.UserAction", event, | 108 UMA_HISTOGRAM_ENUMERATION("PrintPreview.UserAction", event, |
| 100 USERACTION_BUCKET_BOUNDARY); | 109 USERACTION_BUCKET_BOUNDARY); |
| 101 } | 110 } |
| 102 | 111 |
| 103 void ReportPrintSettingHistogram(enum PrintSettingsBuckets setting) { | 112 void ReportPrintSettingHistogram(enum PrintSettingsBuckets setting) { |
| 104 UMA_HISTOGRAM_ENUMERATION("PrintPreview.PrintSettings", setting, | 113 UMA_HISTOGRAM_ENUMERATION("PrintPreview.PrintSettings", setting, |
| 105 PRINT_SETTINGS_BUCKET_BOUNDARY); | 114 PRINT_SETTINGS_BUCKET_BOUNDARY); |
| 106 } | 115 } |
| 107 | 116 |
| 117 void ReportPrintDestinationHistogram(enum PrintDestinationBuckets event) { | |
| 118 UMA_HISTOGRAM_ENUMERATION("PrintPreview.DestinationAction", event, | |
| 119 PRINT_DESTINATION_BUCKET_BOUNDARY); | |
| 120 } | |
| 121 | |
| 108 // Name of a dictionary fielad holdong cloud print related data; | 122 // Name of a dictionary fielad holdong cloud print related data; |
| 109 const char kCloudPrintData[] = "cloudPrintData"; | 123 const char kCloudPrintData[] = "cloudPrintData"; |
| 110 // Name of a dictionary field holding the initiator tab title. | 124 // Name of a dictionary field holding the initiator tab title. |
| 111 const char kInitiatorTabTitle[] = "initiatorTabTitle"; | 125 const char kInitiatorTabTitle[] = "initiatorTabTitle"; |
| 112 // Name of a dictionary field holding the measurement system according to the | 126 // Name of a dictionary field holding the measurement system according to the |
| 113 // locale. | 127 // locale. |
| 114 const char kMeasurementSystem[] = "measurementSystem"; | 128 const char kMeasurementSystem[] = "measurementSystem"; |
| 115 // Name of a dictionary field holding the number format according to the locale. | 129 // Name of a dictionary field holding the number format according to the locale. |
| 116 const char kNumberFormat[] = "numberFormat"; | 130 const char kNumberFormat[] = "numberFormat"; |
| 117 // Name of a dictionary field specifying whether to print automatically in | 131 // Name of a dictionary field specifying whether to print automatically in |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 203 | 217 |
| 204 // static | 218 // static |
| 205 printing::StickySettings* PrintPreviewHandler::GetStickySettings() { | 219 printing::StickySettings* PrintPreviewHandler::GetStickySettings() { |
| 206 return sticky_settings.Pointer(); | 220 return sticky_settings.Pointer(); |
| 207 } | 221 } |
| 208 | 222 |
| 209 PrintPreviewHandler::PrintPreviewHandler() | 223 PrintPreviewHandler::PrintPreviewHandler() |
| 210 : print_backend_(printing::PrintBackend::CreateInstance(NULL)), | 224 : print_backend_(printing::PrintBackend::CreateInstance(NULL)), |
| 211 regenerate_preview_request_count_(0), | 225 regenerate_preview_request_count_(0), |
| 212 manage_printers_dialog_request_count_(0), | 226 manage_printers_dialog_request_count_(0), |
| 227 manage_cloud_printers_dialog_request_count_(0), | |
| 213 reported_failed_preview_(false), | 228 reported_failed_preview_(false), |
| 214 has_logged_printers_count_(false) { | 229 has_logged_printers_count_(false) { |
| 215 ReportUserActionHistogram(PREVIEW_STARTED); | 230 ReportUserActionHistogram(PREVIEW_STARTED); |
| 216 } | 231 } |
| 217 | 232 |
| 218 PrintPreviewHandler::~PrintPreviewHandler() { | 233 PrintPreviewHandler::~PrintPreviewHandler() { |
| 219 if (select_file_dialog_.get()) | 234 if (select_file_dialog_.get()) |
| 220 select_file_dialog_->ListenerDestroyed(); | 235 select_file_dialog_->ListenerDestroyed(); |
| 221 } | 236 } |
| 222 | 237 |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 253 base::Unretained(this))); | 268 base::Unretained(this))); |
| 254 web_ui()->RegisterMessageCallback("cancelPendingPrintRequest", | 269 web_ui()->RegisterMessageCallback("cancelPendingPrintRequest", |
| 255 base::Bind(&PrintPreviewHandler::HandleCancelPendingPrintRequest, | 270 base::Bind(&PrintPreviewHandler::HandleCancelPendingPrintRequest, |
| 256 base::Unretained(this))); | 271 base::Unretained(this))); |
| 257 web_ui()->RegisterMessageCallback("saveLastPrinter", | 272 web_ui()->RegisterMessageCallback("saveLastPrinter", |
| 258 base::Bind(&PrintPreviewHandler::HandleSaveLastPrinter, | 273 base::Bind(&PrintPreviewHandler::HandleSaveLastPrinter, |
| 259 base::Unretained(this))); | 274 base::Unretained(this))); |
| 260 web_ui()->RegisterMessageCallback("getInitialSettings", | 275 web_ui()->RegisterMessageCallback("getInitialSettings", |
| 261 base::Bind(&PrintPreviewHandler::HandleGetInitialSettings, | 276 base::Bind(&PrintPreviewHandler::HandleGetInitialSettings, |
| 262 base::Unretained(this))); | 277 base::Unretained(this))); |
| 278 web_ui()->RegisterMessageCallback("reportDestinationEvent", | |
| 279 base::Bind(&PrintPreviewHandler::HandleReportDestinationEvent, | |
| 280 base::Unretained(this))); | |
| 263 } | 281 } |
| 264 | 282 |
| 265 TabContentsWrapper* PrintPreviewHandler::preview_tab_wrapper() const { | 283 TabContentsWrapper* PrintPreviewHandler::preview_tab_wrapper() const { |
| 266 return TabContentsWrapper::GetCurrentWrapperForContents(preview_tab()); | 284 return TabContentsWrapper::GetCurrentWrapperForContents(preview_tab()); |
| 267 } | 285 } |
| 268 | 286 |
| 269 WebContents* PrintPreviewHandler::preview_tab() const { | 287 WebContents* PrintPreviewHandler::preview_tab() const { |
| 270 return web_ui()->GetWebContents(); | 288 return web_ui()->GetWebContents(); |
| 271 } | 289 } |
| 272 | 290 |
| (...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 555 true); | 573 true); |
| 556 | 574 |
| 557 // Once the cloud print dialog comes up we're no longer in a background | 575 // Once the cloud print dialog comes up we're no longer in a background |
| 558 // printing situation. Close the print preview. | 576 // printing situation. Close the print preview. |
| 559 // TODO(abodenha@chromium.org) The flow should be changed as described in | 577 // TODO(abodenha@chromium.org) The flow should be changed as described in |
| 560 // http://code.google.com/p/chromium/issues/detail?id=44093 | 578 // http://code.google.com/p/chromium/issues/detail?id=44093 |
| 561 ActivateInitiatorTabAndClosePreviewTab(); | 579 ActivateInitiatorTabAndClosePreviewTab(); |
| 562 } | 580 } |
| 563 | 581 |
| 564 void PrintPreviewHandler::HandleManageCloudPrint(const ListValue* /*args*/) { | 582 void PrintPreviewHandler::HandleManageCloudPrint(const ListValue* /*args*/) { |
| 583 ++manage_cloud_printers_dialog_request_count_; | |
| 565 Browser* browser = BrowserList::GetLastActive(); | 584 Browser* browser = BrowserList::GetLastActive(); |
| 566 if (browser != NULL) | 585 if (browser != NULL) |
| 567 browser->OpenURL(OpenURLParams( | 586 browser->OpenURL(OpenURLParams( |
| 568 CloudPrintURL(browser->profile()).GetCloudPrintServiceManageURL(), | 587 CloudPrintURL(browser->profile()).GetCloudPrintServiceManageURL(), |
| 569 Referrer(), | 588 Referrer(), |
| 570 NEW_FOREGROUND_TAB, | 589 NEW_FOREGROUND_TAB, |
| 571 content::PAGE_TRANSITION_LINK, | 590 content::PAGE_TRANSITION_LINK, |
| 572 false)); | 591 false)); |
| 573 } | 592 } |
| 574 | 593 |
| (...skipping 26 matching lines...) Expand all Loading... | |
| 601 | 620 |
| 602 // Record the number of times the user requests to regenerate preview data | 621 // Record the number of times the user requests to regenerate preview data |
| 603 // before cancelling. | 622 // before cancelling. |
| 604 UMA_HISTOGRAM_COUNTS("PrintPreview.RegeneratePreviewRequest.BeforeCancel", | 623 UMA_HISTOGRAM_COUNTS("PrintPreview.RegeneratePreviewRequest.BeforeCancel", |
| 605 regenerate_preview_request_count_); | 624 regenerate_preview_request_count_); |
| 606 } | 625 } |
| 607 | 626 |
| 608 void PrintPreviewHandler::ReportStats() { | 627 void PrintPreviewHandler::ReportStats() { |
| 609 UMA_HISTOGRAM_COUNTS("PrintPreview.ManagePrinters", | 628 UMA_HISTOGRAM_COUNTS("PrintPreview.ManagePrinters", |
| 610 manage_printers_dialog_request_count_); | 629 manage_printers_dialog_request_count_); |
| 630 UMA_HISTOGRAM_COUNTS("PrintPreview.ManageCloudPrinters", | |
| 631 manage_cloud_printers_dialog_request_count_); | |
| 611 } | 632 } |
| 612 | 633 |
| 613 void PrintPreviewHandler::GetNumberFormatAndMeasurementSystem( | 634 void PrintPreviewHandler::GetNumberFormatAndMeasurementSystem( |
| 614 base::DictionaryValue* settings) { | 635 base::DictionaryValue* settings) { |
| 615 | 636 |
| 616 // Getting the measurement system based on the locale. | 637 // Getting the measurement system based on the locale. |
| 617 UErrorCode errorCode = U_ZERO_ERROR; | 638 UErrorCode errorCode = U_ZERO_ERROR; |
| 618 const char* locale = g_browser_process->GetApplicationLocale().c_str(); | 639 const char* locale = g_browser_process->GetApplicationLocale().c_str(); |
| 619 UMeasurementSystem system = ulocdata_getMeasurementSystem(locale, &errorCode); | 640 UMeasurementSystem system = ulocdata_getMeasurementSystem(locale, &errorCode); |
| 620 if (errorCode > U_ZERO_ERROR || system == UMS_LIMIT) | 641 if (errorCode > U_ZERO_ERROR || system == UMS_LIMIT) |
| 621 system = UMS_SI; | 642 system = UMS_SI; |
| 622 | 643 |
| 623 // Getting the number formatting based on the locale and writing to | 644 // Getting the number formatting based on the locale and writing to |
| 624 // dictionary. | 645 // dictionary. |
| 625 settings->SetString(kNumberFormat, base::FormatDouble(123456.78, 2)); | 646 settings->SetString(kNumberFormat, base::FormatDouble(123456.78, 2)); |
| 626 settings->SetInteger(kMeasurementSystem, system); | 647 settings->SetInteger(kMeasurementSystem, system); |
| 627 } | 648 } |
| 628 | 649 |
| 629 void PrintPreviewHandler::HandleGetInitialSettings(const ListValue* /*args*/) { | 650 void PrintPreviewHandler::HandleGetInitialSettings(const ListValue* /*args*/) { |
| 630 scoped_refptr<PrintSystemTaskProxy> task = | 651 scoped_refptr<PrintSystemTaskProxy> task = |
| 631 new PrintSystemTaskProxy(AsWeakPtr(), | 652 new PrintSystemTaskProxy(AsWeakPtr(), |
| 632 print_backend_.get(), | 653 print_backend_.get(), |
| 633 has_logged_printers_count_); | 654 has_logged_printers_count_); |
| 634 BrowserThread::PostTask( | 655 BrowserThread::PostTask( |
| 635 BrowserThread::FILE, FROM_HERE, | 656 BrowserThread::FILE, FROM_HERE, |
| 636 base::Bind(&PrintSystemTaskProxy::GetDefaultPrinter, task.get())); | 657 base::Bind(&PrintSystemTaskProxy::GetDefaultPrinter, task.get())); |
| 637 } | 658 } |
| 638 | 659 |
| 660 void PrintPreviewHandler::HandleReportDestinationEvent(const ListValue* args) { | |
| 661 int event_number; | |
| 662 bool ret = args->GetInteger(0, &event_number); | |
| 663 if (!ret) | |
| 664 return; | |
| 665 enum PrintDestinationBuckets event = | |
| 666 static_cast<enum PrintDestinationBuckets>(event_number); | |
| 667 if (event >= PRINT_DESTINATION_BUCKET_BOUNDARY) | |
| 668 return; | |
| 669 ReportPrintDestinationHistogram(event); | |
| 670 } | |
| 671 | |
| 639 void PrintPreviewHandler::SendInitialSettings( | 672 void PrintPreviewHandler::SendInitialSettings( |
| 640 const std::string& default_printer, | 673 const std::string& default_printer, |
| 641 const std::string& cloud_print_data) { | 674 const std::string& cloud_print_data) { |
| 642 PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>( | 675 PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>( |
| 643 web_ui()->GetController()); | 676 web_ui()->GetController()); |
| 644 | 677 |
| 645 base::DictionaryValue initial_settings; | 678 base::DictionaryValue initial_settings; |
| 646 initial_settings.SetString(kInitiatorTabTitle, | 679 initial_settings.SetString(kInitiatorTabTitle, |
| 647 print_preview_ui->initiator_tab_title()); | 680 print_preview_ui->initiator_tab_title()); |
| 648 initial_settings.SetBoolean(printing::kSettingPreviewModifiable, | 681 initial_settings.SetBoolean(printing::kSettingPreviewModifiable, |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 702 if (prefs->GetBoolean(prefs::kCloudPrintSubmitEnabled)) { | 735 if (prefs->GetBoolean(prefs::kCloudPrintSubmitEnabled)) { |
| 703 GURL gcp_url(CloudPrintURL(profile).GetCloudPrintServiceURL()); | 736 GURL gcp_url(CloudPrintURL(profile).GetCloudPrintServiceURL()); |
| 704 base::StringValue gcp_url_value(gcp_url.spec()); | 737 base::StringValue gcp_url_value(gcp_url.spec()); |
| 705 web_ui()->CallJavascriptFunction("setUseCloudPrint", gcp_url_value); | 738 web_ui()->CallJavascriptFunction("setUseCloudPrint", gcp_url_value); |
| 706 } | 739 } |
| 707 } | 740 } |
| 708 } | 741 } |
| 709 | 742 |
| 710 void PrintPreviewHandler::SendCloudPrintJob(const DictionaryValue& settings, | 743 void PrintPreviewHandler::SendCloudPrintJob(const DictionaryValue& settings, |
| 711 std::string print_ticket) { | 744 std::string print_ticket) { |
| 745 ReportUserActionHistogram(PRINT_WITH_CLOUD_PRINT); | |
|
Scott Byer
2012/05/16 23:24:06
Isn't this redundant with HandlePrintWithCloudPrin
| |
| 712 scoped_refptr<base::RefCountedBytes> data; | 746 scoped_refptr<base::RefCountedBytes> data; |
| 713 PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>( | 747 PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>( |
| 714 web_ui()->GetController()); | 748 web_ui()->GetController()); |
| 715 print_preview_ui->GetPrintPreviewDataForIndex( | 749 print_preview_ui->GetPrintPreviewDataForIndex( |
| 716 printing::COMPLETE_PREVIEW_DOCUMENT_INDEX, &data); | 750 printing::COMPLETE_PREVIEW_DOCUMENT_INDEX, &data); |
| 717 if (data.get() && data->size() > 0U && data->front()) { | 751 if (data.get() && data->size() > 0U && data->front()) { |
| 718 string16 print_job_title_utf16 = | 752 string16 print_job_title_utf16 = |
| 719 preview_tab_wrapper()->print_view_manager()->RenderSourceName(); | 753 preview_tab_wrapper()->print_view_manager()->RenderSourceName(); |
| 720 std::string print_job_title = UTF16ToUTF8(print_job_title_utf16); | 754 std::string print_job_title = UTF16ToUTF8(print_job_title_utf16); |
| 721 std::string printer_id; | 755 std::string printer_id; |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 870 return; | 904 return; |
| 871 | 905 |
| 872 // We no longer require the initiator tab details. Remove those details | 906 // We no longer require the initiator tab details. Remove those details |
| 873 // associated with the preview tab to allow the initiator tab to create | 907 // associated with the preview tab to allow the initiator tab to create |
| 874 // another preview tab. | 908 // another preview tab. |
| 875 printing::PrintPreviewTabController* tab_controller = | 909 printing::PrintPreviewTabController* tab_controller = |
| 876 printing::PrintPreviewTabController::GetInstance(); | 910 printing::PrintPreviewTabController::GetInstance(); |
| 877 if (tab_controller) | 911 if (tab_controller) |
| 878 tab_controller->EraseInitiatorTabInfo(preview_tab_wrapper()); | 912 tab_controller->EraseInitiatorTabInfo(preview_tab_wrapper()); |
| 879 } | 913 } |
| OLD | NEW |