diff options
author | mad@chromium.org <mad@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-12 18:38:30 +0000 |
---|---|---|
committer | mad@chromium.org <mad@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-12 18:38:30 +0000 |
commit | 06186a3c17a774ab6c7cfe1a601d3a86c51729e9 (patch) | |
tree | cfb4cdebc1ca4ea96e400c929138d4e8d02560ec /printing | |
parent | 2d9731966afe6dd21cdf5888af11bae9d7339026 (diff) | |
download | chromium_src-06186a3c17a774ab6c7cfe1a601d3a86c51729e9.zip chromium_src-06186a3c17a774ab6c7cfe1a601d3a86c51729e9.tar.gz chromium_src-06186a3c17a774ab6c7cfe1a601d3a86c51729e9.tar.bz2 |
Send request to show print system dialog to Metro.
BUG=134256
TEST=Make sure there are no way to open the system's print dialog in Chrome when running in Metro. The print device charm should be shown instead.
Review URL: https://chromiumcodereview.appspot.com/10701155
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@146399 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'printing')
-rw-r--r-- | printing/printing_context_win.cc | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/printing/printing_context_win.cc b/printing/printing_context_win.cc index ebe9d18..99f92cb 100644 --- a/printing/printing_context_win.cc +++ b/printing/printing_context_win.cc @@ -14,6 +14,7 @@ #include "base/time.h" #include "base/utf_string_conversions.h" #include "base/values.h" +#include "base/win/metro.h" #include "printing/backend/win_helper.h" #include "printing/print_job_constants.h" #include "printing/print_settings_initializer_win.h" @@ -219,6 +220,21 @@ void PrintingContextWin::AskUserForSettings( const PrintSettingsCallback& callback) { #if !defined(USE_AURA) DCHECK(!in_print_job_); + + if (base::win::IsMetroProcess()) { + // The system dialog can not be opened while running in Metro. + // But we can programatically launch the Metro print device charm though. + HMODULE metro_module = base::win::GetMetroModule(); + if (metro_module != NULL) { + typedef void (*MetroShowPrintUI)(); + MetroShowPrintUI metro_show_print_ui = + reinterpret_cast<MetroShowPrintUI>( + ::GetProcAddress(metro_module, "MetroShowPrintUI")); + if (metro_show_print_ui) + metro_show_print_ui(); + } + return callback.Run(CANCEL); + } dialog_box_dismissed_ = false; HWND window; |