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