diff options
Diffstat (limited to 'extensions')
-rw-r--r-- | extensions/common/event_filtering_info.cc | 18 | ||||
-rw-r--r-- | extensions/common/event_filtering_info.h | 8 | ||||
-rw-r--r-- | extensions/common/event_matcher.cc | 11 | ||||
-rw-r--r-- | extensions/common/event_matcher.h | 2 |
4 files changed, 27 insertions, 12 deletions
diff --git a/extensions/common/event_filtering_info.cc b/extensions/common/event_filtering_info.cc index 009dcaa..29566e8 100644 --- a/extensions/common/event_filtering_info.cc +++ b/extensions/common/event_filtering_info.cc @@ -10,7 +10,9 @@ namespace extensions { EventFilteringInfo::EventFilteringInfo() - : has_url_(false) { + : has_url_(false), + has_instance_id_(false), + instance_id_(0) { } EventFilteringInfo::~EventFilteringInfo() { @@ -21,14 +23,9 @@ void EventFilteringInfo::SetURL(const GURL& url) { has_url_ = true; } -std::string EventFilteringInfo::AsJSONString() const { - std::string result; - base::DictionaryValue value; - if (has_url_) - value.SetString("url", url_.spec()); - - base::JSONWriter::Write(&value, &result); - return result; +void EventFilteringInfo::SetInstanceID(int instance_id) { + instance_id_ = instance_id; + has_instance_id_ = true; } scoped_ptr<base::Value> EventFilteringInfo::AsValue() const { @@ -38,6 +35,9 @@ scoped_ptr<base::Value> EventFilteringInfo::AsValue() const { scoped_ptr<base::DictionaryValue> result(new base::DictionaryValue); if (has_url_) result->SetString("url", url_.spec()); + + if (has_instance_id_) + result->SetInteger("instanceId", instance_id_); return result.PassAs<base::Value>(); } diff --git a/extensions/common/event_filtering_info.h b/extensions/common/event_filtering_info.h index 2fee9c1..a489586 100644 --- a/extensions/common/event_filtering_info.h +++ b/extensions/common/event_filtering_info.h @@ -27,11 +27,14 @@ class EventFilteringInfo { EventFilteringInfo(); ~EventFilteringInfo(); void SetURL(const GURL& url); + void SetInstanceID(int instance_id); bool has_url() const { return has_url_; } const GURL& url() const { return url_; } - std::string AsJSONString() const; + bool has_instance_id() const { return has_instance_id_; } + int instance_id() const { return instance_id_; } + scoped_ptr<base::Value> AsValue() const; bool IsEmpty() const; @@ -39,6 +42,9 @@ class EventFilteringInfo { bool has_url_; GURL url_; + bool has_instance_id_; + int instance_id_; + // Allow implicit copy and assignment. }; diff --git a/extensions/common/event_matcher.cc b/extensions/common/event_matcher.cc index c982937..937c783 100644 --- a/extensions/common/event_matcher.cc +++ b/extensions/common/event_matcher.cc @@ -21,8 +21,9 @@ EventMatcher::~EventMatcher() { bool EventMatcher::MatchNonURLCriteria( const EventFilteringInfo& event_info) const { - // There is currently no criteria apart from URL criteria. - return true; + if (!event_info.has_instance_id()) + return true; + return event_info.instance_id() == GetInstanceID(); } int EventMatcher::GetURLFilterCount() const { @@ -44,4 +45,10 @@ int EventMatcher::HasURLFilters() const { return GetURLFilterCount() != 0; } +int EventMatcher::GetInstanceID() const { + int instance_id = 0; + filter_->GetInteger("instanceId", &instance_id); + return instance_id; +} + } // namespace extensions diff --git a/extensions/common/event_matcher.h b/extensions/common/event_matcher.h index bb28419..dadb6ef 100644 --- a/extensions/common/event_matcher.h +++ b/extensions/common/event_matcher.h @@ -30,6 +30,8 @@ class EventMatcher { int HasURLFilters() const; + int GetInstanceID() const; + base::DictionaryValue* value() const { return filter_.get(); } |