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