Index: ppapi/tests/test_network_monitor_private.cc |
diff --git a/ppapi/tests/test_network_monitor_private.cc b/ppapi/tests/test_network_monitor_private.cc |
index a945251d3516521d0f313b12d33e14b10ffdd05c..f807e15f115e51d5cafcd130a8dd06c71b1e38e4 100644 |
--- a/ppapi/tests/test_network_monitor_private.cc |
+++ b/ppapi/tests/test_network_monitor_private.cc |
@@ -6,6 +6,7 @@ |
#include <string.h> |
+#include "ppapi/cpp/completion_callback.h" |
#include "ppapi/cpp/instance_handle.h" |
#include "ppapi/cpp/module.h" |
#include "ppapi/cpp/net_address.h" |
@@ -13,54 +14,63 @@ |
#include "ppapi/cpp/private/network_monitor_private.h" |
#include "ppapi/tests/testing_instance.h" |
#include "ppapi/tests/test_utils.h" |
-#include "ppapi/utility/private/network_list_observer_private.h" |
REGISTER_TEST_CASE(NetworkMonitorPrivate); |
namespace { |
-struct CallbackData { |
- explicit CallbackData(PP_Instance instance) |
- : event(instance), |
- call_counter(0), |
- delete_monitor(false), |
- monitor(NULL) { |
+class CallbackHandler { |
+ public: |
+ explicit CallbackHandler(PP_Instance instance) |
+ : event_(instance), |
+ call_counter_(0), |
+ monitor_to_delete_(NULL), |
+ result_(PP_ERROR_FAILED), |
+ callback_factory_(this) { |
} |
- ~CallbackData() { |
+ ~CallbackHandler() { |
} |
- NestedEvent event; |
- int call_counter; |
- pp::NetworkListPrivate network_list; |
- bool delete_monitor; |
- pp::NetworkMonitorPrivate* monitor; |
-}; |
-void TestCallback(void* user_data, PP_Resource pp_network_list) { |
- CallbackData* data = static_cast<CallbackData*>(user_data); |
- data->call_counter++; |
+ void DeleteMonitorWhenCalled(pp::NetworkMonitorPrivate* monitor) { |
+ monitor_to_delete_ = monitor; |
+ } |
- data->network_list = pp::NetworkListPrivate(pp::PASS_REF, pp_network_list); |
+ pp::CompletionCallbackWithOutput<pp::NetworkListPrivate> GetCallback() { |
+ return callback_factory_.NewCallbackWithOutput( |
+ &CallbackHandler::OnNetworkList); |
+ } |
- if (data->delete_monitor) |
- delete data->monitor; |
+ void Wait() { |
+ event_.Wait(); |
+ } |
- if (data->call_counter == 1) |
- data->event.Signal(); |
-} |
+ int call_counter() const { return call_counter_; } |
+ int result() const { return result_; } |
+ const pp::NetworkListPrivate& list() const { return list_; } |
-class TestNetworkListObserver : public pp::NetworkListObserverPrivate { |
- public: |
- explicit TestNetworkListObserver(const pp::InstanceHandle& instance) |
- : pp::NetworkListObserverPrivate(instance), |
- event(instance.pp_instance()) { |
- } |
- virtual void OnNetworkListChanged(const pp::NetworkListPrivate& list) { |
- current_list = list; |
- event.Signal(); |
+ private: |
+ void OnNetworkList(int32_t result, const pp::NetworkListPrivate& list) { |
+ call_counter_++; |
+ |
+ result_ = result; |
+ list_ = list; |
+ |
+ if (monitor_to_delete_) { |
+ delete monitor_to_delete_; |
+ monitor_to_delete_ = NULL; |
+ } |
+ |
+ if (call_counter_ == 1) |
+ event_.Signal(); |
} |
- pp::NetworkListPrivate current_list; |
- NestedEvent event; |
+ NestedEvent event_; |
+ int call_counter_; |
+ pp::NetworkListPrivate list_; |
+ pp::NetworkMonitorPrivate* monitor_to_delete_; |
+ int32_t result_; |
+ |
+ pp::CompletionCallbackFactory<CallbackHandler> callback_factory_; |
}; |
} // namespace |
@@ -80,7 +90,6 @@ void TestNetworkMonitorPrivate::RunTests(const std::string& filter) { |
RUN_TEST_FORCEASYNC_AND_NOT(Basic, filter); |
RUN_TEST_FORCEASYNC_AND_NOT(2Monitors, filter); |
RUN_TEST_FORCEASYNC_AND_NOT(DeleteInCallback, filter); |
- RUN_TEST_FORCEASYNC_AND_NOT(ListObserver, filter); |
} |
std::string TestNetworkMonitorPrivate::VerifyNetworkList( |
@@ -160,59 +169,51 @@ std::string TestNetworkMonitorPrivate::VerifyNetworkList( |
} |
std::string TestNetworkMonitorPrivate::TestBasic() { |
- CallbackData callback_data(instance_->pp_instance()); |
- |
- pp::NetworkMonitorPrivate network_monitor( |
- instance_, &TestCallback, &callback_data); |
- callback_data.event.Wait(); |
- ASSERT_EQ(callback_data.call_counter, 1); |
+ CallbackHandler callback_handler(instance_->pp_instance()); |
yzshen1
2013/09/04 19:52:01
Please consider using TestCompletionCallbackWithOu
Sergey Ulanov
2013/09/04 22:22:32
Done.
|
+ pp::NetworkMonitorPrivate network_monitor(instance_); |
+ network_monitor.UpdateNetworkList(callback_handler.GetCallback()); |
+ callback_handler.Wait(); |
- ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(callback_data.network_list)); |
+ ASSERT_EQ(callback_handler.call_counter(), 1); |
+ ASSERT_EQ(callback_handler.result(), PP_OK); |
+ ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(callback_handler.list())); |
PASS(); |
} |
std::string TestNetworkMonitorPrivate::Test2Monitors() { |
- CallbackData callback_data(instance_->pp_instance()); |
- |
- pp::NetworkMonitorPrivate network_monitor( |
- instance_, &TestCallback, &callback_data); |
- callback_data.event.Wait(); |
- ASSERT_EQ(callback_data.call_counter, 1); |
- |
- ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(callback_data.network_list)); |
+ CallbackHandler callback_handler(instance_->pp_instance()); |
+ pp::NetworkMonitorPrivate network_monitor(instance_); |
+ network_monitor.UpdateNetworkList(callback_handler.GetCallback()); |
+ callback_handler.Wait(); |
- CallbackData callback_data_2(instance_->pp_instance()); |
+ ASSERT_EQ(callback_handler.call_counter(), 1); |
+ ASSERT_EQ(callback_handler.result(), PP_OK); |
+ ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(callback_handler.list())); |
- pp::NetworkMonitorPrivate network_monitor_2( |
- instance_, &TestCallback, &callback_data_2); |
- callback_data_2.event.Wait(); |
- ASSERT_EQ(callback_data_2.call_counter, 1); |
+ CallbackHandler callback_handler_2(instance_->pp_instance()); |
+ pp::NetworkMonitorPrivate network_monitor_2(instance_); |
+ network_monitor_2.UpdateNetworkList(callback_handler_2.GetCallback()); |
+ callback_handler_2.Wait(); |
- ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(callback_data_2.network_list)); |
+ ASSERT_EQ(callback_handler_2.call_counter(), 1); |
+ ASSERT_EQ(callback_handler_2.result(), PP_OK); |
+ ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(callback_handler_2.list())); |
PASS(); |
} |
std::string TestNetworkMonitorPrivate::TestDeleteInCallback() { |
- CallbackData callback_data(instance_->pp_instance()); |
+ CallbackHandler callback_handler(instance_->pp_instance()); |
+ pp::NetworkMonitorPrivate* network_monitor = |
+ new pp::NetworkMonitorPrivate(instance_); |
+ callback_handler.DeleteMonitorWhenCalled(network_monitor); |
+ network_monitor->UpdateNetworkList(callback_handler.GetCallback()); |
+ callback_handler.Wait(); |
- pp::NetworkMonitorPrivate* network_monitor = new pp::NetworkMonitorPrivate( |
- instance_, &TestCallback, &callback_data); |
- callback_data.delete_monitor = true; |
- callback_data.monitor = network_monitor; |
- |
- callback_data.event.Wait(); |
- ASSERT_EQ(callback_data.call_counter, 1); |
- |
- ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(callback_data.network_list)); |
- |
- PASS(); |
-} |
+ ASSERT_EQ(callback_handler.call_counter(), 1); |
+ ASSERT_EQ(callback_handler.result(), PP_OK); |
+ ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(callback_handler.list())); |
-std::string TestNetworkMonitorPrivate::TestListObserver() { |
- TestNetworkListObserver observer(instance_); |
- observer.event.Wait(); |
- ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(observer.current_list)); |
PASS(); |
} |