Index: ppapi/proxy/host_resolver_resource_base.cc |
diff --git a/ppapi/proxy/host_resolver_resource_base.cc b/ppapi/proxy/host_resolver_resource_base.cc |
index c4055a73eef9614faa516798a3174a27722331c7..08877e14a601d80dc997d080312d0ba9acdf905f 100644 |
--- a/ppapi/proxy/host_resolver_resource_base.cc |
+++ b/ppapi/proxy/host_resolver_resource_base.cc |
@@ -13,11 +13,35 @@ |
namespace ppapi { |
namespace proxy { |
+namespace { |
+ |
+int32_t ConvertPPError(int32_t pp_error, bool private_api) { |
+ // The private API doesn't return network-specific error codes or |
+ // PP_ERROR_NOACCESS. In order to preserve the behavior, we convert those to |
+ // PP_ERROR_FAILED. |
+ // TODO(yzshen): Consider defining ranges for different kinds of PP_Error |
+ // codes, so that we can detect network-specific error codes in a better way. |
+ if (private_api && |
+ (pp_error <= PP_ERROR_CONNECTION_CLOSED || |
+ pp_error == PP_ERROR_NOACCESS)) { |
+ return PP_ERROR_FAILED; |
+ } |
+ |
+ return pp_error; |
+} |
+ |
+} // namespace |
+ |
HostResolverResourceBase::HostResolverResourceBase(Connection connection, |
- PP_Instance instance) |
+ PP_Instance instance, |
+ bool private_api) |
: PluginResource(connection, instance), |
+ private_api_(private_api), |
allow_get_results_(false) { |
- SendCreate(BROWSER, PpapiHostMsg_HostResolverPrivate_Create()); |
+ if (private_api) |
+ SendCreate(BROWSER, PpapiHostMsg_HostResolver_CreatePrivate()); |
+ else |
+ SendCreate(BROWSER, PpapiHostMsg_HostResolver_Create()); |
} |
HostResolverResourceBase::~HostResolverResourceBase() { |
@@ -85,14 +109,14 @@ void HostResolverResourceBase::OnPluginMsgResolveReply( |
canonical_name_.clear(); |
net_address_list_.clear(); |
} |
- resolve_callback_->Run(params.result()); |
+ resolve_callback_->Run(ConvertPPError(params.result(), private_api_)); |
} |
void HostResolverResourceBase::SendResolve( |
const HostPortPair& host_port, |
const PP_HostResolver_Private_Hint* hint) { |
- PpapiHostMsg_HostResolverPrivate_Resolve msg(host_port, *hint); |
- Call<PpapiPluginMsg_HostResolverPrivate_ResolveReply>( |
+ PpapiHostMsg_HostResolver_Resolve msg(host_port, *hint); |
+ Call<PpapiPluginMsg_HostResolver_ResolveReply>( |
BROWSER, |
msg, |
base::Bind(&HostResolverResourceBase::OnPluginMsgResolveReply, |