// 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_
