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
10namespace extensions {
11
12EventFilteringInfo::EventFilteringInfo()
13    : has_url_(false),
14      has_instance_id_(false),
15      instance_id_(0) {
16}
17
18EventFilteringInfo::~EventFilteringInfo() {
19}
20
21void EventFilteringInfo::SetURL(const GURL& url) {
22  url_ = url;
23  has_url_ = true;
24}
25
26void EventFilteringInfo::SetInstanceID(int instance_id) {
27  instance_id_ = instance_id;
28  has_instance_id_ = true;
29}
30
31scoped_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
48bool EventFilteringInfo::IsEmpty() const {
49  return !has_url_ && service_type_.empty() && !has_instance_id_;
50}
51
52}  // namespace extensions
53