Index: mojo/public/cpp/bindings/tests/connector_unittest.cc |
diff --git a/mojo/public/cpp/bindings/tests/connector_unittest.cc b/mojo/public/cpp/bindings/tests/connector_unittest.cc |
index e84cce6f94de178ff22509f9743a47b88b3062c0..87f88924cc2d608aeae9d023ab9fa7bbac929509 100644 |
--- a/mojo/public/cpp/bindings/tests/connector_unittest.cc |
+++ b/mojo/public/cpp/bindings/tests/connector_unittest.cc |
@@ -14,6 +14,7 @@ |
#include "base/callback_helpers.h" |
#include "base/message_loop/message_loop.h" |
#include "base/run_loop.h" |
+#include "base/threading/thread.h" |
#include "base/threading/thread_task_runner_handle.h" |
#include "mojo/public/cpp/bindings/lib/message_builder.h" |
#include "mojo/public/cpp/bindings/tests/message_queue.h" |
@@ -572,6 +573,27 @@ TEST_F(ConnectorTest, ProcessWhenNested) { |
ASSERT_EQ(2u, accumulator.size()); |
} |
+TEST_F(ConnectorTest, DestroyOnDifferentThreadAfterClose) { |
+ std::unique_ptr<Connector> connector( |
+ new Connector(std::move(handle0_), Connector::SINGLE_THREADED_SEND, |
+ base::ThreadTaskRunnerHandle::Get())); |
+ |
+ connector->CloseMessagePipe(); |
+ |
+ base::Thread another_thread("ThreadForDestroyingConnector"); |
+ another_thread.Start(); |
+ |
+ base::RunLoop run_loop; |
+ another_thread.task_runner()->PostTaskAndReply( |
+ FROM_HERE, |
+ base::Bind( |
+ [](std::unique_ptr<Connector> connector) { connector.reset(); }, |
+ base::Passed(std::move(connector))), |
+ run_loop.QuitClosure()); |
+ |
+ run_loop.Run(); |
+} |
+ |
} // namespace |
} // namespace test |
} // namespace mojo |