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