Index: chrome/browser/printing/print_error_dialog.cc |
diff --git a/chrome/browser/printing/print_error_dialog.cc b/chrome/browser/printing/print_error_dialog.cc |
index 5b57b08db83939c148e0a8448b5cbfdc1d9d0ee0..75fdd29896b461cadb630fefd9053460498695dc 100644 |
--- a/chrome/browser/printing/print_error_dialog.cc |
+++ b/chrome/browser/printing/print_error_dialog.cc |
@@ -4,17 +4,32 @@ |
#include "chrome/browser/printing/print_error_dialog.h" |
+#include "chrome/browser/ui/browser_finder.h" |
+#include "chrome/browser/ui/browser_window.h" |
#include "chrome/browser/ui/simple_message_box.h" |
+#include "content/public/browser/browser_thread.h" |
#include "grit/generated_resources.h" |
#include "ui/base/l10n/l10n_util.h" |
namespace chrome { |
-void ShowPrintErrorDialog(gfx::NativeWindow parent) { |
- ShowMessageBox(parent, |
+namespace { |
+ |
+void ShowPrintErrorDialogTask() { |
+ Browser* browser = chrome::FindLastActiveWithHostDesktopType( |
+ chrome::GetActiveDesktop()); |
+ ShowMessageBox(browser ? browser->window()->GetNativeWindow() : NULL, |
l10n_util::GetStringUTF16(IDS_PRINT_SPOOL_FAILED_TITLE_TEXT), |
l10n_util::GetStringUTF16(IDS_PRINT_SPOOL_FAILED_ERROR_TEXT), |
MESSAGE_BOX_TYPE_WARNING); |
} |
+} // namespace |
+ |
+void ShowPrintErrorDialog() { |
+ // Nested loop may destroy caller. |
+ content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE, |
+ base::Bind(&ShowPrintErrorDialogTask)); |
+} |
+ |
} // namespace chrome |