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