1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5
6#include "nsISupports.idl"
7
8interface nsIConsoleListener;
9interface nsIConsoleMessage;
10
11[scriptable, uuid(0eb81d20-c37e-42d4-82a8-ca9ae96bdf52)]
12interface nsIConsoleService : nsISupports
13{
14    void logMessage(in nsIConsoleMessage message);
15
16    /**
17     * Convenience method for logging simple messages.
18     */
19    void logStringMessage(in wstring message);
20
21    /**
22     * Get an array of all the messages logged so far.
23     */
24    Array<nsIConsoleMessage> getMessageArray();
25
26    /**
27     * To guard against stack overflows from listeners that could log
28     * messages (it's easy to do this inadvertently from listeners
29     * implemented in JavaScript), we don't call any listeners when
30     * another error is already being logged.
31     */
32    void registerListener(in nsIConsoleListener listener);
33
34    /**
35     * Each registered listener should also be unregistered.
36     */
37    void unregisterListener(in nsIConsoleListener listener);
38
39    /**
40     * Clear the message buffer (e.g. for privacy reasons).
41     */
42    void reset();
43
44    /**
45     * Clear the message buffer for a given window.
46     */
47    void resetWindow(in uint64_t windowInnerId);
48};
49
50
51%{ C++
52#define NS_CONSOLESERVICE_CID \
53{ 0x7e3ff85c, 0x1dd2, 0x11b2, { 0x8d, 0x4b, 0xeb, 0x45, 0x2c, 0xb0, 0xff, 0x40 }}
54
55#define NS_CONSOLESERVICE_CONTRACTID "@mozilla.org/consoleservice;1"
56%}
57
58