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

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

Issue 9937001: PPAPI: Refactor ppapi test callbacks to ease testing blocking callbacks. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: sync Created 8 years, 8 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_fullscreen.cc ('k') | ppapi/tests/test_url_loader.cc » ('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" 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 : call_counter(0), 24 : event(instance),
25 completion_callback(instance), 25 call_counter(0),
26 list_resource(0), 26 list_resource(0),
27 delete_monitor(false), 27 delete_monitor(false),
28 monitor(NULL) { 28 monitor(NULL) {
29 } 29 }
30 ~CallbackData() { 30 ~CallbackData() {
31 if (list_resource) 31 if (list_resource)
32 pp::Module::Get()->core()->ReleaseResource(list_resource); 32 pp::Module::Get()->core()->ReleaseResource(list_resource);
33 } 33 }
34 NestedEvent event;
34 int call_counter; 35 int call_counter;
35 TestCompletionCallback completion_callback;
36 PP_Resource list_resource; 36 PP_Resource list_resource;
37 bool delete_monitor; 37 bool delete_monitor;
38 pp::NetworkMonitorPrivate* monitor; 38 pp::NetworkMonitorPrivate* monitor;
39 }; 39 };
40 40
41 void TestCallback(void* user_data, PP_Resource network_list) { 41 void TestCallback(void* user_data, PP_Resource network_list) {
42 CallbackData* data = static_cast<CallbackData*>(user_data); 42 CallbackData* data = static_cast<CallbackData*>(user_data);
43 data->call_counter++; 43 data->call_counter++;
44 44
45 if (data->list_resource) 45 if (data->list_resource)
46 pp::Module::Get()->core()->ReleaseResource(data->list_resource); 46 pp::Module::Get()->core()->ReleaseResource(data->list_resource);
47 data->list_resource = network_list; 47 data->list_resource = network_list;
48 48
49 if (data->delete_monitor) 49 if (data->delete_monitor)
50 delete data->monitor; 50 delete data->monitor;
51 51
52 // Invoke completion callback only for the first change notification. 52
53 if (data->call_counter == 1) 53 if (data->call_counter == 1)
54 static_cast<pp::CompletionCallback>(data->completion_callback).Run(PP_OK); 54 data->event.Signal();
55 } 55 }
56 56
57 57
58 class TestNetworkListObserver : public pp::NetworkListObserverPrivate { 58 class TestNetworkListObserver : public pp::NetworkListObserverPrivate {
59 public: 59 public:
60 explicit TestNetworkListObserver(const pp::InstanceHandle& instance) 60 explicit TestNetworkListObserver(const pp::InstanceHandle& instance)
61 : pp::NetworkListObserverPrivate(instance), 61 : pp::NetworkListObserverPrivate(instance),
62 completion_callback(instance.pp_instance()) { 62 event(instance.pp_instance()) {
63 } 63 }
64 virtual void OnNetworkListChanged(const pp::NetworkListPrivate& list) { 64 virtual void OnNetworkListChanged(const pp::NetworkListPrivate& list) {
65 current_list = list; 65 current_list = list;
66 static_cast<pp::CompletionCallback>(completion_callback).Run(PP_OK); 66 event.Signal();
67 } 67 }
68 68
69 pp::NetworkListPrivate current_list; 69 pp::NetworkListPrivate current_list;
70 TestCompletionCallback completion_callback; 70 NestedEvent event;
71 }; 71 };
72 72
73 } // namespace 73 } // namespace
74 74
75 TestNetworkMonitorPrivate::TestNetworkMonitorPrivate(TestingInstance* instance) 75 TestNetworkMonitorPrivate::TestNetworkMonitorPrivate(TestingInstance* instance)
76 : TestCase(instance) { 76 : TestCase(instance) {
77 } 77 }
78 78
79 bool TestNetworkMonitorPrivate::Init() { 79 bool TestNetworkMonitorPrivate::Init() {
80 if (!pp::NetworkMonitorPrivate::IsAvailable()) 80 if (!pp::NetworkMonitorPrivate::IsAvailable())
81 return false; 81 return false;
82 82
83 return true; 83 return CheckTestingInterface();
84 } 84 }
85 85
86 void TestNetworkMonitorPrivate::RunTests(const std::string& filter) { 86 void TestNetworkMonitorPrivate::RunTests(const std::string& filter) {
87 RUN_TEST_FORCEASYNC_AND_NOT(Basic, filter); 87 RUN_TEST_FORCEASYNC_AND_NOT(Basic, filter);
88 RUN_TEST_FORCEASYNC_AND_NOT(2Monitors, filter); 88 RUN_TEST_FORCEASYNC_AND_NOT(2Monitors, filter);
89 RUN_TEST_FORCEASYNC_AND_NOT(DeleteInCallback, filter); 89 RUN_TEST_FORCEASYNC_AND_NOT(DeleteInCallback, filter);
90 RUN_TEST_FORCEASYNC_AND_NOT(ListObserver, filter); 90 RUN_TEST_FORCEASYNC_AND_NOT(ListObserver, filter);
91 } 91 }
92 92
93 std::string TestNetworkMonitorPrivate::VerifyNetworkListResource( 93 std::string TestNetworkMonitorPrivate::VerifyNetworkListResource(
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 } 173 }
174 174
175 PASS(); 175 PASS();
176 } 176 }
177 177
178 std::string TestNetworkMonitorPrivate::TestBasic() { 178 std::string TestNetworkMonitorPrivate::TestBasic() {
179 CallbackData callback_data(instance_->pp_instance()); 179 CallbackData callback_data(instance_->pp_instance());
180 180
181 pp::NetworkMonitorPrivate network_monitor( 181 pp::NetworkMonitorPrivate network_monitor(
182 instance_, &TestCallback, &callback_data); 182 instance_, &TestCallback, &callback_data);
183 ASSERT_EQ(callback_data.completion_callback.WaitForResult(), PP_OK); 183 callback_data.event.Wait();
184 ASSERT_EQ(callback_data.call_counter, 1); 184 ASSERT_EQ(callback_data.call_counter, 1);
185 185
186 ASSERT_SUBTEST_SUCCESS( 186 ASSERT_SUBTEST_SUCCESS(
187 VerifyNetworkListResource(callback_data.list_resource)); 187 VerifyNetworkListResource(callback_data.list_resource));
188 188
189 PASS(); 189 PASS();
190 } 190 }
191 191
192 std::string TestNetworkMonitorPrivate::Test2Monitors() { 192 std::string TestNetworkMonitorPrivate::Test2Monitors() {
193 CallbackData callback_data(instance_->pp_instance()); 193 CallbackData callback_data(instance_->pp_instance());
194 194
195 pp::NetworkMonitorPrivate network_monitor( 195 pp::NetworkMonitorPrivate network_monitor(
196 instance_, &TestCallback, &callback_data); 196 instance_, &TestCallback, &callback_data);
197 ASSERT_EQ(callback_data.completion_callback.WaitForResult(), PP_OK); 197 callback_data.event.Wait();
198 ASSERT_EQ(callback_data.call_counter, 1); 198 ASSERT_EQ(callback_data.call_counter, 1);
199 199
200 ASSERT_SUBTEST_SUCCESS( 200 ASSERT_SUBTEST_SUCCESS(
201 VerifyNetworkListResource(callback_data.list_resource)); 201 VerifyNetworkListResource(callback_data.list_resource));
202 202
203 CallbackData callback_data_2(instance_->pp_instance()); 203 CallbackData callback_data_2(instance_->pp_instance());
204 204
205 pp::NetworkMonitorPrivate network_monitor_2( 205 pp::NetworkMonitorPrivate network_monitor_2(
206 instance_, &TestCallback, &callback_data_2); 206 instance_, &TestCallback, &callback_data_2);
207 ASSERT_EQ(callback_data_2.completion_callback.WaitForResult(), PP_OK); 207 callback_data_2.event.Wait();
208 ASSERT_EQ(callback_data_2.call_counter, 1); 208 ASSERT_EQ(callback_data_2.call_counter, 1);
209 209
210 ASSERT_SUBTEST_SUCCESS( 210 ASSERT_SUBTEST_SUCCESS(
211 VerifyNetworkListResource(callback_data_2.list_resource)); 211 VerifyNetworkListResource(callback_data_2.list_resource));
212 212
213 PASS(); 213 PASS();
214 } 214 }
215 215
216 std::string TestNetworkMonitorPrivate::TestDeleteInCallback() { 216 std::string TestNetworkMonitorPrivate::TestDeleteInCallback() {
217 CallbackData callback_data(instance_->pp_instance()); 217 CallbackData callback_data(instance_->pp_instance());
218 218
219 pp::NetworkMonitorPrivate* network_monitor = new pp::NetworkMonitorPrivate( 219 pp::NetworkMonitorPrivate* network_monitor = new pp::NetworkMonitorPrivate(
220 instance_, &TestCallback, &callback_data); 220 instance_, &TestCallback, &callback_data);
221 callback_data.delete_monitor = true; 221 callback_data.delete_monitor = true;
222 callback_data.monitor = network_monitor; 222 callback_data.monitor = network_monitor;
223 223
224 ASSERT_EQ(callback_data.completion_callback.WaitForResult(), PP_OK); 224 callback_data.event.Wait();
225 ASSERT_EQ(callback_data.call_counter, 1); 225 ASSERT_EQ(callback_data.call_counter, 1);
226 226
227 ASSERT_SUBTEST_SUCCESS( 227 ASSERT_SUBTEST_SUCCESS(
228 VerifyNetworkListResource(callback_data.list_resource)); 228 VerifyNetworkListResource(callback_data.list_resource));
229 229
230 PASS(); 230 PASS();
231 } 231 }
232 232
233 std::string TestNetworkMonitorPrivate::TestListObserver() { 233 std::string TestNetworkMonitorPrivate::TestListObserver() {
234 TestNetworkListObserver observer(instance_); 234 TestNetworkListObserver observer(instance_);
235 ASSERT_EQ(observer.completion_callback.WaitForResult(), PP_OK); 235 observer.event.Wait();
236 ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(observer.current_list)); 236 ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(observer.current_list));
237 PASS(); 237 PASS();
238 } 238 }
OLDNEW
« no previous file with comments | « ppapi/tests/test_fullscreen.cc ('k') | ppapi/tests/test_url_loader.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698