Index: chrome/browser/ui/webui/print_preview_ui.cc |
=================================================================== |
--- chrome/browser/ui/webui/print_preview_ui.cc (revision 105366) |
+++ chrome/browser/ui/webui/print_preview_ui.cc (working copy) |
@@ -11,8 +11,12 @@ |
#include "base/string_util.h" |
#include "base/synchronization/lock.h" |
#include "base/values.h" |
+#include "chrome/browser/browser_process.h" |
+#include "chrome/browser/printing/background_printing_manager.h" |
#include "chrome/browser/printing/print_preview_data_service.h" |
#include "chrome/browser/profiles/profile.h" |
+#include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" |
+#include "chrome/browser/ui/webui/html_dialog_ui.h" |
#include "chrome/browser/ui/webui/print_preview_data_source.h" |
#include "chrome/browser/ui/webui/print_preview_handler.h" |
#include "chrome/common/print_messages.h" |
@@ -67,7 +71,7 @@ |
} // namespace |
PrintPreviewUI::PrintPreviewUI(TabContents* contents) |
- : ChromeWebUI(contents), |
+ : ConstrainedHtmlUI(contents), |
initial_preview_start_time_(base::TimeTicks::Now()) { |
// WebUI owns |handler_|. |
handler_ = new PrintPreviewHandler(); |
@@ -137,14 +141,25 @@ |
return preview_ui_addr; |
} |
-void PrintPreviewUI::OnInitiatorTabCrashed() { |
- StringValue initiator_tab_url(initiator_url_); |
- CallJavascriptFunction("onInitiatorTabCrashed", initiator_tab_url); |
+void PrintPreviewUI::OnPrintPreviewTabCrashed() { |
+ TabContentsWrapper* preview_tab = |
+ TabContentsWrapper::GetCurrentWrapperForContents(tab_contents()); |
+ printing::BackgroundPrintingManager* background_printing_manager = |
+ g_browser_process->background_printing_manager(); |
+ if (background_printing_manager->HasPrintPreviewTab(preview_tab)) |
+ return; |
+ ClosePrintPreviewTab(); |
} |
void PrintPreviewUI::OnInitiatorTabClosed() { |
- StringValue initiator_tab_url(initiator_url_); |
- CallJavascriptFunction("onInitiatorTabClosed", initiator_tab_url); |
+ TabContentsWrapper* preview_tab = |
+ TabContentsWrapper::GetCurrentWrapperForContents(tab_contents()); |
+ printing::BackgroundPrintingManager* background_printing_manager = |
+ g_browser_process->background_printing_manager(); |
+ if (background_printing_manager->HasPrintPreviewTab(preview_tab)) |
+ CallJavascriptFunction("cancelPendingPrintRequest"); |
+ else |
+ ClosePrintPreviewTab(); |
} |
void PrintPreviewUI::OnPrintPreviewRequest(int request_id) { |
@@ -243,3 +258,27 @@ |
PrintPreviewDataService* PrintPreviewUI::print_preview_data_service() { |
return PrintPreviewDataService::GetInstance(); |
} |
+ |
+void PrintPreviewUI::HidePreviewTab() { |
+ TabContentsWrapper* preview_tab = |
+ TabContentsWrapper::GetCurrentWrapperForContents(tab_contents()); |
+ printing::BackgroundPrintingManager* background_printing_manager = |
+ g_browser_process->background_printing_manager(); |
+ if (background_printing_manager->HasPrintPreviewTab(preview_tab)) |
+ return; |
+ |
+ ConstrainedHtmlUIDelegate* delegate = GetConstrainedDelegate(); |
+ if (!delegate) |
+ return; |
+ delegate->ReleaseTabContentsOnDialogClose(); |
+ background_printing_manager->OwnPrintPreviewTab(preview_tab); |
+ ClosePrintPreviewTab(); |
+} |
+ |
+void PrintPreviewUI::ClosePrintPreviewTab() { |
+ ConstrainedHtmlUIDelegate* delegate = GetConstrainedDelegate(); |
+ if (!delegate) |
+ return; |
+ delegate->GetHtmlDialogUIDelegate()->OnDialogClosed(""); |
+ delegate->OnDialogCloseFromWebUI(); |
+} |