summaryrefslogtreecommitdiffstats
path: root/ppapi/proxy/host_resolver_resource_base.cc
diff options
context:
space:
mode:
authoryzshen@chromium.org <yzshen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-06-20 08:44:37 +0000
committeryzshen@chromium.org <yzshen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-06-20 08:44:37 +0000
commitf31e55cd63f592228a962d03ade7aa1188e0fe83 (patch)
treed37fdbcd586f8355176990c47e83ca758baa17b8 /ppapi/proxy/host_resolver_resource_base.cc
parentd70d355fe7e8a19b7ef6c9e767ad763d912fd114 (diff)
downloadchromium_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.cc34
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,