/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*-*/
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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"
#include "nsIArray.idl"

/*
 * nsIPerformanceMetricsData is used to store performance data collected
 * in all content processes by nsThread and nsWorkerThread.
 *
 * Each (host, category, pid, wid, pwid) is unique to a given DocGroup or
 * Worker, and we collect the number of dispatches and execution duration.
 *
 * This XPCOM interface reflects the data collected in Performance counters.
 * see xpcom/threads/PerformanceCounter.h
 */
[scriptable, builtinclass, uuid(1f9a58c9-be37-4463-8996-c7f5b9a5bef8)]
interface nsIPerformanceMetricsDispatchCategory : nsISupports
{
  // DispatchCategory value
  readonly attribute unsigned long category;
  // Number of dispatch.
  readonly attribute unsigned long count;
};


[scriptable, builtinclass, uuid(02b0cdc6-4be2-4154-a8a9-e8d462073200)]
interface nsIPerformanceMetricsData : nsISupports
{
  // Host of the document, if any
  readonly attribute AUTF8String host;
  // process id
  readonly attribute unsigned long pid;
  // window id
  readonly attribute unsigned long long wid;
  // "parent" window id
  readonly attribute unsigned long long pwid;
  // Execution time in microseconds
  readonly attribute unsigned long long duration;
  // True if the data is collected in a worker
  readonly attribute bool worker;
  // Dispatch Category counters
  readonly attribute nsIArray items;
};


