Chromium Code Reviews| Index: chrome/browser/extensions/event_listener_map.h |
| diff --git a/chrome/browser/extensions/event_listener_map.h b/chrome/browser/extensions/event_listener_map.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..9521b52b2858aa0c6e91f6aae077a539225ae904 |
| --- /dev/null |
| +++ b/chrome/browser/extensions/event_listener_map.h |
| @@ -0,0 +1,99 @@ |
| +// Copyright (c) 2012 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. |
| + |
| +#ifndef CHROME_BROWSER_EXTENSIONS_EVENT_LISTENER_MAP_H_ |
| +#define CHROME_BROWSER_EXTENSIONS_EVENT_LISTENER_MAP_H_ |
| +#pragma once |
| + |
| +#include "base/memory/scoped_ptr.h" |
| +#include "chrome/common/extensions/event_filter.h" |
| + |
| +#include <map> |
| +#include <set> |
| +#include <string> |
| +#include <vector> |
| + |
| +namespace base { |
| +class DictionaryValue; |
| +} |
| + |
| +struct ExtensionEvent; |
| + |
| +namespace content { |
| +class RenderProcessHost; |
| +} |
| + |
| +using base::DictionaryValue; |
| +using extensions::EventFilter; |
| +using extensions::EventFilteringInfo; |
| +using extensions::EventMatcher; |
| + |
| +// A listener for an extension event. A listener is essentially an endpoint |
| +// that an event can be dispatched to. This is a lazy listener if |process| is |
|
battre
2012/06/13 09:21:54
what is a lazy listener?
koz (OOO until 15th September)
2012/06/14 02:15:55
I've added a comment.
|
| +// NULL and a filtered listener if |filter| is defined. |
| +class EventListener { |
|
Matt Perry
2012/06/13 01:24:27
put all new extensions code in the extensions name
koz (OOO until 15th September)
2012/06/14 02:15:55
Done.
|
| + public: |
| + EventListener(const std::string& event_name, |
| + const std::string& extension_id, |
| + content::RenderProcessHost* process, |
| + scoped_ptr<DictionaryValue> filter); |
|
battre
2012/06/13 09:21:54
what goes into |filter|?
koz (OOO until 15th September)
2012/06/14 02:15:55
Done.
|
| + ~EventListener(); |
| + |
| + bool Equals(const EventListener* other); |
| + |
| + scoped_ptr<EventListener> Copy() const; |
| + |
| + const std::string event_name; |
|
battre
2012/06/13 09:21:54
I think according to our style guide, these should
koz (OOO until 15th September)
2012/06/14 02:15:55
Cool, I've changed this class to a struct.
|
| + const std::string extension_id; |
| + content::RenderProcessHost* process; |
| + scoped_ptr<DictionaryValue> filter; |
| + int matcher_id; |
|
battre
2012/06/13 09:21:54
private:
DISALLOW_COPY_AND_ASSIGN(EventListener)
koz (OOO until 15th September)
2012/06/14 02:15:55
Done.
|
| +}; |
| + |
| +// Holds listeners for extension events and can answer questions about which |
| +// listeners are interested in what events. |
| +class EventListenerMap { |
| + public: |
| + typedef std::vector<linked_ptr<EventListener> > ListenerList; |
| + EventListenerMap(); |
| + ~EventListenerMap(); |
|
Matt Perry
2012/06/13 01:24:27
nit: newline before and after constructor/destruct
koz (OOO until 15th September)
2012/06/14 02:15:55
Done.
|
| + bool AddListener(scoped_ptr<EventListener> listener); |
|
Matt Perry
2012/06/13 01:24:27
comment all these methods
koz (OOO until 15th September)
2012/06/14 02:15:55
Done.
|
| + bool RemoveListener(scoped_ptr<EventListener> listener); |
|
Matt Perry
2012/06/13 01:24:27
use scoped_ptr in params only when the function ne
battre
2012/06/13 09:21:54
or a pointer?
koz (OOO until 15th September)
2012/06/14 02:15:55
Done.
|
| + |
| + scoped_ptr<std::set<const EventListener*> > GetEventTargets( |
|
Matt Perry
2012/06/13 01:24:27
why not just return a bare std::set?
koz (OOO until 15th September)
2012/06/14 02:15:55
Done.
|
| + const ExtensionEvent& event); |
| + |
| + ListenerList RemoveListenersForProcess( |
| + const content::RenderProcessHost* process); |
| + |
| + bool AnyListenersForEvent(const std::string& event_name); |
|
battre
2012/06/13 09:21:54
HasListenersForEvent? (see "HasListener(const Even
koz (OOO until 15th September)
2012/06/14 02:15:55
Done.
|
| + bool AnyListenersForExtension(const std::string& extension_id, |
|
battre
2012/06/13 09:21:54
HasListenersForExtension?
koz (OOO until 15th September)
2012/06/14 02:15:55
Done.
|
| + const std::string& event_name); |
| + |
| + bool HasListener(const EventListener* listener); |
| + void RemoveLazyListenersFor(const std::string extension_id); |
|
battre
2012/06/13 09:21:54
const std::string&
koz (OOO until 15th September)
2012/06/14 02:15:55
Done.
|
| + |
| + void AddLazyListenersFromPreferences( |
| + const std::string& extension_id, |
| + std::set<std::string>& unfiltered, |
|
battre
2012/06/13 09:21:54
const std::set<...>&
koz (OOO until 15th September)
2012/06/14 02:15:55
Done.
|
| + const DictionaryValue& filtered); |
| + |
| + private: |
| + typedef std::map<std::string, ListenerList> ListenerMap; |
| + |
| + void CleanupListener(EventListener* listener); |
| + bool IsFilteredEvent(const ExtensionEvent& event) const; |
| + scoped_ptr<EventMatcher> ParseEventMatcer(DictionaryValue* filter_dict); |
| + |
| + std::set<std::string> filtered_events_; |
| + ListenerMap listeners_; |
| + |
| + std::map<int, EventListener*> listeners_by_matcher_id_; |
| + |
| + EventFilter event_filter_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(EventListenerMap); |
| +}; |
| + |
| +#endif // CHROME_BROWSER_EXTENSIONS_EVENT_LISTENER_MAP_H_ |