Commit 90c2c5c5 authored by gab's avatar gab Committed by Commit bot

Migrate WaitableEvent to enum-based constructor in ipc/

Change automated with clang-tidy (details @ https://crbug.com/612843#c13)

BUG=612843

Review-Url: https://codereview.chromium.org/2027303002
Cr-Commit-Position: refs/heads/master@{#397230}
parent 54e47643
......@@ -269,8 +269,10 @@ class PipeChannelHelper {
}
~PipeChannelHelper() {
base::WaitableEvent a(true, false);
base::WaitableEvent b(true, false);
base::WaitableEvent a(base::WaitableEvent::ResetPolicy::MANUAL,
base::WaitableEvent::InitialState::NOT_SIGNALED);
base::WaitableEvent b(base::WaitableEvent::ResetPolicy::MANUAL,
base::WaitableEvent::InitialState::NOT_SIGNALED);
in_thread_->task_runner()->PostTask(
FROM_HERE, base::Bind(&PipeChannelHelper::DestroyChannel, &in, &a));
out_thread_->task_runner()->PostTask(
......@@ -315,7 +317,9 @@ class PipeChannelHelper {
// http://crbug.com/298276
class IPCMultiSendingFdsTest : public testing::Test {
public:
IPCMultiSendingFdsTest() : received_(true, false) {}
IPCMultiSendingFdsTest()
: received_(base::WaitableEvent::ResetPolicy::MANUAL,
base::WaitableEvent::InitialState::NOT_SIGNALED) {}
void Producer(PipeChannelHelper* dest,
base::Thread* t,
......
......@@ -190,14 +190,14 @@ class SyncChannel::ReceivedSyncMsgQueue :
// See the comment in SyncChannel::SyncChannel for why this event is created
// as manual reset.
ReceivedSyncMsgQueue() :
message_queue_version_(0),
dispatch_event_(true, false),
listener_task_runner_(base::ThreadTaskRunnerHandle::Get()),
task_pending_(false),
listener_count_(0),
top_send_done_watcher_(NULL) {
}
ReceivedSyncMsgQueue()
: message_queue_version_(0),
dispatch_event_(base::WaitableEvent::ResetPolicy::MANUAL,
base::WaitableEvent::InitialState::NOT_SIGNALED),
listener_task_runner_(base::ThreadTaskRunnerHandle::Get()),
task_pending_(false),
listener_count_(0),
top_send_done_watcher_(NULL) {}
~ReceivedSyncMsgQueue() {}
......@@ -260,9 +260,10 @@ void SyncChannel::SyncContext::Push(SyncMessage* sync_msg) {
// OnObjectSignalled, another Send can happen which would stop the watcher
// from being called. The event would get watched later, when the nested
// Send completes, so the event will need to remain set.
PendingSyncMsg pending(SyncMessage::GetMessageId(*sync_msg),
sync_msg->GetReplyDeserializer(),
new WaitableEvent(true, false));
PendingSyncMsg pending(
SyncMessage::GetMessageId(*sync_msg), sync_msg->GetReplyDeserializer(),
new WaitableEvent(base::WaitableEvent::ResetPolicy::MANUAL,
base::WaitableEvent::InitialState::NOT_SIGNALED));
base::AutoLock auto_lock(deserializers_lock_);
deserializers_.push_back(pending);
}
......
......@@ -42,28 +42,37 @@ class Worker : public Listener, public Sender {
Worker(Channel::Mode mode,
const std::string& thread_name,
const std::string& channel_name)
: done_(new WaitableEvent(false, false)),
channel_created_(new WaitableEvent(false, false)),
: done_(
new WaitableEvent(base::WaitableEvent::ResetPolicy::AUTOMATIC,
base::WaitableEvent::InitialState::NOT_SIGNALED)),
channel_created_(
new WaitableEvent(base::WaitableEvent::ResetPolicy::AUTOMATIC,
base::WaitableEvent::InitialState::NOT_SIGNALED)),
channel_name_(channel_name),
mode_(mode),
ipc_thread_((thread_name + "_ipc").c_str()),
listener_thread_((thread_name + "_listener").c_str()),
overrided_thread_(NULL),
shutdown_event_(true, false),
shutdown_event_(base::WaitableEvent::ResetPolicy::MANUAL,
base::WaitableEvent::InitialState::NOT_SIGNALED),
is_shutdown_(false) {}
// Will create a named channel and use this name for the threads' name.
Worker(const std::string& channel_name, Channel::Mode mode)
: done_(new WaitableEvent(false, false)),
channel_created_(new WaitableEvent(false, false)),
: done_(
new WaitableEvent(base::WaitableEvent::ResetPolicy::AUTOMATIC,
base::WaitableEvent::InitialState::NOT_SIGNALED)),
channel_created_(
new WaitableEvent(base::WaitableEvent::ResetPolicy::AUTOMATIC,
base::WaitableEvent::InitialState::NOT_SIGNALED)),
channel_name_(channel_name),
mode_(mode),
ipc_thread_((channel_name + "_ipc").c_str()),
listener_thread_((channel_name + "_listener").c_str()),
overrided_thread_(NULL),
shutdown_event_(true, false),
is_shutdown_(false) {
}
shutdown_event_(base::WaitableEvent::ResetPolicy::MANUAL,
base::WaitableEvent::InitialState::NOT_SIGNALED),
is_shutdown_(false) {}
~Worker() override {
// Shutdown() must be called before destruction.
......@@ -86,7 +95,11 @@ class Worker : public Listener, public Sender {
// The IPC thread needs to outlive SyncChannel. We can't do this in
// ~Worker(), since that'll reset the vtable pointer (to Worker's), which
// may result in a race conditions. See http://crbug.com/25841.
WaitableEvent listener_done(false, false), ipc_done(false, false);
WaitableEvent listener_done(
base::WaitableEvent::ResetPolicy::AUTOMATIC,
base::WaitableEvent::InitialState::NOT_SIGNALED),
ipc_done(base::WaitableEvent::ResetPolicy::AUTOMATIC,
base::WaitableEvent::InitialState::NOT_SIGNALED);
ListenerThread()->task_runner()->PostTask(
FROM_HERE, base::Bind(&Worker::OnListenerThreadShutdown1, this,
&listener_done, &ipc_done));
......@@ -454,7 +467,9 @@ class NoHangClient : public Worker {
};
void NoHang(bool pump_during_send) {
WaitableEvent got_first_reply(false, false);
WaitableEvent got_first_reply(
base::WaitableEvent::ResetPolicy::AUTOMATIC,
base::WaitableEvent::InitialState::NOT_SIGNALED);
std::vector<Worker*> workers;
workers.push_back(
new NoHangServer(&got_first_reply, pump_during_send, "NoHang"));
......@@ -730,8 +745,12 @@ void Multiple(bool server_pump, bool client_pump) {
// Server1 sends a sync msg to client1, which blocks the reply until
// server2 (which runs on the same worker thread as server1) responds
// to a sync msg from client2.
WaitableEvent client1_msg_received(false, false);
WaitableEvent client1_can_reply(false, false);
WaitableEvent client1_msg_received(
base::WaitableEvent::ResetPolicy::AUTOMATIC,
base::WaitableEvent::InitialState::NOT_SIGNALED);
WaitableEvent client1_can_reply(
base::WaitableEvent::ResetPolicy::AUTOMATIC,
base::WaitableEvent::InitialState::NOT_SIGNALED);
Worker* worker;
......@@ -1255,8 +1274,11 @@ class RestrictedDispatchClient : public Worker {
};
TEST_F(IPCSyncChannelTest, RestrictedDispatch) {
WaitableEvent sent_ping_event(false, false);
WaitableEvent wait_event(false, false);
WaitableEvent sent_ping_event(
base::WaitableEvent::ResetPolicy::AUTOMATIC,
base::WaitableEvent::InitialState::NOT_SIGNALED);
WaitableEvent wait_event(base::WaitableEvent::ResetPolicy::AUTOMATIC,
base::WaitableEvent::InitialState::NOT_SIGNALED);
RestrictedDispatchServer* server =
new RestrictedDispatchServer(&sent_ping_event, &wait_event);
NonRestrictedDispatchServer* server2 =
......@@ -1486,13 +1508,19 @@ TEST_F(IPCSyncChannelTest, RestrictedDispatchDeadlock) {
base::Thread worker_thread("RestrictedDispatchDeadlock");
ASSERT_TRUE(worker_thread.Start());
WaitableEvent server1_ready(false, false);
WaitableEvent server2_ready(false, false);
WaitableEvent event0(false, false);
WaitableEvent event1(false, false);
WaitableEvent event2(false, false);
WaitableEvent event3(false, false);
WaitableEvent server1_ready(base::WaitableEvent::ResetPolicy::AUTOMATIC,
base::WaitableEvent::InitialState::NOT_SIGNALED);
WaitableEvent server2_ready(base::WaitableEvent::ResetPolicy::AUTOMATIC,
base::WaitableEvent::InitialState::NOT_SIGNALED);
WaitableEvent event0(base::WaitableEvent::ResetPolicy::AUTOMATIC,
base::WaitableEvent::InitialState::NOT_SIGNALED);
WaitableEvent event1(base::WaitableEvent::ResetPolicy::AUTOMATIC,
base::WaitableEvent::InitialState::NOT_SIGNALED);
WaitableEvent event2(base::WaitableEvent::ResetPolicy::AUTOMATIC,
base::WaitableEvent::InitialState::NOT_SIGNALED);
WaitableEvent event3(base::WaitableEvent::ResetPolicy::AUTOMATIC,
base::WaitableEvent::InitialState::NOT_SIGNALED);
WaitableEvent* events[4] = {&event0, &event1, &event2, &event3};
RestrictedDispatchDeadlockServer* server1;
......@@ -1616,10 +1644,14 @@ class RestrictedDispatchPipeWorker : public Worker {
TEST_F(IPCSyncChannelTest, MAYBE_RestrictedDispatch4WayDeadlock) {
int success = 0;
std::vector<Worker*> workers;
WaitableEvent event0(true, false);
WaitableEvent event1(true, false);
WaitableEvent event2(true, false);
WaitableEvent event3(true, false);
WaitableEvent event0(base::WaitableEvent::ResetPolicy::MANUAL,
base::WaitableEvent::InitialState::NOT_SIGNALED);
WaitableEvent event1(base::WaitableEvent::ResetPolicy::MANUAL,
base::WaitableEvent::InitialState::NOT_SIGNALED);
WaitableEvent event2(base::WaitableEvent::ResetPolicy::MANUAL,
base::WaitableEvent::InitialState::NOT_SIGNALED);
WaitableEvent event3(base::WaitableEvent::ResetPolicy::MANUAL,
base::WaitableEvent::InitialState::NOT_SIGNALED);
workers.push_back(new RestrictedDispatchPipeWorker(
"channel0", &event0, "channel1", &event1, 1, &success));
workers.push_back(new RestrictedDispatchPipeWorker(
......@@ -1734,7 +1766,8 @@ class ReentrantReplyClient : public Worker {
TEST_F(IPCSyncChannelTest, ReentrantReply) {
std::vector<Worker*> workers;
WaitableEvent server_ready(false, false);
WaitableEvent server_ready(base::WaitableEvent::ResetPolicy::AUTOMATIC,
base::WaitableEvent::InitialState::NOT_SIGNALED);
workers.push_back(new ReentrantReplyServer2());
workers.push_back(new ReentrantReplyServer1(&server_ready));
workers.push_back(new ReentrantReplyClient(&server_ready));
......
......@@ -20,7 +20,9 @@ struct WaitableEventLazyInstanceTraits
: public base::DefaultLazyInstanceTraits<base::WaitableEvent> {
static base::WaitableEvent* New(void* instance) {
// Use placement new to initialize our instance in our preallocated space.
return new (instance) base::WaitableEvent(true, true);
return new (instance)
base::WaitableEvent(base::WaitableEvent::ResetPolicy::MANUAL,
base::WaitableEvent::InitialState::SIGNALED);
}
};
......
......@@ -30,7 +30,9 @@ bool SyncMessageFilter::Send(Message* message) {
return true;
}
base::WaitableEvent done_event(true, false);
base::WaitableEvent done_event(
base::WaitableEvent::ResetPolicy::MANUAL,
base::WaitableEvent::InitialState::NOT_SIGNALED);
PendingSyncMsg pending_message(
SyncMessage::GetMessageId(*message),
static_cast<SyncMessage*>(message)->GetReplyDeserializer(),
......
......@@ -28,8 +28,11 @@ class SocketAcceptor : public base::MessageLoopForIO::Watcher {
SocketAcceptor(int fd, base::SingleThreadTaskRunner* target_thread)
: server_fd_(-1),
target_thread_(target_thread),
started_watching_event_(false, false),
accepted_event_(false, false) {
started_watching_event_(
base::WaitableEvent::ResetPolicy::AUTOMATIC,
base::WaitableEvent::InitialState::NOT_SIGNALED),
accepted_event_(base::WaitableEvent::ResetPolicy::AUTOMATIC,
base::WaitableEvent::InitialState::NOT_SIGNALED) {
target_thread->PostTask(FROM_HERE,
base::Bind(&SocketAcceptor::StartWatching, base::Unretained(this), fd));
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment