Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / native_client_sdk / src / tests / nacl_io_test / fake_ppapi / fake_net_address_interface.cc
1 // Copyright 2014 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 "fake_ppapi/fake_net_address_interface.h"
6
7 #include <netinet/in.h>
8
9 #include "fake_ppapi/fake_pepper_interface.h"
10 #include "fake_ppapi/fake_resource_manager.h"
11 #include "fake_ppapi/fake_var_manager.h"
12 #include "gtest/gtest.h"
13
14 namespace {
15
16 class FakeNetAddressResource : public FakeResource {
17  public:
18   explicit FakeNetAddressResource(PP_NetAddress_IPv4 addr)
19       : is_v6(false), address(addr) {}
20   explicit FakeNetAddressResource(PP_NetAddress_IPv6 addr)
21       : is_v6(true), address_v6(addr) {}
22
23   static const char* classname() { return "FakeNetAddressResource"; }
24
25   bool is_v6;
26   PP_NetAddress_IPv4 address;
27   PP_NetAddress_IPv6 address_v6;
28 };
29
30 }  // namespace
31
32 FakeNetAddressInterface::FakeNetAddressInterface(FakePepperInterface* ppapi)
33     : ppapi_(ppapi) {}
34
35 PP_Resource FakeNetAddressInterface::CreateFromIPv4Address(
36     PP_Instance instance,
37     PP_NetAddress_IPv4* address) {
38   if (instance != ppapi_->GetInstance())
39     return 0;
40
41   FakeNetAddressResource* addr_resource = new FakeNetAddressResource(*address);
42
43   PP_Resource rtn = CREATE_RESOURCE(ppapi_->resource_manager(),
44                                     FakeNetAddressResource,
45                                     addr_resource);
46   return rtn;
47 }
48
49 PP_Resource FakeNetAddressInterface::CreateFromIPv6Address(
50     PP_Instance instance,
51     PP_NetAddress_IPv6* address) {
52   if (instance != ppapi_->GetInstance())
53     return 0;
54
55   FakeNetAddressResource* addr_resource = new FakeNetAddressResource(*address);
56   PP_Resource rtn = CREATE_RESOURCE(ppapi_->resource_manager(),
57                                     FakeNetAddressResource,
58                                     addr_resource);
59   return rtn;
60 }
61
62 PP_Bool FakeNetAddressInterface::IsNetAddress(PP_Resource address) {
63   FakeNetAddressResource* address_resource =
64       ppapi_->resource_manager()->Get<FakeNetAddressResource>(address);
65   if (address_resource == NULL)
66     return PP_FALSE;
67   return PP_TRUE;
68 }
69
70 PP_NetAddress_Family FakeNetAddressInterface::GetFamily(PP_Resource address) {
71   FakeNetAddressResource* address_resource =
72       ppapi_->resource_manager()->Get<FakeNetAddressResource>(address);
73   if (address_resource == NULL)
74     return PP_NETADDRESS_FAMILY_UNSPECIFIED;
75
76   if (address_resource->is_v6)
77     return PP_NETADDRESS_FAMILY_IPV6;
78
79   return PP_NETADDRESS_FAMILY_IPV4;
80 }
81
82 PP_Bool FakeNetAddressInterface::DescribeAsIPv4Address(
83     PP_Resource address, PP_NetAddress_IPv4* target) {
84   FakeNetAddressResource* address_resource =
85       ppapi_->resource_manager()->Get<FakeNetAddressResource>(address);
86   if (address_resource == NULL)
87     return PP_FALSE;
88
89   if (address_resource->is_v6)
90     return PP_FALSE;
91
92   *target = address_resource->address;
93   return PP_TRUE;
94 }
95
96 PP_Bool FakeNetAddressInterface::DescribeAsIPv6Address(
97     PP_Resource address, PP_NetAddress_IPv6* target) {
98   FakeNetAddressResource* address_resource =
99       ppapi_->resource_manager()->Get<FakeNetAddressResource>(address);
100   if (address_resource == NULL)
101     return PP_FALSE;
102
103   if (!address_resource->is_v6)
104     return PP_FALSE;
105
106   *target = address_resource->address_v6;
107   return PP_TRUE;
108 }
109
110 PP_Var FakeNetAddressInterface::DescribeAsString(PP_Resource, PP_Bool) {
111   // TODO(sbc): implement
112   assert(false);
113   return PP_Var();
114 }