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 6b7d49f8d418a2c7843aa9617b346184523999ac..1a31a495612bbecb5a6d0ce4e3b6d7188091ce99 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/private/net_address_private.h" |
| #include "ppapi/cpp/private/network_list_private.h" |
| #include "ppapi/cpp/private/network_monitor_private.h" |
| #include "ppapi/tests/testing_instance.h" |
| @@ -20,7 +21,9 @@ struct CallbackData { |
| explicit CallbackData(PP_Instance instance) |
| : call_counter(0), |
| completion_callback(instance), |
| - list_resource(0) { |
| + list_resource(0), |
| + delete_monitor(false), |
| + monitor(NULL) { |
| } |
| ~CallbackData() { |
| if (list_resource) |
| @@ -29,6 +32,8 @@ struct CallbackData { |
| int call_counter; |
| TestCompletionCallback completion_callback; |
| PP_Resource list_resource; |
| + bool delete_monitor; |
| + pp::NetworkMonitorPrivate* monitor; |
| }; |
| void TestCallback(void* user_data, PP_Resource network_list) { |
| @@ -39,6 +44,9 @@ void TestCallback(void* user_data, PP_Resource network_list) { |
| pp::Module::Get()->core()->ReleaseResource(data->list_resource); |
| data->list_resource = network_list; |
| + if (data->delete_monitor) |
| + delete data->monitor; |
| + |
| // Invoke completion callback only for the first change notification. |
| if (data->call_counter == 1) |
| static_cast<pp::CompletionCallback>(data->completion_callback).Run(PP_OK); |
| @@ -60,6 +68,7 @@ bool TestNetworkMonitorPrivate::Init() { |
| 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); |
| } |
| std::string TestNetworkMonitorPrivate::VerifyNetworkList( |
| @@ -78,15 +87,26 @@ std::string TestNetworkMonitorPrivate::VerifyNetworkList( |
| ASSERT_TRUE(addresses.size() >= 1U); |
| // Verify that the addresses are valid. |
| for (size_t i = 0; i < addresses.size(); ++i) { |
| - ASSERT_TRUE(addresses[i].size == 4 || addresses[i].size == 16); |
| + PP_NetAddressFamily_Private family = |
| + pp::NetAddressPrivate::GetFamily(addresses[i]); |
| + |
| + ASSERT_TRUE(family == PP_NETADDRESSFAMILY_IPV4 || |
| + family == PP_NETADDRESSFAMILY_IPV6); |
| + |
| + char ip[16] = { 0 }; |
| + ASSERT_TRUE(pp::NetAddressPrivate::GetAddress( |
| + addresses[i], ip, sizeof(ip))); |
| // Verify that the address is not zero. |
| size_t j; |
| - for (j = 0; j < addresses[i].size; ++j) { |
| - if (addresses[i].data[j] != 0) |
| + for (j = 0; j < sizeof(ip[i]); ++j) { |
|
dmichael (off chromium)
2012/03/16 19:55:22
I think you mean sizeof(ip)?
Sergey Ulanov
2012/03/16 23:37:28
Yes, thanks for catching it!
|
| + if (ip[j] != 0) |
| break; |
| } |
| ASSERT_TRUE(j != addresses[i].size); |
| + |
| + // Verify that port is set to 0. |
| + ASSERT_TRUE(pp::NetAddressPrivate::GetPort(addresses[i]) == 0); |
| } |
| // Verify that each interface has a unique name and a display name. |
| @@ -166,3 +186,19 @@ std::string TestNetworkMonitorPrivate::Test2Monitors() { |
| PASS(); |
| } |
| + |
| +std::string TestNetworkMonitorPrivate::TestDeleteInCallback() { |
| + CallbackData callback_data(instance_->pp_instance()); |
| + |
| + pp::NetworkMonitorPrivate* network_monitor = new pp::NetworkMonitorPrivate( |
| + instance_, &TestCallback, reinterpret_cast<void*>(&callback_data)); |
|
dmichael (off chromium)
2012/03/16 19:55:22
is the reinterpret_cast necessary?
Sergey Ulanov
2012/03/16 23:37:28
Done.
dmichael (off chromium)
2012/03/19 16:25:08
nit: missed this one
Sergey Ulanov
2012/03/19 20:43:29
Done.
|
| + callback_data.delete_monitor = true; |
| + callback_data.monitor = network_monitor; |
| + |
| + ASSERT_EQ(callback_data.completion_callback.WaitForResult(), PP_OK); |
| + ASSERT_EQ(callback_data.call_counter, 1); |
| + |
| + ASSERT_SUBTEST_SUCCESS(VerifyNetworkList(callback_data.list_resource)); |
| + |
| + PASS(); |
| +} |