OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2013 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/network_proxy_resource.h" |
| 6 |
| 7 #include "base/bind.h" |
| 8 #include "ppapi/proxy/dispatch_reply_message.h" |
| 9 #include "ppapi/proxy/ppapi_messages.h" |
| 10 #include "ppapi/shared_impl/tracked_callback.h" |
| 11 #include "ppapi/shared_impl/var.h" |
| 12 |
| 13 namespace ppapi { |
| 14 namespace proxy { |
| 15 |
| 16 NetworkProxyResource::NetworkProxyResource(Connection connection, |
| 17 PP_Instance instance) |
| 18 : PluginResource(connection, instance) { |
| 19 SendCreate(BROWSER, PpapiHostMsg_NetworkProxy_Create()); |
| 20 } |
| 21 |
| 22 NetworkProxyResource::~NetworkProxyResource() { |
| 23 } |
| 24 |
| 25 thunk::PPB_NetworkProxy_API* NetworkProxyResource::AsPPB_NetworkProxy_API() { |
| 26 return this; |
| 27 } |
| 28 |
| 29 int32_t NetworkProxyResource::GetProxyForURL( |
| 30 PP_Instance /* instance */, |
| 31 PP_Var url, |
| 32 PP_Var* proxy_string, |
| 33 scoped_refptr<TrackedCallback> callback) { |
| 34 StringVar* string_url = StringVar::FromPPVar(url); |
| 35 if (!string_url) |
| 36 return PP_ERROR_BADARGUMENT; |
| 37 Call<PpapiPluginMsg_NetworkProxy_GetProxyForURLReply>( |
| 38 BROWSER, |
| 39 PpapiHostMsg_NetworkProxy_GetProxyForURL(string_url->value()), |
| 40 base::Bind(&NetworkProxyResource::OnPluginMsgGetProxyForURLReply, |
| 41 base::Unretained(this), |
| 42 base::Unretained(proxy_string), |
| 43 callback)); |
| 44 return PP_OK_COMPLETIONPENDING; |
| 45 } |
| 46 |
| 47 void NetworkProxyResource::OnPluginMsgGetProxyForURLReply( |
| 48 PP_Var* proxy_string_out_param, |
| 49 scoped_refptr<TrackedCallback> callback, |
| 50 const ResourceMessageReplyParams& params, |
| 51 const std::string& proxy_string) { |
| 52 if (!TrackedCallback::IsPending(callback)) { |
| 53 // The callback should not have already been run. If this resource is |
| 54 // deleted, LastPluginRefWasReleased in PluginResource should abort the |
| 55 // callback and should not run this callback. |
| 56 NOTREACHED(); |
| 57 return; |
| 58 } |
| 59 if (params.result() == PP_OK) { |
| 60 *proxy_string_out_param = (new StringVar(proxy_string))->GetPPVar(); |
| 61 } |
| 62 callback->Run(params.result()); |
| 63 } |
| 64 |
| 65 } // namespace proxy |
| 66 } // namespace ppapi |
OLD | NEW |