Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1272)

Unified Diff: mojo/public/cpp/bindings/tests/interface_ptr_unittest.cc

Issue 2318793002: Mojo C++ bindings: support disconnect with a reason. (Closed)
Patch Set: . Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: mojo/public/cpp/bindings/tests/interface_ptr_unittest.cc
diff --git a/mojo/public/cpp/bindings/tests/interface_ptr_unittest.cc b/mojo/public/cpp/bindings/tests/interface_ptr_unittest.cc
index 98aa852a5a1dc758ff1bc9803b84d404492a5f9f..2714ce85eca8219b5f92f51d21507fb52861b37b 100644
--- a/mojo/public/cpp/bindings/tests/interface_ptr_unittest.cc
+++ b/mojo/public/cpp/bindings/tests/interface_ptr_unittest.cc
@@ -29,10 +29,6 @@ class MathCalculatorImpl : public math::Calculator {
: total_(0.0), binding_(this, std::move(request)) {}
~MathCalculatorImpl() override {}
- void CloseMessagePipe() { binding_.Close(); }
-
- void WaitForIncomingMethodCall() { binding_.WaitForIncomingMethodCall(); }
-
void Clear(const CalcCallback& callback) override {
total_ = 0.0;
callback.Run(total_);
@@ -48,6 +44,8 @@ class MathCalculatorImpl : public math::Calculator {
callback.Run(total_);
}
+ Binding<math::Calculator>* binding() { return &binding_; }
+
private:
double total_;
Binding<math::Calculator> binding_;
@@ -252,14 +250,14 @@ TEST_F(InterfacePtrTest, EndToEnd_Synchronous) {
base::RunLoop run_loop;
calculator_ui.Add(2.0, run_loop.QuitClosure());
EXPECT_EQ(0.0, calculator_ui.GetOutput());
- calc_impl.WaitForIncomingMethodCall();
+ calc_impl.binding()->WaitForIncomingMethodCall();
run_loop.Run();
EXPECT_EQ(2.0, calculator_ui.GetOutput());
base::RunLoop run_loop2;
calculator_ui.Multiply(5.0, run_loop2.QuitClosure());
EXPECT_EQ(2.0, calculator_ui.GetOutput());
- calc_impl.WaitForIncomingMethodCall();
+ calc_impl.binding()->WaitForIncomingMethodCall();
run_loop2.Run();
EXPECT_EQ(10.0, calculator_ui.GetOutput());
}
@@ -328,7 +326,7 @@ TEST_F(InterfacePtrTest, EncounteredError) {
EXPECT_FALSE(calculator_ui.encountered_error());
// Close the server.
- calc_impl.CloseMessagePipe();
+ calc_impl.binding()->Close();
// The state change isn't picked up locally yet.
base::RunLoop run_loop2;
@@ -363,7 +361,7 @@ TEST_F(InterfacePtrTest, EncounteredErrorCallback) {
EXPECT_FALSE(calculator_ui.encountered_error());
// Close the server.
- calc_impl.CloseMessagePipe();
+ calc_impl.binding()->Close();
// The state change isn't picked up locally yet.
EXPECT_FALSE(calculator_ui.encountered_error());
@@ -754,6 +752,25 @@ TEST_F(InterfacePtrTest, FlushForTestingWithClosedPeer) {
calc.FlushForTesting();
}
+TEST_F(InterfacePtrTest, ConnectionErrorWithReason) {
+ math::CalculatorPtr calc;
+ MathCalculatorImpl calc_impl(GetProxy(&calc));
+
+ base::RunLoop run_loop;
+ calc.set_connection_error_with_reason_handler(base::Bind(
+ [](const base::Closure& quit_closure, uint32_t custom_reason,
+ const std::string& description) {
+ EXPECT_EQ(42u, custom_reason);
+ EXPECT_EQ("hey", description);
+ quit_closure.Run();
+ },
+ run_loop.QuitClosure()));
+
+ calc_impl.binding()->CloseWithReason(42u, "hey");
+
+ run_loop.Run();
+}
+
} // namespace
} // namespace test
} // namespace mojo
« no previous file with comments | « mojo/public/cpp/bindings/tests/binding_unittest.cc ('k') | mojo/public/interfaces/bindings/interface_control_messages.mojom » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698