Chromium Code Reviews| 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(); |
| } |