// Copyright (c) 2013 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/message_loop/message_pump_ozone.h" #include "base/logging.h" #include "base/message_loop/message_loop.h" namespace base { MessagePumpOzone::MessagePumpOzone() : MessagePumpLibevent() { } MessagePumpOzone::~MessagePumpOzone() { } void MessagePumpOzone::AddObserver(MessagePumpObserver* /* observer */) { NOTIMPLEMENTED(); } void MessagePumpOzone::RemoveObserver(MessagePumpObserver* /* observer */) { NOTIMPLEMENTED(); } // static MessagePumpOzone* MessagePumpOzone::Current() { MessageLoopForUI* loop = MessageLoopForUI::current(); return static_cast(loop->pump_ui()); } void MessagePumpOzone::AddDispatcherForRootWindow( MessagePumpDispatcher* dispatcher) { // Only one root window is supported. DCHECK(dispatcher_.size() == 0); dispatcher_.insert(dispatcher_.begin(),dispatcher); } void MessagePumpOzone::RemoveDispatcherForRootWindow( MessagePumpDispatcher* dispatcher) { DCHECK(dispatcher_.size() == 1); dispatcher_.pop_back(); } bool MessagePumpOzone::Dispatch(const NativeEvent& dev) { if (dispatcher_.size() > 0) return dispatcher_[0]->Dispatch(dev); else return true; } // This code assumes that the caller tracks the lifetime of the |dispatcher|. void MessagePumpOzone::RunWithDispatcher( Delegate* delegate, MessagePumpDispatcher* dispatcher) { dispatcher_.push_back(dispatcher); Run(delegate); dispatcher_.pop_back(); } } // namespace base