1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
/* -*- 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 } }
%}
|