1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "extensions/common/event_filtering_info.h" 6 7 #include "base/json/json_writer.h" 8 #include "base/values.h" 9 10 namespace extensions { 11 12 EventFilteringInfo::EventFilteringInfo() 13 : has_url_(false), 14 has_instance_id_(false), 15 instance_id_(0) { 16 } 17 18 EventFilteringInfo::~EventFilteringInfo() { 19 } 20 21 void EventFilteringInfo::SetURL(const GURL& url) { 22 url_ = url; 23 has_url_ = true; 24 } 25 26 void EventFilteringInfo::SetInstanceID(int instance_id) { 27 instance_id_ = instance_id; 28 has_instance_id_ = true; 29 } 30 31 scoped_ptr<base::Value> EventFilteringInfo::AsValue() const { 32 if (IsEmpty()) 33 return scoped_ptr<base::Value>(base::Value::CreateNullValue()); 34 35 scoped_ptr<base::DictionaryValue> result(new base::DictionaryValue); 36 if (has_url_) 37 result->SetString("url", url_.spec()); 38 39 if (has_instance_id_) 40 result->SetInteger("instanceId", instance_id_); 41 42 if (!service_type_.empty()) 43 result->SetString("serviceType", service_type_); 44 45 return result.PassAs<base::Value>(); 46 } 47 48 bool EventFilteringInfo::IsEmpty() const { 49 return !has_url_ && service_type_.empty(); 50 } 51 52 } // namespace extensions 53