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