Index: cloud_print/virtual_driver/posix/printer_driver_util_linux.cc |
diff --git a/cloud_print/virtual_driver/posix/printer_driver_util_linux.cc b/cloud_print/virtual_driver/posix/printer_driver_util_linux.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..51d4198767cc64f1f8ed16d8b38cb593f5570114 |
--- /dev/null |
+++ b/cloud_print/virtual_driver/posix/printer_driver_util_linux.cc |
@@ -0,0 +1,48 @@ |
+// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include <cups/backend.h> |
+ |
+#include "base/base_paths.h" |
+#include "base/command_line.h" |
+#include "base/file_path.h" |
+#include "base/logging.h" |
+#include "base/path_service.h" |
+ |
+#include "cloud_print/virtual_driver/posix/printer_driver_util_posix.h" |
+#include "cloud_print/virtual_driver/virtual_driver_switches.h" |
+ |
+void LaunchPrintDialog(std::string output_path, std::string job_title, |
+ std::string current_user) { |
+ std::string set_var; |
+ |
+ // Set Environment variable to control display. |
+ set_var="/home/" + current_user + "/.Xauthority"; |
+ if(setenv("DISPLAY",":0.0",0) == -1) { |
+ LOG(ERROR) << "Unable to set DISPLAY environment variable"; |
+ } |
+ if(setenv("XAUTHORITY",set_var.c_str(),0) == -1) { |
+ LOG(ERROR) << "Unable to set XAUTHORITY environment variable"; |
+ } |
+ |
+ // Construct the call to Chrome |
+ |
+ FilePath chrome_path("google-chrome"); |
+ FilePath job_path(output_path); |
+ CommandLine command_line(chrome_path); |
+ command_line.AppendSwitchPath(switches::kCloudPrintFile,job_path); |
+ command_line.AppendSwitchNative(switches::kCloudPrintJobTitle, job_title); |
+ command_line.AppendSwitch(switches::kCloudPrintDeleteFile); |
+ LOG(INFO) << "Call to chrome is " << command_line.GetCommandLineString(); |
+ |
+ if(system(command_line.GetCommandLineString().c_str())== -1 ) { |
+ LOG(ERROR) << "Unable to call Chrome"; |
+ exit(CUPS_BACKEND_CANCEL); |
+ } |
+ |
+ else { |
+ LOG(INFO) << "Call to Chrome succeeded"; |
+ } |
+} |
+ |