diff options
Diffstat (limited to 'chromium/chrome/browser/ui/webui/print_preview/print_preview_handler_unittest.cc')
-rw-r--r-- | chromium/chrome/browser/ui/webui/print_preview/print_preview_handler_unittest.cc | 53 |
1 files changed, 43 insertions, 10 deletions
diff --git a/chromium/chrome/browser/ui/webui/print_preview/print_preview_handler_unittest.cc b/chromium/chrome/browser/ui/webui/print_preview/print_preview_handler_unittest.cc index 7e4bffcd685..bc7888c8133 100644 --- a/chromium/chrome/browser/ui/webui/print_preview/print_preview_handler_unittest.cc +++ b/chromium/chrome/browser/ui/webui/print_preview/print_preview_handler_unittest.cc @@ -10,18 +10,24 @@ #include "base/base64.h" #include "base/containers/flat_set.h" +#include "base/json/json_reader.h" #include "base/json/json_writer.h" #include "base/memory/ref_counted_memory.h" +#include "base/optional.h" #include "base/strings/string16.h" #include "base/strings/utf_string_conversions.h" #include "base/test/icu_test_util.h" #include "base/values.h" #include "chrome/browser/printing/print_test_utils.h" #include "chrome/browser/printing/print_view_manager.h" +#include "chrome/browser/ui/webui/print_preview/policy_settings.h" #include "chrome/browser/ui/webui/print_preview/print_preview_ui.h" #include "chrome/browser/ui/webui/print_preview/printer_handler.h" +#include "chrome/common/pref_names.h" #include "chrome/test/base/testing_profile.h" +#include "components/prefs/pref_service.h" #include "components/printing/common/print_messages.h" +#include "components/sync_preferences/testing_pref_service_syncable.h" #include "content/public/browser/render_frame_host.h" #include "content/public/browser/web_contents.h" #include "content/public/browser/web_ui_controller.h" @@ -318,14 +324,16 @@ class PrintPreviewHandlerTest : public testing::Test { // Validates the initial settings structure in the response matches the // print_preview.NativeInitialSettings type in - // chrome/browser/resources/print_preview/native_layer.js. Checks that - // |default_printer_name| is the printer name returned and that - // |initiator_title| is the initiator title returned and validates that - // delimeters are correct for "en" locale (set in Initialize()). Assumes - // "test-callback-id-0" was used as the callback id. + // chrome/browser/resources/print_preview/native_layer.js. Checks that: + // - |default_printer_name| is the printer name returned + // - |initiator_title| is the initiator title returned + // - |expected_header_footer| is the header/footer state returned, if any + // Also validates that delimeters are correct for "en" locale (set in + // Initialize()). Assumes "test-callback-id-0" was used as the callback id. void ValidateInitialSettings(const content::TestWebUI::CallData& data, const std::string& default_printer_name, - const std::string& initiator_title) { + const std::string& initiator_title, + base::Optional<bool> expected_header_footer) { CheckWebUIResponse(data, "test-callback-id-0", true); const base::Value* settings = data.arg3(); ASSERT_TRUE(settings->FindKeyOfType("isInKioskAutoPrintMode", @@ -358,6 +366,12 @@ class PrintPreviewHandlerTest : public testing::Test { settings->FindKeyOfType("printerName", base::Value::Type::STRING); ASSERT_TRUE(printer); EXPECT_EQ(default_printer_name, printer->GetString()); + + const base::Value* header_footer = + settings->FindKeyOfType("headerFooter", base::Value::Type::BOOLEAN); + EXPECT_EQ(bool(expected_header_footer), bool(header_footer)); + if (expected_header_footer) + EXPECT_EQ(*expected_header_footer, header_footer->GetBool()); } IPC::TestSink& initiator_sink() { @@ -385,6 +399,7 @@ class PrintPreviewHandlerTest : public testing::Test { } const Profile* profile() { return profile_.get(); } + PrefService* prefs() { return profile_->GetPrefs(); } content::TestWebUI* web_ui() { return web_ui_.get(); } printing::TestPrintPreviewHandler* handler() { return handler_; } printing::TestPrinterHandler* printer_handler() { return printer_handler_; } @@ -404,18 +419,36 @@ class PrintPreviewHandlerTest : public testing::Test { DISALLOW_COPY_AND_ASSIGN(PrintPreviewHandlerTest); }; -TEST_F(PrintPreviewHandlerTest, InitialSettings) { +TEST_F(PrintPreviewHandlerTest, InitialSettingsSimple) { Initialize(); // Verify initial settings were sent. ValidateInitialSettings(*web_ui()->call_data().back(), printing::kDummyPrinterName, - printing::kDummyInitiatorName); + printing::kDummyInitiatorName, base::nullopt); // Check that the use-cloud-print event got sent AssertWebUIEventFired(*web_ui()->call_data().front(), "use-cloud-print"); } +TEST_F(PrintPreviewHandlerTest, InitialSettingsEnableHeaderFooter) { + // Set a pref that should take priority over StickySettings. + prefs()->SetBoolean(prefs::kPrintHeaderFooter, true); + Initialize(); + ValidateInitialSettings( + *web_ui()->call_data().back(), printing::kDummyPrinterName, + printing::kDummyInitiatorName, base::Optional<bool>(true)); +} + +TEST_F(PrintPreviewHandlerTest, InitialSettingsDisableHeaderFooter) { + // Set a pref that should take priority over StickySettings. + prefs()->SetBoolean(prefs::kPrintHeaderFooter, false); + Initialize(); + ValidateInitialSettings( + *web_ui()->call_data().back(), printing::kDummyPrinterName, + printing::kDummyInitiatorName, base::Optional<bool>(false)); +} + TEST_F(PrintPreviewHandlerTest, GetPrinters) { Initialize(); @@ -636,7 +669,7 @@ TEST_F(PrintPreviewHandlerTest, SendPreviewUpdates) { AssertWebUIEventFired(*web_ui()->call_data().back(), "page-layout-ready"); // 1 page document. Modifiable so send default 100 scaling. - handler()->SendPageCountReady(1, preview_request_id, 100); + handler()->SendPageCountReady(1, 100, preview_request_id); AssertWebUIEventFired(*web_ui()->call_data().back(), "page-count-ready"); // Page at index 0 is ready. @@ -656,7 +689,7 @@ TEST_F(PrintPreviewHandlerTest, SendPreviewUpdates) { handler()->SendPageLayoutReady(base::DictionaryValue(), false, preview_request_id); EXPECT_EQ(message_count, web_ui()->call_data().size()); - handler()->SendPageCountReady(1, 0, -1); + handler()->SendPageCountReady(1, -1, 0); EXPECT_EQ(message_count, web_ui()->call_data().size()); handler()->OnPrintPreviewReady(0, 0); EXPECT_EQ(message_count, web_ui()->call_data().size()); |