| 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());
|
| + }
|
| +}
|
|
|