summaryrefslogtreecommitdiffstats
path: root/extensions
diff options
context:
space:
mode:
Diffstat (limited to 'extensions')
-rw-r--r--extensions/common/event_filtering_info.cc18
-rw-r--r--extensions/common/event_filtering_info.h8
-rw-r--r--extensions/common/event_matcher.cc11
-rw-r--r--extensions/common/event_matcher.h2
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();
}