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

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

Issue 23453025: Refactor PPB_NetworkMonitor_Private interface to use CompletionCallback. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 3 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/completion_callback.h"
9 #include "ppapi/cpp/instance_handle.h" 10 #include "ppapi/cpp/instance_handle.h"
10 #include "ppapi/cpp/module.h" 11 #include "ppapi/cpp/module.h"
11 #include "ppapi/cpp/net_address.h" 12 #include "ppapi/cpp/net_address.h"
12 #include "ppapi/cpp/private/network_list_private.h" 13 #include "ppapi/cpp/private/network_list_private.h"
13 #include "ppapi/cpp/private/network_monitor_private.h" 14 #include "ppapi/cpp/private/network_monitor_private.h"
14 #include "ppapi/tests/testing_instance.h" 15 #include "ppapi/tests/testing_instance.h"
15 #include "ppapi/tests/test_utils.h" 16 #include "ppapi/tests/test_utils.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 class MonitorDeletionCallbackDelegate
23 explicit CallbackData(PP_Instance instance) 23 : public TestCompletionCallback::Delegate {
24 : event(instance),
25 call_counter(0),
26 delete_monitor(false),
27 monitor(NULL) {
28 }
29 ~CallbackData() {
30 }
31 NestedEvent event;
32 int call_counter;
33 pp::NetworkListPrivate network_list;
34 bool delete_monitor;
35 pp::NetworkMonitorPrivate* monitor;
36 };
37
38 void TestCallback(void* user_data, PP_Resource pp_network_list) {
39 CallbackData* data = static_cast<CallbackData*>(user_data);
40 data->call_counter++;
41
42 data->network_list = pp::NetworkListPrivate(pp::PASS_REF, pp_network_list);
43
44 if (data->delete_monitor)
45 delete data->monitor;
46
47 if (data->call_counter == 1)
48 data->event.Signal();
49 }
50
51 class TestNetworkListObserver : public pp::NetworkListObserverPrivate {
52 public: 24 public:
53 explicit TestNetworkListObserver(const pp::InstanceHandle& instance) 25 explicit MonitorDeletionCallbackDelegate(pp::NetworkMonitorPrivate* monitor)
54 : pp::NetworkListObserverPrivate(instance), 26 : monitor_(monitor) {
55 event(instance.pp_instance()) {
56 }
57 virtual void OnNetworkListChanged(const pp::NetworkListPrivate& list) {
58 current_list = list;
59 event.Signal();
60 } 27 }
61 28
62 pp::NetworkListPrivate current_list; 29 // TestCompletionCallback::Delegate interface.
63 NestedEvent event; 30 virtual void OnCallback(void* user_data, int32_t result) {
31 delete monitor_;
32 }
33
34 private:
35 pp::NetworkMonitorPrivate* monitor_;
64 }; 36 };
65 37
66 } // namespace 38 } // namespace
67 39
68 TestNetworkMonitorPrivate::TestNetworkMonitorPrivate(TestingInstance* instance) 40 TestNetworkMonitorPrivate::TestNetworkMonitorPrivate(TestingInstance* instance)
69 : TestCase(instance) { 41 : TestCase(instance) {
70 } 42 }
71 43
72 bool TestNetworkMonitorPrivate::Init() { 44 bool TestNetworkMonitorPrivate::Init() {
73 if (!pp::NetworkMonitorPrivate::IsAvailable()) 45 if (!pp::NetworkMonitorPrivate::IsAvailable())
74 return false; 46 return false;
75 47
76 return CheckTestingInterface(); 48 return CheckTestingInterface();
77 } 49 }
78 50
79 void TestNetworkMonitorPrivate::RunTests(const std::string& filter) { 51 void TestNetworkMonitorPrivate::RunTests(const std::string& filter) {
80 RUN_TEST_FORCEASYNC_AND_NOT(Basic, filter); 52 RUN_TEST_FORCEASYNC_AND_NOT(Basic, filter);
81 RUN_TEST_FORCEASYNC_AND_NOT(2Monitors, filter); 53 RUN_TEST_FORCEASYNC_AND_NOT(2Monitors, filter);
82 RUN_TEST_FORCEASYNC_AND_NOT(DeleteInCallback, filter); 54 RUN_TEST_FORCEASYNC_AND_NOT(DeleteInCallback, filter);
83 RUN_TEST_FORCEASYNC_AND_NOT(ListObserver, filter);
84 } 55 }
85 56
86 std::string TestNetworkMonitorPrivate::VerifyNetworkList( 57 std::string TestNetworkMonitorPrivate::VerifyNetworkList(
87 const pp::NetworkListPrivate& network_list) { 58 const pp::NetworkListPrivate& network_list) {
88 // Verify that there is at least one network interface. 59 // Verify that there is at least one network interface.
89 size_t count = network_list.GetCount(); 60 size_t count = network_list.GetCount();
90 ASSERT_TRUE(count >= 1U); 61 ASSERT_TRUE(count >= 1U);
91 62
92 // Iterate over all interfaces and verify their properties. 63 // Iterate over all interfaces and verify their properties.
93 for (size_t iface = 0; iface < count; ++iface) { 64 for (size_t iface = 0; iface < count; ++iface) {
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 124
154 PP_NetworkListState_Private state = network_list.GetState(iface); 125 PP_NetworkListState_Private state = network_list.GetState(iface);
155 ASSERT_TRUE(state >= PP_NETWORKLIST_DOWN); 126 ASSERT_TRUE(state >= PP_NETWORKLIST_DOWN);
156 ASSERT_TRUE(state <= PP_NETWORKLIST_UP); 127 ASSERT_TRUE(state <= PP_NETWORKLIST_UP);
157 } 128 }
158 129
159 PASS(); 130 PASS();
160 } 131 }
161 132
162 std::string TestNetworkMonitorPrivate::TestBasic() { 133 std::string TestNetworkMonitorPrivate::TestBasic() {
163 CallbackData callback_data(instance_->pp_instance()); 134 TestCompletionCallbackWithOutput<pp::NetworkListPrivate> test_callback(
135 instance_->pp_instance());
136 pp::NetworkMonitorPrivate network_monitor(instance_);
137 test_callback.WaitForResult(
138 network_monitor.UpdateNetworkList(test_callback.GetCallback()));
164 139
165 pp::NetworkMonitorPrivate network_monitor( 140 ASSERT_EQ(test_callback.result(), PP_OK);
166 instance_, &TestCallback, &callback_data); 141 ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(test_callback.output()));
167 callback_data.event.Wait();
168 ASSERT_EQ(callback_data.call_counter, 1);
169
170 ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(callback_data.network_list));
171 142
172 PASS(); 143 PASS();
173 } 144 }
174 145
175 std::string TestNetworkMonitorPrivate::Test2Monitors() { 146 std::string TestNetworkMonitorPrivate::Test2Monitors() {
176 CallbackData callback_data(instance_->pp_instance()); 147 TestCompletionCallbackWithOutput<pp::NetworkListPrivate> test_callback(
148 instance_->pp_instance());
149 pp::NetworkMonitorPrivate network_monitor(instance_);
150 test_callback.WaitForResult(
151 network_monitor.UpdateNetworkList(test_callback.GetCallback()));
177 152
178 pp::NetworkMonitorPrivate network_monitor( 153 ASSERT_EQ(test_callback.result(), PP_OK);
179 instance_, &TestCallback, &callback_data); 154 ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(test_callback.output()));
180 callback_data.event.Wait();
181 ASSERT_EQ(callback_data.call_counter, 1);
182 155
183 ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(callback_data.network_list)); 156 TestCompletionCallbackWithOutput<pp::NetworkListPrivate> test_callback_2(
157 instance_->pp_instance());
158 pp::NetworkMonitorPrivate network_monitor_2(instance_);
159 test_callback_2.WaitForResult(
160 network_monitor_2.UpdateNetworkList(test_callback_2.GetCallback()));
184 161
185 CallbackData callback_data_2(instance_->pp_instance()); 162 ASSERT_EQ(test_callback_2.result(), PP_OK);
186 163 ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(test_callback_2.output()));
187 pp::NetworkMonitorPrivate network_monitor_2(
188 instance_, &TestCallback, &callback_data_2);
189 callback_data_2.event.Wait();
190 ASSERT_EQ(callback_data_2.call_counter, 1);
191
192 ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(callback_data_2.network_list));
193 164
194 PASS(); 165 PASS();
195 } 166 }
196 167
197 std::string TestNetworkMonitorPrivate::TestDeleteInCallback() { 168 std::string TestNetworkMonitorPrivate::TestDeleteInCallback() {
198 CallbackData callback_data(instance_->pp_instance()); 169 pp::NetworkMonitorPrivate* network_monitor =
170 new pp::NetworkMonitorPrivate(instance_);
171 MonitorDeletionCallbackDelegate deletion_delegate(network_monitor);
172 TestCompletionCallbackWithOutput<pp::NetworkListPrivate> test_callback(
173 instance_->pp_instance());
174 test_callback.SetDelegate(&deletion_delegate);
175 test_callback.WaitForResult(
176 network_monitor->UpdateNetworkList(test_callback.GetCallback()));
199 177
200 pp::NetworkMonitorPrivate* network_monitor = new pp::NetworkMonitorPrivate( 178 ASSERT_EQ(test_callback.result(), PP_OK);
201 instance_, &TestCallback, &callback_data); 179 ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(test_callback.output()));
202 callback_data.delete_monitor = true;
203 callback_data.monitor = network_monitor;
204
205 callback_data.event.Wait();
206 ASSERT_EQ(callback_data.call_counter, 1);
207
208 ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(callback_data.network_list));
209 180
210 PASS(); 181 PASS();
211 } 182 }
212
213 std::string TestNetworkMonitorPrivate::TestListObserver() {
214 TestNetworkListObserver observer(instance_);
215 observer.event.Wait();
216 ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(observer.current_list));
217 PASS();
218 }
OLDNEW
« no previous file with comments | « ppapi/tests/test_network_monitor_private.h ('k') | ppapi/thunk/interfaces_ppb_private_no_permissions.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698