| 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..1a848a1d0e3e95ffcf507ae80f89a804a2846bc5 100644
|
| --- a/ppapi/tests/test_network_monitor_private.cc
|
| +++ b/ppapi/tests/test_network_monitor_private.cc
|
| @@ -20,7 +20,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 +31,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 +43,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 +67,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(
|
| @@ -166,3 +174,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));
|
| + 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();
|
| +}
|
|
|