test_printing.cc 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. // Copyright (c) 2012 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "ppapi/tests/test_printing.h"
  5. #include "ppapi/cpp/dev/printing_dev.h"
  6. #include "ppapi/cpp/instance.h"
  7. #include "ppapi/tests/testing_instance.h"
  8. namespace {
  9. bool g_callback_triggered;
  10. int32_t g_callback_result;
  11. PP_PrintSettings_Dev g_print_settings;
  12. } // namespace
  13. REGISTER_TEST_CASE(Printing);
  14. class TestPrinting_Dev : public pp::Printing_Dev {
  15. public:
  16. explicit TestPrinting_Dev(pp::Instance* instance) :
  17. pp::Printing_Dev(instance) {}
  18. virtual ~TestPrinting_Dev() {}
  19. virtual uint32_t QuerySupportedPrintOutputFormats() { return 0; }
  20. virtual int32_t PrintBegin(
  21. const PP_PrintSettings_Dev& print_settings) { return 0; }
  22. virtual pp::Resource PrintPages(
  23. const PP_PrintPageNumberRange_Dev* page_ranges,
  24. uint32_t page_range_count) {
  25. return pp::Resource();
  26. }
  27. virtual void PrintEnd() {}
  28. virtual bool IsPrintScalingDisabled() { return false; }
  29. };
  30. TestPrinting::TestPrinting(TestingInstance* instance)
  31. : TestCase(instance),
  32. nested_event_(instance->pp_instance()) {
  33. callback_factory_.Initialize(this);
  34. }
  35. void TestPrinting::RunTests(const std::string& filter) {
  36. RUN_TEST(GetDefaultPrintSettings, filter);
  37. }
  38. std::string TestPrinting::TestGetDefaultPrintSettings() {
  39. g_callback_triggered = false;
  40. TestPrinting_Dev test_printing(instance_);
  41. pp::CompletionCallbackWithOutput<PP_PrintSettings_Dev> cb =
  42. callback_factory_.NewCallbackWithOutput(&TestPrinting::Callback);
  43. test_printing.GetDefaultPrintSettings(cb);
  44. nested_event_.Wait();
  45. ASSERT_EQ(PP_OK, g_callback_result);
  46. ASSERT_TRUE(g_callback_triggered);
  47. // Sanity check the |printable_area|, |content_area| and |paper_size| members.
  48. // It is possible these values are outside these ranges but it shouldn't
  49. // happen in practice and probably means there is an error in computing
  50. // the default print settings. These values are in points.
  51. ASSERT_TRUE(g_print_settings.printable_area.point.x < 200);
  52. ASSERT_TRUE(g_print_settings.printable_area.point.y < 200);
  53. ASSERT_TRUE(g_print_settings.printable_area.size.width < 2000);
  54. ASSERT_TRUE(g_print_settings.printable_area.size.height < 2000);
  55. ASSERT_TRUE(g_print_settings.content_area.point.x < 200);
  56. ASSERT_TRUE(g_print_settings.content_area.point.y < 200);
  57. ASSERT_TRUE(g_print_settings.content_area.size.width < 2000);
  58. ASSERT_TRUE(g_print_settings.content_area.size.height< 2000);
  59. ASSERT_TRUE(g_print_settings.paper_size.width < 2000);
  60. ASSERT_TRUE(g_print_settings.paper_size.height < 2000);
  61. PASS();
  62. }
  63. void TestPrinting::Callback(int32_t result,
  64. PP_PrintSettings_Dev& print_settings) {
  65. g_callback_triggered = true;
  66. g_callback_result = result;
  67. g_print_settings = print_settings;
  68. nested_event_.Signal();
  69. }