summaryrefslogtreecommitdiffstats
path: root/printing
diff options
context:
space:
mode:
authormad@chromium.org <mad@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-12 18:38:30 +0000
committermad@chromium.org <mad@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-12 18:38:30 +0000
commit06186a3c17a774ab6c7cfe1a601d3a86c51729e9 (patch)
treecfb4cdebc1ca4ea96e400c929138d4e8d02560ec /printing
parent2d9731966afe6dd21cdf5888af11bae9d7339026 (diff)
downloadchromium_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.cc16
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;