Home | History | Annotate | Download | only in message_loop
      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 
     10 namespace base {
     11 
     12 MessagePumpOzone::MessagePumpOzone()
     13     : MessagePumpLibevent() {
     14 }
     15 
     16 MessagePumpOzone::~MessagePumpOzone() {
     17 }
     18 
     19 void MessagePumpOzone::AddObserver(MessagePumpObserver* /* observer */) {
     20   NOTIMPLEMENTED();
     21 }
     22 
     23 void MessagePumpOzone::RemoveObserver(MessagePumpObserver* /* observer */) {
     24   NOTIMPLEMENTED();
     25 }
     26 
     27 // static
     28 MessagePumpOzone* MessagePumpOzone::Current() {
     29   MessageLoopForUI* loop = MessageLoopForUI::current();
     30   return static_cast<MessagePumpOzone*>(loop->pump_ui());
     31 }
     32 
     33 void 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 
     40 void MessagePumpOzone::RemoveDispatcherForRootWindow(
     41       MessagePumpDispatcher* dispatcher) {
     42   DCHECK(dispatcher_.size() == 1);
     43   dispatcher_.pop_back();
     44 }
     45 
     46 bool 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|.
     54 void 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