summaryrefslogtreecommitdiffstats
path: root/ppapi/cpp
diff options
context:
space:
mode:
authorygorshenin@chromium.org <ygorshenin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-21 10:08:37 +0000
committerygorshenin@chromium.org <ygorshenin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-21 10:08:37 +0000
commit0f8a16cf49ce0bdae4afbcff65198fe7f53d17a2 (patch)
treef8fb87651b87362b631cdc9d31d6a619d4a89bd0 /ppapi/cpp
parentc958f909490cf530b26305473ab1598fff94d90e (diff)
downloadchromium_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.cc77
-rw-r--r--ppapi/cpp/private/host_resolver_private.h40
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_