blob: ff3bc21529ddd053a32a09779c3cdca8a32896dc [file] [log] [blame]
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/synchronization/waitable_event.h"
#include "build/build_config.h"
#if defined(OS_WIN)
#include "base/win/scoped_handle.h"
namespace base {
// A WaitableEvent for use in tests, it has the same API as WaitableEvent with
// the following two distinctions:
// 1) ScopedAllowBaseSyncPrimitivesForTesting is not required to block on it.
// 2) It doesn't instantiate a ScopedBlockingCallWithBaseSyncPrimitives in
// Wait() (important in some //base tests that are thrown off when the
// WaitableEvents used to drive the test add additional ScopedBlockingCalls
// to the mix of monitored calls).
class TestWaitableEvent : public WaitableEvent {
TestWaitableEvent(ResetPolicy reset_policy = ResetPolicy::MANUAL,
InitialState initial_state = InitialState::NOT_SIGNALED);
#if defined(OS_WIN)
explicit TestWaitableEvent(win::ScopedHandle event_handle);
static_assert(sizeof(TestWaitableEvent) == sizeof(WaitableEvent),
"WaitableEvent is non-virtual, TestWaitableEvent must be usable "
} // namespace base