mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-11-28 00:06:09 +03:00
41 lines
1018 B
C++
41 lines
1018 B
C++
// Copyright 2015 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.
|
|
|
|
#ifndef NET_TEST_EVENT_WAITER_H_
|
|
#define NET_TEST_EVENT_WAITER_H_
|
|
|
|
#include "base/run_loop.h"
|
|
|
|
namespace net {
|
|
|
|
// Helper class to run a RunLoop until an expected event is reported.
|
|
template <typename Event>
|
|
class EventWaiter {
|
|
public:
|
|
// Runs a RunLoop until NotifyEvent() is called with |event|.
|
|
void WaitForEvent(Event event) {
|
|
expected_event_ = event;
|
|
base::RunLoop run_loop;
|
|
quit_closure_ = run_loop.QuitClosure();
|
|
run_loop.Run();
|
|
}
|
|
|
|
// Unblocks a WaitForEvent() call if it was called with |event|. Otherwise,
|
|
// has no effect.
|
|
void NotifyEvent(Event event) {
|
|
if (!quit_closure_.is_null() && event == expected_event_) {
|
|
quit_closure_.Run();
|
|
quit_closure_.Reset();
|
|
}
|
|
}
|
|
|
|
private:
|
|
Event expected_event_;
|
|
base::Closure quit_closure_;
|
|
};
|
|
|
|
} // namespace net
|
|
|
|
#endif // NET_TEST_EVENT_WAITER_H_
|