Home | History | Annotate | Download | only in proxy
      1 // Copyright 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "ppapi/proxy/net_address_resource.h"
      6 
      7 #include <string>
      8 
      9 #include "ppapi/c/pp_bool.h"
     10 #include "ppapi/shared_impl/private/net_address_private_impl.h"
     11 #include "ppapi/shared_impl/var.h"
     12 
     13 namespace ppapi {
     14 namespace proxy {
     15 
     16 NetAddressResource::NetAddressResource(
     17     Connection connection,
     18     PP_Instance instance,
     19     const PP_NetAddress_IPv4& ipv4_addr)
     20     : PluginResource(connection, instance) {
     21   NetAddressPrivateImpl::CreateNetAddressPrivateFromIPv4Address(ipv4_addr,
     22                                                                 &address_);
     23 }
     24 
     25 NetAddressResource::NetAddressResource(
     26     Connection connection,
     27     PP_Instance instance,
     28     const PP_NetAddress_IPv6& ipv6_addr)
     29     : PluginResource(connection, instance) {
     30   NetAddressPrivateImpl::CreateNetAddressPrivateFromIPv6Address(ipv6_addr,
     31                                                                 &address_);
     32 }
     33 
     34 NetAddressResource::NetAddressResource(
     35     Connection connection,
     36     PP_Instance instance,
     37     const PP_NetAddress_Private& private_addr)
     38     : PluginResource(connection, instance) {
     39   address_ = private_addr;
     40 }
     41 
     42 NetAddressResource::~NetAddressResource() {
     43 }
     44 
     45 thunk::PPB_NetAddress_API* NetAddressResource::AsPPB_NetAddress_API() {
     46   return this;
     47 }
     48 
     49 PP_NetAddress_Family NetAddressResource::GetFamily() {
     50   return NetAddressPrivateImpl::GetFamilyFromNetAddressPrivate(address_);
     51 }
     52 
     53 PP_Var NetAddressResource::DescribeAsString(PP_Bool include_port) {
     54   std::string description = NetAddressPrivateImpl::DescribeNetAddress(
     55       address_, PP_ToBool(include_port));
     56 
     57   if (description.empty())
     58     return PP_MakeUndefined();
     59   return StringVar::StringToPPVar(description);
     60 }
     61 
     62 PP_Bool NetAddressResource::DescribeAsIPv4Address(
     63     PP_NetAddress_IPv4* ipv4_addr) {
     64   return PP_FromBool(
     65       NetAddressPrivateImpl::DescribeNetAddressPrivateAsIPv4Address(
     66           address_, ipv4_addr));
     67 }
     68 
     69 PP_Bool NetAddressResource::DescribeAsIPv6Address(
     70     PP_NetAddress_IPv6* ipv6_addr) {
     71   return PP_FromBool(
     72       NetAddressPrivateImpl::DescribeNetAddressPrivateAsIPv6Address(
     73           address_, ipv6_addr));
     74 }
     75 
     76 const PP_NetAddress_Private& NetAddressResource::GetNetAddressPrivate() {
     77   return address_;
     78 }
     79 
     80 }  // namespace proxy
     81 }  // namespace ppapi
     82