/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
 * You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "nsISupports.idl"

interface nsIDOMDOMRequest;

dictionary NetworkStatsOptions
{
  /**
   * Connection type used to filter which network stats will be returned:
   * 'mobile', 'wifi' or null.
   * If null, stats for both mobile and wifi are returned.
   */
  DOMString connectionType;
  jsval start;              // date
  jsval end;                // date
};

[scriptable,  uuid(87529a6c-aef6-11e1-a595-4f034275cfa6)]
interface nsIDOMMozNetworkStatsManager : nsISupports
{
  /**
   * Query network interface statistics.
   *
   * If options.connectionType is not provided, return statistics for all known
   * network interfaces.
   *
   * If successful, the request result will be an nsIDOMMozNetworkStats object.
   *
   * If network stats are not available for some dates, then rxBytes &
   * txBytes are undefined for those dates.
   */
  nsIDOMDOMRequest               getNetworkStats(in jsval options);

  /**
   * Return available connection types.
   */
  readonly attribute jsval       connectionTypes; // array of DOMStrings.

  /**
   * Clear all stats from DB.
   */
  nsIDOMDOMRequest               clearAllData();

  /**
   * Time in seconds between samples stored in database.
   */
  readonly attribute long        sampleRate;

  /**
   * Maximum number of samples stored in the database per connection type.
   */
  readonly attribute long        maxStorageSamples;
};
