diff options
author | ygorshenin@chromium.org <ygorshenin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-21 10:08:37 +0000 |
---|---|---|
committer | ygorshenin@chromium.org <ygorshenin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-21 10:08:37 +0000 |
commit | 0f8a16cf49ce0bdae4afbcff65198fe7f53d17a2 (patch) | |
tree | f8fb87651b87362b631cdc9d31d6a619d4a89bd0 /ppapi/cpp | |
parent | c958f909490cf530b26305473ab1598fff94d90e (diff) | |
download | chromium_src-0f8a16cf49ce0bdae4afbcff65198fe7f53d17a2.zip chromium_src-0f8a16cf49ce0bdae4afbcff65198fe7f53d17a2.tar.gz chromium_src-0f8a16cf49ce0bdae4afbcff65198fe7f53d17a2.tar.bz2 |
Added C++ wrappers for PPB_HostResolver_Private interface.
BUG=114225
TEST=*HostResolverPrivate
Review URL: http://codereview.chromium.org/9701024
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@127929 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi/cpp')
-rw-r--r-- | ppapi/cpp/private/host_resolver_private.cc | 77 | ||||
-rw-r--r-- | ppapi/cpp/private/host_resolver_private.h | 40 |
2 files changed, 117 insertions, 0 deletions
diff --git a/ppapi/cpp/private/host_resolver_private.cc b/ppapi/cpp/private/host_resolver_private.cc new file mode 100644 index 0000000..92a344e --- /dev/null +++ b/ppapi/cpp/private/host_resolver_private.cc @@ -0,0 +1,77 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ppapi/cpp/private/host_resolver_private.h" + +#include "ppapi/c/pp_bool.h" +#include "ppapi/c/pp_errors.h" +#include "ppapi/cpp/completion_callback.h" +#include "ppapi/cpp/instance_handle.h" +#include "ppapi/cpp/module.h" +#include "ppapi/cpp/module_impl.h" +#include "ppapi/cpp/pass_ref.h" + +namespace pp { + +namespace { + +template <> const char* interface_name<PPB_HostResolver_Private_0_1>() { + return PPB_HOSTRESOLVER_PRIVATE_INTERFACE_0_1; +} + +} // namespace + +HostResolverPrivate::HostResolverPrivate(const InstanceHandle& instance) { + if (has_interface<PPB_HostResolver_Private_0_1>()) { + PassRefFromConstructor( + get_interface<PPB_HostResolver_Private_0_1>()->Create( + instance.pp_instance())); + } +} + +// static +bool HostResolverPrivate::IsAvailable() { + return has_interface<PPB_HostResolver_Private_0_1>(); +} + +int32_t HostResolverPrivate::Resolve(const std::string& host, + uint16_t port, + const PP_HostResolver_Private_Hint& hint, + const CompletionCallback& callback) { + if (!has_interface<PPB_HostResolver_Private_0_1>()) + return callback.MayForce(PP_ERROR_NOINTERFACE); + return get_interface<PPB_HostResolver_Private_0_1>()->Resolve( + pp_resource(), + host.c_str(), + port, + &hint, + callback.pp_completion_callback()); +} + +Var HostResolverPrivate::GetCanonicalName() { + if (!has_interface<PPB_HostResolver_Private_0_1>()) + return Var(Var::Null()); + + PP_Var pp_canonical_name = + get_interface<PPB_HostResolver_Private_0_1>()->GetCanonicalName( + pp_resource()); + return Var(PASS_REF, pp_canonical_name); +} + +uint32_t HostResolverPrivate::GetSize() { + if (!has_interface<PPB_HostResolver_Private_0_1>()) + return 0; + return get_interface<PPB_HostResolver_Private_0_1>()->GetSize(pp_resource()); +} + +bool HostResolverPrivate::GetNetAddress(uint32_t index, + PP_NetAddress_Private* address) { + if (!has_interface<PPB_HostResolver_Private_0_1>()) + return false; + PP_Bool result = get_interface<PPB_HostResolver_Private_0_1>()->GetNetAddress( + pp_resource(), index, address); + return PP_ToBool(result); +} + +} // namespace pp diff --git a/ppapi/cpp/private/host_resolver_private.h b/ppapi/cpp/private/host_resolver_private.h new file mode 100644 index 0000000..2e4b08e --- /dev/null +++ b/ppapi/cpp/private/host_resolver_private.h @@ -0,0 +1,40 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef PPAPI_CPP_PRIVATE_HOST_RESOLVER_PRIVATE_H_ +#define PPAPI_CPP_PRIVATE_HOST_RESOLVER_PRIVATE_H_ + +#include <string> + +#include "ppapi/c/pp_stdint.h" +#include "ppapi/c/private/ppb_host_resolver_private.h" +#include "ppapi/cpp/resource.h" +#include "ppapi/cpp/var.h" + +struct PP_NetAddress_Private; + +namespace pp { + +class CompletionCallback; +class InstanceHandle; + +class HostResolverPrivate : public Resource { + public: + explicit HostResolverPrivate(const InstanceHandle& instance); + + // Returns true if the required interface is available. + static bool IsAvailable(); + + int32_t Resolve(const std::string& host, + uint16_t port, + const PP_HostResolver_Private_Hint& hint, + const CompletionCallback& callback); + Var GetCanonicalName(); + uint32_t GetSize(); + bool GetNetAddress(uint32_t index, PP_NetAddress_Private* address); +}; + +} // namespace pp + +#endif // PPAPI_CPP_PRIVATE_HOST_RESOLVER_PRIVATE_H_ |