OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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_handler.h" | 5 #include "chrome/browser/ui/webui/print_preview_handler.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/base64.h" | 9 #include "base/base64.h" |
10 #if !defined(OS_CHROMEOS) | 10 #if !defined(OS_CHROMEOS) |
(...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
461 web_ui_->RegisterMessageCallback("reloadCrashedInitiatorTab", | 461 web_ui_->RegisterMessageCallback("reloadCrashedInitiatorTab", |
462 NewCallback(this, &PrintPreviewHandler::HandleReloadCrashedInitiatorTab)); | 462 NewCallback(this, &PrintPreviewHandler::HandleReloadCrashedInitiatorTab)); |
463 web_ui_->RegisterMessageCallback("closePrintPreviewTab", | 463 web_ui_->RegisterMessageCallback("closePrintPreviewTab", |
464 NewCallback(this, &PrintPreviewHandler::HandleClosePreviewTab)); | 464 NewCallback(this, &PrintPreviewHandler::HandleClosePreviewTab)); |
465 web_ui_->RegisterMessageCallback("hidePreview", | 465 web_ui_->RegisterMessageCallback("hidePreview", |
466 NewCallback(this, &PrintPreviewHandler::HandleHidePreview)); | 466 NewCallback(this, &PrintPreviewHandler::HandleHidePreview)); |
467 web_ui_->RegisterMessageCallback("cancelPendingPrintRequest", | 467 web_ui_->RegisterMessageCallback("cancelPendingPrintRequest", |
468 NewCallback(this, &PrintPreviewHandler::HandleCancelPendingPrintRequest)); | 468 NewCallback(this, &PrintPreviewHandler::HandleCancelPendingPrintRequest)); |
469 web_ui_->RegisterMessageCallback("saveLastPrinter", | 469 web_ui_->RegisterMessageCallback("saveLastPrinter", |
470 NewCallback(this, &PrintPreviewHandler::HandleSaveLastPrinter)); | 470 NewCallback(this, &PrintPreviewHandler::HandleSaveLastPrinter)); |
| 471 web_ui_->RegisterMessageCallback("getInitiatorTabTitle", |
| 472 NewCallback(this, &PrintPreviewHandler::HandleGetInitiatorTabTitle)); |
471 } | 473 } |
472 | 474 |
473 TabContentsWrapper* PrintPreviewHandler::preview_tab_wrapper() const { | 475 TabContentsWrapper* PrintPreviewHandler::preview_tab_wrapper() const { |
474 return TabContentsWrapper::GetCurrentWrapperForContents(preview_tab()); | 476 return TabContentsWrapper::GetCurrentWrapperForContents(preview_tab()); |
475 } | 477 } |
476 TabContents* PrintPreviewHandler::preview_tab() const { | 478 TabContents* PrintPreviewHandler::preview_tab() const { |
477 return web_ui_->tab_contents(); | 479 return web_ui_->tab_contents(); |
478 } | 480 } |
479 | 481 |
480 void PrintPreviewHandler::HandleGetDefaultPrinter(const ListValue*) { | 482 void PrintPreviewHandler::HandleGetDefaultPrinter(const ListValue* /*args*/) { |
481 scoped_refptr<PrintSystemTaskProxy> task = | 483 scoped_refptr<PrintSystemTaskProxy> task = |
482 new PrintSystemTaskProxy(AsWeakPtr(), | 484 new PrintSystemTaskProxy(AsWeakPtr(), |
483 print_backend_.get(), | 485 print_backend_.get(), |
484 has_logged_printers_count_); | 486 has_logged_printers_count_); |
485 BrowserThread::PostTask( | 487 BrowserThread::PostTask( |
486 BrowserThread::FILE, FROM_HERE, | 488 BrowserThread::FILE, FROM_HERE, |
487 NewRunnableMethod(task.get(), | 489 NewRunnableMethod(task.get(), |
488 &PrintSystemTaskProxy::GetDefaultPrinter)); | 490 &PrintSystemTaskProxy::GetDefaultPrinter)); |
489 } | 491 } |
490 | 492 |
491 void PrintPreviewHandler::HandleGetPrinters(const ListValue*) { | 493 void PrintPreviewHandler::HandleGetPrinters(const ListValue* /*args*/) { |
492 scoped_refptr<PrintSystemTaskProxy> task = | 494 scoped_refptr<PrintSystemTaskProxy> task = |
493 new PrintSystemTaskProxy(AsWeakPtr(), | 495 new PrintSystemTaskProxy(AsWeakPtr(), |
494 print_backend_.get(), | 496 print_backend_.get(), |
495 has_logged_printers_count_); | 497 has_logged_printers_count_); |
496 has_logged_printers_count_ = true; | 498 has_logged_printers_count_ = true; |
497 | 499 |
498 BrowserThread::PostTask( | 500 BrowserThread::PostTask( |
499 BrowserThread::FILE, FROM_HERE, | 501 BrowserThread::FILE, FROM_HERE, |
500 NewRunnableMethod(task.get(), | 502 NewRunnableMethod(task.get(), |
501 &PrintSystemTaskProxy::EnumeratePrinters)); | 503 &PrintSystemTaskProxy::EnumeratePrinters)); |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
640 ClearInitiatorTabDetails(); | 642 ClearInitiatorTabDetails(); |
641 | 643 |
642 // The PDF being printed contains only the pages that the user selected, | 644 // The PDF being printed contains only the pages that the user selected, |
643 // so ignore the page range and print all pages. | 645 // so ignore the page range and print all pages. |
644 settings->Remove(printing::kSettingPageRange, NULL); | 646 settings->Remove(printing::kSettingPageRange, NULL); |
645 RenderViewHost* rvh = web_ui_->tab_contents()->render_view_host(); | 647 RenderViewHost* rvh = web_ui_->tab_contents()->render_view_host(); |
646 rvh->Send(new PrintMsg_PrintForPrintPreview(rvh->routing_id(), *settings)); | 648 rvh->Send(new PrintMsg_PrintForPrintPreview(rvh->routing_id(), *settings)); |
647 } | 649 } |
648 } | 650 } |
649 | 651 |
650 void PrintPreviewHandler::HandleHidePreview(const ListValue*) { | 652 void PrintPreviewHandler::HandleHidePreview(const ListValue* /*args*/) { |
651 HidePreviewTab(); | 653 HidePreviewTab(); |
652 } | 654 } |
653 | 655 |
654 void PrintPreviewHandler::HandleCancelPendingPrintRequest(const ListValue*) { | 656 void PrintPreviewHandler::HandleCancelPendingPrintRequest( |
| 657 const ListValue* /*args*/) { |
655 TabContentsWrapper* initiator_tab = GetInitiatorTab(); | 658 TabContentsWrapper* initiator_tab = GetInitiatorTab(); |
656 if (initiator_tab) { | 659 if (initiator_tab) { |
657 ClearInitiatorTabDetails(); | 660 ClearInitiatorTabDetails(); |
658 } else { | 661 } else { |
659 // Initiator tab does not exists. Get the wrapper contents of current tab. | 662 // Initiator tab does not exists. Get the wrapper contents of current tab. |
660 Browser* browser = BrowserList::GetLastActive(); | 663 Browser* browser = BrowserList::GetLastActive(); |
661 if (browser) | 664 if (browser) |
662 initiator_tab = browser->GetSelectedTabContentsWrapper(); | 665 initiator_tab = browser->GetSelectedTabContentsWrapper(); |
663 } | 666 } |
664 | 667 |
(...skipping 27 matching lines...) Expand all Loading... |
692 print_backend_.get(), | 695 print_backend_.get(), |
693 has_logged_printers_count_); | 696 has_logged_printers_count_); |
694 | 697 |
695 BrowserThread::PostTask( | 698 BrowserThread::PostTask( |
696 BrowserThread::FILE, FROM_HERE, | 699 BrowserThread::FILE, FROM_HERE, |
697 NewRunnableMethod(task.get(), | 700 NewRunnableMethod(task.get(), |
698 &PrintSystemTaskProxy::GetPrinterCapabilities, | 701 &PrintSystemTaskProxy::GetPrinterCapabilities, |
699 printer_name)); | 702 printer_name)); |
700 } | 703 } |
701 | 704 |
702 void PrintPreviewHandler::HandleSignin(const ListValue*) { | 705 void PrintPreviewHandler::HandleSignin(const ListValue* /*args*/) { |
703 cloud_print_signin_dialog::CreateCloudPrintSigninDialog(preview_tab()); | 706 cloud_print_signin_dialog::CreateCloudPrintSigninDialog(preview_tab()); |
704 } | 707 } |
705 | 708 |
706 void PrintPreviewHandler::HandleManageCloudPrint(const ListValue*) { | 709 void PrintPreviewHandler::HandleManageCloudPrint(const ListValue* /*args*/) { |
707 Browser* browser = BrowserList::GetLastActive(); | 710 Browser* browser = BrowserList::GetLastActive(); |
708 browser->OpenURL(CloudPrintURL(browser->profile()). | 711 browser->OpenURL(CloudPrintURL(browser->profile()). |
709 GetCloudPrintServiceManageURL(), | 712 GetCloudPrintServiceManageURL(), |
710 GURL(), | 713 GURL(), |
711 NEW_FOREGROUND_TAB, | 714 NEW_FOREGROUND_TAB, |
712 PageTransition::LINK); | 715 PageTransition::LINK); |
713 } | 716 } |
714 | 717 |
715 void PrintPreviewHandler::HandleShowSystemDialog(const ListValue*) { | 718 void PrintPreviewHandler::HandleShowSystemDialog(const ListValue* /*args*/) { |
716 ReportStats(); | 719 ReportStats(); |
717 ReportUserActionHistogram(FALLBACK_TO_ADVANCED_SETTINGS_DIALOG); | 720 ReportUserActionHistogram(FALLBACK_TO_ADVANCED_SETTINGS_DIALOG); |
718 | 721 |
719 TabContentsWrapper* initiator_tab = GetInitiatorTab(); | 722 TabContentsWrapper* initiator_tab = GetInitiatorTab(); |
720 if (!initiator_tab) | 723 if (!initiator_tab) |
721 return; | 724 return; |
722 | 725 |
723 printing::PrintViewManager* manager = initiator_tab->print_view_manager(); | 726 printing::PrintViewManager* manager = initiator_tab->print_view_manager(); |
724 manager->set_observer(this); | 727 manager->set_observer(this); |
725 manager->PrintForSystemDialogNow(); | 728 manager->PrintForSystemDialogNow(); |
726 | 729 |
727 // Cancel the pending preview request if exists. | 730 // Cancel the pending preview request if exists. |
728 PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>(web_ui_); | 731 PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>(web_ui_); |
729 print_preview_ui->OnCancelPendingPreviewRequest(); | 732 print_preview_ui->OnCancelPendingPreviewRequest(); |
730 } | 733 } |
731 | 734 |
732 void PrintPreviewHandler::HandleManagePrinters(const ListValue*) { | 735 void PrintPreviewHandler::HandleManagePrinters(const ListValue* /*args*/) { |
733 ++manage_printers_dialog_request_count_; | 736 ++manage_printers_dialog_request_count_; |
734 printing::PrinterManagerDialog::ShowPrinterManagerDialog(); | 737 printing::PrinterManagerDialog::ShowPrinterManagerDialog(); |
735 } | 738 } |
736 | 739 |
737 void PrintPreviewHandler::HandleReloadCrashedInitiatorTab(const ListValue*) { | 740 void PrintPreviewHandler::HandleReloadCrashedInitiatorTab( |
| 741 const ListValue* /*args*/) { |
738 ReportStats(); | 742 ReportStats(); |
739 ReportUserActionHistogram(INITIATOR_TAB_CRASHED); | 743 ReportUserActionHistogram(INITIATOR_TAB_CRASHED); |
740 | 744 |
741 TabContentsWrapper* initiator_tab = GetInitiatorTab(); | 745 TabContentsWrapper* initiator_tab = GetInitiatorTab(); |
742 if (!initiator_tab) | 746 if (!initiator_tab) |
743 return; | 747 return; |
744 | 748 |
745 TabContents* contents = initiator_tab->tab_contents(); | 749 TabContents* contents = initiator_tab->tab_contents(); |
746 contents->OpenURL(contents->GetURL(), GURL(), CURRENT_TAB, | 750 contents->OpenURL(contents->GetURL(), GURL(), CURRENT_TAB, |
747 PageTransition::RELOAD); | 751 PageTransition::RELOAD); |
748 ActivateInitiatorTabAndClosePreviewTab(); | 752 ActivateInitiatorTabAndClosePreviewTab(); |
749 } | 753 } |
750 | 754 |
751 void PrintPreviewHandler::HandleClosePreviewTab(const ListValue*) { | 755 void PrintPreviewHandler::HandleClosePreviewTab(const ListValue* /*args*/) { |
752 ReportStats(); | 756 ReportStats(); |
753 ReportUserActionHistogram(CANCEL); | 757 ReportUserActionHistogram(CANCEL); |
754 | 758 |
755 // Record the number of times the user requests to regenerate preview data | 759 // Record the number of times the user requests to regenerate preview data |
756 // before cancelling. | 760 // before cancelling. |
757 UMA_HISTOGRAM_COUNTS("PrintPreview.RegeneratePreviewRequest.BeforeCancel", | 761 UMA_HISTOGRAM_COUNTS("PrintPreview.RegeneratePreviewRequest.BeforeCancel", |
758 regenerate_preview_request_count_); | 762 regenerate_preview_request_count_); |
759 | 763 |
760 ActivateInitiatorTabAndClosePreviewTab(); | 764 ActivateInitiatorTabAndClosePreviewTab(); |
761 } | 765 } |
762 | 766 |
763 void PrintPreviewHandler::ReportStats() { | 767 void PrintPreviewHandler::ReportStats() { |
764 UMA_HISTOGRAM_COUNTS("PrintPreview.ManagePrinters", | 768 UMA_HISTOGRAM_COUNTS("PrintPreview.ManagePrinters", |
765 manage_printers_dialog_request_count_); | 769 manage_printers_dialog_request_count_); |
766 } | 770 } |
767 | 771 |
| 772 void PrintPreviewHandler::HandleGetInitiatorTabTitle( |
| 773 const ListValue* /*args*/) { |
| 774 PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>(web_ui_); |
| 775 print_preview_ui->SendInitiatorTabTitle(); |
| 776 } |
| 777 |
768 void PrintPreviewHandler::ActivateInitiatorTabAndClosePreviewTab() { | 778 void PrintPreviewHandler::ActivateInitiatorTabAndClosePreviewTab() { |
769 TabContentsWrapper* initiator_tab = GetInitiatorTab(); | 779 TabContentsWrapper* initiator_tab = GetInitiatorTab(); |
770 if (initiator_tab) { | 780 if (initiator_tab) { |
771 static_cast<RenderViewHostDelegate*>( | 781 static_cast<RenderViewHostDelegate*>( |
772 initiator_tab->tab_contents())->Activate(); | 782 initiator_tab->tab_contents())->Activate(); |
773 } | 783 } |
774 ClosePrintPreviewTab(); | 784 ClosePrintPreviewTab(); |
775 } | 785 } |
776 | 786 |
777 void PrintPreviewHandler::SendPrinterCapabilities( | 787 void PrintPreviewHandler::SendPrinterCapabilities( |
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
988 return; | 998 return; |
989 | 999 |
990 // We no longer require the initiator tab details. Remove those details | 1000 // We no longer require the initiator tab details. Remove those details |
991 // associated with the preview tab to allow the initiator tab to create | 1001 // associated with the preview tab to allow the initiator tab to create |
992 // another preview tab. | 1002 // another preview tab. |
993 printing::PrintPreviewTabController* tab_controller = | 1003 printing::PrintPreviewTabController* tab_controller = |
994 printing::PrintPreviewTabController::GetInstance(); | 1004 printing::PrintPreviewTabController::GetInstance(); |
995 if (tab_controller) | 1005 if (tab_controller) |
996 tab_controller->EraseInitiatorTabInfo(preview_tab_wrapper()); | 1006 tab_controller->EraseInitiatorTabInfo(preview_tab_wrapper()); |
997 } | 1007 } |
OLD | NEW |