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

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

Issue 10381002: Pepper: Make users of pp:NetworkMonitorPrivate less likely to leak resources. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: doh Created 8 years, 7 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" 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/private/net_address_private.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
22 struct CallbackData { 22 struct CallbackData {
23 explicit CallbackData(PP_Instance instance) 23 explicit CallbackData(PP_Instance instance)
24 : event(instance), 24 : event(instance),
25 call_counter(0), 25 call_counter(0),
26 list_resource(0),
27 delete_monitor(false), 26 delete_monitor(false),
28 monitor(NULL) { 27 monitor(NULL) {
29 } 28 }
30 ~CallbackData() { 29 ~CallbackData() {
31 if (list_resource)
32 pp::Module::Get()->core()->ReleaseResource(list_resource);
33 } 30 }
34 NestedEvent event; 31 NestedEvent event;
35 int call_counter; 32 int call_counter;
36 PP_Resource list_resource; 33 pp::NetworkListPrivate network_list;
37 bool delete_monitor; 34 bool delete_monitor;
38 pp::NetworkMonitorPrivate* monitor; 35 pp::NetworkMonitorPrivate* monitor;
39 }; 36 };
40 37
41 void TestCallback(void* user_data, PP_Resource network_list) { 38 void TestCallback(void* user_data, PP_Resource pp_network_list) {
42 CallbackData* data = static_cast<CallbackData*>(user_data); 39 CallbackData* data = static_cast<CallbackData*>(user_data);
43 data->call_counter++; 40 data->call_counter++;
44 41
45 if (data->list_resource) 42 data->network_list = pp::NetworkListPrivate(pp::PASS_REF, pp_network_list);
46 pp::Module::Get()->core()->ReleaseResource(data->list_resource);
47 data->list_resource = network_list;
48 43
49 if (data->delete_monitor) 44 if (data->delete_monitor)
50 delete data->monitor; 45 delete data->monitor;
51 46
52
53 if (data->call_counter == 1) 47 if (data->call_counter == 1)
54 data->event.Signal(); 48 data->event.Signal();
55 } 49 }
56 50
57 51
58 class TestNetworkListObserver : public pp::NetworkListObserverPrivate { 52 class TestNetworkListObserver : public pp::NetworkListObserverPrivate {
59 public: 53 public:
60 explicit TestNetworkListObserver(const pp::InstanceHandle& instance) 54 explicit TestNetworkListObserver(const pp::InstanceHandle& instance)
61 : pp::NetworkListObserverPrivate(instance), 55 : pp::NetworkListObserverPrivate(instance),
62 event(instance.pp_instance()) { 56 event(instance.pp_instance()) {
(...skipping 20 matching lines...) Expand all
83 return CheckTestingInterface(); 77 return CheckTestingInterface();
84 } 78 }
85 79
86 void TestNetworkMonitorPrivate::RunTests(const std::string& filter) { 80 void TestNetworkMonitorPrivate::RunTests(const std::string& filter) {
87 RUN_TEST_FORCEASYNC_AND_NOT(Basic, filter); 81 RUN_TEST_FORCEASYNC_AND_NOT(Basic, filter);
88 RUN_TEST_FORCEASYNC_AND_NOT(2Monitors, filter); 82 RUN_TEST_FORCEASYNC_AND_NOT(2Monitors, filter);
89 RUN_TEST_FORCEASYNC_AND_NOT(DeleteInCallback, filter); 83 RUN_TEST_FORCEASYNC_AND_NOT(DeleteInCallback, filter);
90 RUN_TEST_FORCEASYNC_AND_NOT(ListObserver, filter); 84 RUN_TEST_FORCEASYNC_AND_NOT(ListObserver, filter);
91 } 85 }
92 86
93 std::string TestNetworkMonitorPrivate::VerifyNetworkListResource(
94 PP_Resource network_list_resource) {
95 pp::NetworkListPrivate network_list(network_list_resource);
96 return VerifyNetworkList(network_list);
97 }
98
99 std::string TestNetworkMonitorPrivate::VerifyNetworkList( 87 std::string TestNetworkMonitorPrivate::VerifyNetworkList(
100 const pp::NetworkListPrivate& network_list) { 88 const pp::NetworkListPrivate& network_list) {
101 // Verify that there is at least one network interface. 89 // Verify that there is at least one network interface.
102 size_t count = network_list.GetCount(); 90 size_t count = network_list.GetCount();
103 ASSERT_TRUE(count >= 1U); 91 ASSERT_TRUE(count >= 1U);
104 92
105 // Iterate over all interfaces and verify their properties. 93 // Iterate over all interfaces and verify their properties.
106 for (size_t iface = 0; iface < count; ++iface) { 94 for (size_t iface = 0; iface < count; ++iface) {
107 // Verify that the first interface has at least one address. 95 // Verify that the first interface has at least one address.
108 std::vector<PP_NetAddress_Private> addresses; 96 std::vector<PP_NetAddress_Private> addresses;
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 } 164 }
177 165
178 std::string TestNetworkMonitorPrivate::TestBasic() { 166 std::string TestNetworkMonitorPrivate::TestBasic() {
179 CallbackData callback_data(instance_->pp_instance()); 167 CallbackData callback_data(instance_->pp_instance());
180 168
181 pp::NetworkMonitorPrivate network_monitor( 169 pp::NetworkMonitorPrivate network_monitor(
182 instance_, &TestCallback, &callback_data); 170 instance_, &TestCallback, &callback_data);
183 callback_data.event.Wait(); 171 callback_data.event.Wait();
184 ASSERT_EQ(callback_data.call_counter, 1); 172 ASSERT_EQ(callback_data.call_counter, 1);
185 173
186 ASSERT_SUBTEST_SUCCESS( 174 ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(callback_data.network_list));
187 VerifyNetworkListResource(callback_data.list_resource));
188 175
189 PASS(); 176 PASS();
190 } 177 }
191 178
192 std::string TestNetworkMonitorPrivate::Test2Monitors() { 179 std::string TestNetworkMonitorPrivate::Test2Monitors() {
193 CallbackData callback_data(instance_->pp_instance()); 180 CallbackData callback_data(instance_->pp_instance());
194 181
195 pp::NetworkMonitorPrivate network_monitor( 182 pp::NetworkMonitorPrivate network_monitor(
196 instance_, &TestCallback, &callback_data); 183 instance_, &TestCallback, &callback_data);
197 callback_data.event.Wait(); 184 callback_data.event.Wait();
198 ASSERT_EQ(callback_data.call_counter, 1); 185 ASSERT_EQ(callback_data.call_counter, 1);
199 186
200 ASSERT_SUBTEST_SUCCESS( 187 ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(callback_data.network_list));
201 VerifyNetworkListResource(callback_data.list_resource));
202 188
203 CallbackData callback_data_2(instance_->pp_instance()); 189 CallbackData callback_data_2(instance_->pp_instance());
204 190
205 pp::NetworkMonitorPrivate network_monitor_2( 191 pp::NetworkMonitorPrivate network_monitor_2(
206 instance_, &TestCallback, &callback_data_2); 192 instance_, &TestCallback, &callback_data_2);
207 callback_data_2.event.Wait(); 193 callback_data_2.event.Wait();
208 ASSERT_EQ(callback_data_2.call_counter, 1); 194 ASSERT_EQ(callback_data_2.call_counter, 1);
209 195
210 ASSERT_SUBTEST_SUCCESS( 196 ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(callback_data_2.network_list));
211 VerifyNetworkListResource(callback_data_2.list_resource));
212 197
213 PASS(); 198 PASS();
214 } 199 }
215 200
216 std::string TestNetworkMonitorPrivate::TestDeleteInCallback() { 201 std::string TestNetworkMonitorPrivate::TestDeleteInCallback() {
217 CallbackData callback_data(instance_->pp_instance()); 202 CallbackData callback_data(instance_->pp_instance());
218 203
219 pp::NetworkMonitorPrivate* network_monitor = new pp::NetworkMonitorPrivate( 204 pp::NetworkMonitorPrivate* network_monitor = new pp::NetworkMonitorPrivate(
220 instance_, &TestCallback, &callback_data); 205 instance_, &TestCallback, &callback_data);
221 callback_data.delete_monitor = true; 206 callback_data.delete_monitor = true;
222 callback_data.monitor = network_monitor; 207 callback_data.monitor = network_monitor;
223 208
224 callback_data.event.Wait(); 209 callback_data.event.Wait();
225 ASSERT_EQ(callback_data.call_counter, 1); 210 ASSERT_EQ(callback_data.call_counter, 1);
226 211
227 ASSERT_SUBTEST_SUCCESS( 212 ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(callback_data.network_list));
228 VerifyNetworkListResource(callback_data.list_resource));
229 213
230 PASS(); 214 PASS();
231 } 215 }
232 216
233 std::string TestNetworkMonitorPrivate::TestListObserver() { 217 std::string TestNetworkMonitorPrivate::TestListObserver() {
234 TestNetworkListObserver observer(instance_); 218 TestNetworkListObserver observer(instance_);
235 observer.event.Wait(); 219 observer.event.Wait();
236 ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(observer.current_list)); 220 ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(observer.current_list));
237 PASS(); 221 PASS();
238 } 222 }
OLDNEW
« no previous file with comments | « ppapi/cpp/private/network_list_private.cc ('k') | ppapi/utility/private/network_list_observer_private.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698