15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "extensions/common/event_filtering_info.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/json/json_writer.h"
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/values.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace extensions {
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EventFilteringInfo::EventFilteringInfo()
13eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    : has_url_(false),
14eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      has_instance_id_(false),
15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      instance_id_(0) {
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EventFilteringInfo::~EventFilteringInfo() {
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void EventFilteringInfo::SetURL(const GURL& url) {
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  url_ = url;
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  has_url_ = true;
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid EventFilteringInfo::SetInstanceID(int instance_id) {
27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  instance_id_ = instance_id;
28eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  has_instance_id_ = true;
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)scoped_ptr<base::Value> EventFilteringInfo::AsValue() const {
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (IsEmpty())
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return scoped_ptr<base::Value>(base::Value::CreateNullValue());
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<base::DictionaryValue> result(new base::DictionaryValue);
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (has_url_)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    result->SetString("url", url_.spec());
38eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
39eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  if (has_instance_id_)
40eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    result->SetInteger("instanceId", instance_id_);
4158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
4258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  if (!service_type_.empty())
4358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    result->SetString("serviceType", service_type_);
4458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return result.PassAs<base::Value>();
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool EventFilteringInfo::IsEmpty() const {
495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  return !has_url_ && service_type_.empty() && !has_instance_id_;
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace extensions
53