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