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.
5 #include "ppapi/tests/test_printing.h"
7 #include "ppapi/cpp/dev/printing_dev.h"
8 #include "ppapi/cpp/instance.h"
9 #include "ppapi/tests/testing_instance.h"
12 bool g_callback_triggered
;
13 int32_t g_callback_result
;
14 PP_PrintSettings_Dev g_print_settings
;
17 REGISTER_TEST_CASE(Printing
);
19 class TestPrinting_Dev
: public pp::Printing_Dev
{
21 explicit TestPrinting_Dev(pp::Instance
* instance
) :
22 pp::Printing_Dev(instance
) {}
23 virtual ~TestPrinting_Dev() {}
24 virtual uint32_t QuerySupportedPrintOutputFormats() { return 0; }
25 virtual int32_t PrintBegin(
26 const PP_PrintSettings_Dev
& print_settings
) { return 0; }
27 virtual pp::Resource
PrintPages(
28 const PP_PrintPageNumberRange_Dev
* page_ranges
,
29 uint32_t page_range_count
) {
30 return pp::Resource();
32 virtual void PrintEnd() {}
33 virtual bool IsPrintScalingDisabled() { return false; }
36 TestPrinting::TestPrinting(TestingInstance
* instance
)
38 nested_event_(instance
->pp_instance()) {
39 callback_factory_
.Initialize(this);
42 void TestPrinting::RunTests(const std::string
& filter
) {
43 RUN_TEST(GetDefaultPrintSettings
, filter
);
46 std::string
TestPrinting::TestGetDefaultPrintSettings() {
47 g_callback_triggered
= false;
48 TestPrinting_Dev
test_printing(instance_
);
49 pp::CompletionCallbackWithOutput
<PP_PrintSettings_Dev
> cb
=
50 callback_factory_
.NewCallbackWithOutput(&TestPrinting::Callback
);
51 test_printing
.GetDefaultPrintSettings(cb
);
54 ASSERT_EQ(PP_OK
, g_callback_result
);
55 ASSERT_TRUE(g_callback_triggered
);
57 // Sanity check the |printable_area|, |content_area| and |paper_size| members.
58 // It is possible these values are outside these ranges but it shouldn't
59 // happen in practice and probably means there is an error in computing
60 // the default print settings. These values are in points.
61 ASSERT_TRUE(g_print_settings
.printable_area
.point
.x
< 200);
62 ASSERT_TRUE(g_print_settings
.printable_area
.point
.y
< 200);
63 ASSERT_TRUE(g_print_settings
.printable_area
.size
.width
< 2000);
64 ASSERT_TRUE(g_print_settings
.printable_area
.size
.height
< 2000);
66 ASSERT_TRUE(g_print_settings
.content_area
.point
.x
< 200);
67 ASSERT_TRUE(g_print_settings
.content_area
.point
.y
< 200);
68 ASSERT_TRUE(g_print_settings
.content_area
.size
.width
< 2000);
69 ASSERT_TRUE(g_print_settings
.content_area
.size
.height
< 2000);
71 ASSERT_TRUE(g_print_settings
.paper_size
.width
< 2000);
72 ASSERT_TRUE(g_print_settings
.paper_size
.height
< 2000);
77 void TestPrinting::Callback(int32_t result
,
78 PP_PrintSettings_Dev
& print_settings
) {
79 g_callback_triggered
= true;
80 g_callback_result
= result
;
81 g_print_settings
= print_settings
;
82 nested_event_
.Signal();