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

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
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/network_list_private.h" 11 #include "ppapi/cpp/private/network_list_private.h"
10 #include "ppapi/cpp/private/network_monitor_private.h" 12 #include "ppapi/cpp/private/network_monitor_private.h"
11 #include "ppapi/tests/testing_instance.h" 13 #include "ppapi/tests/testing_instance.h"
12 #include "ppapi/tests/test_utils.h" 14 #include "ppapi/tests/test_utils.h"
13 #include "ppapi/cpp/module.h" 15 #include "ppapi/utility/network_list_observer.h"
14 16
15 REGISTER_TEST_CASE(NetworkMonitorPrivate); 17 REGISTER_TEST_CASE(NetworkMonitorPrivate);
16 18
17 namespace { 19 namespace {
18 20
19 struct CallbackData { 21 struct CallbackData {
20 explicit CallbackData(PP_Instance instance) 22 explicit CallbackData(PP_Instance instance)
21 : call_counter(0), 23 : call_counter(0),
22 completion_callback(instance), 24 completion_callback(instance),
23 list_resource(0), 25 list_resource(0),
(...skipping 20 matching lines...) Expand all
44 data->list_resource = network_list; 46 data->list_resource = network_list;
45 47
46 if (data->delete_monitor) 48 if (data->delete_monitor)
47 delete data->monitor; 49 delete data->monitor;
48 50
49 // Invoke completion callback only for the first change notification. 51 // Invoke completion callback only for the first change notification.
50 if (data->call_counter == 1) 52 if (data->call_counter == 1)
51 static_cast<pp::CompletionCallback>(data->completion_callback).Run(PP_OK); 53 static_cast<pp::CompletionCallback>(data->completion_callback).Run(PP_OK);
52 } 54 }
53 55
56
57 class TestNetworkListObserver : public pp::NetworkListObserver {
58 public:
59 TestNetworkListObserver(const pp::InstanceHandle& instance)
60 : pp::NetworkListObserver(instance),
61 completion_callback(instance.pp_instance()) {
62 }
63 virtual void OnNetworkList(const pp::NetworkListPrivate& list) {
64 current_list = list;
65 static_cast<pp::CompletionCallback>(completion_callback).Run(PP_OK);
66 }
67
68 pp::NetworkListPrivate current_list;
69 TestCompletionCallback completion_callback;
70 };
71
54 } // namespace 72 } // namespace
55 73
56 TestNetworkMonitorPrivate::TestNetworkMonitorPrivate(TestingInstance* instance) 74 TestNetworkMonitorPrivate::TestNetworkMonitorPrivate(TestingInstance* instance)
57 : TestCase(instance) { 75 : TestCase(instance) {
58 } 76 }
59 77
60 bool TestNetworkMonitorPrivate::Init() { 78 bool TestNetworkMonitorPrivate::Init() {
61 if (!pp::NetworkMonitorPrivate::IsAvailable()) 79 if (!pp::NetworkMonitorPrivate::IsAvailable())
62 return false; 80 return false;
63 81
64 return true; 82 return true;
65 } 83 }
66 84
67 void TestNetworkMonitorPrivate::RunTests(const std::string& filter) { 85 void TestNetworkMonitorPrivate::RunTests(const std::string& filter) {
68 RUN_TEST_FORCEASYNC_AND_NOT(Basic, filter); 86 RUN_TEST_FORCEASYNC_AND_NOT(Basic, filter);
69 RUN_TEST_FORCEASYNC_AND_NOT(2Monitors, filter); 87 RUN_TEST_FORCEASYNC_AND_NOT(2Monitors, filter);
70 RUN_TEST_FORCEASYNC_AND_NOT(DeleteInCallback, filter); 88 RUN_TEST_FORCEASYNC_AND_NOT(DeleteInCallback, filter);
89 RUN_TEST_FORCEASYNC_AND_NOT(ListObserver, filter);
90 }
91
92 std::string TestNetworkMonitorPrivate::VerifyNetworkListResource(
93 PP_Resource network_list_resource) {
94 pp::NetworkListPrivate network_list(network_list_resource);
95 return VerifyNetworkList(network_list);
71 } 96 }
72 97
73 std::string TestNetworkMonitorPrivate::VerifyNetworkList( 98 std::string TestNetworkMonitorPrivate::VerifyNetworkList(
74 PP_Resource network_resource) { 99 const pp::NetworkListPrivate& network_list) {
75 pp::NetworkListPrivate network_list(network_resource);
76
77 // Verify that there is at least one network interface. 100 // Verify that there is at least one network interface.
78 size_t count = network_list.GetCount(); 101 size_t count = network_list.GetCount();
79 ASSERT_TRUE(count >= 1U); 102 ASSERT_TRUE(count >= 1U);
80 103
81 // Iterate over all interfaces and verify their properties. 104 // Iterate over all interfaces and verify their properties.
82 for (size_t iface = 0; iface < count; ++iface) { 105 for (size_t iface = 0; iface < count; ++iface) {
83 // Verify that the first interface has at least one address. 106 // Verify that the first interface has at least one address.
84 std::vector<PP_NetAddress_Private> addresses; 107 std::vector<PP_NetAddress_Private> addresses;
85 network_list.GetIpAddresses(iface, &addresses); 108 network_list.GetIpAddresses(iface, &addresses);
86 ASSERT_TRUE(addresses.size() >= 1U); 109 ASSERT_TRUE(addresses.size() >= 1U);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 PPB_NETWORKLIST_PRIVATE_INTERFACE)); 141 PPB_NETWORKLIST_PRIVATE_INTERFACE));
119 ASSERT_TRUE(interface); 142 ASSERT_TRUE(interface);
120 std::vector<PP_NetAddress_Private> addresses; 143 std::vector<PP_NetAddress_Private> addresses;
121 network_list.GetIpAddresses(0, &addresses); 144 network_list.GetIpAddresses(0, &addresses);
122 size_t address_count = addresses.size(); 145 size_t address_count = addresses.size();
123 addresses.resize(addresses.size() + 3); 146 addresses.resize(addresses.size() + 3);
124 for (size_t i = 0; i < addresses.size(); ++i) { 147 for (size_t i = 0; i < addresses.size(); ++i) {
125 const char kFillValue = 123; 148 const char kFillValue = 123;
126 memset(&addresses.front(), kFillValue, 149 memset(&addresses.front(), kFillValue,
127 addresses.size() * sizeof(PP_NetAddress_Private)); 150 addresses.size() * sizeof(PP_NetAddress_Private));
128 int result = interface->GetIpAddresses(network_resource, 0, 151 int result = interface->GetIpAddresses(network_list.pp_resource(), 0,
129 &addresses.front(), i); 152 &addresses.front(), i);
130 ASSERT_EQ(result, static_cast<int>(address_count)); 153 ASSERT_EQ(result, static_cast<int>(address_count));
131 154
132 // Verify that nothing outside the buffer was touched. 155 // Verify that nothing outside the buffer was touched.
133 for (char* pos = reinterpret_cast<char*>(&addresses[result]); 156 for (char* pos = reinterpret_cast<char*>(&addresses[result]);
134 pos != reinterpret_cast<char*>(&addresses[0] + addresses.size()); 157 pos != reinterpret_cast<char*>(&addresses[0] + addresses.size());
135 ++pos) { 158 ++pos) {
136 ASSERT_TRUE(*pos == kFillValue); 159 ASSERT_TRUE(*pos == kFillValue);
137 } 160 }
138 } 161 }
139 162
140 PASS(); 163 PASS();
141 } 164 }
142 165
143 std::string TestNetworkMonitorPrivate::TestBasic() { 166 std::string TestNetworkMonitorPrivate::TestBasic() {
144 CallbackData callback_data(instance_->pp_instance()); 167 CallbackData callback_data(instance_->pp_instance());
145 168
146 pp::NetworkMonitorPrivate network_monitor( 169 pp::NetworkMonitorPrivate network_monitor(
147 instance_, &TestCallback, reinterpret_cast<void*>(&callback_data)); 170 instance_, &TestCallback, reinterpret_cast<void*>(&callback_data));
148 ASSERT_EQ(callback_data.completion_callback.WaitForResult(), PP_OK); 171 ASSERT_EQ(callback_data.completion_callback.WaitForResult(), PP_OK);
149 ASSERT_EQ(callback_data.call_counter, 1); 172 ASSERT_EQ(callback_data.call_counter, 1);
150 173
151 ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(callback_data.list_resource)); 174 ASSERT_SUBTEST_SUCCESS(
175 VerifyNetworkListResource(callback_data.list_resource));
152 176
153 PASS(); 177 PASS();
154 } 178 }
155 179
156 std::string TestNetworkMonitorPrivate::Test2Monitors() { 180 std::string TestNetworkMonitorPrivate::Test2Monitors() {
157 CallbackData callback_data(instance_->pp_instance()); 181 CallbackData callback_data(instance_->pp_instance());
158 182
159 pp::NetworkMonitorPrivate network_monitor( 183 pp::NetworkMonitorPrivate network_monitor(
160 instance_, &TestCallback, reinterpret_cast<void*>(&callback_data)); 184 instance_, &TestCallback, reinterpret_cast<void*>(&callback_data));
161 ASSERT_EQ(callback_data.completion_callback.WaitForResult(), PP_OK); 185 ASSERT_EQ(callback_data.completion_callback.WaitForResult(), PP_OK);
162 ASSERT_EQ(callback_data.call_counter, 1); 186 ASSERT_EQ(callback_data.call_counter, 1);
163 187
164 ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(callback_data.list_resource)); 188 ASSERT_SUBTEST_SUCCESS(
189 VerifyNetworkListResource(callback_data.list_resource));
165 190
166 CallbackData callback_data_2(instance_->pp_instance()); 191 CallbackData callback_data_2(instance_->pp_instance());
167 192
168 pp::NetworkMonitorPrivate network_monitor_2( 193 pp::NetworkMonitorPrivate network_monitor_2(
169 instance_, &TestCallback, reinterpret_cast<void*>(&callback_data_2)); 194 instance_, &TestCallback, reinterpret_cast<void*>(&callback_data_2));
170 ASSERT_EQ(callback_data_2.completion_callback.WaitForResult(), PP_OK); 195 ASSERT_EQ(callback_data_2.completion_callback.WaitForResult(), PP_OK);
171 ASSERT_EQ(callback_data_2.call_counter, 1); 196 ASSERT_EQ(callback_data_2.call_counter, 1);
172 197
173 ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(callback_data_2.list_resource)); 198 ASSERT_SUBTEST_SUCCESS(
199 VerifyNetworkListResource(callback_data_2.list_resource));
174 200
175 PASS(); 201 PASS();
176 } 202 }
177 203
178 std::string TestNetworkMonitorPrivate::TestDeleteInCallback() { 204 std::string TestNetworkMonitorPrivate::TestDeleteInCallback() {
179 CallbackData callback_data(instance_->pp_instance()); 205 CallbackData callback_data(instance_->pp_instance());
180 206
181 pp::NetworkMonitorPrivate* network_monitor = new pp::NetworkMonitorPrivate( 207 pp::NetworkMonitorPrivate* network_monitor = new pp::NetworkMonitorPrivate(
182 instance_, &TestCallback, reinterpret_cast<void*>(&callback_data)); 208 instance_, &TestCallback, reinterpret_cast<void*>(&callback_data));
183 callback_data.delete_monitor = true; 209 callback_data.delete_monitor = true;
184 callback_data.monitor = network_monitor; 210 callback_data.monitor = network_monitor;
185 211
186 ASSERT_EQ(callback_data.completion_callback.WaitForResult(), PP_OK); 212 ASSERT_EQ(callback_data.completion_callback.WaitForResult(), PP_OK);
187 ASSERT_EQ(callback_data.call_counter, 1); 213 ASSERT_EQ(callback_data.call_counter, 1);
188 214
189 ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(callback_data.list_resource)); 215 ASSERT_SUBTEST_SUCCESS(
216 VerifyNetworkListResource(callback_data.list_resource));
190 217
191 PASS(); 218 PASS();
192 } 219 }
220
221 std::string TestNetworkMonitorPrivate::TestListObserver() {
222 TestNetworkListObserver observer(instance_);
223 ASSERT_EQ(observer.completion_callback.WaitForResult(), PP_OK);
224 ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(observer.current_list));
225 PASS();
226 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698