OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ppapi/tests/test_network_monitor_private.h" | 5 #include "ppapi/tests/test_network_monitor_private.h" |
6 | 6 |
7 #include <string.h> | 7 #include <string.h> |
8 | 8 |
9 #include "ppapi/cpp/instance_handle.h" | 9 #include "ppapi/cpp/instance_handle.h" |
10 #include "ppapi/cpp/module.h" | 10 #include "ppapi/cpp/module.h" |
11 #include "ppapi/cpp/private/net_address_private.h" | 11 #include "ppapi/cpp/net_address.h" |
12 #include "ppapi/cpp/private/network_list_private.h" | 12 #include "ppapi/cpp/private/network_list_private.h" |
13 #include "ppapi/cpp/private/network_monitor_private.h" | 13 #include "ppapi/cpp/private/network_monitor_private.h" |
14 #include "ppapi/tests/testing_instance.h" | 14 #include "ppapi/tests/testing_instance.h" |
15 #include "ppapi/tests/test_utils.h" | 15 #include "ppapi/tests/test_utils.h" |
16 #include "ppapi/utility/private/network_list_observer_private.h" | 16 #include "ppapi/utility/private/network_list_observer_private.h" |
17 | 17 |
18 REGISTER_TEST_CASE(NetworkMonitorPrivate); | 18 REGISTER_TEST_CASE(NetworkMonitorPrivate); |
19 | 19 |
20 namespace { | 20 namespace { |
21 | 21 |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
85 | 85 |
86 std::string TestNetworkMonitorPrivate::VerifyNetworkList( | 86 std::string TestNetworkMonitorPrivate::VerifyNetworkList( |
87 const pp::NetworkListPrivate& network_list) { | 87 const pp::NetworkListPrivate& network_list) { |
88 // Verify that there is at least one network interface. | 88 // Verify that there is at least one network interface. |
89 size_t count = network_list.GetCount(); | 89 size_t count = network_list.GetCount(); |
90 ASSERT_TRUE(count >= 1U); | 90 ASSERT_TRUE(count >= 1U); |
91 | 91 |
92 // Iterate over all interfaces and verify their properties. | 92 // Iterate over all interfaces and verify their properties. |
93 for (size_t iface = 0; iface < count; ++iface) { | 93 for (size_t iface = 0; iface < count; ++iface) { |
94 // Verify that the first interface has at least one address. | 94 // Verify that the first interface has at least one address. |
95 std::vector<PP_NetAddress_Private> addresses; | 95 std::vector<pp::NetAddress> addresses; |
96 network_list.GetIpAddresses(iface, &addresses); | 96 network_list.GetIpAddresses(iface, &addresses); |
97 ASSERT_TRUE(addresses.size() >= 1U); | 97 ASSERT_TRUE(addresses.size() >= 1U); |
98 // Verify that the addresses are valid. | 98 // Verify that the addresses are valid. |
99 for (size_t i = 0; i < addresses.size(); ++i) { | 99 for (size_t i = 0; i < addresses.size(); ++i) { |
100 PP_NetAddressFamily_Private family = | 100 PP_NetAddress_Family family = addresses[i].GetFamily(); |
101 pp::NetAddressPrivate::GetFamily(addresses[i]); | |
102 | 101 |
103 ASSERT_TRUE(family == PP_NETADDRESSFAMILY_PRIVATE_IPV4 || | 102 switch (family) { |
104 family == PP_NETADDRESSFAMILY_PRIVATE_IPV6); | 103 case PP_NETADDRESS_FAMILY_IPV4: { |
104 PP_NetAddress_IPv4 ipv4; | |
105 ASSERT_TRUE(addresses[i].DescribeAsIPv4Address(&ipv4)); | |
105 | 106 |
106 char ip[16] = { 0 }; | 107 // Verify that the address is not zero. |
107 ASSERT_TRUE(pp::NetAddressPrivate::GetAddress( | 108 bool all_zeros = true; |
108 addresses[i], ip, sizeof(ip))); | 109 for (size_t j = 0; j < sizeof(ipv4.addr); ++j) { |
110 if (ipv4.addr[j] != 0) { | |
111 all_zeros = false; | |
yzshen1
2013/09/03 17:47:32
nit: Please consider adding break;
Sergey Ulanov
2013/09/03 23:42:54
Done.
| |
112 } | |
113 } | |
114 ASSERT_TRUE(!all_zeros); | |
109 | 115 |
110 // Verify that the address is not zero. | 116 // Verify that port is set to 0. |
111 size_t j; | 117 ASSERT_TRUE(ipv4.port == 0); |
112 for (j = 0; j < sizeof(ip); ++j) { | |
113 if (ip[j] != 0) | |
114 break; | 118 break; |
119 } | |
120 | |
121 case PP_NETADDRESS_FAMILY_IPV6: { | |
122 PP_NetAddress_IPv6 ipv6; | |
123 ASSERT_TRUE(addresses[i].DescribeAsIPv6Address(&ipv6)); | |
124 | |
125 // Verify that the address is not zero. | |
126 bool all_zeros = true; | |
127 for (size_t j = 0; j < sizeof(ipv6.addr); ++j) { | |
128 if (ipv6.addr[j] != 0) { | |
129 all_zeros = false; | |
yzshen1
2013/09/03 17:47:32
ditto.
Sergey Ulanov
2013/09/03 23:42:54
Done.
| |
130 } | |
131 } | |
132 ASSERT_TRUE(!all_zeros); | |
133 | |
134 // Verify that port is set to 0. | |
135 ASSERT_TRUE(ipv6.port == 0); | |
136 break; | |
137 } | |
138 | |
139 default: | |
140 ASSERT_TRUE(false); | |
115 } | 141 } |
116 ASSERT_TRUE(j != addresses[i].size); | |
117 | |
118 // Verify that port is set to 0. | |
119 ASSERT_TRUE(pp::NetAddressPrivate::GetPort(addresses[i]) == 0); | |
120 } | 142 } |
121 | 143 |
122 // Verify that each interface has a unique name and a display name. | 144 // Verify that each interface has a unique name and a display name. |
123 ASSERT_FALSE(network_list.GetName(iface).empty()); | 145 ASSERT_FALSE(network_list.GetName(iface).empty()); |
124 ASSERT_FALSE(network_list.GetDisplayName(iface).empty()); | 146 ASSERT_FALSE(network_list.GetDisplayName(iface).empty()); |
125 | 147 |
126 PP_NetworkListType_Private type = network_list.GetType(iface); | 148 PP_NetworkListType_Private type = network_list.GetType(iface); |
127 ASSERT_TRUE(type >= PP_NETWORKLIST_UNKNOWN); | 149 ASSERT_TRUE(type >= PP_NETWORKLIST_UNKNOWN); |
128 ASSERT_TRUE(type <= PP_NETWORKLIST_CELLULAR); | 150 ASSERT_TRUE(type <= PP_NETWORKLIST_CELLULAR); |
129 | 151 |
130 PP_NetworkListState_Private state = network_list.GetState(iface); | 152 PP_NetworkListState_Private state = network_list.GetState(iface); |
131 ASSERT_TRUE(state >= PP_NETWORKLIST_DOWN); | 153 ASSERT_TRUE(state >= PP_NETWORKLIST_DOWN); |
132 ASSERT_TRUE(state <= PP_NETWORKLIST_UP); | 154 ASSERT_TRUE(state <= PP_NETWORKLIST_UP); |
133 } | 155 } |
134 | 156 |
135 // Try to call GetIpAddresses() without C++ wrapper and verify that | |
136 // it always returns correct value. | |
137 const PPB_NetworkList_Private* interface = | |
138 static_cast<const PPB_NetworkList_Private*>( | |
139 pp::Module::Get()->GetBrowserInterface( | |
140 PPB_NETWORKLIST_PRIVATE_INTERFACE)); | |
141 ASSERT_TRUE(interface); | |
142 std::vector<PP_NetAddress_Private> addresses; | |
143 network_list.GetIpAddresses(0, &addresses); | |
144 size_t address_count = addresses.size(); | |
145 addresses.resize(addresses.size() + 3); | |
146 for (size_t i = 0; i < addresses.size(); ++i) { | |
147 const char kFillValue = 123; | |
148 memset(&addresses.front(), kFillValue, | |
149 addresses.size() * sizeof(PP_NetAddress_Private)); | |
150 int result = interface->GetIpAddresses(network_list.pp_resource(), 0, | |
151 &addresses.front(), i); | |
152 ASSERT_EQ(result, static_cast<int>(address_count)); | |
153 | |
154 // Verify that nothing outside the buffer was touched. | |
155 for (char* pos = reinterpret_cast<char*>(&addresses[result]); | |
156 pos != reinterpret_cast<char*>(&addresses[0] + addresses.size()); | |
157 ++pos) { | |
158 ASSERT_TRUE(*pos == kFillValue); | |
159 } | |
160 } | |
161 | |
162 PASS(); | 157 PASS(); |
163 } | 158 } |
164 | 159 |
165 std::string TestNetworkMonitorPrivate::TestBasic() { | 160 std::string TestNetworkMonitorPrivate::TestBasic() { |
166 CallbackData callback_data(instance_->pp_instance()); | 161 CallbackData callback_data(instance_->pp_instance()); |
167 | 162 |
168 pp::NetworkMonitorPrivate network_monitor( | 163 pp::NetworkMonitorPrivate network_monitor( |
169 instance_, &TestCallback, &callback_data); | 164 instance_, &TestCallback, &callback_data); |
170 callback_data.event.Wait(); | 165 callback_data.event.Wait(); |
171 ASSERT_EQ(callback_data.call_counter, 1); | 166 ASSERT_EQ(callback_data.call_counter, 1); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
212 | 207 |
213 PASS(); | 208 PASS(); |
214 } | 209 } |
215 | 210 |
216 std::string TestNetworkMonitorPrivate::TestListObserver() { | 211 std::string TestNetworkMonitorPrivate::TestListObserver() { |
217 TestNetworkListObserver observer(instance_); | 212 TestNetworkListObserver observer(instance_); |
218 observer.event.Wait(); | 213 observer.event.Wait(); |
219 ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(observer.current_list)); | 214 ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(observer.current_list)); |
220 PASS(); | 215 PASS(); |
221 } | 216 } |
OLD | NEW |