Chromium Code Reviews| Index: chrome/browser/ui/webui/print_preview_ui.cc |
| =================================================================== |
| --- chrome/browser/ui/webui/print_preview_ui.cc (revision 105275) |
| +++ 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(); |
|
kmadhusu
2011/10/13 18:52:18
Create a helper function to check if the preview t
Lei Zhang
2011/10/13 21:12:12
The amount of savings is really minimal here. It's
|
| + 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(); |
| +} |