Switch back to PrintDlgEx instead of DocumentProperties.
For unclear reasons DocumentProperties with DM_IN_PROMPT sometimes does not
return. This is happening mostly on 32bit Windows inside of base::MessageLoop::ScopedNestableTaskAllower.
BUG=436810
Review URL: https://codereview.chromium.org/766823004
Cr-Commit-Position: refs/heads/master@{#307294}
diff --git a/printing/printing_context_win.cc b/printing/printing_context_win.cc
index ae71b9b..c396b1a 100644
--- a/printing/printing_context_win.cc
+++ b/printing/printing_context_win.cc
@@ -6,6 +6,7 @@
#include <algorithm>
+#include "base/bind.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/utf_string_conversions.h"
#include "printing/backend/print_backend.h"
@@ -24,6 +25,14 @@
namespace printing {
+namespace {
+
+void AssingResult(PrintingContext::Result* out, PrintingContext::Result in) {
+ *out = in;
+}
+
+} // namespace
+
// static
scoped_ptr<PrintingContext> PrintingContext::Create(Delegate* delegate) {
#if defined(ENABLE_BASIC_PRINTING)
@@ -198,8 +207,9 @@
// Update data using DocumentProperties.
if (show_system_dialog) {
- scoped_dev_mode = ShowPrintDialog(
- printer.Get(), delegate_->GetParentView(), scoped_dev_mode.get());
+ PrintingContext::Result result = PrintingContext::FAILED;
+ AskUserForSettings(0, false, base::Bind(&AssingResult, &result));
+ return result;
} else {
scoped_dev_mode = CreateDevMode(printer.Get(), scoped_dev_mode.get());
}