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 "ppapi/proxy/printing_resource.h"
6
7 #include "base/bind.h"
8 #include "ipc/ipc_message.h"
9 #include "ppapi/c/pp_errors.h"
10 #include "ppapi/proxy/dispatch_reply_message.h"
11 #include "ppapi/proxy/ppapi_messages.h"
12
13 namespace ppapi {
14 namespace proxy {
15
PrintingResource(Connection connection,PP_Instance instance)16 PrintingResource::PrintingResource(Connection connection, PP_Instance instance)
17 : PluginResource(connection, instance) {
18 }
19
~PrintingResource()20 PrintingResource::~PrintingResource() {
21 }
22
AsPPB_Printing_API()23 thunk::PPB_Printing_API* PrintingResource::AsPPB_Printing_API() {
24 return this;
25 }
26
GetDefaultPrintSettings(PP_PrintSettings_Dev * print_settings,scoped_refptr<TrackedCallback> callback)27 int32_t PrintingResource::GetDefaultPrintSettings(
28 PP_PrintSettings_Dev* print_settings,
29 scoped_refptr<TrackedCallback> callback) {
30 if (!print_settings)
31 return PP_ERROR_BADARGUMENT;
32
33 if (!sent_create_to_browser())
34 SendCreate(BROWSER, PpapiHostMsg_Printing_Create());
35
36 Call<PpapiPluginMsg_Printing_GetDefaultPrintSettingsReply>(
37 BROWSER,
38 PpapiHostMsg_Printing_GetDefaultPrintSettings(),
39 base::Bind(&PrintingResource::OnPluginMsgGetDefaultPrintSettingsReply,
40 this, print_settings, callback));
41 return PP_OK_COMPLETIONPENDING;
42 }
43
OnPluginMsgGetDefaultPrintSettingsReply(PP_PrintSettings_Dev * settings_out,scoped_refptr<TrackedCallback> callback,const ResourceMessageReplyParams & params,const PP_PrintSettings_Dev & settings)44 void PrintingResource::OnPluginMsgGetDefaultPrintSettingsReply(
45 PP_PrintSettings_Dev* settings_out,
46 scoped_refptr<TrackedCallback> callback,
47 const ResourceMessageReplyParams& params,
48 const PP_PrintSettings_Dev& settings) {
49 if (params.result() == PP_OK)
50 *settings_out = settings;
51
52 // Notify the plugin of the new data.
53 callback->Run(params.result());
54 // DANGER: May delete |this|!
55 }
56
57 } // namespace proxy
58 } // namespace ppapi
59