Index: mojo/public/cpp/bindings/tests/handle_passing_unittest.cc |
diff --git a/mojo/public/cpp/bindings/tests/handle_passing_unittest.cc b/mojo/public/cpp/bindings/tests/handle_passing_unittest.cc |
index f2dccfb3aa31913d19129f2320bdd0360c2d5c5c..29894bbbc865a98a3acb40435e5ffb31f3ff44e9 100644 |
--- a/mojo/public/cpp/bindings/tests/handle_passing_unittest.cc |
+++ b/mojo/public/cpp/bindings/tests/handle_passing_unittest.cc |
@@ -20,19 +20,18 @@ namespace { |
const char kText1[] = "hello"; |
const char kText2[] = "world"; |
-class StringRecorder { |
- public: |
- StringRecorder(std::string* buf, const base::Closure& closure) |
- : buf_(buf), closure_(closure) {} |
- void Run(const String& a) const { |
- *buf_ = a.To<std::string>(); |
- closure_.Run(); |
- } |
+void RecordString(std::string* storage, |
+ const base::Closure& closure, |
+ String str) { |
+ *storage = str.To<std::string>(); |
yzshen1
2016/06/18 00:01:18
nit: str.PassStorage()
Ken Rockot(use gerrit already)
2016/06/18 03:24:26
Done
|
+ closure.Run(); |
+} |
- private: |
- std::string* buf_; |
- base::Closure closure_; |
-}; |
+base::Callback<void(mojo::String)> MakeStringRecorder( |
+ std::string* storage, |
+ const base::Closure& closure) { |
+ return base::Bind(&RecordString, storage, closure); |
+} |
class ImportedInterfaceImpl : public imported::ImportedInterface { |
public: |
@@ -166,40 +165,40 @@ class HandlePassingTest : public testing::Test { |
base::MessageLoop loop_; |
}; |
-struct DoStuffCallback { |
- DoStuffCallback(bool* got_response, |
- std::string* got_text_reply, |
- const base::Closure& closure) |
- : got_response(got_response), |
- got_text_reply(got_text_reply), |
- closure(closure) {} |
- |
- void Run(sample::ResponsePtr response, const String& text_reply) const { |
- *got_text_reply = text_reply; |
- |
- if (response->pipe.is_valid()) { |
- std::string text2; |
- EXPECT_TRUE(ReadTextMessage(response->pipe.get(), &text2)); |
+void DoStuff(bool* got_response, |
+ std::string* got_text_reply, |
+ const base::Closure& closure, |
+ sample::ResponsePtr response, |
+ String text_reply) { |
+ *got_text_reply = text_reply; |
- // Ensure that simply accessing response.pipe does not close it. |
- EXPECT_TRUE(response->pipe.is_valid()); |
+ if (response->pipe.is_valid()) { |
+ std::string text2; |
+ EXPECT_TRUE(ReadTextMessage(response->pipe.get(), &text2)); |
- EXPECT_EQ(std::string(kText2), text2); |
+ // Ensure that simply accessing response.pipe does not close it. |
+ EXPECT_TRUE(response->pipe.is_valid()); |
- // Do some more tests of handle passing: |
- ScopedMessagePipeHandle p = std::move(response->pipe); |
- EXPECT_TRUE(p.is_valid()); |
- EXPECT_FALSE(response->pipe.is_valid()); |
- } |
+ EXPECT_EQ(std::string(kText2), text2); |
- *got_response = true; |
- closure.Run(); |
+ // Do some more tests of handle passing: |
+ ScopedMessagePipeHandle p = std::move(response->pipe); |
+ EXPECT_TRUE(p.is_valid()); |
+ EXPECT_FALSE(response->pipe.is_valid()); |
} |
- bool* got_response; |
- std::string* got_text_reply; |
- base::Closure closure; |
-}; |
+ *got_response = true; |
+ closure.Run(); |
+} |
+ |
+void DoStuff2(bool* got_response, |
+ std::string* got_text_reply, |
+ const base::Closure& closure, |
+ String text_reply) { |
+ *got_response = true; |
+ *got_text_reply = text_reply; |
+ closure.Run(); |
+} |
TEST_F(HandlePassingTest, Basic) { |
sample::FactoryPtr factory; |
@@ -223,17 +222,18 @@ TEST_F(HandlePassingTest, Basic) { |
bool got_response = false; |
std::string got_text_reply; |
base::RunLoop run_loop2; |
- DoStuffCallback cb(&got_response, &got_text_reply, run_loop2.QuitClosure()); |
- factory->DoStuff(std::move(request), std::move(pipe0.handle0), cb); |
+ factory->DoStuff(std::move(request), std::move(pipe0.handle0), |
+ base::Bind(&DoStuff, &got_response, &got_text_reply, |
+ run_loop2.QuitClosure())); |
- EXPECT_FALSE(*cb.got_response); |
+ EXPECT_FALSE(got_response); |
int count_before = ImportedInterfaceImpl::do_something_count(); |
run_loop.Run(); |
run_loop2.Run(); |
- EXPECT_TRUE(*cb.got_response); |
- EXPECT_EQ(kText1, *cb.got_text_reply); |
+ EXPECT_TRUE(got_response); |
+ EXPECT_EQ(kText1, got_text_reply); |
EXPECT_EQ(1, ImportedInterfaceImpl::do_something_count() - count_before); |
} |
@@ -246,35 +246,17 @@ TEST_F(HandlePassingTest, PassInvalid) { |
bool got_response = false; |
std::string got_text_reply; |
base::RunLoop run_loop; |
- DoStuffCallback cb(&got_response, &got_text_reply, run_loop.QuitClosure()); |
- factory->DoStuff(std::move(request), ScopedMessagePipeHandle(), cb); |
+ factory->DoStuff(std::move(request), ScopedMessagePipeHandle(), |
+ base::Bind(&DoStuff, &got_response, &got_text_reply, |
+ run_loop.QuitClosure())); |
- EXPECT_FALSE(*cb.got_response); |
+ EXPECT_FALSE(got_response); |
run_loop.Run(); |
- EXPECT_TRUE(*cb.got_response); |
+ EXPECT_TRUE(got_response); |
} |
-struct DoStuff2Callback { |
- DoStuff2Callback(bool* got_response, |
- std::string* got_text_reply, |
- const base::Closure& closure) |
- : got_response(got_response), |
- got_text_reply(got_text_reply), |
- closure(closure) {} |
- |
- void Run(const String& text_reply) const { |
- *got_response = true; |
- *got_text_reply = text_reply; |
- closure.Run(); |
- } |
- |
- bool* got_response; |
- std::string* got_text_reply; |
- base::Closure closure; |
-}; |
- |
// Verifies DataPipeConsumer can be passed and read from. |
TEST_F(HandlePassingTest, DataPipe) { |
sample::FactoryPtr factory; |
@@ -302,15 +284,16 @@ TEST_F(HandlePassingTest, DataPipe) { |
bool got_response = false; |
std::string got_text_reply; |
base::RunLoop run_loop; |
- DoStuff2Callback cb(&got_response, &got_text_reply, run_loop.QuitClosure()); |
- factory->DoStuff2(std::move(consumer_handle), cb); |
+ factory->DoStuff2(std::move(consumer_handle), |
+ base::Bind(&DoStuff2, &got_response, &got_text_reply, |
+ run_loop.QuitClosure())); |
- EXPECT_FALSE(*cb.got_response); |
+ EXPECT_FALSE(got_response); |
run_loop.Run(); |
- EXPECT_TRUE(*cb.got_response); |
- EXPECT_EQ(expected_text_reply, *cb.got_text_reply); |
+ EXPECT_TRUE(got_response); |
+ EXPECT_EQ(expected_text_reply, got_text_reply); |
} |
TEST_F(HandlePassingTest, PipesAreClosed) { |
@@ -371,10 +354,10 @@ TEST_F(HandlePassingTest, CreateNamedObject) { |
base::RunLoop run_loop, run_loop2; |
std::string name1; |
- object1->GetName(StringRecorder(&name1, run_loop.QuitClosure())); |
+ object1->GetName(MakeStringRecorder(&name1, run_loop.QuitClosure())); |
std::string name2; |
- object2->GetName(StringRecorder(&name2, run_loop2.QuitClosure())); |
+ object2->GetName(MakeStringRecorder(&name2, run_loop2.QuitClosure())); |
run_loop.Run(); |
run_loop2.Run(); |