1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef BASE_MESSAGE_LOOP_MESSAGE_PUMP_DEFAULT_H_
6#define BASE_MESSAGE_LOOP_MESSAGE_PUMP_DEFAULT_H_
7
8#include "base/base_export.h"
9#include "base/macros.h"
10#include "base/message_loop/message_pump.h"
11#include "base/synchronization/waitable_event.h"
12#include "base/time/time.h"
13
14namespace base {
15
16class BASE_EXPORT MessagePumpDefault : public MessagePump {
17 public:
18  MessagePumpDefault();
19  ~MessagePumpDefault() override;
20
21  // MessagePump methods:
22  void Run(Delegate* delegate) override;
23  void Quit() override;
24  void ScheduleWork() override;
25  void ScheduleDelayedWork(const TimeTicks& delayed_work_time) override;
26
27 private:
28  // This flag is set to false when Run should return.
29  bool keep_running_;
30
31  // Used to sleep until there is more work to do.
32  WaitableEvent event_;
33
34  // The time at which we should call DoDelayedWork.
35  TimeTicks delayed_work_time_;
36
37  DISALLOW_COPY_AND_ASSIGN(MessagePumpDefault);
38};
39
40}  // namespace base
41
42#endif  // BASE_MESSAGE_LOOP_MESSAGE_PUMP_DEFAULT_H_
43