// Copyright (c) 2012 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 "ppapi/tests/test_printing.h" #include "ppapi/cpp/dev/printing_dev.h" #include "ppapi/cpp/instance.h" #include "ppapi/tests/testing_instance.h" namespace { bool g_callback_triggered; int32_t g_callback_result; PP_PrintSettings_Dev g_print_settings; } // namespace REGISTER_TEST_CASE(Printing); class TestPrinting_Dev : public pp::Printing_Dev { public: explicit TestPrinting_Dev(pp::Instance* instance) : pp::Printing_Dev(instance) {} virtual ~TestPrinting_Dev() {} virtual uint32_t QuerySupportedPrintOutputFormats() { return 0; } virtual int32_t PrintBegin( const PP_PrintSettings_Dev& print_settings) { return 0; } virtual pp::Resource PrintPages( const PP_PrintPageNumberRange_Dev* page_ranges, uint32_t page_range_count) { return pp::Resource(); } virtual void PrintEnd() {} virtual bool IsPrintScalingDisabled() { return false; } }; TestPrinting::TestPrinting(TestingInstance* instance) : TestCase(instance), nested_event_(instance->pp_instance()) { callback_factory_.Initialize(this); } void TestPrinting::RunTests(const std::string& filter) { RUN_TEST(GetDefaultPrintSettings, filter); } std::string TestPrinting::TestGetDefaultPrintSettings() { g_callback_triggered = false; TestPrinting_Dev test_printing(instance_); pp::CompletionCallbackWithOutput<PP_PrintSettings_Dev> cb = callback_factory_.NewCallbackWithOutput(&TestPrinting::Callback); test_printing.GetDefaultPrintSettings(cb); nested_event_.Wait(); ASSERT_EQ(PP_OK, g_callback_result); ASSERT_TRUE(g_callback_triggered); // Sanity check the |printable_area|, |content_area| and |paper_size| members. // It is possible these values are outside these ranges but it shouldn't // happen in practice and probably means there is an error in computing // the default print settings. These values are in points. ASSERT_TRUE(g_print_settings.printable_area.point.x < 200); ASSERT_TRUE(g_print_settings.printable_area.point.y < 200); ASSERT_TRUE(g_print_settings.printable_area.size.width < 2000); ASSERT_TRUE(g_print_settings.printable_area.size.height < 2000); ASSERT_TRUE(g_print_settings.content_area.point.x < 200); ASSERT_TRUE(g_print_settings.content_area.point.y < 200); ASSERT_TRUE(g_print_settings.content_area.size.width < 2000); ASSERT_TRUE(g_print_settings.content_area.size.height< 2000); ASSERT_TRUE(g_print_settings.paper_size.width < 2000); ASSERT_TRUE(g_print_settings.paper_size.height < 2000); PASS(); } void TestPrinting::Callback(int32_t result, PP_PrintSettings_Dev& print_settings) { g_callback_triggered = true; g_callback_result = result; g_print_settings = print_settings; nested_event_.Signal(); }