diff options
author | yzshen@chromium.org <yzshen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-20 08:44:37 +0000 |
---|---|---|
committer | yzshen@chromium.org <yzshen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-20 08:44:37 +0000 |
commit | f31e55cd63f592228a962d03ade7aa1188e0fe83 (patch) | |
tree | d37fdbcd586f8355176990c47e83ca758baa17b8 /ppapi/proxy/host_resolver_resource_base.cc | |
parent | d70d355fe7e8a19b7ef6c9e767ad763d912fd114 (diff) | |
download | chromium_src-f31e55cd63f592228a962d03ade7aa1188e0fe83.zip chromium_src-f31e55cd63f592228a962d03ade7aa1188e0fe83.tar.gz chromium_src-f31e55cd63f592228a962d03ade7aa1188e0fe83.tar.bz2 |
Implement PPB_HostResolver_Dev: part 2
This CL:
- adds apps permission check;
- map net::Error to PP_Error.
BUG=247225
TEST=None
TBR=brettw@chromium.org
(TBR Brett because of renaming two files in content/content_browser.gypi)
Review URL: https://chromiumcodereview.appspot.com/16933003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@207366 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi/proxy/host_resolver_resource_base.cc')
-rw-r--r-- | ppapi/proxy/host_resolver_resource_base.cc | 34 |
1 files changed, 29 insertions, 5 deletions
diff --git a/ppapi/proxy/host_resolver_resource_base.cc b/ppapi/proxy/host_resolver_resource_base.cc index c4055a7..08877e1 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, |