106741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch// Copyright (c) 2009 The Chromium Authors. All rights reserved. 206741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch// Use of this source code is governed by a BSD-style license that can be 306741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch// found in the LICENSE file. 406741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch 506741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch#ifndef CHROME_COMMON_DEPRECATED_EVENT_SYS_H_ 606741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch#define CHROME_COMMON_DEPRECATED_EVENT_SYS_H_ 73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once 806741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch 906741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch// TODO: This class should be removed or moved to Notifier code. 1006741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch// See Bug 42450 (http://code.google.com/p/chromium/issues/detail?id=42450). 1106741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch 123f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsennamespace base { 1306741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdochclass AutoLock; 1406741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdochclass Lock; 153f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen} 1606741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch 1706741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch// An abstract base class for listening to events. 1806741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch// 1906741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch// Don't inherit from this class yourself. Using NewEventListenerHookup() is 2006741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch// much easier. 2106741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdochtemplate <typename EventType> 2206741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdochclass EventListener { 2306741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch public: 2406741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch virtual void HandleEvent(const EventType& event) = 0; 253345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 263345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick protected: 273345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual ~EventListener() {} 2806741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch}; 2906741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch 3006741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch// See the -inl.h for details about the following. 3106741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch 323f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsentemplate <typename EventTraits, typename NotifyLock = base::Lock, 333f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen typename ScopedNotifyLocker = base::AutoLock> 3406741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdochclass EventChannel; 3506741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch 3606741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdochclass EventListenerHookup; 3706741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch 3806741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdochtemplate <typename EventChannel, typename CallbackObject, 3906741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch typename CallbackMethod> 4006741cbc25cd4227a9fba40dfd0273bfcc1a587aBen MurdochEventListenerHookup* NewEventListenerHookup(EventChannel* channel, 4106741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch CallbackObject* cbobject, 4206741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch CallbackMethod cbmethod); 4306741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch 4406741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdochtemplate <typename EventChannel, typename CallbackObject, 4506741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch typename CallbackMethod, typename CallbackArg0> 4606741cbc25cd4227a9fba40dfd0273bfcc1a587aBen MurdochEventListenerHookup* NewEventListenerHookup(EventChannel* channel, 4706741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch CallbackObject* cbobject, 4806741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch CallbackMethod cbmethod, 4906741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch CallbackArg0 arg0); 5006741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch 5106741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch#endif // CHROME_COMMON_DEPRECATED_EVENT_SYS_H_ 52