// Copyright 2019 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 "printing/print_settings_conversion.h" #include "base/json/json_reader.h" #include "base/values.h" #include "printing/print_settings.h" #include "testing/gtest/include/gtest/gtest.h" namespace printing { namespace { const char kPrinterSettings[] = R"({ "headerFooterEnabled": true, "title": "Test Doc", "url": "http://localhost/", "shouldPrintBackgrounds": false, "shouldPrintSelectionOnly": false, "mediaSize": { "height_microns": 297000, "width_microns": 210000 }, "marginsType": 0, "pageRange": [{ "from": 1, "to": 1 }], "collate": false, "copies": 1, "color": 2, "duplex": 0, "landscape": false, "deviceName": "printer", "scaleFactor": 100, "rasterizePDF": false, "pagesPerSheet": 1, "dpiHorizontal": 300, "dpiVertical": 300, "previewModifiable": true, "sendUserInfo": true, "username": "username@domain.net", "pinValue": "0000" })"; } // namespace TEST(PrintSettingsConversionTest, ConversionTest) { std::unique_ptr value = base::JSONReader::ReadDeprecated(kPrinterSettings); ASSERT_TRUE(value); PrintSettings settings; bool success = PrintSettingsFromJobSettings( base::Value::FromUniquePtrValue(std::move(value)), &settings); ASSERT_TRUE(success); #if defined(OS_CHROMEOS) EXPECT_TRUE(settings.send_user_info()); EXPECT_EQ("username@domain.net", settings.username()); EXPECT_EQ("0000", settings.pin_value()); #endif } #if defined(OS_CHROMEOS) TEST(PrintSettingsConversionTest, ConversionTest_DontSendUsername) { std::unique_ptr value = base::JSONReader::ReadDeprecated(kPrinterSettings); ASSERT_TRUE(value); value->SetKey(kSettingSendUserInfo, base::Value(false)); PrintSettings settings; bool success = PrintSettingsFromJobSettings( base::Value::FromUniquePtrValue(std::move(value)), &settings); ASSERT_TRUE(success); EXPECT_FALSE(settings.send_user_info()); EXPECT_EQ("", settings.username()); } #endif } // namespace printing