| 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,
|
|
|