Home | History | Annotate | Download | only in common
      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() && !has_instance_id_;
     50 }
     51 
     52 }  // namespace extensions
     53