Chromium Code Reviews| 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..55a4a7568edc00bfed742eebb7c1df1cb45d2611 100644 |
| --- a/chrome/browser/ui/webui/print_preview_handler.cc |
| +++ b/chrome/browser/ui/webui/print_preview_handler.cc |
| @@ -374,6 +374,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() { |
| @@ -434,12 +436,6 @@ void PrintPreviewHandler::HandlePrint(const ListValue* args) { |
| UMA_HISTOGRAM_COUNTS("PrintPreview.RegeneratePreviewRequest.BeforePrint", |
| regenerate_preview_request_count_); |
| - TabContents* initiator_tab = GetInitiatorTab(); |
|
Lei Zhang
2011/06/09 09:54:55
Why did you move this code?
kmadhusu
2011/06/09 18:11:44
oops. My bad. Reverted this change.
|
| - 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; |
| @@ -478,12 +474,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 +490,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 +646,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. |
|
Lei Zhang
2011/06/09 09:54:55
You should mention why we do this here.
kmadhusu
2011/06/09 18:11:44
Done.
|
| + printing::PrintPreviewTabController* tab_controller = |
| + printing::PrintPreviewTabController::GetInstance(); |
| + if (tab_controller) |
| + tab_controller->EraseInitiatorTabInfo(preview_tab()); |
| + } |
| +} |