diff options
Diffstat (limited to 'xpcom/base/nsIStatusReporter.idl')
-rw-r--r-- | xpcom/base/nsIStatusReporter.idl | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/xpcom/base/nsIStatusReporter.idl b/xpcom/base/nsIStatusReporter.idl new file mode 100644 index 000000000..9f9245f49 --- /dev/null +++ b/xpcom/base/nsIStatusReporter.idl @@ -0,0 +1,90 @@ +/* -*- 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) \ + class StatusReporter_##_classname final : public nsIStatusReporter { \ + ~StatusReporter_##_classname() {} \ + public: \ + NS_DECL_ISUPPORTS \ + NS_IMETHOD GetName(nsACString &name) override \ + { name.AssignLiteral(_name); return NS_OK; } \ + NS_IMETHOD GetProcess(nsACString &process) override \ + { process.Truncate(); return NS_OK; } \ + NS_IMETHOD GetDescription(nsACString &desc) override \ + { _desc_Function(desc); return NS_OK; } \ + }; \ + NS_IMPL_ISUPPORTS(StatusReporter_##_classname, nsIStatusReporter) + +#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 } } +%} |