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 13namespace ppapi { 14namespace proxy { 15 16NetAddressResource::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 25NetAddressResource::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 34NetAddressResource::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 42NetAddressResource::~NetAddressResource() { 43} 44 45thunk::PPB_NetAddress_API* NetAddressResource::AsPPB_NetAddress_API() { 46 return this; 47} 48 49PP_NetAddress_Family NetAddressResource::GetFamily() { 50 return NetAddressPrivateImpl::GetFamilyFromNetAddressPrivate(address_); 51} 52 53PP_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 62PP_Bool NetAddressResource::DescribeAsIPv4Address( 63 PP_NetAddress_IPv4* ipv4_addr) { 64 return PP_FromBool( 65 NetAddressPrivateImpl::DescribeNetAddressPrivateAsIPv4Address( 66 address_, ipv4_addr)); 67} 68 69PP_Bool NetAddressResource::DescribeAsIPv6Address( 70 PP_NetAddress_IPv6* ipv6_addr) { 71 return PP_FromBool( 72 NetAddressPrivateImpl::DescribeNetAddressPrivateAsIPv6Address( 73 address_, ipv6_addr)); 74} 75 76const PP_NetAddress_Private& NetAddressResource::GetNetAddressPrivate() { 77 return address_; 78} 79 80} // namespace proxy 81} // namespace ppapi 82