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

Side by Side Diff: mojo/public/cpp/bindings/tests/bind_task_runner_unittest.cc

Issue 2080083002: Revert of Deletes mojo::Callback (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/bind.h" 5 #include "base/bind.h"
6 #include "base/callback.h"
7 #include "base/message_loop/message_loop.h" 6 #include "base/message_loop/message_loop.h"
8 #include "base/single_thread_task_runner.h" 7 #include "base/single_thread_task_runner.h"
9 #include "base/synchronization/lock.h" 8 #include "base/synchronization/lock.h"
10 #include "base/synchronization/waitable_event.h" 9 #include "base/synchronization/waitable_event.h"
11 #include "base/threading/platform_thread.h" 10 #include "base/threading/platform_thread.h"
12 #include "mojo/public/cpp/bindings/associated_binding.h" 11 #include "mojo/public/cpp/bindings/associated_binding.h"
13 #include "mojo/public/cpp/bindings/associated_group.h" 12 #include "mojo/public/cpp/bindings/associated_group.h"
14 #include "mojo/public/cpp/bindings/associated_interface_ptr.h" 13 #include "mojo/public/cpp/bindings/associated_interface_ptr.h"
15 #include "mojo/public/cpp/bindings/associated_interface_ptr_info.h" 14 #include "mojo/public/cpp/bindings/associated_interface_ptr_info.h"
16 #include "mojo/public/cpp/bindings/associated_interface_request.h" 15 #include "mojo/public/cpp/bindings/associated_interface_request.h"
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 117
119 template <typename BindingType, typename RequestType> 118 template <typename BindingType, typename RequestType>
120 class IntegerSenderImpl : public IntegerSender { 119 class IntegerSenderImpl : public IntegerSender {
121 public: 120 public:
122 IntegerSenderImpl(RequestType request, 121 IntegerSenderImpl(RequestType request,
123 scoped_refptr<base::SingleThreadTaskRunner> runner) 122 scoped_refptr<base::SingleThreadTaskRunner> runner)
124 : binding_(this, std::move(request), std::move(runner)) {} 123 : binding_(this, std::move(request), std::move(runner)) {}
125 124
126 ~IntegerSenderImpl() override {} 125 ~IntegerSenderImpl() override {}
127 126
128 using EchoHandler = base::Callback<void(int32_t, const EchoCallback&)>; 127 using EchoHandler = Callback<void(int32_t, const EchoCallback&)>;
129 128
130 void set_echo_handler(const EchoHandler& handler) { echo_handler_ = handler; } 129 void set_echo_handler(const EchoHandler& handler) { echo_handler_ = handler; }
131 130
132 void Echo(int32_t value, const EchoCallback& callback) override { 131 void Echo(int32_t value, const EchoCallback& callback) override {
133 if (echo_handler_.is_null()) 132 if (echo_handler_.is_null())
134 callback.Run(value); 133 callback.Run(value);
135 else 134 else
136 echo_handler_.Run(value, callback); 135 echo_handler_.Run(value, callback);
137 } 136 }
138 void Send(int32_t value) override { NOTREACHED(); } 137 void Send(int32_t value) override { NOTREACHED(); }
(...skipping 12 matching lines...) Expand all
151 150
152 explicit IntegerSenderConnectionImpl( 151 explicit IntegerSenderConnectionImpl(
153 IntegerSenderConnectionRequest request, 152 IntegerSenderConnectionRequest request,
154 scoped_refptr<base::SingleThreadTaskRunner> runner, 153 scoped_refptr<base::SingleThreadTaskRunner> runner,
155 scoped_refptr<base::SingleThreadTaskRunner> sender_runner) 154 scoped_refptr<base::SingleThreadTaskRunner> sender_runner)
156 : binding_(this, std::move(request), std::move(runner)), 155 : binding_(this, std::move(request), std::move(runner)),
157 sender_runner_(std::move(sender_runner)) {} 156 sender_runner_(std::move(sender_runner)) {}
158 157
159 ~IntegerSenderConnectionImpl() override {} 158 ~IntegerSenderConnectionImpl() override {}
160 159
161 void set_get_sender_notification(const base::Closure& notification) { 160 void set_get_sender_notification(const Closure& notification) {
162 get_sender_notification_ = notification; 161 get_sender_notification_ = notification;
163 } 162 }
164 void GetSender(IntegerSenderAssociatedRequest sender) override { 163 void GetSender(IntegerSenderAssociatedRequest sender) override {
165 sender_impl_.reset(new SenderType(std::move(sender), sender_runner_)); 164 sender_impl_.reset(new SenderType(std::move(sender), sender_runner_));
166 get_sender_notification_.Run(); 165 get_sender_notification_.Run();
167 } 166 }
168 167
169 void AsyncGetSender(const AsyncGetSenderCallback& callback) override { 168 void AsyncGetSender(const AsyncGetSenderCallback& callback) override {
170 NOTREACHED(); 169 NOTREACHED();
171 } 170 }
172 171
173 Binding<IntegerSenderConnection>* binding() { return &binding_; } 172 Binding<IntegerSenderConnection>* binding() { return &binding_; }
174 173
175 SenderType* sender_impl() { return sender_impl_.get(); } 174 SenderType* sender_impl() { return sender_impl_.get(); }
176 175
177 private: 176 private:
178 Binding<IntegerSenderConnection> binding_; 177 Binding<IntegerSenderConnection> binding_;
179 std::unique_ptr<SenderType> sender_impl_; 178 std::unique_ptr<SenderType> sender_impl_;
180 scoped_refptr<base::SingleThreadTaskRunner> sender_runner_; 179 scoped_refptr<base::SingleThreadTaskRunner> sender_runner_;
181 base::Closure get_sender_notification_; 180 Closure get_sender_notification_;
182 }; 181 };
183 182
184 class BindTaskRunnerTest : public testing::Test { 183 class BindTaskRunnerTest : public testing::Test {
185 protected: 184 protected:
186 void SetUp() override { 185 void SetUp() override {
187 binding_task_runner_ = scoped_refptr<TestTaskRunner>(new TestTaskRunner); 186 binding_task_runner_ = scoped_refptr<TestTaskRunner>(new TestTaskRunner);
188 ptr_task_runner_ = scoped_refptr<TestTaskRunner>(new TestTaskRunner); 187 ptr_task_runner_ = scoped_refptr<TestTaskRunner>(new TestTaskRunner);
189 188
190 auto request = GetProxy(&ptr_, ptr_task_runner_); 189 auto request = GetProxy(&ptr_, ptr_task_runner_);
191 impl_.reset(new ImplType(std::move(request), binding_task_runner_)); 190 impl_.reset(new ImplType(std::move(request), binding_task_runner_));
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
386 EXPECT_TRUE(sender_impl_error); 385 EXPECT_TRUE(sender_impl_error);
387 connection_ptr_task_runner_->Run(); 386 connection_ptr_task_runner_->Run();
388 EXPECT_TRUE(connection_ptr_error); 387 EXPECT_TRUE(connection_ptr_error);
389 sender_ptr_task_runner_->Run(); 388 sender_ptr_task_runner_->Run();
390 EXPECT_TRUE(sender_ptr_error); 389 EXPECT_TRUE(sender_ptr_error);
391 } 390 }
392 391
393 } // namespace 392 } // namespace
394 } // namespace test 393 } // namespace test
395 } // namespace mojo 394 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698