/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* 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 } } %}