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

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: '' 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 c0db5272edfa1575e71a59516b955e43cceaf0f0..cbcf91c94c7b399c956b3fecf3f420ae72d95892 100644
--- a/chrome/browser/ui/webui/print_preview_handler.cc
+++ b/chrome/browser/ui/webui/print_preview_handler.cc
@@ -152,6 +152,10 @@ void ReportPrintSettingsStats(const DictionaryValue& settings) {
ReportPrintSettingHistogram(is_color ? COLOR : BLACK_AND_WHITE);
}
+printing::BackgroundPrintingManager* GetBackgroundPrintingManager() {
+ return g_browser_process->background_printing_manager();
+}
+
} // namespace
class PrintSystemTaskProxy
@@ -374,6 +378,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() {
@@ -478,12 +484,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.
@@ -493,6 +500,10 @@ void PrintPreviewHandler::HandlePrint(const ListValue* args) {
}
}
+void PrintPreviewHandler::HandleHidePreview(const ListValue* args) {
+ HidePreviewTab();
+}
+
void PrintPreviewHandler::HandleGetPrinterCapabilities(
const ListValue* args) {
std::string printer_name;
@@ -645,3 +656,24 @@ void PrintPreviewHandler::FileSelected(const FilePath& path,
ActivateInitiatorTabAndClosePreviewTab();
}
+
+void PrintPreviewHandler::HidePreviewTab() {
+ TabContentsWrapper* preview_tab_wrapper =
+ TabContentsWrapper::GetCurrentWrapperForContents(preview_tab());
+ if (GetBackgroundPrintingManager()->hasTabContents(preview_tab_wrapper))
+ return;
+ GetBackgroundPrintingManager()->OwnTabContents(preview_tab_wrapper);
+}
+
+void PrintPreviewHandler::ClearInitiatorTabDetails() {
+ TabContents* initiator_tab = GetInitiatorTab();
+ if (initiator_tab) {
+ // We no longer require the intiator tab details. Remove those details
+ // associated with the preview tab to allow the initiator tab to create
+ // another preview tab.
+ printing::PrintPreviewTabController* tab_controller =
+ printing::PrintPreviewTabController::GetInstance();
+ if (tab_controller)
+ tab_controller->EraseInitiatorTabInfo(preview_tab());
+ }
+}
« chrome/browser/resources/print_preview.js ('K') | « chrome/browser/ui/webui/print_preview_handler.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698