Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(200)

Side by Side Diff: chrome/browser/ui/webui/print_preview_handler.cc

Issue 7550063: Print Preview: Handle a crashed initiator tab by showing a message in PP. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed review comments Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 const char kPskDuplexFeature[] = "psk:JobDuplexAllDocumentsContiguously"; 66 const char kPskDuplexFeature[] = "psk:JobDuplexAllDocumentsContiguously";
67 const char kPskTwoSided[] = "psk:TwoSided"; 67 const char kPskTwoSided[] = "psk:TwoSided";
68 #endif 68 #endif
69 69
70 enum UserActionBuckets { 70 enum UserActionBuckets {
71 PRINT_TO_PRINTER, 71 PRINT_TO_PRINTER,
72 PRINT_TO_PDF, 72 PRINT_TO_PDF,
73 CANCEL, 73 CANCEL,
74 FALLBACK_TO_ADVANCED_SETTINGS_DIALOG, 74 FALLBACK_TO_ADVANCED_SETTINGS_DIALOG,
75 PREVIEW_FAILED, 75 PREVIEW_FAILED,
76 INITIATOR_TAB_CRASHED,
Lei Zhang 2011/08/16 03:30:41 do we need a corresponding change in some UMA .xml
kmadhusu 2011/08/16 16:46:47 Yeah. That will be a seperate CL.
76 PREVIEW_STARTED, 77 PREVIEW_STARTED,
77 USERACTION_BUCKET_BOUNDARY 78 USERACTION_BUCKET_BOUNDARY
78 }; 79 };
79 80
80 enum PrintSettingsBuckets { 81 enum PrintSettingsBuckets {
81 LANDSCAPE, 82 LANDSCAPE,
82 PORTRAIT, 83 PORTRAIT,
83 COLOR, 84 COLOR,
84 BLACK_AND_WHITE, 85 BLACK_AND_WHITE,
85 COLLATE, 86 COLLATE,
(...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after
425 web_ui_->RegisterMessageCallback("morePrinters", 426 web_ui_->RegisterMessageCallback("morePrinters",
426 NewCallback(this, &PrintPreviewHandler::HandleShowSystemDialog)); 427 NewCallback(this, &PrintPreviewHandler::HandleShowSystemDialog));
427 web_ui_->RegisterMessageCallback("signIn", 428 web_ui_->RegisterMessageCallback("signIn",
428 NewCallback(this, &PrintPreviewHandler::HandleManageCloudPrint)); 429 NewCallback(this, &PrintPreviewHandler::HandleManageCloudPrint));
429 web_ui_->RegisterMessageCallback("addCloudPrinter", 430 web_ui_->RegisterMessageCallback("addCloudPrinter",
430 NewCallback(this, &PrintPreviewHandler::HandleManageCloudPrint)); 431 NewCallback(this, &PrintPreviewHandler::HandleManageCloudPrint));
431 web_ui_->RegisterMessageCallback("manageCloudPrinters", 432 web_ui_->RegisterMessageCallback("manageCloudPrinters",
432 NewCallback(this, &PrintPreviewHandler::HandleManageCloudPrint)); 433 NewCallback(this, &PrintPreviewHandler::HandleManageCloudPrint));
433 web_ui_->RegisterMessageCallback("manageLocalPrinters", 434 web_ui_->RegisterMessageCallback("manageLocalPrinters",
434 NewCallback(this, &PrintPreviewHandler::HandleManagePrinters)); 435 NewCallback(this, &PrintPreviewHandler::HandleManagePrinters));
436 web_ui_->RegisterMessageCallback("reloadCrashedInitiatorTab",
437 NewCallback(this, &PrintPreviewHandler::HandleReloadCrashedInitiatorTab));
435 web_ui_->RegisterMessageCallback("closePrintPreviewTab", 438 web_ui_->RegisterMessageCallback("closePrintPreviewTab",
436 NewCallback(this, &PrintPreviewHandler::HandleClosePreviewTab)); 439 NewCallback(this, &PrintPreviewHandler::HandleClosePreviewTab));
437 web_ui_->RegisterMessageCallback("hidePreview", 440 web_ui_->RegisterMessageCallback("hidePreview",
438 NewCallback(this, &PrintPreviewHandler::HandleHidePreview)); 441 NewCallback(this, &PrintPreviewHandler::HandleHidePreview));
439 web_ui_->RegisterMessageCallback("cancelPendingPrintRequest", 442 web_ui_->RegisterMessageCallback("cancelPendingPrintRequest",
440 NewCallback(this, &PrintPreviewHandler::HandleCancelPendingPrintRequest)); 443 NewCallback(this, &PrintPreviewHandler::HandleCancelPendingPrintRequest));
441 web_ui_->RegisterMessageCallback("saveLastPrinter", 444 web_ui_->RegisterMessageCallback("saveLastPrinter",
442 NewCallback(this, &PrintPreviewHandler::HandleSaveLastPrinter)); 445 NewCallback(this, &PrintPreviewHandler::HandleSaveLastPrinter));
443 } 446 }
444 447
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
644 printing::PrintViewManager* manager = wrapper->print_view_manager(); 647 printing::PrintViewManager* manager = wrapper->print_view_manager();
645 manager->set_observer(this); 648 manager->set_observer(this);
646 manager->PrintForSystemDialogNow(); 649 manager->PrintForSystemDialogNow();
647 } 650 }
648 651
649 void PrintPreviewHandler::HandleManagePrinters(const ListValue* args) { 652 void PrintPreviewHandler::HandleManagePrinters(const ListValue* args) {
650 ++manage_printers_dialog_request_count_; 653 ++manage_printers_dialog_request_count_;
651 printing::PrinterManagerDialog::ShowPrinterManagerDialog(); 654 printing::PrinterManagerDialog::ShowPrinterManagerDialog();
652 } 655 }
653 656
657 void PrintPreviewHandler::HandleReloadCrashedInitiatorTab(const ListValue*) {
658 ReportStats();
659 ReportUserActionHistogram(INITIATOR_TAB_CRASHED);
660
661 TabContents* initiator_tab = GetInitiatorTab();
662 if (!initiator_tab)
663 return;
664
665 initiator_tab->OpenURL(
666 initiator_tab->GetURL(), GURL(), CURRENT_TAB, PageTransition::RELOAD);
667 ActivateInitiatorTabAndClosePreviewTab();
668 }
669
654 void PrintPreviewHandler::HandleClosePreviewTab(const ListValue* args) { 670 void PrintPreviewHandler::HandleClosePreviewTab(const ListValue* args) {
655 ReportStats(); 671 ReportStats();
656 ReportUserActionHistogram(CANCEL); 672 ReportUserActionHistogram(CANCEL);
657 673
658 // Record the number of times the user requests to regenerate preview data 674 // Record the number of times the user requests to regenerate preview data
659 // before cancelling. 675 // before cancelling.
660 UMA_HISTOGRAM_COUNTS("PrintPreview.RegeneratePreviewRequest.BeforeCancel", 676 UMA_HISTOGRAM_COUNTS("PrintPreview.RegeneratePreviewRequest.BeforeCancel",
661 regenerate_preview_request_count_); 677 regenerate_preview_request_count_);
662 678
663 ActivateInitiatorTabAndClosePreviewTab(); 679 ActivateInitiatorTabAndClosePreviewTab();
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
823 string16(), 839 string16(),
824 last_saved_path_->Append(default_filename), 840 last_saved_path_->Append(default_filename),
825 &file_type_info, 841 &file_type_info,
826 0, 842 0,
827 FILE_PATH_LITERAL(""), 843 FILE_PATH_LITERAL(""),
828 preview_tab(), 844 preview_tab(),
829 platform_util::GetTopLevel(preview_tab()->GetNativeView()), 845 platform_util::GetTopLevel(preview_tab()->GetNativeView()),
830 NULL); 846 NULL);
831 } 847 }
832 848
833 void PrintPreviewHandler::OnNavigation() { 849 void PrintPreviewHandler::OnTabDestroyed() {
834 TabContents* initiator_tab = GetInitiatorTab(); 850 TabContents* initiator_tab = GetInitiatorTab();
835 if (!initiator_tab) 851 if (!initiator_tab)
836 return; 852 return;
837 853
838 TabContentsWrapper* wrapper = 854 TabContentsWrapper* wrapper =
839 TabContentsWrapper::GetCurrentWrapperForContents(initiator_tab); 855 TabContentsWrapper::GetCurrentWrapperForContents(initiator_tab);
840 wrapper->print_view_manager()->set_observer(NULL); 856 wrapper->print_view_manager()->set_observer(NULL);
841 857
842 // Tell the initiator tab to stop rendering the print preview, if any, 858 // Tell the initiator tab to stop rendering the print preview, if any,
843 // since the preview tab is gone. 859 // since the preview tab is gone.
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
887 return; 903 return;
888 904
889 // We no longer require the initiator tab details. Remove those details 905 // We no longer require the initiator tab details. Remove those details
890 // associated with the preview tab to allow the initiator tab to create 906 // associated with the preview tab to allow the initiator tab to create
891 // another preview tab. 907 // another preview tab.
892 printing::PrintPreviewTabController* tab_controller = 908 printing::PrintPreviewTabController* tab_controller =
893 printing::PrintPreviewTabController::GetInstance(); 909 printing::PrintPreviewTabController::GetInstance();
894 if (tab_controller) 910 if (tab_controller)
895 tab_controller->EraseInitiatorTabInfo(preview_tab()); 911 tab_controller->EraseInitiatorTabInfo(preview_tab());
896 } 912 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/webui/print_preview_handler.h ('k') | chrome/browser/ui/webui/print_preview_ui.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698