2014-03-20 06:52:11 +04:00
|
|
|
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 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"
|
|
|
|
|
|
|
|
interface nsISimpleEnumerator;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Status reporters show Firefox's service status.
|
|
|
|
*/
|
|
|
|
|
|
|
|
[scriptable, uuid(ffcb716c-deeb-44ea-9d9d-ab25dc6980a8)]
|
|
|
|
interface nsIStatusReporter : nsISupports
|
|
|
|
{
|
|
|
|
readonly attribute ACString name;
|
|
|
|
/*
|
|
|
|
* The name of the process containing this reporter. Each reporter initially
|
|
|
|
* has "" in this field, indicating that it applies to the current process.
|
|
|
|
*/
|
|
|
|
readonly attribute ACString process;
|
|
|
|
/*
|
|
|
|
* A human-readable status description.
|
|
|
|
*/
|
|
|
|
readonly attribute AUTF8String description;
|
|
|
|
};
|
|
|
|
|
|
|
|
[scriptable, uuid(fd531273-3319-4fcd-90f2-9f53876c3828)]
|
|
|
|
interface nsIStatusReporterManager : nsISupports
|
|
|
|
{
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Return an enumerator of nsIStatusReporters that are currently registered.
|
|
|
|
*/
|
|
|
|
nsISimpleEnumerator enumerateReporters();
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Register the given nsIStatusReporter. After a reporter is registered,
|
|
|
|
* it will be available via enumerateReporters(). The Manager service
|
|
|
|
* will hold a strong reference to the given reporter.
|
|
|
|
*/
|
|
|
|
void registerReporter(in nsIStatusReporter reporter);
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Unregister the given status reporter.
|
|
|
|
*/
|
|
|
|
void unregisterReporter(in nsIStatusReporter reporter);
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Initialize.
|
|
|
|
*/
|
|
|
|
void init();
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Dump service status as a json file
|
|
|
|
*/
|
|
|
|
void dumpReports();
|
|
|
|
};
|
|
|
|
|
|
|
|
%{C++
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Note that this defaults 'process' to "", which is usually what's desired.
|
|
|
|
*/
|
|
|
|
#define NS_STATUS_REPORTER_IMPLEMENT(_classname, _name, _desc_Function) \
|
2015-03-27 21:52:19 +03:00
|
|
|
class StatusReporter_##_classname final : public nsIStatusReporter { \
|
2014-07-01 02:11:53 +04:00
|
|
|
~StatusReporter_##_classname() {} \
|
2014-03-20 06:52:11 +04:00
|
|
|
public: \
|
|
|
|
NS_DECL_ISUPPORTS \
|
2015-03-27 21:52:19 +03:00
|
|
|
NS_IMETHOD GetName(nsACString &name) override \
|
2014-03-20 06:52:11 +04:00
|
|
|
{ name.AssignLiteral(_name); return NS_OK; } \
|
2015-03-27 21:52:19 +03:00
|
|
|
NS_IMETHOD GetProcess(nsACString &process) override \
|
2014-03-20 06:52:11 +04:00
|
|
|
{ process.Truncate(); return NS_OK; } \
|
2015-03-27 21:52:19 +03:00
|
|
|
NS_IMETHOD GetDescription(nsACString &desc) override \
|
2014-03-20 06:52:11 +04:00
|
|
|
{ _desc_Function(desc); return NS_OK; } \
|
|
|
|
}; \
|
2014-04-27 11:06:00 +04:00
|
|
|
NS_IMPL_ISUPPORTS(StatusReporter_##_classname, nsIStatusReporter)
|
2014-03-20 06:52:11 +04:00
|
|
|
|
|
|
|
#define NS_STATUS_REPORTER_NAME(_classname) StatusReporter_##_classname
|
|
|
|
|
|
|
|
nsresult NS_RegisterStatusReporter(nsIStatusReporter *reporter);
|
|
|
|
nsresult NS_UnregisterStatusReporter(nsIStatusReporter *reporter);
|
|
|
|
nsresult NS_DumpStatusReporter();
|
|
|
|
|
|
|
|
#define NS_STATUS_REPORTER_MANAGER_CID \
|
|
|
|
{ 0xe8eb4e7e, 0xf2cf, 0x45e5, \
|
|
|
|
{ 0xb8, 0xa4, 0x6a, 0x0f, 0x50, 0x18, 0x84, 0x63 } }
|
|
|
|
%}
|