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

Unified Diff: chrome/browser/ui/webui/print_preview_handler.cc

Issue 7056070: PrintPreview: Preview generation should not block print button. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed another corner case Created 9 years, 6 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 side-by-side diff with in-line comments
Download patch
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 70b2b48f1db514d31e5a042a8150db22bdbbee74..35f0538afa3bf9d4fac2a96d526ba74fea298425 100644
--- a/chrome/browser/ui/webui/print_preview_handler.cc
+++ b/chrome/browser/ui/webui/print_preview_handler.cc
@@ -370,6 +370,8 @@ void PrintPreviewHandler::RegisterMessages() {
NewCallback(this, &PrintPreviewHandler::HandleManagePrinters));
web_ui_->RegisterMessageCallback("closePrintPreviewTab",
NewCallback(this, &PrintPreviewHandler::HandleClosePreviewTab));
+ web_ui_->RegisterMessageCallback("hidePreview",
+ NewCallback(this, &PrintPreviewHandler::HandleHidePreview));
}
TabContents* PrintPreviewHandler::preview_tab() {
@@ -430,12 +432,6 @@ void PrintPreviewHandler::HandlePrint(const ListValue* args) {
UMA_HISTOGRAM_COUNTS("PrintPreview.RegeneratePreviewRequest.BeforePrint",
regenerate_preview_request_count_);
- TabContents* initiator_tab = GetInitiatorTab();
- if (initiator_tab) {
- RenderViewHost* rvh = initiator_tab->render_view_host();
- rvh->Send(new PrintMsg_ResetScriptedPrintCount(rvh->routing_id()));
- }
-
scoped_ptr<DictionaryValue> settings(GetSettingsDictionary(args));
if (!settings.get())
return;
@@ -468,12 +464,13 @@ void PrintPreviewHandler::HandlePrint(const ListValue* args) {
SelectFile(default_filename);
} else {
+ ClearInitiatorTabDetails();
ReportPrintSettingsStats(*settings);
ReportUserActionHistogram(PRINT_TO_PRINTER);
UMA_HISTOGRAM_COUNTS("PrintPreview.PageCount.PrintToPrinter",
GetPageCountFromSettingsDictionary(*settings));
- g_browser_process->background_printing_manager()->OwnTabContents(
- preview_tab_wrapper);
+
+ HidePreviewTab();
// The PDF being printed contains only the pages that the user selected,
// so ignore the page range and print all pages.
@@ -483,6 +480,10 @@ void PrintPreviewHandler::HandlePrint(const ListValue* args) {
}
}
+void PrintPreviewHandler::HandleHidePreview(const ListValue* args) {
+ HidePreviewTab();
+}
+
void PrintPreviewHandler::HandleGetPrinterCapabilities(
const ListValue* args) {
std::string printer_name;
@@ -638,3 +639,29 @@ void PrintPreviewHandler::FileSelected(const FilePath& path,
ActivateInitiatorTabAndClosePreviewTab();
}
+
+void PrintPreviewHandler::HidePreviewTab() {
+ PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>(web_ui_);
+ if (print_preview_ui->isHidden())
+ return;
+
+ TabContentsWrapper* preview_tab_wrapper =
+ TabContentsWrapper::GetCurrentWrapperForContents(preview_tab());
+ g_browser_process->background_printing_manager()->OwnTabContents(
+ preview_tab_wrapper);
+ print_preview_ui->setTabHiddenForPrint();
+}
+
+void PrintPreviewHandler::ClearInitiatorTabDetails() {
+ TabContents* initiator_tab = GetInitiatorTab();
+ if (initiator_tab) {
+ RenderViewHost* rvh = initiator_tab->render_view_host();
+ rvh->Send(new PrintMsg_ResetScriptedPrintCount(rvh->routing_id()));
+
+ // Remove initiator tab association with the preview tab.
+ printing::PrintPreviewTabController* tab_controller =
+ printing::PrintPreviewTabController::GetInstance();
+ if (tab_controller)
+ tab_controller->EraseInitiatorTabInfo(preview_tab());
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698