| Index: extensions/browser/event_listener_map.cc
|
| diff --git a/extensions/browser/event_listener_map.cc b/extensions/browser/event_listener_map.cc
|
| index 5d90e980ebe732000daaac695e44201f4997e2b2..076b128bc57940b092b0ec4bc9ad616176e7ea9c 100644
|
| --- a/extensions/browser/event_listener_map.cc
|
| +++ b/extensions/browser/event_listener_map.cc
|
| @@ -8,6 +8,7 @@
|
| #include "content/public/browser/render_process_host.h"
|
| #include "extensions/browser/event_router.h"
|
| #include "ipc/ipc_message.h"
|
| +#include "url/gurl.h"
|
|
|
| using base::DictionaryValue;
|
|
|
| @@ -17,10 +18,12 @@ typedef EventFilter::MatcherID MatcherID;
|
|
|
| EventListener::EventListener(const std::string& event_name,
|
| const std::string& extension_id,
|
| + const GURL& listener_url,
|
| content::RenderProcessHost* process,
|
| scoped_ptr<DictionaryValue> filter)
|
| : event_name_(event_name),
|
| extension_id_(extension_id),
|
| + listener_url_(listener_url),
|
| process_(process),
|
| filter_(filter.Pass()),
|
| matcher_id_(-1) {
|
| @@ -33,7 +36,8 @@ bool EventListener::Equals(const EventListener* other) const {
|
| // filter that hasn't been added to EventFilter to match one that is
|
| // equivalent but has.
|
| return event_name_ == other->event_name_ &&
|
| - extension_id_ == other->extension_id_ && process_ == other->process_ &&
|
| + extension_id_ == other->extension_id_ &&
|
| + listener_url_ == other->listener_url_ && process_ == other->process_ &&
|
| ((!!filter_.get()) == (!!other->filter_.get())) &&
|
| (!filter_.get() || filter_->Equals(other->filter_.get()));
|
| }
|
| @@ -43,7 +47,7 @@ scoped_ptr<EventListener> EventListener::Copy() const {
|
| if (filter_)
|
| filter_copy.reset(filter_->DeepCopy());
|
| return scoped_ptr<EventListener>(new EventListener(
|
| - event_name_, extension_id_, process_, filter_copy.Pass()));
|
| + event_name_, extension_id_, listener_url_, process_, filter_copy.Pass()));
|
| }
|
|
|
| bool EventListener::IsLazy() const {
|
| @@ -144,6 +148,7 @@ bool EventListenerMap::HasProcessListener(content::RenderProcessHost* process,
|
| it++) {
|
| for (ListenerList::iterator it2 = it->second.begin();
|
| it2 != it->second.end(); it2++) {
|
| + // TODO(kalman): Thread listener_url into here?
|
| if ((*it2)->process() == process &&
|
| (*it2)->extension_id() == extension_id)
|
| return true;
|
| @@ -174,7 +179,7 @@ void EventListenerMap::LoadUnfilteredLazyListeners(
|
| for (std::set<std::string>::const_iterator it = event_names.begin();
|
| it != event_names.end(); ++it) {
|
| AddListener(scoped_ptr<EventListener>(new EventListener(
|
| - *it, extension_id, NULL, scoped_ptr<DictionaryValue>())));
|
| + *it, extension_id, GURL(), NULL, scoped_ptr<DictionaryValue>())));
|
| }
|
| }
|
|
|
| @@ -190,9 +195,12 @@ void EventListenerMap::LoadFilteredLazyListeners(
|
| const DictionaryValue* filter = NULL;
|
| if (!filter_list->GetDictionary(i, &filter))
|
| continue;
|
| - AddListener(scoped_ptr<EventListener>(new EventListener(
|
| - it.key(), extension_id, NULL,
|
| - scoped_ptr<DictionaryValue>(filter->DeepCopy()))));
|
| + AddListener(scoped_ptr<EventListener>(
|
| + new EventListener(it.key(),
|
| + extension_id,
|
| + GURL(),
|
| + NULL,
|
| + scoped_ptr<DictionaryValue>(filter->DeepCopy()))));
|
| }
|
| }
|
| }
|
|
|