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