From 9f46117209fc5be1cf88bbd38820bce8b4ead324 Mon Sep 17 00:00:00 2001 From: Vladislav Kuzkokov Date: Thu, 25 Apr 2019 13:09:09 +0000 Subject: [PATCH] [CUPS Printing] Pass document name when required by policy. Also, avoid conflating it with title used for rendering. Bug: 951541 Change-Id: I42058c36be8c584b1275cfae54e9e0d4dd8dcf3a Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1569139 Reviewed-by: Sean Kau Reviewed-by: Rebekah Potter Commit-Queue: Vladislav Kuzkokov Auto-Submit: Vladislav Kuzkokov Cr-Commit-Position: refs/heads/master@{#654000} --- .../webui/print_preview/local_printer_handler_chromeos.cc | 1 + printing/print_job_constants.cc | 3 +++ printing/print_job_constants.h | 1 + printing/print_settings.h | 6 ++++++ printing/print_settings_conversion.cc | 4 ++++ printing/print_settings_conversion_unittest.cc | 3 +++ printing/printing_context_chromeos.cc | 3 +-- 7 files changed, 19 insertions(+), 2 deletions(-) diff --git a/chrome/browser/ui/webui/print_preview/local_printer_handler_chromeos.cc b/chrome/browser/ui/webui/print_preview/local_printer_handler_chromeos.cc index 297cc819225ce3..0d407d495e7372 100644 --- a/chrome/browser/ui/webui/print_preview/local_printer_handler_chromeos.cc +++ b/chrome/browser/ui/webui/print_preview/local_printer_handler_chromeos.cc @@ -276,6 +276,7 @@ void LocalPrinterHandlerChromeos::StartPrint( settings.SetKey( kSettingUsername, base::Value(username.empty() ? kUsernamePlaceholder : username)); + settings.SetKey(kSettingJobTitle, base::Value(job_title)); settings.SetKey(kSettingSendUserInfo, base::Value(true)); } StartLocalPrint(std::move(settings), std::move(print_data), diff --git a/printing/print_job_constants.cc b/printing/print_job_constants.cc index 04b7dcb762023f..427a530553aa18 100644 --- a/printing/print_job_constants.cc +++ b/printing/print_job_constants.cc @@ -63,6 +63,9 @@ const char kSettingFitToPageScaling[] = "fitToPageScaling"; // Print job duplex mode. Value is an int from DuplexMode enum. const char kSettingDuplexMode[] = "duplex"; +// Job title to be sent to printer. +const char kSettingJobTitle[] = "jobTitle"; + // Option to fit source page contents to printer paper size: true if // selected else false. const char kSettingFitToPageEnabled[] = "fitToPageEnabled"; diff --git a/printing/print_job_constants.h b/printing/print_job_constants.h index 70edcee328e9c7..4e601a99617df6 100644 --- a/printing/print_job_constants.h +++ b/printing/print_job_constants.h @@ -34,6 +34,7 @@ PRINTING_EXPORT extern const float kSettingHeaderFooterInterstice; PRINTING_EXPORT extern const char kSettingHeaderFooterDate[]; PRINTING_EXPORT extern const char kSettingHeaderFooterTitle[]; PRINTING_EXPORT extern const char kSettingHeaderFooterURL[]; +PRINTING_EXPORT extern const char kSettingJobTitle[]; PRINTING_EXPORT extern const char kSettingLandscape[]; PRINTING_EXPORT extern const char kSettingMediaSize[]; PRINTING_EXPORT extern const char kSettingMediaSizeHeightMicrons[]; diff --git a/printing/print_settings.h b/printing/print_settings.h index a12f392947787f..6a8c17abb54c9d 100644 --- a/printing/print_settings.h +++ b/printing/print_settings.h @@ -201,6 +201,9 @@ class PRINTING_EXPORT PrintSettings { void set_username(const std::string& username) { username_ = username; } const std::string& username() const { return username_; } + void set_job_title(const std::string& job_title) { job_title_ = job_title; } + const std::string& job_title() const { return job_title_; } + void set_pin_value(const std::string& pin_value) { pin_value_ = pin_value; } const std::string& pin_value() const { return pin_value_; } #endif @@ -291,6 +294,9 @@ class PRINTING_EXPORT PrintSettings { // Username if it's required by the printer. std::string username_; + // Job title if it's required by the printer. + std::string job_title_; + // PIN code entered by the user. std::string pin_value_; #endif diff --git a/printing/print_settings_conversion.cc b/printing/print_settings_conversion.cc index 2563ae6a87b235..2ba73332677197 100644 --- a/printing/print_settings_conversion.cc +++ b/printing/print_settings_conversion.cc @@ -217,6 +217,10 @@ bool PrintSettingsFromJobSettings(const base::Value& job_settings, const std::string* username = job_settings.FindStringKey(kSettingUsername); if (username) settings->set_username(*username); + + const std::string* job_title = job_settings.FindStringKey(kSettingJobTitle); + if (job_title) + settings->set_job_title(*job_title); } const std::string* pin_value = job_settings.FindStringKey(kSettingPinValue); diff --git a/printing/print_settings_conversion_unittest.cc b/printing/print_settings_conversion_unittest.cc index e8a0a7cabedd6a..2b28cb90e7c059 100644 --- a/printing/print_settings_conversion_unittest.cc +++ b/printing/print_settings_conversion_unittest.cc @@ -42,6 +42,7 @@ const char kPrinterSettings[] = R"({ "previewModifiable": true, "sendUserInfo": true, "username": "username@domain.net", + "jobTitle": "test.pdf", "pinValue": "0000" })"; @@ -58,6 +59,7 @@ TEST(PrintSettingsConversionTest, ConversionTest) { #if defined(OS_CHROMEOS) EXPECT_TRUE(settings.send_user_info()); EXPECT_EQ("username@domain.net", settings.username()); + EXPECT_EQ("test.pdf", settings.job_title()); EXPECT_EQ("0000", settings.pin_value()); #endif } @@ -74,6 +76,7 @@ TEST(PrintSettingsConversionTest, ConversionTest_DontSendUsername) { ASSERT_TRUE(success); EXPECT_FALSE(settings.send_user_info()); EXPECT_EQ("", settings.username()); + EXPECT_EQ("", settings.job_title()); } #endif diff --git a/printing/printing_context_chromeos.cc b/printing/printing_context_chromeos.cc index f8d8cf2e08c97f..c3207b4478a327 100644 --- a/printing/printing_context_chromeos.cc +++ b/printing/printing_context_chromeos.cc @@ -126,8 +126,7 @@ std::vector SettingsToCupsOptions( ConstructOption(kIppCollate, GetCollateString(settings.collate()))); // collate if (settings.send_user_info()) { - options.push_back( - ConstructOption(kIppDocumentName, base::UTF16ToUTF8(settings.title()))); + options.push_back(ConstructOption(kIppDocumentName, settings.job_title())); options.push_back( ConstructOption(kIppRequestingUserName, settings.username())); }