1// Copyright (c) 2013 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#include "base/message_loop/message_pump_ozone.h" 6 7#include "base/logging.h" 8#include "base/message_loop/message_loop.h" 9 10namespace base { 11 12MessagePumpOzone::MessagePumpOzone() 13 : MessagePumpLibevent() { 14} 15 16MessagePumpOzone::~MessagePumpOzone() { 17} 18 19void MessagePumpOzone::AddObserver(MessagePumpObserver* /* observer */) { 20 NOTIMPLEMENTED(); 21} 22 23void MessagePumpOzone::RemoveObserver(MessagePumpObserver* /* observer */) { 24 NOTIMPLEMENTED(); 25} 26 27// static 28MessagePumpOzone* MessagePumpOzone::Current() { 29 MessageLoopForUI* loop = MessageLoopForUI::current(); 30 return static_cast<MessagePumpOzone*>(loop->pump_ui()); 31} 32 33void MessagePumpOzone::AddDispatcherForRootWindow( 34 MessagePumpDispatcher* dispatcher) { 35 // Only one root window is supported. 36 DCHECK(dispatcher_.size() == 0); 37 dispatcher_.insert(dispatcher_.begin(),dispatcher); 38} 39 40void MessagePumpOzone::RemoveDispatcherForRootWindow( 41 MessagePumpDispatcher* dispatcher) { 42 DCHECK(dispatcher_.size() == 1); 43 dispatcher_.pop_back(); 44} 45 46bool MessagePumpOzone::Dispatch(const NativeEvent& dev) { 47 if (dispatcher_.size() > 0) 48 return dispatcher_[0]->Dispatch(dev); 49 else 50 return true; 51} 52 53// This code assumes that the caller tracks the lifetime of the |dispatcher|. 54void MessagePumpOzone::RunWithDispatcher( 55 Delegate* delegate, MessagePumpDispatcher* dispatcher) { 56 dispatcher_.push_back(dispatcher); 57 Run(delegate); 58 dispatcher_.pop_back(); 59} 60 61} // namespace base 62