// Copyright 2014 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 "ui/events/test/platform_event_waiter.h" #include "base/message_loop/message_loop.h" #include "ui/events/platform/platform_event_source.h" namespace ui { PlatformEventWaiter::PlatformEventWaiter( const base::Closure& success_callback, const PlatformEventMatcher& event_matcher) : success_callback_(success_callback), event_matcher_(event_matcher) { PlatformEventSource::GetInstance()->AddPlatformEventObserver(this); } PlatformEventWaiter::~PlatformEventWaiter() { PlatformEventSource::GetInstance()->RemovePlatformEventObserver(this); } void PlatformEventWaiter::WillProcessEvent(const PlatformEvent& event) { if (event_matcher_.Run(event)) { base::MessageLoop::current()->PostTask(FROM_HERE, success_callback_); delete this; } } void PlatformEventWaiter::DidProcessEvent(const PlatformEvent& event) { } // static PlatformEventWaiter* PlatformEventWaiter::Create( const base::Closure& success_callback, const PlatformEventMatcher& event_matcher) { return new PlatformEventWaiter(success_callback, event_matcher); } } // namespace ui