diff options
author | yzshen <yzshen@chromium.org> | 2016-02-22 17:22:10 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-02-23 01:23:00 +0000 |
commit | 8ef9022a0d352066587791b3e225ca264c688ade (patch) | |
tree | 099161b2828cb2e83dfb77037930a6ae68c78b8e /mojo/public/cpp/bindings/tests/router_unittest.cc | |
parent | 9166c9c8a3fbbd0dc74f837660ca6952a2203402 (diff) | |
download | chromium_src-8ef9022a0d352066587791b3e225ca264c688ade.zip chromium_src-8ef9022a0d352066587791b3e225ca264c688ade.tar.gz chromium_src-8ef9022a0d352066587791b3e225ca264c688ade.tar.bz2 |
Reland "Mojo C++ bindings: support sync methods - part 2"
This CL introduces the correct re-entrancy behavior: when a sync call is waiting
for response, allow incoming sync requests on the same thread to re-enter, async
messages are queued until the sync call completes.
The following will be in future CLs:
- Support sync calls with associated interfaces.
The original CL is at https://codereview.chromium.org/1713203002/
BUG=577699
Review URL: https://codereview.chromium.org/1723673002
Cr-Commit-Position: refs/heads/master@{#376892}
Diffstat (limited to 'mojo/public/cpp/bindings/tests/router_unittest.cc')
-rw-r--r-- | mojo/public/cpp/bindings/tests/router_unittest.cc | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/mojo/public/cpp/bindings/tests/router_unittest.cc b/mojo/public/cpp/bindings/tests/router_unittest.cc index e88f0e8..1f7160e 100644 --- a/mojo/public/cpp/bindings/tests/router_unittest.cc +++ b/mojo/public/cpp/bindings/tests/router_unittest.cc @@ -39,8 +39,8 @@ class RouterTest : public testing::Test { }; TEST_F(RouterTest, BasicRequestResponse) { - internal::Router router0(std::move(handle0_), internal::FilterChain()); - internal::Router router1(std::move(handle1_), internal::FilterChain()); + internal::Router router0(std::move(handle0_), internal::FilterChain(), false); + internal::Router router1(std::move(handle1_), internal::FilterChain(), false); ResponseGenerator generator; router1.set_incoming_receiver(&generator); @@ -83,8 +83,8 @@ TEST_F(RouterTest, BasicRequestResponse) { } TEST_F(RouterTest, BasicRequestResponse_Synchronous) { - internal::Router router0(std::move(handle0_), internal::FilterChain()); - internal::Router router1(std::move(handle1_), internal::FilterChain()); + internal::Router router0(std::move(handle0_), internal::FilterChain(), false); + internal::Router router1(std::move(handle1_), internal::FilterChain(), false); ResponseGenerator generator; router1.set_incoming_receiver(&generator); @@ -125,8 +125,8 @@ TEST_F(RouterTest, BasicRequestResponse_Synchronous) { } TEST_F(RouterTest, RequestWithNoReceiver) { - internal::Router router0(std::move(handle0_), internal::FilterChain()); - internal::Router router1(std::move(handle1_), internal::FilterChain()); + internal::Router router0(std::move(handle0_), internal::FilterChain(), false); + internal::Router router1(std::move(handle1_), internal::FilterChain(), false); // Without an incoming receiver set on router1, we expect router0 to observe // an error as a result of sending a message. @@ -151,8 +151,8 @@ TEST_F(RouterTest, RequestWithNoReceiver) { // Tests Router using the LazyResponseGenerator. The responses will not be // sent until after the requests have been accepted. TEST_F(RouterTest, LazyResponses) { - internal::Router router0(std::move(handle0_), internal::FilterChain()); - internal::Router router1(std::move(handle1_), internal::FilterChain()); + internal::Router router0(std::move(handle0_), internal::FilterChain(), false); + internal::Router router1(std::move(handle1_), internal::FilterChain(), false); base::RunLoop run_loop; LazyResponseGenerator generator(run_loop.QuitClosure()); @@ -217,7 +217,7 @@ TEST_F(RouterTest, LazyResponses) { // both sides still appear to have a valid message pipe handle bound. TEST_F(RouterTest, MissingResponses) { base::RunLoop run_loop0, run_loop1; - internal::Router router0(std::move(handle0_), internal::FilterChain()); + internal::Router router0(std::move(handle0_), internal::FilterChain(), false); bool error_handler_called0 = false; router0.set_connection_error_handler( [&error_handler_called0, &run_loop0]() { @@ -225,7 +225,7 @@ TEST_F(RouterTest, MissingResponses) { run_loop0.Quit(); }); - internal::Router router1(std::move(handle1_), internal::FilterChain()); + internal::Router router1(std::move(handle1_), internal::FilterChain(), false); bool error_handler_called1 = false; router1.set_connection_error_handler( [&error_handler_called1, &run_loop1]() { @@ -277,8 +277,10 @@ TEST_F(RouterTest, LateResponse) { base::RunLoop run_loop; LazyResponseGenerator generator(run_loop.QuitClosure()); { - internal::Router router0(std::move(handle0_), internal::FilterChain()); - internal::Router router1(std::move(handle1_), internal::FilterChain()); + internal::Router router0(std::move(handle0_), internal::FilterChain(), + false); + internal::Router router1(std::move(handle1_), internal::FilterChain(), + false); router1.set_incoming_receiver(&generator); |