root/extensions/common/event_filtering_info.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef EXTENSIONS_COMMON_EVENT_FILTERING_INFO_H_
#define EXTENSIONS_COMMON_EVENT_FILTERING_INFO_H_

#include "base/memory/scoped_ptr.h"
#include "url/gurl.h"

namespace base {
class Value;
}

namespace extensions {

// Extra information about an event that is used in event filtering.
//
// This is the information that is matched against criteria specified in JS
// extension event listeners. Eg:
//
// chrome.someApi.onSomeEvent.addListener(cb,
//                                        {url: [{hostSuffix: 'google.com'}],
//                                         tabId: 1});
class EventFilteringInfo {
 public:
  EventFilteringInfo();
  ~EventFilteringInfo();
  void SetURL(const GURL& url);
  void SetInstanceID(int instance_id);
  void SetServiceType(const std::string& service_type) {
    service_type_ = service_type;
  }

  bool has_url() const { return has_url_; }
  const GURL& url() const { return url_; }

  bool has_instance_id() const { return has_instance_id_; }
  int instance_id() const { return instance_id_; }

  bool has_service_type() const { return !service_type_.empty(); }
  const std::string& service_type() const { return service_type_; }

  scoped_ptr<base::Value> AsValue() const;
  bool IsEmpty() const;

 private:
  bool has_url_;
  GURL url_;
  std::string service_type_;

  bool has_instance_id_;
  int instance_id_;

  // Allow implicit copy and assignment.
};

}  // namespace extensions

#endif  // EXTENSIONS_COMMON_EVENT_FILTERING_INFO_H_

/* [<][>][^][v][top][bottom][index][help] */