Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(683)

Side by Side Diff: ppapi/tests/test_network_monitor_private.cc

Issue 9696051: Add NetworkListObserver utility class. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ppapi/tests/test_network_monitor_private.h ('k') | ppapi/utility/private/DEPS » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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"
10 #include "ppapi/cpp/module.h"
9 #include "ppapi/cpp/private/net_address_private.h" 11 #include "ppapi/cpp/private/net_address_private.h"
10 #include "ppapi/cpp/private/network_list_private.h" 12 #include "ppapi/cpp/private/network_list_private.h"
11 #include "ppapi/cpp/private/network_monitor_private.h" 13 #include "ppapi/cpp/private/network_monitor_private.h"
12 #include "ppapi/tests/testing_instance.h" 14 #include "ppapi/tests/testing_instance.h"
13 #include "ppapi/tests/test_utils.h" 15 #include "ppapi/tests/test_utils.h"
14 #include "ppapi/cpp/module.h" 16 #include "ppapi/utility/private/network_list_observer_private.h"
15 17
16 REGISTER_TEST_CASE(NetworkMonitorPrivate); 18 REGISTER_TEST_CASE(NetworkMonitorPrivate);
17 19
18 namespace { 20 namespace {
19 21
20 struct CallbackData { 22 struct CallbackData {
21 explicit CallbackData(PP_Instance instance) 23 explicit CallbackData(PP_Instance instance)
22 : call_counter(0), 24 : call_counter(0),
23 completion_callback(instance), 25 completion_callback(instance),
24 list_resource(0), 26 list_resource(0),
(...skipping 20 matching lines...) Expand all
45 data->list_resource = network_list; 47 data->list_resource = network_list;
46 48
47 if (data->delete_monitor) 49 if (data->delete_monitor)
48 delete data->monitor; 50 delete data->monitor;
49 51
50 // Invoke completion callback only for the first change notification. 52 // Invoke completion callback only for the first change notification.
51 if (data->call_counter == 1) 53 if (data->call_counter == 1)
52 static_cast<pp::CompletionCallback>(data->completion_callback).Run(PP_OK); 54 static_cast<pp::CompletionCallback>(data->completion_callback).Run(PP_OK);
53 } 55 }
54 56
57
58 class TestNetworkListObserver : public pp::NetworkListObserverPrivate {
59 public:
60 explicit TestNetworkListObserver(const pp::InstanceHandle& instance)
61 : pp::NetworkListObserverPrivate(instance),
62 completion_callback(instance.pp_instance()) {
63 }
64 virtual void OnNetworkListChanged(const pp::NetworkListPrivate& list) {
65 current_list = list;
66 static_cast<pp::CompletionCallback>(completion_callback).Run(PP_OK);
67 }
68
69 pp::NetworkListPrivate current_list;
70 TestCompletionCallback completion_callback;
71 };
72
55 } // namespace 73 } // namespace
56 74
57 TestNetworkMonitorPrivate::TestNetworkMonitorPrivate(TestingInstance* instance) 75 TestNetworkMonitorPrivate::TestNetworkMonitorPrivate(TestingInstance* instance)
58 : TestCase(instance) { 76 : TestCase(instance) {
59 } 77 }
60 78
61 bool TestNetworkMonitorPrivate::Init() { 79 bool TestNetworkMonitorPrivate::Init() {
62 if (!pp::NetworkMonitorPrivate::IsAvailable()) 80 if (!pp::NetworkMonitorPrivate::IsAvailable())
63 return false; 81 return false;
64 82
65 return true; 83 return true;
66 } 84 }
67 85
68 void TestNetworkMonitorPrivate::RunTests(const std::string& filter) { 86 void TestNetworkMonitorPrivate::RunTests(const std::string& filter) {
69 RUN_TEST_FORCEASYNC_AND_NOT(Basic, filter); 87 RUN_TEST_FORCEASYNC_AND_NOT(Basic, filter);
70 RUN_TEST_FORCEASYNC_AND_NOT(2Monitors, filter); 88 RUN_TEST_FORCEASYNC_AND_NOT(2Monitors, filter);
71 RUN_TEST_FORCEASYNC_AND_NOT(DeleteInCallback, filter); 89 RUN_TEST_FORCEASYNC_AND_NOT(DeleteInCallback, filter);
90 RUN_TEST_FORCEASYNC_AND_NOT(ListObserver, filter);
91 }
92
93 std::string TestNetworkMonitorPrivate::VerifyNetworkListResource(
94 PP_Resource network_list_resource) {
95 pp::NetworkListPrivate network_list(network_list_resource);
96 return VerifyNetworkList(network_list);
72 } 97 }
73 98
74 std::string TestNetworkMonitorPrivate::VerifyNetworkList( 99 std::string TestNetworkMonitorPrivate::VerifyNetworkList(
75 PP_Resource network_resource) { 100 const pp::NetworkListPrivate& network_list) {
76 pp::NetworkListPrivate network_list(network_resource);
77
78 // Verify that there is at least one network interface. 101 // Verify that there is at least one network interface.
79 size_t count = network_list.GetCount(); 102 size_t count = network_list.GetCount();
80 ASSERT_TRUE(count >= 1U); 103 ASSERT_TRUE(count >= 1U);
81 104
82 // Iterate over all interfaces and verify their properties. 105 // Iterate over all interfaces and verify their properties.
83 for (size_t iface = 0; iface < count; ++iface) { 106 for (size_t iface = 0; iface < count; ++iface) {
84 // Verify that the first interface has at least one address. 107 // Verify that the first interface has at least one address.
85 std::vector<PP_NetAddress_Private> addresses; 108 std::vector<PP_NetAddress_Private> addresses;
86 network_list.GetIpAddresses(iface, &addresses); 109 network_list.GetIpAddresses(iface, &addresses);
87 ASSERT_TRUE(addresses.size() >= 1U); 110 ASSERT_TRUE(addresses.size() >= 1U);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 PPB_NETWORKLIST_PRIVATE_INTERFACE)); 153 PPB_NETWORKLIST_PRIVATE_INTERFACE));
131 ASSERT_TRUE(interface); 154 ASSERT_TRUE(interface);
132 std::vector<PP_NetAddress_Private> addresses; 155 std::vector<PP_NetAddress_Private> addresses;
133 network_list.GetIpAddresses(0, &addresses); 156 network_list.GetIpAddresses(0, &addresses);
134 size_t address_count = addresses.size(); 157 size_t address_count = addresses.size();
135 addresses.resize(addresses.size() + 3); 158 addresses.resize(addresses.size() + 3);
136 for (size_t i = 0; i < addresses.size(); ++i) { 159 for (size_t i = 0; i < addresses.size(); ++i) {
137 const char kFillValue = 123; 160 const char kFillValue = 123;
138 memset(&addresses.front(), kFillValue, 161 memset(&addresses.front(), kFillValue,
139 addresses.size() * sizeof(PP_NetAddress_Private)); 162 addresses.size() * sizeof(PP_NetAddress_Private));
140 int result = interface->GetIpAddresses(network_resource, 0, 163 int result = interface->GetIpAddresses(network_list.pp_resource(), 0,
141 &addresses.front(), i); 164 &addresses.front(), i);
142 ASSERT_EQ(result, static_cast<int>(address_count)); 165 ASSERT_EQ(result, static_cast<int>(address_count));
143 166
144 // Verify that nothing outside the buffer was touched. 167 // Verify that nothing outside the buffer was touched.
145 for (char* pos = reinterpret_cast<char*>(&addresses[result]); 168 for (char* pos = reinterpret_cast<char*>(&addresses[result]);
146 pos != reinterpret_cast<char*>(&addresses[0] + addresses.size()); 169 pos != reinterpret_cast<char*>(&addresses[0] + addresses.size());
147 ++pos) { 170 ++pos) {
148 ASSERT_TRUE(*pos == kFillValue); 171 ASSERT_TRUE(*pos == kFillValue);
149 } 172 }
150 } 173 }
151 174
152 PASS(); 175 PASS();
153 } 176 }
154 177
155 std::string TestNetworkMonitorPrivate::TestBasic() { 178 std::string TestNetworkMonitorPrivate::TestBasic() {
156 CallbackData callback_data(instance_->pp_instance()); 179 CallbackData callback_data(instance_->pp_instance());
157 180
158 pp::NetworkMonitorPrivate network_monitor( 181 pp::NetworkMonitorPrivate network_monitor(
159 instance_, &TestCallback, &callback_data); 182 instance_, &TestCallback, &callback_data);
160 ASSERT_EQ(callback_data.completion_callback.WaitForResult(), PP_OK); 183 ASSERT_EQ(callback_data.completion_callback.WaitForResult(), PP_OK);
161 ASSERT_EQ(callback_data.call_counter, 1); 184 ASSERT_EQ(callback_data.call_counter, 1);
162 185
163 ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(callback_data.list_resource)); 186 ASSERT_SUBTEST_SUCCESS(
187 VerifyNetworkListResource(callback_data.list_resource));
164 188
165 PASS(); 189 PASS();
166 } 190 }
167 191
168 std::string TestNetworkMonitorPrivate::Test2Monitors() { 192 std::string TestNetworkMonitorPrivate::Test2Monitors() {
169 CallbackData callback_data(instance_->pp_instance()); 193 CallbackData callback_data(instance_->pp_instance());
170 194
171 pp::NetworkMonitorPrivate network_monitor( 195 pp::NetworkMonitorPrivate network_monitor(
172 instance_, &TestCallback, &callback_data); 196 instance_, &TestCallback, &callback_data);
173 ASSERT_EQ(callback_data.completion_callback.WaitForResult(), PP_OK); 197 ASSERT_EQ(callback_data.completion_callback.WaitForResult(), PP_OK);
174 ASSERT_EQ(callback_data.call_counter, 1); 198 ASSERT_EQ(callback_data.call_counter, 1);
175 199
176 ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(callback_data.list_resource)); 200 ASSERT_SUBTEST_SUCCESS(
201 VerifyNetworkListResource(callback_data.list_resource));
177 202
178 CallbackData callback_data_2(instance_->pp_instance()); 203 CallbackData callback_data_2(instance_->pp_instance());
179 204
180 pp::NetworkMonitorPrivate network_monitor_2( 205 pp::NetworkMonitorPrivate network_monitor_2(
181 instance_, &TestCallback, &callback_data_2); 206 instance_, &TestCallback, &callback_data_2);
182 ASSERT_EQ(callback_data_2.completion_callback.WaitForResult(), PP_OK); 207 ASSERT_EQ(callback_data_2.completion_callback.WaitForResult(), PP_OK);
183 ASSERT_EQ(callback_data_2.call_counter, 1); 208 ASSERT_EQ(callback_data_2.call_counter, 1);
184 209
185 ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(callback_data_2.list_resource)); 210 ASSERT_SUBTEST_SUCCESS(
211 VerifyNetworkListResource(callback_data_2.list_resource));
186 212
187 PASS(); 213 PASS();
188 } 214 }
189 215
190 std::string TestNetworkMonitorPrivate::TestDeleteInCallback() { 216 std::string TestNetworkMonitorPrivate::TestDeleteInCallback() {
191 CallbackData callback_data(instance_->pp_instance()); 217 CallbackData callback_data(instance_->pp_instance());
192 218
193 pp::NetworkMonitorPrivate* network_monitor = new pp::NetworkMonitorPrivate( 219 pp::NetworkMonitorPrivate* network_monitor = new pp::NetworkMonitorPrivate(
194 instance_, &TestCallback, &callback_data); 220 instance_, &TestCallback, &callback_data);
195 callback_data.delete_monitor = true; 221 callback_data.delete_monitor = true;
196 callback_data.monitor = network_monitor; 222 callback_data.monitor = network_monitor;
197 223
198 ASSERT_EQ(callback_data.completion_callback.WaitForResult(), PP_OK); 224 ASSERT_EQ(callback_data.completion_callback.WaitForResult(), PP_OK);
199 ASSERT_EQ(callback_data.call_counter, 1); 225 ASSERT_EQ(callback_data.call_counter, 1);
200 226
201 ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(callback_data.list_resource)); 227 ASSERT_SUBTEST_SUCCESS(
228 VerifyNetworkListResource(callback_data.list_resource));
202 229
203 PASS(); 230 PASS();
204 } 231 }
232
233 std::string TestNetworkMonitorPrivate::TestListObserver() {
234 TestNetworkListObserver observer(instance_);
235 ASSERT_EQ(observer.completion_callback.WaitForResult(), PP_OK);
236 ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(observer.current_list));
237 PASS();
238 }
OLDNEW
« no previous file with comments | « ppapi/tests/test_network_monitor_private.h ('k') | ppapi/utility/private/DEPS » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698