1c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant// Copyright 2014 The Chromium Authors. All rights reserved. 2c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant// Use of this source code is governed by a BSD-style license that can be 3c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant// found in the LICENSE file. 4c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant 5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant#include "ui/events/test/platform_event_waiter.h" 6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant 7c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant#include "base/message_loop/message_loop.h" 8c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant#include "ui/events/platform/platform_event_source.h" 9c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant 10c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnantnamespace ui { 11c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant 12c52f43e72dfcea03037729649da84c23b3beb04aHoward HinnantPlatformEventWaiter::PlatformEventWaiter( 13c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant const base::Closure& success_callback, 14c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant const PlatformEventMatcher& event_matcher) 15c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant : success_callback_(success_callback), 16c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant event_matcher_(event_matcher) { 17c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant PlatformEventSource::GetInstance()->AddPlatformEventObserver(this); 18c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant} 19c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant 20c52f43e72dfcea03037729649da84c23b3beb04aHoward HinnantPlatformEventWaiter::~PlatformEventWaiter() { 21c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant PlatformEventSource::GetInstance()->RemovePlatformEventObserver(this); 22c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant} 23c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant 24c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnantvoid PlatformEventWaiter::WillProcessEvent(const PlatformEvent& event) { 25c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant if (event_matcher_.Run(event)) { 26c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant base::MessageLoop::current()->PostTask(FROM_HERE, success_callback_); 27c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant delete this; 28c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant } 29c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant} 30c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant 31c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnantvoid PlatformEventWaiter::DidProcessEvent(const PlatformEvent& event) { 32c52f43e72dfcea03037729649da84c23b3beb04aHoward Hinnant} 33 34// static 35PlatformEventWaiter* PlatformEventWaiter::Create( 36 const base::Closure& success_callback, 37 const PlatformEventMatcher& event_matcher) { 38 return new PlatformEventWaiter(success_callback, event_matcher); 39} 40 41} // namespace ui 42