| OLD | NEW |
| (Empty) | |
| 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 |
| 5 #include <cstring> |
| 6 |
| 7 #include "base/message_loop.h" |
| 8 #include "ppapi/c/dev/ppb_printing_dev.h" |
| 9 #include "ppapi/c/pp_errors.h" |
| 10 #include "ppapi/proxy/printing_resource.h" |
| 11 #include "ppapi/proxy/ppapi_messages.h" |
| 12 #include "ppapi/proxy/ppapi_proxy_test.h" |
| 13 #include "ppapi/thunk/thunk.h" |
| 14 #include "ppapi/shared_impl/scoped_pp_resource.h" |
| 15 |
| 16 namespace ppapi { |
| 17 namespace proxy { |
| 18 |
| 19 namespace { |
| 20 |
| 21 typedef PluginProxyTest PrintingResourceTest; |
| 22 |
| 23 bool g_callback_called; |
| 24 int32_t g_callback_result; |
| 25 |
| 26 void Callback(void* user_data, int32_t result) { |
| 27 g_callback_called = true; |
| 28 g_callback_result = result; |
| 29 } |
| 30 |
| 31 bool PP_SizeEqual(const PP_Size& lhs, const PP_Size& rhs) { |
| 32 return lhs.width == rhs.width && lhs.height == rhs.height; |
| 33 } |
| 34 |
| 35 bool PP_RectEqual(const PP_Rect& lhs, const PP_Rect& rhs) { |
| 36 return lhs.point.x == rhs.point.x && |
| 37 lhs.point.y == rhs.point.y && |
| 38 PP_SizeEqual(lhs.size, rhs.size); |
| 39 } |
| 40 |
| 41 } // namespace |
| 42 |
| 43 // Does a full test of GetDefaultPrintSettings() and reply functionality in the |
| 44 // plugin side using the public C interfaces. |
| 45 TEST_F(PrintingResourceTest, GetDefaultPrintSettings) { |
| 46 g_callback_called = false; |
| 47 |
| 48 const PPB_Printing_Dev_0_7* printing_iface = |
| 49 thunk::GetPPB_Printing_Dev_0_7_Thunk(); |
| 50 ScopedPPResource res(ScopedPPResource::PassRef(), |
| 51 printing_iface->Create(pp_instance())); |
| 52 |
| 53 PP_PrintSettings_Dev output_settings; |
| 54 |
| 55 int32_t result = printing_iface->GetDefaultPrintSettings( |
| 56 res, &output_settings, PP_MakeCompletionCallback(&Callback, NULL)); |
| 57 ASSERT_EQ(PP_OK_COMPLETIONPENDING, result); |
| 58 |
| 59 // Should have sent a "GetDefaultPrintSettings" message. |
| 60 ResourceMessageCallParams params; |
| 61 IPC::Message msg; |
| 62 ASSERT_TRUE(sink().GetFirstResourceCallMatching( |
| 63 PpapiHostMsg_Printing_GetDefaultPrintSettings::ID, ¶ms, &msg)); |
| 64 |
| 65 // Synthesize a response with some random print settings. |
| 66 ResourceMessageReplyParams reply_params(params.pp_resource(), |
| 67 params.sequence()); |
| 68 reply_params.set_result(PP_OK); |
| 69 |
| 70 PP_PrintSettings_Dev reply_settings = { |
| 71 { { 0, 0 }, { 500, 515 } }, |
| 72 { { 25, 35 }, { 300, 720 } }, |
| 73 { 600, 700 }, |
| 74 200, |
| 75 PP_PRINTORIENTATION_NORMAL, |
| 76 PP_PRINTSCALINGOPTION_NONE, |
| 77 PP_FALSE, |
| 78 PP_PRINTOUTPUTFORMAT_PDF |
| 79 }; |
| 80 ASSERT_TRUE(plugin_dispatcher()->OnMessageReceived( |
| 81 PpapiPluginMsg_ResourceReply(reply_params, |
| 82 PpapiPluginMsg_Printing_GetDefaultPrintSettingsReply( |
| 83 reply_settings)))); |
| 84 |
| 85 EXPECT_TRUE(PP_RectEqual(reply_settings.printable_area, |
| 86 output_settings.printable_area)); |
| 87 EXPECT_TRUE(PP_RectEqual(reply_settings.content_area, |
| 88 output_settings.content_area)); |
| 89 EXPECT_TRUE(PP_SizeEqual(reply_settings.paper_size, |
| 90 output_settings.paper_size)); |
| 91 EXPECT_EQ(reply_settings.dpi, output_settings.dpi); |
| 92 EXPECT_EQ(reply_settings.orientation, output_settings.orientation); |
| 93 EXPECT_EQ(reply_settings.print_scaling_option, |
| 94 output_settings.print_scaling_option); |
| 95 EXPECT_EQ(reply_settings.grayscale, output_settings.grayscale); |
| 96 EXPECT_EQ(reply_settings.format, output_settings.format); |
| 97 |
| 98 EXPECT_EQ(g_callback_result, PP_OK); |
| 99 EXPECT_EQ(g_callback_called, true); |
| 100 } |
| 101 |
| 102 } // namespace proxy |
| 103 } // namespace ppapi |
| OLD | NEW |