Index: printing/printing_context_win.cc |
diff --git a/printing/printing_context_win.cc b/printing/printing_context_win.cc |
index d0205ea4a36ae1e6af330b3da46ff4d5763e3d44..e5e6151beacc4b75c94da0a8bc41c7dad856382d 100644 |
--- a/printing/printing_context_win.cc |
+++ b/printing/printing_context_win.cc |
@@ -26,6 +26,12 @@ |
#include "skia/ext/platform_device.h" |
#include "win8/util/win8_util.h" |
+#if defined(USE_AURA) |
+#include "ui/aura/remote_root_window_host_win.h" |
+#include "ui/aura/root_window.h" |
+#include "ui/aura/window.h" |
+#endif |
+ |
using base::Time; |
namespace { |
@@ -45,6 +51,23 @@ const int kPDFA4Height = 11.69 * kPDFDpi; |
const int kPDFA3Width = 11.69 * kPDFDpi; |
const int kPDFA3Height = 16.54 * kPDFDpi; |
+HWND GetRootWindow(gfx::NativeView view) { |
+ HWND window = NULL; |
+#if defined(USE_AURA) |
+ if (view) |
+ window = view->GetRootWindow()->GetAcceleratedWidget(); |
+#else |
+ if (view && IsWindow(view)) { |
+ window = GetAncestor(view, GA_ROOTOWNER); |
+ } |
+#endif |
+ if (!window) { |
+ // TODO(maruel): bug 1214347 Get the right browser window instead. |
+ return GetDesktopWindow(); |
+ } |
+ return window; |
+} |
+ |
} // anonymous namespace |
namespace printing { |
@@ -166,12 +189,11 @@ PrintingContextWin::~PrintingContextWin() { |
ReleaseContext(); |
} |
+// TODO(vitalybuka): Implement as ui::BaseShellDialog crbug.com/180997. |
void PrintingContextWin::AskUserForSettings( |
gfx::NativeView view, int max_pages, bool has_selection, |
const PrintSettingsCallback& callback) { |
-#if !defined(USE_AURA) |
DCHECK(!in_print_job_); |
- |
if (win8::IsSingleWindowMetroMode()) { |
// The system dialog can not be opened while running in Metro. |
// But we can programatically launch the Metro print device charm though. |
@@ -192,13 +214,7 @@ void PrintingContextWin::AskUserForSettings( |
} |
dialog_box_dismissed_ = false; |
- HWND window; |
- if (!view || !IsWindow(view)) { |
- // TODO(maruel): bug 1214347 Get the right browser window instead. |
- window = GetDesktopWindow(); |
- } else { |
- window = GetAncestor(view, GA_ROOTOWNER); |
- } |
+ HWND window = GetRootWindow(view); |
DCHECK(window); |
// Show the OS-dependent dialog box. |
@@ -236,14 +252,14 @@ void PrintingContextWin::AskUserForSettings( |
dialog_options.Flags |= PD_NOPAGENUMS; |
} |
- if ((*print_dialog_func_)(&dialog_options) != S_OK) { |
+ HRESULT hr = (*print_dialog_func_)(&dialog_options); |
+ if (hr != S_OK) { |
ResetSettings(); |
callback.Run(FAILED); |
} |
// TODO(maruel): Support PD_PRINTTOFILE. |
callback.Run(ParseDialogResultEx(dialog_options)); |
-#endif |
} |
PrintingContext::Result PrintingContextWin::UseDefaultSettings() { |